@@ -165,9 +165,13 @@ export class Data {
165165 }
166166
167167 private _refetchDataJson ( ) : void {
168- fetch ( PATH_DATA_JSON )
169- . then ( response => response . json ( ) )
170- . then ( data => {
168+ // Using XMLHttpRequest to fetch data.json instead of fetch API
169+ // because while nody-greeter supports fetch, web-greeter does not.
170+ // It would error with "URL scheme 'web-greeter' is not supported"
171+ const req = new XMLHttpRequest ( ) ;
172+ req . addEventListener ( 'load' , ( ) => {
173+ try {
174+ const data : DataJson = JSON . parse ( req . responseText ) ;
171175 console . log ( "Fetched data.json" , data ) ;
172176 if ( "error" in data ) {
173177 console . warn ( "data.json response contains an error" , data ) ;
@@ -176,18 +180,23 @@ export class Data {
176180 }
177181 // Fallback for missing message field in older versions of data.json
178182 if ( ! ( "message" in data ) ) {
179- data . message = "" ;
183+ ( data as DataJson ) . message = "" ;
180184 }
181185 this . _dataJson = data ;
182186 // Emit data change event to all listeners
183187 for ( const listener of this . _dataChangeListeners ) {
184188 listener ( this . _dataJson ) ;
185189 }
186- } )
187- . catch ( error => {
188- if ( window . ui ) {
189- window . ui . setDebugInfo ( `Error fetching data.json: ${ error } ` ) ;
190- }
191- } ) ;
190+ } catch ( err ) {
191+ window . ui . setDebugInfo ( `Failed to parse data.json: ${ err } ` ) ;
192+ }
193+ } ) ;
194+ req . addEventListener ( 'error' , ( err ) => {
195+ if ( window . ui ) {
196+ window . ui . setDebugInfo ( `Error fetching data.json: ${ err } ` ) ;
197+ }
198+ } ) ;
199+ req . open ( 'GET' , PATH_DATA_JSON ) ;
200+ req . send ( ) ;
192201 }
193202}
0 commit comments