From 0f637306e3dfb81173eaf5439adc156324ace11c Mon Sep 17 00:00:00 2001 From: Julien Maille Date: Sun, 11 Jan 2026 09:44:06 +0100 Subject: [PATCH] Fix: prevent deleted playlists from reappearing on sync --- js/firebase/sync.js | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/js/firebase/sync.js b/js/firebase/sync.js index 3707107..88f4bf0 100644 --- a/js/firebase/sync.js +++ b/js/firebase/sync.js @@ -51,10 +51,16 @@ export class SyncManager { // 1. Fetch Cloud Data const snapshot = await get(this.userRef); const cloudData = snapshot.val() || {}; + const deletedPlaylists = cloudData.deleted_playlists || {}; // 2. Fetch Local Data const localData = await db.exportData(); + // Filter out deleted playlists from local data + if (localData.user_playlists && Array.isArray(localData.user_playlists)) { + localData.user_playlists = localData.user_playlists.filter((p) => !deletedPlaylists[p.id]); + } + // 3. Merge Data (Union Strategy) const mergedData = this.mergeData(localData, cloudData); @@ -278,8 +284,14 @@ export class SyncManager { if (action === 'create' || action === 'update') { await set(itemRef, playlist); + // Ensure it's not in deleted_playlists (just in case) + const deletedRef = child(this.userRef, `deleted_playlists/${id}`); + await remove(deletedRef); } else if (action === 'delete') { await remove(itemRef); + // Add tombstone + const deletedRef = child(this.userRef, `deleted_playlists/${id}`); + await set(deletedRef, { timestamp: Date.now() }); } }