()
| 91 | } |
| 92 | |
| 93 | private static async loadSettingsFromStorage(): Promise<UserSettings> { |
| 94 | if (UserStorage.loadBarrier) { |
| 95 | return await UserStorage.loadBarrier.entry(); |
| 96 | } |
| 97 | UserStorage.loadBarrier = new PromiseBarrier(); |
| 98 | |
| 99 | let local = await readLocalStorage(DEFAULT_SETTINGS); |
| 100 | |
| 101 | if (local.schemeVersion < 2) { |
| 102 | const sync = await readSyncStorage({schemeVersion: 0}); |
| 103 | if (!sync || sync.schemeVersion < 2) { |
| 104 | const deprecatedDefaults = { |
| 105 | siteList: [], |
| 106 | siteListEnabled: [], |
| 107 | applyToListedOnly: false, |
| 108 | }; |
| 109 | const localDeprecated = await readLocalStorage(deprecatedDefaults); |
| 110 | const localTransformed = UserStorage.migrateSiteListsV2(localDeprecated); |
| 111 | await writeLocalStorage({schemeVersion: 2, ...localTransformed}); |
| 112 | await removeLocalStorage(Object.keys(deprecatedDefaults)); |
| 113 | |
| 114 | const syncDeprecated = await readSyncStorage(deprecatedDefaults); |
| 115 | const syncTransformed = UserStorage.migrateSiteListsV2(syncDeprecated); |
| 116 | await writeSyncStorage({schemeVersion: 2, ...syncTransformed}); |
| 117 | await removeSyncStorage(Object.keys(deprecatedDefaults)); |
| 118 | |
| 119 | local = await readLocalStorage(DEFAULT_SETTINGS); |
| 120 | } |
| 121 | } |
| 122 | |
| 123 | const {errors: localCfgErrors} = validateSettings(local); |
| 124 | localCfgErrors.forEach((err) => logWarn(err)); |
| 125 | if (local.syncSettings == null) { |
| 126 | local.syncSettings = DEFAULT_SETTINGS.syncSettings; |
| 127 | } |
| 128 | if (!local.syncSettings) { |
| 129 | UserStorage.migrateAutomationSettings(local); |
| 130 | UserStorage.migrateBuiltInSVGFilterToCSSFilter(local); |
| 131 | UserStorage.fillDefaults(local); |
| 132 | UserStorage.loadBarrier.resolve(local); |
| 133 | return local; |
| 134 | } |
| 135 | |
| 136 | const $sync = await readSyncStorage(DEFAULT_SETTINGS); |
| 137 | if (!$sync) { |
| 138 | logWarn('Sync settings are missing'); |
| 139 | local.syncSettings = false; |
| 140 | UserStorage.set({syncSettings: false}); |
| 141 | UserStorage.saveSyncSetting(false); |
| 142 | UserStorage.loadBarrier.resolve(local); |
| 143 | return local; |
| 144 | } |
| 145 | |
| 146 | const {errors: syncCfgErrors} = validateSettings($sync); |
| 147 | syncCfgErrors.forEach((err) => logWarn(err)); |
| 148 | |
| 149 | UserStorage.migrateAutomationSettings($sync); |
| 150 | UserStorage.migrateBuiltInSVGFilterToCSSFilter($sync); |
no test coverage detected