From 2c1391c378d38d3baffca83f5c168b931c89bd2e Mon Sep 17 00:00:00 2001 From: Youwes09 Date: Tue, 28 Apr 2026 22:24:37 -0500 Subject: [PATCH] Fix: Integrate Sync-Back on Tracker Addition (#52) --- src/features/series/panels/TrackingPanel.svelte | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/features/series/panels/TrackingPanel.svelte b/src/features/series/panels/TrackingPanel.svelte index 52dad58..abfe602 100644 --- a/src/features/series/panels/TrackingPanel.svelte +++ b/src/features/series/panels/TrackingPanel.svelte @@ -48,6 +48,9 @@ ]); trackers = tRes.trackers.nodes; records = rRes.manga.trackRecords.nodes; + if (store.settings.trackerSyncBack && records.length > 0) { + await Promise.all(records.map(r => applyToLibrary(r))); + } } catch (e: any) { addToast({ kind: "error", title: "Failed to load tracking", body: e?.message }); } finally { @@ -98,12 +101,21 @@ if (typeof activeTab !== "number") return; binding = true; try { + const existing = recordFor(activeTab); + if (existing) { + await gql(UNBIND_TRACK, { recordId: existing.id }); + records = records.filter(r => r.id !== existing.id); + } const res = await gql<{ bindTrack: { trackRecord: TrackRecord } }>( BIND_TRACK, { mangaId, trackerId: activeTab, remoteId: result.remoteId } ); - records = [...records.filter(r => r.trackerId !== activeTab), res.bindTrack.trackRecord]; + const newRecord = res.bindTrack.trackRecord; + records = [...records, newRecord]; activeTab = "records"; addToast({ kind: "success", title: "Now tracking", body: result.title }); + if (store.settings.trackerSyncBack) { + await applyToLibrary(newRecord); + } } catch (e: any) { addToast({ kind: "error", title: "Failed to bind", body: e?.message }); } finally {