MCPcopy Index your code
hub / github.com/darkreader/darkreader / loadSettingsFromStorage

Method loadSettingsFromStorage

src/background/user-storage.ts:93–155  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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);

Callers 1

loadSettingsMethod · 0.80

Calls 15

readLocalStorageFunction · 0.90
readSyncStorageFunction · 0.90
writeLocalStorageFunction · 0.90
removeLocalStorageFunction · 0.90
writeSyncStorageFunction · 0.90
removeSyncStorageFunction · 0.90
validateSettingsFunction · 0.90
logWarnFunction · 0.90
entryMethod · 0.80
migrateSiteListsV2Method · 0.80

Tested by

no test coverage detected