diff options
author | Paul Frazee <pfrazee@gmail.com> | 2022-11-08 16:37:21 -0600 |
---|---|---|
committer | Paul Frazee <pfrazee@gmail.com> | 2022-11-08 16:37:21 -0600 |
commit | 0cdfd089f542526276781264045d13f12657d431 (patch) | |
tree | 468cc0a3086630a7894be0ba95c6f18cc0a381f4 /src/state/models/profile-ui.ts | |
parent | e6429182a1e844b33017c4f5f9a5ca2ce103bfdb (diff) | |
download | voidsky-0cdfd089f542526276781264045d13f12657d431.tar.zst |
Implement scene member/memberships listings
Diffstat (limited to 'src/state/models/profile-ui.ts')
-rw-r--r-- | src/state/models/profile-ui.ts | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/src/state/models/profile-ui.ts b/src/state/models/profile-ui.ts index 2ec615a9c..a9062bf92 100644 --- a/src/state/models/profile-ui.ts +++ b/src/state/models/profile-ui.ts @@ -1,6 +1,8 @@ import {makeAutoObservable} from 'mobx' import {RootStoreModel} from './root-store' import {ProfileViewModel} from './profile-view' +import {MembersViewModel} from './members-view' +import {MembershipsViewModel} from './memberships-view' import {FeedModel} from './feed-view' export enum Sections { @@ -21,6 +23,8 @@ export class ProfileUiModel { // data profile: ProfileViewModel feed: FeedModel + memberships: MembershipsViewModel + members: MembersViewModel // ui state selectedViewIndex = 0 @@ -42,15 +46,23 @@ export class ProfileUiModel { author: params.user, limit: 10, }) + this.memberships = new MembershipsViewModel(rootStore, {actor: params.user}) + this.members = new MembersViewModel(rootStore, {actor: params.user}) } - get currentView(): FeedModel { + get currentView(): FeedModel | MembershipsViewModel | MembersViewModel { if ( this.selectedView === Sections.Posts || this.selectedView === Sections.Trending ) { return this.feed } + if (this.selectedView === Sections.Scenes) { + return this.memberships + } + if (this.selectedView === Sections.Members) { + return this.members + } throw new Error(`Invalid selector value: ${this.selectedViewIndex}`) } @@ -101,10 +113,25 @@ export class ProfileUiModel { .setup() .catch(err => console.error('Failed to fetch feed', err)), ]) + if (this.isUser) { + await this.memberships + .setup() + .catch(err => console.error('Failed to fetch members', err)) + } + if (this.isScene) { + await this.members + .setup() + .catch(err => console.error('Failed to fetch members', err)) + } } async update() { - await this.currentView.update() + const view = this.currentView + if (view instanceof FeedModel) { + await view.update() + } else { + await view.refresh() + } } async refresh() { |