From af6f7d171bb28febe80a4506e7b4cbd929ad5ccf Mon Sep 17 00:00:00 2001 From: Stephen Zhou <38493346+hyoban@users.noreply.github.com> Date: Wed, 7 May 2025 18:25:24 +0800 Subject: [PATCH] fix(mobile): edit feed subscription view --- apps/mobile/src/store/subscription/store.ts | 22 ++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/apps/mobile/src/store/subscription/store.ts b/apps/mobile/src/store/subscription/store.ts index 348a16d1e..0571c7185 100644 --- a/apps/mobile/src/store/subscription/store.ts +++ b/apps/mobile/src/store/subscription/store.ts @@ -3,6 +3,7 @@ import { tracker } from "@follow/tracker" import type { SubscriptionSchema } from "@/src/database/schemas/types" import { apiClient } from "@/src/lib/api-fetch" +import { toast } from "@/src/lib/toast" import { honoMorph } from "@/src/morph/hono" import { buildSubscriptionDbId, storeDbMorph } from "@/src/morph/store-db" import { SubscriptionService } from "@/src/services/subscription" @@ -165,6 +166,10 @@ class SubscriptionSyncService { async edit(subscription: SubscriptionModel) { const subscriptionId = getSubscriptionStoreId(subscription) const current = get().data[subscriptionId] + if (!current) { + toast.error("Subscription to edit not found") + return + } const tx = createTransaction(current) let addNewCategory = false @@ -172,10 +177,15 @@ class SubscriptionSyncService { immerSet((draft) => { if ( subscription.category && - !draft.categories[subscription.view as FeedViewType].has(subscription.category) + !draft.categories[subscription.view].has(subscription.category) ) { addNewCategory = true - draft.categories[subscription.view as FeedViewType].add(subscription.category) + draft.categories[subscription.view].add(subscription.category) + } + + if (subscription.type === "feed") { + draft.feedIdByView[current.view].delete(current.feedId!) + draft.feedIdByView[subscription.view].add(subscription.feedId!) } draft.data[subscriptionId] = subscription @@ -184,8 +194,14 @@ class SubscriptionSyncService { tx.rollback((current) => { immerSet((draft) => { if (addNewCategory && subscription.category) { - draft.categories[subscription.view as FeedViewType].delete(subscription.category) + draft.categories[subscription.view].delete(subscription.category) } + + if (subscription.type === "feed") { + draft.feedIdByView[subscription.view].delete(subscription.feedId!) + draft.feedIdByView[current.view].add(current.feedId!) + } + draft.data[subscriptionId] = current }) })