Skip to content

Commit ff24610

Browse files
authored
add timeout to managed storage function (#1256)
* add timeout to managed storage function * lower timeout significantly
1 parent 9e996f4 commit ff24610

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed

src/models/storage.ts

+23-15
Original file line numberDiff line numberDiff line change
@@ -691,23 +691,31 @@ export class ManagedStorage {
691691
static get<T>(key: string): T | undefined;
692692
static get<T>(key: string, defaultValue: T): T;
693693
static get<T>(key: string, defaultValue?: T) {
694-
return new Promise((resolve: (result: T | undefined) => void) => {
695-
if (chrome.storage.managed) {
696-
chrome.storage.managed.get((data) => {
697-
if (chrome.runtime.lastError) {
698-
return resolve(defaultValue);
699-
}
700-
if (data) {
701-
if (data[key]) {
702-
return resolve(data[key]);
694+
const managedStoragePromise = new Promise(
695+
(resolve: (result: T | undefined) => void) => {
696+
if (chrome.storage.managed) {
697+
chrome.storage.managed.get((data) => {
698+
if (chrome.runtime.lastError) {
699+
return resolve(defaultValue);
703700
}
704-
}
705-
return resolve(defaultValue);
706-
});
707-
} else {
708-
// no available in Safari
709-
resolve(defaultValue);
701+
if (data) {
702+
if (data[key]) {
703+
return resolve(data[key]);
704+
}
705+
}
706+
return resolve(defaultValue);
707+
});
708+
} else {
709+
// no available in Safari
710+
resolve(defaultValue);
711+
}
710712
}
713+
);
714+
715+
const timeoutPromise = new Promise((resolve) => {
716+
setTimeout(() => resolve(defaultValue), 10);
711717
});
718+
719+
return Promise.race([managedStoragePromise, timeoutPromise]);
712720
}
713721
}

0 commit comments

Comments
 (0)