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 | |
parent | f2e39d8ad24041637810327ca28ad78f9f36bf2f (diff) | |
download | voidsky-3f41d3db2603e75b6443487ce261a05f8e14076d.tar.zst |
make sure state is being synced across components
Diffstat (limited to 'src/state/models/feeds/algo')
-rw-r--r-- | src/state/models/feeds/algo/algo-item.ts | 28 | ||||
-rw-r--r-- | src/state/models/feeds/algo/saved.ts | 18 |
2 files changed, 21 insertions, 25 deletions
diff --git a/src/state/models/feeds/algo/algo-item.ts b/src/state/models/feeds/algo/algo-item.ts index 39bc760ac..8291b6d86 100644 --- a/src/state/models/feeds/algo/algo-item.ts +++ b/src/state/models/feeds/algo/algo-item.ts @@ -67,30 +67,12 @@ export class AlgoItemModel { } } - // public apis - // = - async save() { - try { - this.toggleSaved = true - await this.rootStore.agent.app.bsky.feed.saveFeed({ - feed: this.data.uri, - }) - } catch (e: any) { - this.rootStore.log.error('Failed to save feed', e) - } - } - - async unsave() { - try { - this.toggleSaved = false - await this.rootStore.agent.app.bsky.feed.unsaveFeed({ - feed: this.data.uri, - }) - } catch (e: any) { - this.rootStore.log.error('Failed to unsanve feed', e) - } + private rewriteData(data: AppBskyFeedDefs.GeneratorView) { + this.data = data } + // public apis + // = async like() { try { const res = await this.rootStore.agent.app.bsky.feed.like.create( @@ -151,7 +133,7 @@ export class AlgoItemModel { const res = await this.rootStore.agent.app.bsky.feed.getFeedGenerator({ feed: this.data.uri, }) - this.data = res.data.view + this.rewriteData(res.data.view) } serialize() { 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) } |