Skip to content

Commit 8746f2b

Browse files
committed
Add button to copy error message
1 parent bf7c908 commit 8746f2b

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

nbgitpuller/static/js/gitsyncview.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { FitAddon } from 'xterm-addon-fit';
44
import { WebLinksAddon } from 'xterm-addon-web-links';
55

66
export class GitSyncView{
7-
constructor(termSelector, progressSelector, termToggleSelector, recoverySelector) {
7+
constructor(termSelector, progressSelector, termToggleSelector, containerErrorSelector, copyErrorSelector) {
88
// Class that encapsulates view rendering as much as possible
99
this.term = new Terminal({
1010
convertEol: true
@@ -18,7 +18,8 @@ export class GitSyncView{
1818

1919
this.termToggle = document.querySelector(termToggleSelector);
2020
this.termElement = document.querySelector(termSelector);
21-
this.recovery = document.querySelector(recoverySelector);
21+
this.containerError = document.querySelector(containerErrorSelector);
22+
this.copyError = document.querySelector(copyErrorSelector);
2223

2324
this.termToggle.onclick = () => this.setTerminalVisibility(!this.visible)
2425
}
@@ -64,9 +65,18 @@ export class GitSyncView{
6465
}
6566
}
6667

67-
setRecoveryLink(isError) {
68+
setContainerError(isError, errorText='') {
6869
if (isError) {
69-
this.recovery.classList.toggle('hidden', !visible);
70+
this.containerError.classList.toggle('hidden', !this.visible);
71+
}
72+
const button = this.copyError;
73+
button.onclick = async () => {
74+
try {
75+
await navigator.clipboard.writeText(errorText);
76+
button.innerHTML = 'Error message copied!';
77+
} catch (err) {
78+
console.error('Failed to copy error text: ', err);
79+
}
7080
}
7181
}
7282
}

nbgitpuller/static/js/index.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ const gsv = new GitSyncView(
2929
'#status-details',
3030
'#status-panel-title',
3131
'#status-panel-toggle',
32-
'#recovery-link'
32+
'#container-error',
33+
'#copy-error-button',
3334
);
3435

3536
gs.addHandler('syncing', function(data) {
@@ -46,11 +47,11 @@ gs.addHandler('error', function(data) {
4647
gsv.setProgressValue(100);
4748
gsv.setProgressText('Error: ' + data.message);
4849
gsv.setProgressError(true);
49-
gsv.setRecoveryLink(true);
5050
gsv.setTerminalVisibility(true);
5151
if (data.output) {
5252
gsv.term.write(data.output);
5353
}
54+
gsv.setContainerError(true, data.output);
5455
});
5556
gs.start();
5657

0 commit comments

Comments
 (0)