diff options
author | Ansh Nanda <anshnanda10@gmail.com> | 2023-05-16 16:07:07 -0700 |
---|---|---|
committer | Ansh Nanda <anshnanda10@gmail.com> | 2023-05-16 16:07:07 -0700 |
commit | 3f41d3db2603e75b6443487ce261a05f8e14076d (patch) | |
tree | 866d4e4aab297a23b39a60f383ac32a59fca7499 /src/state/models/feeds/algo/saved.ts | |
parent | f2e39d8ad24041637810327ca28ad78f9f36bf2f (diff) | |
download | voidsky-3f41d3db2603e75b6443487ce261a05f8e14076d.tar.zst |
make sure state is being synced across components
Diffstat (limited to 'src/state/models/feeds/algo/saved.ts')
-rw-r--r-- | src/state/models/feeds/algo/saved.ts | 18 |
1 files changed, 16 insertions, 2 deletions
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) } |