-
Notifications
You must be signed in to change notification settings - Fork 0
/
storage.js
64 lines (60 loc) · 1.51 KB
/
storage.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
export const s_storage = {
settings: {
control_torrents: false,
control_magnets: false,
access_token: '',
refresh_token: '',
username: ''
},
set: async function(setting, value) {
if (typeof this.settings[setting] === 'undefined') {
console.log("Illegal setting passed to storage");
throw new Error("Illegal setting");
} else {
this.settings[setting] = value;
let i = {};
i[setting] = value;
try {
await new Promise((resolve, reject) => {
chrome.storage.local.set(i, () => {
if (chrome.runtime.lastError) {
reject(chrome.runtime.lastError);
} else {
console.log('Setting ' + setting + ' : ' + value + ' saved');
resolve();
}
});
});
return value;
} catch (error) {
console.error("Error saving setting:", error);
throw error;
}
}
},
get: async function(setting) {
if (typeof this.settings[setting] === 'undefined') {
console.log("Illegal setting passed to storage");
throw new Error("Illegal setting");
} else {
try {
const data = await new Promise((resolve, reject) => {
chrome.storage.local.get(setting, (result) => {
if (chrome.runtime.lastError) {
reject(chrome.runtime.lastError);
} else {
resolve(result);
}
});
});
if (typeof data[setting] !== 'undefined') {
this.settings[setting] = data[setting];
}
return this.settings[setting];
} catch (error) {
console.error("Error retrieving setting:", error);
throw error;
}
}
}
};