v2.3 Papierkorb: pushToTrash() mit Klon und harter Obergrenze
This commit is contained in:
@@ -66,6 +66,28 @@ async function saveTrash() {
|
||||
await Store.set('trash', trash);
|
||||
}
|
||||
|
||||
/**
|
||||
* Legt einen Eintrag in den Papierkorb. Klont das Objekt (structuredClone),
|
||||
* damit der trash-Eintrag nicht per Referenz an boards[] haengt und nach dem
|
||||
* Restore-Loop konsistent bleibt. Setzt deletedAt. Erzwingt die harte Obergrenze
|
||||
* TRASH_MAX_ENTRIES (Quota-Schutz, TRASH-04): bei Ueberlauf fallen die aeltesten
|
||||
* Eintraege heraus. Speichern uebernimmt der Aufrufer (saveTrash()).
|
||||
* @param {{ item: Object, type: 'bookmark'|'board', originBoardId: (string|null) }} entry
|
||||
*/
|
||||
function pushToTrash({ item, type, originBoardId }) {
|
||||
trash.push({
|
||||
item: structuredClone(item),
|
||||
type,
|
||||
originBoardId: originBoardId ?? null,
|
||||
deletedAt: Date.now()
|
||||
});
|
||||
// Aelteste zuerst kappen, falls die Obergrenze ueberschritten ist.
|
||||
if (trash.length > TRASH_MAX_ENTRIES) {
|
||||
trash.sort((a, b) => a.deletedAt - b.deletedAt);
|
||||
trash = trash.slice(trash.length - TRASH_MAX_ENTRIES);
|
||||
}
|
||||
}
|
||||
|
||||
// Page-seitiger Wrapper um das DOM-freie ensureInbox() aus quicksave-core.js.
|
||||
// ensureInbox() mutiert das globale boards-Array in-place; wir persistieren nur,
|
||||
// wenn die Inbox neu angelegt wurde, und geben das Inbox-Board-Objekt zurueck
|
||||
|
||||
Reference in New Issue
Block a user