@@ -4,7 +4,7 @@ import { FitAddon } from 'xterm-addon-fit';
44import { WebLinksAddon } from 'xterm-addon-web-links' ;
55
66export 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}
0 commit comments