about summary refs log tree commit diff
path: root/src/state/models/feeds/algo/saved.ts
diff options
context:
space:
mode:
authorAnsh Nanda <anshnanda10@gmail.com>2023-05-16 16:07:07 -0700
committerAnsh Nanda <anshnanda10@gmail.com>2023-05-16 16:07:07 -0700
commit3f41d3db2603e75b6443487ce261a05f8e14076d (patch)
tree866d4e4aab297a23b39a60f383ac32a59fca7499 /src/state/models/feeds/algo/saved.ts
parentf2e39d8ad24041637810327ca28ad78f9f36bf2f (diff)
downloadvoidsky-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.ts18
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)
     }