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

Function readSyncStorage

src/background/utils/extension-api.ts:43–85  ·  view source on GitHub ↗
(defaults: T)

Source from the content-addressed store, hash-verified

41}
42
43export async function readSyncStorage<T extends {[key: string]: any}>(defaults: T): Promise<T | null> {
44 return new Promise<T | null>((resolve) => {
45 chrome.storage.sync.get(null, (sync: any) => {
46 if (chrome.runtime.lastError) {
47 console.error(chrome.runtime.lastError.message);
48 resolve(null);
49 return;
50 }
51
52 for (const key in sync) {
53 // Just to be sure: https://github.com/darkreader/darkreader/issues/7270
54 // The value of sync[key] shouldn't be null.
55 if (!sync[key]) {
56 continue;
57 }
58 const metaKeysCount = sync[key].__meta_split_count;
59 if (!metaKeysCount) {
60 continue;
61 }
62
63 let string = '';
64 for (let i = 0; i < metaKeysCount; i++) {
65 string += sync[`${key}_${i.toString(36)}`];
66 delete sync[`${key}_${i.toString(36)}`];
67 }
68 try {
69 sync[key] = JSON.parse(string);
70 } catch (error) {
71 console.error(`sync[${key}]: Could not parse record from sync storage: ${string}`);
72 resolve(null);
73 return;
74 }
75 }
76
77 sync = {
78 ...defaults,
79 ...sync,
80 };
81
82 resolve(sync);
83 });
84 });
85}
86
87export async function readLocalStorage<T extends {[key: string]: any}>(defaults: T): Promise<T> {
88 return new Promise<T>((resolve) => {

Callers 3

getReadNewsMethod · 0.90
getDisplayedNewsMethod · 0.90

Calls 1

getMethod · 0.65

Tested by

no test coverage detected