Skip to content

Commit 36017d3

Browse files
committed
Fix: Can't detect max memory of browser via firefox
1 parent ca83636 commit 36017d3

File tree

2 files changed

+21
-8
lines changed

2 files changed

+21
-8
lines changed

src/database/common/storage-promise.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,24 @@ export default class StoragePromise {
88
this.storage = storage
99
}
1010

11-
public get(keys: string | string[] | Object | null): Promise<{ [key: string]: any }> {
11+
get(keys?: string | string[] | Object | null): Promise<{ [key: string]: any }> {
1212
return new Promise(resolve => this.storage.get(keys, resolve))
1313
}
1414

15-
public set(obj: Object): Promise<void> {
15+
set(obj: Object): Promise<void> {
1616
return new Promise<void>(resolve => this.storage.set(obj, resolve))
1717
}
1818

19-
public remove(key: string | string[]): Promise<void> {
19+
remove(key: string | string[]): Promise<void> {
2020
return new Promise(resolve => this.storage.remove(key, resolve))
2121
}
22+
23+
async getUsedMemory(): Promise<number> {
24+
if (this.storage.getBytesInUse) {
25+
return new Promise(resolve => this.storage.getBytesInUse(resolve))
26+
} else {
27+
const store = await this.get()
28+
return JSON.stringify(store).length
29+
}
30+
}
2231
}

src/database/memory-detector.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import StoragePromise from "./common/storage-promise";
2+
13
/**
24
* User memory of this extension
35
*/
@@ -12,15 +14,17 @@ export declare type MemoryInfo = {
1214
total: number
1315
}
1416

15-
const total: number = chrome.storage.local.QUOTA_BYTES
17+
/**
18+
* 'QUOTA_BYTES' Not supported in Firefox
19+
*/
20+
const total: number = chrome.storage.local.QUOTA_BYTES || 0
1621

1722
/**
1823
* Get the used memory by bytes
1924
*
2025
* @since 0.0.9
2126
*/
22-
export function getUsedStorage(): Promise<MemoryInfo> {
23-
return new Promise(
24-
resolve => chrome.storage.local.getBytesInUse(used => resolve({ used, total }))
25-
)
27+
export async function getUsedStorage(): Promise<MemoryInfo> {
28+
const used = await new StoragePromise(chrome.storage.local).getUsedMemory()
29+
return { used, total }
2630
}

0 commit comments

Comments
 (0)