diff options
Diffstat (limited to 'src/state/models/ui/my-feeds.ts')
-rw-r--r-- | src/state/models/ui/my-feeds.ts | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/src/state/models/ui/my-feeds.ts b/src/state/models/ui/my-feeds.ts index 6b017709e..58f2e7f65 100644 --- a/src/state/models/ui/my-feeds.ts +++ b/src/state/models/ui/my-feeds.ts @@ -1,6 +1,7 @@ -import {makeAutoObservable} from 'mobx' +import {makeAutoObservable, reaction} from 'mobx' +import {SavedFeedsModel} from './saved-feeds' import {FeedsDiscoveryModel} from '../discovery/feeds' -import {CustomFeedModel} from '../feeds/custom-feed' +import {FeedSourceModel} from '../content/feed-source' import {RootStoreModel} from '../root-store' export type MyFeedsItem = @@ -29,7 +30,7 @@ export type MyFeedsItem = | { _reactKey: string type: 'saved-feed' - feed: CustomFeedModel + feed: FeedSourceModel } | { _reactKey: string @@ -46,21 +47,19 @@ export type MyFeedsItem = | { _reactKey: string type: 'discover-feed' - feed: CustomFeedModel + feed: FeedSourceModel } export class MyFeedsUIModel { + saved: SavedFeedsModel discovery: FeedsDiscoveryModel constructor(public rootStore: RootStoreModel) { makeAutoObservable(this) + this.saved = new SavedFeedsModel(this.rootStore) this.discovery = new FeedsDiscoveryModel(this.rootStore) } - get saved() { - return this.rootStore.me.savedFeeds - } - get isRefreshing() { return !this.saved.isLoading && this.saved.isRefreshing } @@ -78,6 +77,21 @@ export class MyFeedsUIModel { } } + registerListeners() { + const dispose1 = reaction( + () => this.rootStore.preferences.savedFeeds, + () => this.saved.refresh(), + ) + const dispose2 = reaction( + () => this.rootStore.preferences.pinnedFeeds, + () => this.saved.refresh(), + ) + return () => { + dispose1() + dispose2() + } + } + async refresh() { return Promise.all([this.saved.refresh(), this.discovery.refresh()]) } |