From 3f41d3db2603e75b6443487ce261a05f8e14076d Mon Sep 17 00:00:00 2001 From: Ansh Nanda Date: Tue, 16 May 2023 16:07:07 -0700 Subject: make sure state is being synced across components --- src/state/models/feeds/algo/saved.ts | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) (limited to 'src/state/models/feeds/algo/saved.ts') diff --git a/src/state/models/feeds/algo/saved.ts b/src/state/models/feeds/algo/saved.ts index 15859fe0c..97d75820d 100644 --- a/src/state/models/feeds/algo/saved.ts +++ b/src/state/models/feeds/algo/saved.ts @@ -71,6 +71,12 @@ export class SavedFeedsModel { ) } + get listOfPinnedFeedNames() { + return this.pinned.map( + f => f.data.displayName ?? f.data.creator.displayName + "'s feed", + ) + } + get savedFeedsWithoutPinned() { return this.feeds.filter( f => !this.pinned.find(p => p.data.uri === f.data.uri), @@ -81,10 +87,14 @@ export class SavedFeedsModel { if (!this.isPinned(feed)) { this.pinned.push(feed) } else { - this.pinned = this.pinned.filter(f => f.data.uri !== feed.data.uri) + this.removePinnedFeed(feed.data.uri) } } + removePinnedFeed(uri: string) { + this.pinned = this.pinned.filter(f => f.data.uri !== uri) + } + reorderPinnedFeeds(temp: AlgoItemModel[]) { this.pinned = temp } @@ -144,18 +154,22 @@ export class SavedFeedsModel { await this.rootStore.agent.app.bsky.feed.saveFeed({ feed: algoItem.getUri, }) + algoItem.toggleSaved = true this.addFeed(algoItem) } catch (e: any) { this.rootStore.log.error('Failed to save feed', e) } } - async unsave(uri: string) { + async unsave(algoItem: AlgoItemModel) { + const uri = algoItem.getUri try { await this.rootStore.agent.app.bsky.feed.unsaveFeed({ feed: uri, }) + algoItem.toggleSaved = false this.removeFeed(uri) + this.removePinnedFeed(uri) } catch (e: any) { this.rootStore.log.error('Failed to unsanve feed', e) } -- cgit 1.4.1