9
9
stringifyWithPreservingUndefinedAsNull ,
10
10
} from './utils' ;
11
11
12
+ import NiceModal from '@ebay/nice-modal-react' ;
12
13
import { Store } from 'react-notifications-component' ;
13
14
import keyBy from 'lodash/keyBy' ;
14
15
@@ -113,21 +114,27 @@ class Api {
113
114
}
114
115
}
115
116
116
- urlProvider = async ( ) => {
117
- const url = new URL ( this . url )
118
- let token = new URLSearchParams ( window . location . search ) . get ( "token" )
119
- ?? local . get < string > ( TOKEN_LOCAL_STORAGE_ITEM_NAME ) ;
120
- const authRequired = ! ! local . get ( AUTH_FLAG_LOCAL_STORAGE_ITEM_NAME ) ;
121
- if ( authRequired ) {
122
- if ( ! token ) {
123
- token = prompt ( "Enter your z2m admin token" ) as string ;
124
- if ( token ) {
125
- local . set ( TOKEN_LOCAL_STORAGE_ITEM_NAME , token ) ;
117
+ urlProvider = async ( ) : Promise < string > => {
118
+ const promise = new Promise < string > ( ( resolve ) => {
119
+ const url = new URL ( this . url )
120
+ let token = new URLSearchParams ( window . location . search ) . get ( "token" )
121
+ ?? local . get < string > ( TOKEN_LOCAL_STORAGE_ITEM_NAME ) ;
122
+ const authRequired = ! ! local . get ( AUTH_FLAG_LOCAL_STORAGE_ITEM_NAME ) ;
123
+ if ( authRequired ) {
124
+ if ( ! token ) {
125
+ NiceModal . show ( 'auth-form' , { onAuth : ( token : string ) => {
126
+ local . set ( TOKEN_LOCAL_STORAGE_ITEM_NAME , token ) ;
127
+ url . searchParams . append ( "token" , token ) ;
128
+ resolve ( url . toString ( ) ) ;
129
+ } } ) ;
130
+ return ;
126
131
}
132
+ url . searchParams . append ( "token" , token ) ;
127
133
}
128
- url . searchParams . append ( "token" , token ) ;
129
- }
130
- return url . toString ( ) ;
134
+ resolve ( url . toString ( ) ) ;
135
+ } ) ;
136
+
137
+ return promise ;
131
138
}
132
139
133
140
connect ( ) : void {
@@ -277,7 +284,7 @@ class Api {
277
284
if ( e . code === UNAUTHORIZED_ERROR_CODE ) {
278
285
local . set ( AUTH_FLAG_LOCAL_STORAGE_ITEM_NAME , true ) ;
279
286
local . remove ( TOKEN_LOCAL_STORAGE_ITEM_NAME ) ;
280
- NotificationManager . error ( "Unauthorized" ) ;
287
+ showNotify ( 'error' , "Unauthorized" , false ) ;
281
288
setTimeout ( ( ) => {
282
289
window . location . reload ( ) ;
283
290
} , 1000 ) ;
@@ -296,7 +303,7 @@ class Api {
296
303
this . processDeviceStateMessage ( data ) ;
297
304
}
298
305
} catch ( e ) {
299
- NotificationManager . error ( e . message ) ;
306
+ showNotify ( 'error' , e . message , false ) ;
300
307
console . error ( event . data ) ;
301
308
}
302
309
0 commit comments