fix(trash): Daten-Review-Befunde — Import-Cap nach deletedAt sortiert (Verlust-Schutz), Restore-Doppelklick-Guard, Delete-Rollback bei Save-Fehler, NaN/Null-Haertung
This commit is contained in:
+5
-1
@@ -219,7 +219,7 @@ function createTrashItemEl(entry) {
|
||||
btnRestore.className = 'btn-small';
|
||||
btnRestore.textContent = t('trash.restore');
|
||||
btnRestore.title = t('trash.restore_title');
|
||||
btnRestore.addEventListener('click', () => restoreTrashEntry(entry));
|
||||
btnRestore.addEventListener('click', () => { btnRestore.disabled = true; restoreTrashEntry(entry); });
|
||||
|
||||
const btnForever = document.createElement('button');
|
||||
btnForever.className = 'btn-danger';
|
||||
@@ -239,6 +239,10 @@ function createTrashItemEl(entry) {
|
||||
* @param {Object} entry
|
||||
*/
|
||||
async function restoreTrashEntry(entry) {
|
||||
// Re-Entry-Guard: ein zweiter Klick (z.B. waehrend der Inbox-Alert offen ist) wuerde sonst
|
||||
// das Item ein zweites Mal einfuegen (Duplikat). Nach der ersten Ausfuehrung ist entry
|
||||
// nicht mehr in trash[]; btnRestore wird zusaetzlich beim ersten Klick disabled.
|
||||
if (!trash.includes(entry)) return;
|
||||
if (entry.type === 'board') {
|
||||
// Ganzes Board zurueck (inkl. blurred). Falls die id schon existiert (Edge-Case),
|
||||
// neue uid vergeben, damit nichts ueberschrieben wird.
|
||||
|
||||
Reference in New Issue
Block a user