fix(quick-save): Pending-Queue-Redesign (Blocker 2b) — Worker schreibt eigenen 'quicksave_pending'-Key statt boards, Seite drained in die Inbox; getrennte Schreib-Domaenen, kein boards-Clobber
This commit is contained in:
@@ -46,7 +46,10 @@ function flashBadge(text, color) {
|
||||
// Interne/nicht speicherbare Seiten (Browser-UI, Extension-Seiten) — kein sinnvolles Bookmark.
|
||||
const UNSAVEABLE_URL = /^(chrome|chrome-extension|about|edge|opera|moz-extension|brave|vivaldi|view-source|devtools):/i;
|
||||
|
||||
// Quick-Save: aktiven Tab lesen, in die Inbox haengen (read-modify-write).
|
||||
// Quick-Save: aktiven Tab in die Pending-Queue haengen — NICHT boards schreiben.
|
||||
// Datensicherheit (Phase-4-Review 2b): boards schreibt ausschliesslich die NewTab-Seite. Der Worker
|
||||
// haengt nur an 'quicksave_pending' an; die Seite drained die Queue in die Inbox. So koennen Worker
|
||||
// und Seite sich nicht im boards-Array gegenseitig ueberschreiben (kein Lost-Update bestehender Daten).
|
||||
async function quickSaveActiveTab() {
|
||||
const tabs = await chrome.tabs.query({ active: true, currentWindow: true });
|
||||
const tab = tabs && tabs[0];
|
||||
@@ -56,13 +59,11 @@ async function quickSaveActiveTab() {
|
||||
return;
|
||||
}
|
||||
|
||||
// read-modify-write: aktuellen Stand frisch aus Storage holen, NICHT blind setzen.
|
||||
const boards = (await bgGet('boards')) ?? [];
|
||||
const inbox = ensureInbox(boards);
|
||||
inbox.bookmarks.push(normalizeBookmark({ title: tab.title || tab.url, url: tab.url }));
|
||||
|
||||
try {
|
||||
await bgSet('boards', boards);
|
||||
// read-modify-write nur auf der EIGENEN Queue (bgGet/bgSet sind via quickSaveChain serialisiert).
|
||||
const pending = (await bgGet('quicksave_pending')) ?? [];
|
||||
pending.push({ id: uid(), title: tab.title || tab.url, url: tab.url });
|
||||
await bgSet('quicksave_pending', pending);
|
||||
flashBadge(chrome.i18n.getMessage('quickSaveBadge'));
|
||||
} catch (e) {
|
||||
// Quota o.ae.: Badge zeigt nichts Gruenes, Fehler in die Worker-Konsole.
|
||||
|
||||
Reference in New Issue
Block a user