diff options
Diffstat (limited to 'src/state/models/feeds/algo')
-rw-r--r-- | src/state/models/feeds/algo/saved.ts | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/src/state/models/feeds/algo/saved.ts b/src/state/models/feeds/algo/saved.ts index bc36aaed8..5d2f854dc 100644 --- a/src/state/models/feeds/algo/saved.ts +++ b/src/state/models/feeds/algo/saved.ts @@ -89,6 +89,36 @@ export class SavedFeedsModel { } }) + removeFeed(uri: string) { + this.feeds = this.feeds.filter(f => f.data.uri !== uri) + } + + addFeed(algoItem: AlgoItemModel) { + this.feeds.push(new AlgoItemModel(this.rootStore, algoItem.data)) + } + + async save(algoItem: AlgoItemModel) { + try { + await this.rootStore.agent.app.bsky.feed.saveFeed({ + feed: algoItem.getUri, + }) + this.addFeed(algoItem) + } catch (e: any) { + this.rootStore.log.error('Failed to save feed', e) + } + } + + async unsave(uri: string) { + try { + await this.rootStore.agent.app.bsky.feed.unsaveFeed({ + feed: uri, + }) + this.removeFeed(uri) + } catch (e: any) { + this.rootStore.log.error('Failed to unsanve feed', e) + } + } + // state transitions // = |