Reorganize state models for clarity (#378)

This commit is contained in:
Paul Frazee
2023-04-03 15:21:17 -05:00
committed by GitHub
parent 9652d994dd
commit 2045c615a8
44 changed files with 163 additions and 171 deletions
+8 -8
View File
@@ -1,7 +1,7 @@
import {makeAutoObservable} from 'mobx'
import {RootStoreModel} from '../root-store'
import {ProfileViewModel} from '../profile-view'
import {FeedModel} from '../feed-view'
import {ProfileModel} from '../content/profile'
import {PostsFeedModel} from '../feeds/posts'
export enum Sections {
Posts = 'Posts',
@@ -20,8 +20,8 @@ export class ProfileUiModel {
static EMPTY_ITEM = {_reactKey: '__empty__'}
// data
profile: ProfileViewModel
feed: FeedModel
profile: ProfileModel
feed: PostsFeedModel
// ui state
selectedViewIndex = 0
@@ -38,14 +38,14 @@ export class ProfileUiModel {
},
{autoBind: true},
)
this.profile = new ProfileViewModel(rootStore, {actor: params.user})
this.feed = new FeedModel(rootStore, 'author', {
this.profile = new ProfileModel(rootStore, {actor: params.user})
this.feed = new PostsFeedModel(rootStore, 'author', {
actor: params.user,
limit: 10,
})
}
get currentView(): FeedModel {
get currentView(): PostsFeedModel {
if (
this.selectedView === Sections.Posts ||
this.selectedView === Sections.PostsWithReplies
@@ -137,7 +137,7 @@ export class ProfileUiModel {
async update() {
const view = this.currentView
if (view instanceof FeedModel) {
if (view instanceof PostsFeedModel) {
await view.update()
}
}
+3 -3
View File
@@ -1,7 +1,7 @@
import {AppBskyEmbedRecord} from '@atproto/api'
import {RootStoreModel} from '../root-store'
import {makeAutoObservable} from 'mobx'
import {ProfileViewModel} from '../profile-view'
import {ProfileModel} from '../content/profile'
import {isObj, hasProp} from 'lib/type-guards'
import {PickedMedia} from 'lib/media/types'
@@ -14,7 +14,7 @@ export interface ConfirmModal {
export interface EditProfileModal {
name: 'edit-profile'
profileView: ProfileViewModel
profileView: ProfileModel
onUpdate?: () => void
}
@@ -77,7 +77,7 @@ interface LightboxModel {}
export class ProfileImageLightbox implements LightboxModel {
name = 'profile-image'
constructor(public profileView: ProfileViewModel) {
constructor(public profileView: ProfileModel) {
makeAutoObservable(this)
}
}