Skip to content

Commit f59a2ea

Browse files
committed
tune MARGINAL_SIZE
1 parent dec4c9f commit f59a2ea

File tree

2 files changed

+26
-26
lines changed

2 files changed

+26
-26
lines changed

src/view/App.svelte

+1
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
function onDevReload() {
7979
console.clear();
8080
chrome.storage.local.clear();
81+
chrome.storage.session.clear();
8182
location.reload();
8283
}
8384
</script>
+25-26
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
import { getSession, setSession } from '../../api/session.ts';
22
import { SvelteSet } from 'svelte/reactivity';
3-
import { HASH_STRING_LENGTH } from '../../api/hash.ts';
43

5-
const SIZE_LIMIT = chrome.storage.session.QUOTA_BYTES - HASH_STRING_LENGTH;
64
export const sessionStore = $state({
75
bypass: <Set<string>> new SvelteSet(),
86
debug: <Set<string>> new SvelteSet(),
@@ -19,35 +17,36 @@ getSession().then((session) => {
1917
});
2018

2119
export async function toggleBypass(traceId: string) {
22-
const sessionStorageSize = await chrome.storage.session.getBytesInUse();
23-
let dirty = false;
24-
25-
if (sessionStore.bypass.has(traceId)) {
26-
sessionStore.bypass.delete(traceId);
27-
dirty = true;
28-
} else if (sessionStorageSize < SIZE_LIMIT) {
29-
sessionStore.bypass.add(traceId);
30-
dirty = true;
20+
if (await toggleSet(sessionStore.bypass, traceId)) {
21+
await setSession({
22+
bypass: Array.from(sessionStore.bypass.values()),
23+
});
3124
}
32-
33-
dirty && await setSession({
34-
bypass: Array.from(sessionStore.bypass.values()),
35-
});
3625
}
3726

3827
export async function toggleDebug(traceId: string) {
39-
const sessionStorageSize = await chrome.storage.session.getBytesInUse();
40-
let dirty = false;
28+
if (await toggleSet(sessionStore.debug, traceId)) {
29+
await setSession({
30+
debug: Array.from(sessionStore.debug.values()),
31+
});
32+
}
33+
}
4134

42-
if (sessionStore.debug.has(traceId)) {
43-
sessionStore.debug.delete(traceId);
44-
dirty = true;
45-
} else if (sessionStorageSize < SIZE_LIMIT) {
46-
sessionStore.debug.add(traceId);
47-
dirty = true;
35+
const QUOTA_THRESHOLD = chrome.storage.session.QUOTA_BYTES;
36+
const MARGINAL_SIZE = 40; // for ASCII string in an array
37+
async function toggleSet(set: Set<string>, traceId: string): Promise<boolean> {
38+
if (set.has(traceId)) {
39+
set.delete(traceId);
40+
return true;
4841
}
4942

50-
dirty && await setSession({
51-
debug: Array.from(sessionStore.debug.values()),
52-
});
43+
const freeSpace = QUOTA_THRESHOLD -
44+
await chrome.storage.session.getBytesInUse();
45+
46+
if (freeSpace - traceId.length - MARGINAL_SIZE >= 0) {
47+
set.add(traceId);
48+
return true;
49+
}
50+
51+
return false;
5352
}

0 commit comments

Comments
 (0)