refactor: native feature management (#2350)

This commit is contained in:
Mo
2023-07-12 12:56:08 -05:00
committed by GitHub
parent 49f7581cd8
commit 078ef3772c
223 changed files with 3996 additions and 3438 deletions

View File

@@ -24,19 +24,19 @@ export class SNPreferencesService
private removeSyncObserver?: () => void
constructor(
private singletonManager: SNSingletonManager,
itemManager: ItemManager,
private singletons: SNSingletonManager,
items: ItemManager,
private mutator: MutatorClientInterface,
private syncService: SNSyncService,
private sync: SNSyncService,
protected override internalEventBus: InternalEventBusInterface,
) {
super(internalEventBus)
this.removeItemObserver = itemManager.addObserver(ContentType.TYPES.UserPrefs, () => {
this.removeItemObserver = items.addObserver(ContentType.TYPES.UserPrefs, () => {
this.shouldReload = true
})
this.removeSyncObserver = syncService.addEventObserver((event) => {
this.removeSyncObserver = sync.addEventObserver((event) => {
if (event === SyncEvent.SyncCompletedWithAllItemsUploaded || event === SyncEvent.LocalDataIncrementalLoad) {
void this.reload()
}
@@ -46,7 +46,7 @@ export class SNPreferencesService
override deinit(): void {
this.removeItemObserver?.()
this.removeSyncObserver?.()
;(this.singletonManager as unknown) = undefined
;(this.singletons as unknown) = undefined
;(this.mutator as unknown) = undefined
super.deinit()
@@ -57,7 +57,7 @@ export class SNPreferencesService
if (stage === ApplicationStage.LoadedDatabase_12) {
/** Try to read preferences singleton from storage */
this.preferences = this.singletonManager.findSingleton<SNUserPrefs>(
this.preferences = this.singletons.findSingleton<SNUserPrefs>(
ContentType.TYPES.UserPrefs,
SNUserPrefs.singletonPredicate,
)
@@ -75,6 +75,14 @@ export class SNPreferencesService
}
async setValue<K extends PrefKey>(key: K, value: PrefValue[K]): Promise<void> {
await this.setValueDetached(key, value)
void this.notifyEvent(PreferencesServiceEvent.PreferencesChanged)
void this.sync.sync({ sourceDescription: 'PreferencesService.setValue' })
}
async setValueDetached<K extends PrefKey>(key: K, value: PrefValue[K]): Promise<void> {
if (!this.preferences) {
return
}
@@ -82,10 +90,6 @@ export class SNPreferencesService
this.preferences = (await this.mutator.changeItem<UserPrefsMutator>(this.preferences, (m) => {
m.setPref(key, value)
})) as SNUserPrefs
void this.notifyEvent(PreferencesServiceEvent.PreferencesChanged)
void this.syncService.sync({ sourceDescription: 'PreferencesService.setValue' })
}
private async reload() {
@@ -98,7 +102,7 @@ export class SNPreferencesService
try {
const previousRef = this.preferences
this.preferences = await this.singletonManager.findOrCreateContentTypeSingleton<ItemContent, SNUserPrefs>(
this.preferences = await this.singletons.findOrCreateContentTypeSingleton<ItemContent, SNUserPrefs>(
ContentType.TYPES.UserPrefs,
FillItemContent({}),
)