@@ -26,11 +26,13 @@ export enum SettingsContextStatus {
26
26
27
27
export enum SettingsContextDelegateTopic {
28
28
SETTINGS_CHANGED = "SETTINGS_CHANGED" ,
29
+ STORED_DATA_CHANGED = "STORED_DATA_CHANGED" ,
29
30
STATUS = "LOADING_STATE_CHANGED" ,
30
31
}
31
32
32
33
export type SettingsContextDelegatePayloads = {
33
34
[ SettingsContextDelegateTopic . SETTINGS_CHANGED ] : void ;
35
+ [ SettingsContextDelegateTopic . STORED_DATA_CHANGED ] : void ;
34
36
[ SettingsContextDelegateTopic . STATUS ] : SettingsContextStatus ;
35
37
} ;
36
38
@@ -56,7 +58,7 @@ export class SettingsContextDelegate<
56
58
TSettingTypes extends MakeSettingTypesMap < TSettings > = MakeSettingTypesMap < TSettings > ,
57
59
TStoredData extends StoredData = Record < string , never > ,
58
60
TSettingKey extends SettingsKeysFromTuple < TSettings > = SettingsKeysFromTuple < TSettings > ,
59
- TStoredDataKey extends keyof TStoredData = keyof TStoredData
61
+ TStoredDataKey extends keyof TStoredData = keyof TStoredData ,
60
62
> implements PublishSubscribe < SettingsContextDelegatePayloads >
61
63
{
62
64
private _owner : DataLayer < TSettings , any , TStoredData , TSettingTypes , TSettingKey > ;
@@ -86,7 +88,7 @@ export class SettingsContextDelegate<
86
88
TStoredDataKey
87
89
> ,
88
90
layerManager : DataLayerManager ,
89
- settings : { [ K in TSettingKey ] : SettingManager < K > }
91
+ settings : { [ K in TSettingKey ] : SettingManager < K > } ,
90
92
) {
91
93
this . _owner = owner ;
92
94
this . _customSettingsHandler = customSettingsHandler ;
@@ -97,28 +99,28 @@ export class SettingsContextDelegate<
97
99
"settings" ,
98
100
settings [ key ] . getPublishSubscribeDelegate ( ) . makeSubscriberFunction ( SettingTopic . VALUE ) ( ( ) => {
99
101
this . handleSettingChanged ( ) ;
100
- } )
102
+ } ) ,
101
103
) ;
102
104
this . _unsubscribeHandler . registerUnsubscribeFunction (
103
105
"settings" ,
104
106
settings [ key ] . getPublishSubscribeDelegate ( ) . makeSubscriberFunction ( SettingTopic . IS_LOADING ) ( ( ) => {
105
107
this . handleSettingsLoadingStateChanged ( ) ;
106
- } )
108
+ } ) ,
107
109
) ;
108
110
this . _unsubscribeHandler . registerUnsubscribeFunction (
109
111
"layer-manager" ,
110
112
layerManager
111
113
. getPublishSubscribeDelegate ( )
112
114
. makeSubscriberFunction ( LayerManagerTopic . SHARED_SETTINGS_CHANGED ) ( ( ) => {
113
115
this . handleSharedSettingsChanged ( ) ;
114
- } )
116
+ } ) ,
115
117
) ;
116
118
117
119
this . _unsubscribeHandler . registerUnsubscribeFunction (
118
120
"layer-manager" ,
119
121
layerManager . getPublishSubscribeDelegate ( ) . makeSubscriberFunction ( LayerManagerTopic . ITEMS ) ( ( ) => {
120
122
this . handleSharedSettingsChanged ( ) ;
121
- } )
123
+ } ) ,
122
124
) ;
123
125
}
124
126
@@ -157,11 +159,11 @@ export class SettingsContextDelegate<
157
159
}
158
160
159
161
const sharedSettingsProviders : SharedSettingsProvider [ ] = parentGroup . getAncestorAndSiblingItems (
160
- ( item ) => item instanceof SharedSetting
162
+ ( item ) => item instanceof SharedSetting ,
161
163
) as unknown as SharedSettingsProvider [ ] ;
162
164
163
165
const ancestorGroups : SharedSettingsProvider [ ] = parentGroup . getAncestors (
164
- ( item ) => item instanceof Group && instanceofSharedSettingsProvider ( item )
166
+ ( item ) => item instanceof Group && instanceofSharedSettingsProvider ( item ) ,
165
167
) as unknown as SharedSettingsProvider [ ] ;
166
168
sharedSettingsProviders . push ( ...ancestorGroups ) ;
167
169
@@ -235,6 +237,7 @@ export class SettingsContextDelegate<
235
237
236
238
setStoredData < K extends keyof TStoredData > ( key : K , data : TStoredData [ K ] | null ) : void {
237
239
this . _storedData [ key ] = data ;
240
+ this . _publishSubscribeDelegate . notifySubscribers ( SettingsContextDelegateTopic . STORED_DATA_CHANGED ) ;
238
241
}
239
242
240
243
getSettings ( ) {
@@ -250,6 +253,9 @@ export class SettingsContextDelegate<
250
253
if ( topic === SettingsContextDelegateTopic . SETTINGS_CHANGED ) {
251
254
return ;
252
255
}
256
+ if ( topic === SettingsContextDelegateTopic . STORED_DATA_CHANGED ) {
257
+ return ;
258
+ }
253
259
if ( topic === SettingsContextDelegateTopic . STATUS ) {
254
260
return this . _status ;
255
261
}
@@ -296,23 +302,23 @@ export class SettingsContextDelegate<
296
302
this . _unsubscribeHandler . registerUnsubscribeFunction (
297
303
"dependencies" ,
298
304
this . _settings [ key ] . getPublishSubscribeDelegate ( ) . makeSubscriberFunction ( SettingTopic . VALUE ) (
299
- handleChange
300
- )
305
+ handleChange ,
306
+ ) ,
301
307
) ;
302
308
303
309
this . _unsubscribeHandler . registerUnsubscribeFunction (
304
310
"dependencies" ,
305
311
this . _settings [ key ] . getPublishSubscribeDelegate ( ) . makeSubscriberFunction ( SettingTopic . IS_PERSISTED ) (
306
- handleChange
307
- )
312
+ handleChange ,
313
+ ) ,
308
314
) ;
309
315
310
316
return handleChange ;
311
317
} ;
312
318
313
319
const makeGlobalSettingGetter = < K extends keyof GlobalSettings > (
314
320
key : K ,
315
- handler : ( value : GlobalSettings [ K ] ) => void
321
+ handler : ( value : GlobalSettings [ K ] ) => void ,
316
322
) => {
317
323
const handleChange = ( ) : void => {
318
324
handler ( this . getLayerManager . bind ( this ) ( ) . getGlobalSetting ( key ) ) ;
@@ -321,21 +327,21 @@ export class SettingsContextDelegate<
321
327
"dependencies" ,
322
328
this . getLayerManager ( )
323
329
. getPublishSubscribeDelegate ( )
324
- . makeSubscriberFunction ( LayerManagerTopic . GLOBAL_SETTINGS ) ( handleChange )
330
+ . makeSubscriberFunction ( LayerManagerTopic . GLOBAL_SETTINGS ) ( handleChange ) ,
325
331
) ;
326
332
327
333
return handleChange ;
328
334
} ;
329
335
330
336
const availableSettingsUpdater = < K extends TSettingKey > (
331
337
settingKey : K ,
332
- updateFunc : UpdateFunc < AvailableValuesType < K > , TSettings , TSettingTypes , TSettingKey >
338
+ updateFunc : UpdateFunc < AvailableValuesType < K > , TSettings , TSettingTypes , TSettingKey > ,
333
339
) : Dependency < AvailableValuesType < K > , TSettings , TSettingTypes , TSettingKey > => {
334
340
const dependency = new Dependency < AvailableValuesType < K > , TSettings , TSettingTypes , TSettingKey > (
335
341
this ,
336
342
updateFunc ,
337
343
makeLocalSettingGetter ,
338
- makeGlobalSettingGetter
344
+ makeGlobalSettingGetter ,
339
345
) ;
340
346
dependencies . push ( dependency ) ;
341
347
@@ -364,7 +370,7 @@ export class SettingsContextDelegate<
364
370
365
371
const storedDataUpdater = < K extends TStoredDataKey > (
366
372
key : K ,
367
- updateFunc : UpdateFunc < NullableStoredData < TStoredData > [ K ] , TSettings , TSettingTypes , TSettingKey >
373
+ updateFunc : UpdateFunc < NullableStoredData < TStoredData > [ K ] , TSettings , TSettingTypes , TSettingKey > ,
368
374
) : Dependency < NullableStoredData < TStoredData > [ K ] , TSettings , TSettingTypes , TSettingKey > => {
369
375
const dependency = new Dependency <
370
376
NullableStoredData < TStoredData > [ K ] ,
@@ -388,16 +394,16 @@ export class SettingsContextDelegate<
388
394
getLocalSetting : < T extends TSettingKey > ( settingName : T ) => TSettingTypes [ T ] ;
389
395
getGlobalSetting : < T extends keyof GlobalSettings > ( settingName : T ) => GlobalSettings [ T ] ;
390
396
getHelperDependency : < TDep > (
391
- dep : Dependency < TDep , TSettings , TSettingTypes , TSettingKey >
397
+ dep : Dependency < TDep , TSettings , TSettingTypes , TSettingKey > ,
392
398
) => TDep | null ;
393
399
abortSignal : AbortSignal ;
394
- } ) => T
400
+ } ) => T ,
395
401
) => {
396
402
const dependency = new Dependency < T , TSettings , TSettingTypes , TSettingKey > (
397
403
this ,
398
404
update ,
399
405
makeLocalSettingGetter ,
400
- makeGlobalSettingGetter
406
+ makeGlobalSettingGetter ,
401
407
) ;
402
408
dependencies . push ( dependency ) ;
403
409
0 commit comments