fix(trash): Import-Cap verdraengt keine lokalen Sole-Copies mehr
Beim Trash-Import sortierte combined.sort+slice(-N) rein nach deletedAt: brachte ein Backup neuere Eintraege mit, fielen aeltere LOKALE Eintraege aus dem Cap — und die sind die einzige Kopie der geloeschten Daten (Datenverlust). Jetzt haben lokale Eintraege Vorrang (alle behalten, sind bereits auf TRASH_MAX_ENTRIES gekappt), Importe fuellen nur den Rest mit den neuesten auf.
This commit is contained in:
+12
-6
@@ -124,12 +124,18 @@ function initDataButtons() {
|
|||||||
}))
|
}))
|
||||||
.filter(e => e.item !== null);
|
.filter(e => e.item !== null);
|
||||||
if (validTrash.length > 0) {
|
if (validTrash.length > 0) {
|
||||||
// Nach deletedAt aufsteigend sortieren, DANN die neuesten TRASH_MAX_ENTRIES behalten.
|
// Lokale Eintraege sind die EINZIGE Kopie ihrer geloeschten Daten -> Vorrang. Importierte
|
||||||
// Positionsbasiertes slice(-N) wuerde sonst frische lokale Eintraege verdraengen
|
// stammen aus einem Backup, das der Nutzer noch besitzt -> nachrangig. Daher: erst ALLE
|
||||||
// statt der aeltesten — Datenverlust, da ein Trash-Eintrag die einzige Kopie ist.
|
// lokalen behalten (pushToTrash kappt sie bereits auf TRASH_MAX_ENTRIES), dann mit den
|
||||||
const combined = [...trash, ...validTrash];
|
// NEUESTEN importierten bis zur Obergrenze auffuellen. Ein frischer Import verdraengt so
|
||||||
combined.sort((a, b) => a.deletedAt - b.deletedAt);
|
// keine aelteren lokalen Sole-Copies mehr (frueheres sort+slice(-N) konnte das, data-loss).
|
||||||
trash = combined.slice(-TRASH_MAX_ENTRIES);
|
const room = Math.max(0, TRASH_MAX_ENTRIES - trash.length);
|
||||||
|
const keptImports = validTrash
|
||||||
|
.slice()
|
||||||
|
.sort((a, b) => b.deletedAt - a.deletedAt) // neueste Importe zuerst
|
||||||
|
.slice(0, room);
|
||||||
|
// Am Ende nach deletedAt aufsteigend fuer eine stabile Anzeige-Reihenfolge.
|
||||||
|
trash = [...trash, ...keptImports].sort((a, b) => a.deletedAt - b.deletedAt);
|
||||||
await saveTrash();
|
await saveTrash();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user