about summary refs log tree commit diff
path: root/src/state/models
diff options
context:
space:
mode:
Diffstat (limited to 'src/state/models')
-rw-r--r--src/state/models/cache/profiles-view.ts (renamed from src/state/models/profiles-view.ts)4
-rw-r--r--src/state/models/content/post-thread.ts (renamed from src/state/models/post-thread-view.ts)20
-rw-r--r--src/state/models/content/post.ts (renamed from src/state/models/post.ts)4
-rw-r--r--src/state/models/content/profile.ts (renamed from src/state/models/profile-view.ts)8
-rw-r--r--src/state/models/discovery/suggested-posts.ts (renamed from src/state/models/suggested-posts-view.ts)10
-rw-r--r--src/state/models/discovery/user-autocomplete.ts (renamed from src/state/models/user-autocomplete-view.ts)4
-rw-r--r--src/state/models/feeds/notifications.ts (renamed from src/state/models/notifications-view.ts)32
-rw-r--r--src/state/models/feeds/posts.ts (renamed from src/state/models/feed-view.ts)26
-rw-r--r--src/state/models/lists/likes.ts (renamed from src/state/models/likes-view.ts)6
-rw-r--r--src/state/models/lists/reposted-by.ts (renamed from src/state/models/reposted-by-view.ts)6
-rw-r--r--src/state/models/lists/user-followers.ts (renamed from src/state/models/user-followers-view.ts)4
-rw-r--r--src/state/models/lists/user-follows.ts (renamed from src/state/models/user-follows-view.ts)4
-rw-r--r--src/state/models/me.ts12
-rw-r--r--src/state/models/root-store.ts10
-rw-r--r--src/state/models/ui/profile.ts16
-rw-r--r--src/state/models/ui/shell.ts6
16 files changed, 88 insertions, 84 deletions
diff --git a/src/state/models/profiles-view.ts b/src/state/models/cache/profiles-view.ts
index 30e6d0442..b4bd70db5 100644
--- a/src/state/models/profiles-view.ts
+++ b/src/state/models/cache/profiles-view.ts
@@ -1,10 +1,10 @@
 import {makeAutoObservable} from 'mobx'
 import {LRUMap} from 'lru_map'
-import {RootStoreModel} from './root-store'
+import {RootStoreModel} from '../root-store'
 import {AppBskyActorGetProfile as GetProfile} from '@atproto/api'
 
 type CacheValue = Promise<GetProfile.Response> | GetProfile.Response
-export class ProfilesViewModel {
+export class ProfilesCache {
   cache: LRUMap<string, CacheValue> = new LRUMap(100)
 
   constructor(public rootStore: RootStoreModel) {
diff --git a/src/state/models/post-thread-view.ts b/src/state/models/content/post-thread.ts
index c5395b9c8..031b82438 100644
--- a/src/state/models/post-thread-view.ts
+++ b/src/state/models/content/post-thread.ts
@@ -5,8 +5,8 @@ import {
   AppBskyFeedDefs,
   RichText,
 } from '@atproto/api'
-import {AtUri} from '../../third-party/uri'
-import {RootStoreModel} from './root-store'
+import {AtUri} from '../../../third-party/uri'
+import {RootStoreModel} from '../root-store'
 import * as apilib from 'lib/api/index'
 import {cleanError} from 'lib/strings/errors'
 
@@ -17,7 +17,7 @@ function* reactKeyGenerator(): Generator<string> {
   }
 }
 
-export class PostThreadViewPostModel {
+export class PostThreadItemModel {
   // ui state
   _reactKey: string = ''
   _depth = 0
@@ -29,8 +29,8 @@ export class PostThreadViewPostModel {
   // data
   post: AppBskyFeedDefs.PostView
   postRecord?: FeedPost.Record
-  parent?: PostThreadViewPostModel | AppBskyFeedDefs.NotFoundPost
-  replies?: (PostThreadViewPostModel | AppBskyFeedDefs.NotFoundPost)[]
+  parent?: PostThreadItemModel | AppBskyFeedDefs.NotFoundPost
+  replies?: (PostThreadItemModel | AppBskyFeedDefs.NotFoundPost)[]
   richText?: RichText
 
   get uri() {
@@ -79,7 +79,7 @@ export class PostThreadViewPostModel {
     // parents
     if (includeParent && v.parent) {
       if (AppBskyFeedDefs.isThreadViewPost(v.parent)) {
-        const parentModel = new PostThreadViewPostModel(
+        const parentModel = new PostThreadItemModel(
           this.rootStore,
           keyGen.next().value,
           v.parent,
@@ -106,7 +106,7 @@ export class PostThreadViewPostModel {
       const replies = []
       for (const item of v.replies) {
         if (AppBskyFeedDefs.isThreadViewPost(item)) {
-          const itemModel = new PostThreadViewPostModel(
+          const itemModel = new PostThreadItemModel(
             this.rootStore,
             keyGen.next().value,
             item,
@@ -182,7 +182,7 @@ export class PostThreadViewPostModel {
   }
 }
 
-export class PostThreadViewModel {
+export class PostThreadModel {
   // state
   isLoading = false
   isRefreshing = false
@@ -193,7 +193,7 @@ export class PostThreadViewModel {
   params: GetPostThread.QueryParams
 
   // data
-  thread?: PostThreadViewPostModel
+  thread?: PostThreadItemModel
 
   constructor(
     public rootStore: RootStoreModel,
@@ -321,7 +321,7 @@ export class PostThreadViewModel {
   _replaceAll(res: GetPostThread.Response) {
     sortThread(res.data.thread)
     const keyGen = reactKeyGenerator()
-    const thread = new PostThreadViewPostModel(
+    const thread = new PostThreadItemModel(
       this.rootStore,
       keyGen.next().value,
       res.data.thread as AppBskyFeedDefs.ThreadViewPost,
diff --git a/src/state/models/post.ts b/src/state/models/content/post.ts
index c7f2896ba..bf22ccf13 100644
--- a/src/state/models/post.ts
+++ b/src/state/models/content/post.ts
@@ -1,7 +1,7 @@
 import {makeAutoObservable} from 'mobx'
 import {AppBskyFeedPost as Post} from '@atproto/api'
-import {AtUri} from '../../third-party/uri'
-import {RootStoreModel} from './root-store'
+import {AtUri} from '../../../third-party/uri'
+import {RootStoreModel} from '../root-store'
 import {cleanError} from 'lib/strings/errors'
 
 type RemoveIndex<T> = {
diff --git a/src/state/models/profile-view.ts b/src/state/models/content/profile.ts
index eacc6a298..08616bf18 100644
--- a/src/state/models/profile-view.ts
+++ b/src/state/models/content/profile.ts
@@ -5,13 +5,13 @@ import {
   AppBskyActorProfile,
   RichText,
 } from '@atproto/api'
-import {RootStoreModel} from './root-store'
+import {RootStoreModel} from '../root-store'
 import * as apilib from 'lib/api/index'
 import {cleanError} from 'lib/strings/errors'
 
 export const ACTOR_TYPE_USER = 'app.bsky.system.actorUser'
 
-export class ProfileViewViewerModel {
+export class ProfileViewerModel {
   muted?: boolean
   following?: string
   followedBy?: string
@@ -21,7 +21,7 @@ export class ProfileViewViewerModel {
   }
 }
 
-export class ProfileViewModel {
+export class ProfileModel {
   // state
   isLoading = false
   isRefreshing = false
@@ -40,7 +40,7 @@ export class ProfileViewModel {
   followersCount: number = 0
   followsCount: number = 0
   postsCount: number = 0
-  viewer = new ProfileViewViewerModel()
+  viewer = new ProfileViewerModel()
 
   // added data
   descriptionRichText?: RichText = new RichText({text: ''})
diff --git a/src/state/models/suggested-posts-view.ts b/src/state/models/discovery/suggested-posts.ts
index 46bf235ff..6c8de3023 100644
--- a/src/state/models/suggested-posts-view.ts
+++ b/src/state/models/discovery/suggested-posts.ts
@@ -1,6 +1,6 @@
 import {makeAutoObservable, runInAction} from 'mobx'
-import {RootStoreModel} from './root-store'
-import {FeedItemModel} from './feed-view'
+import {RootStoreModel} from '../root-store'
+import {PostsFeedItemModel} from '../feeds/posts'
 import {cleanError} from 'lib/strings/errors'
 import {TEAM_HANDLES} from 'lib/constants'
 import {
@@ -8,14 +8,14 @@ import {
   mergePosts,
 } from 'lib/api/build-suggested-posts'
 
-export class SuggestedPostsView {
+export class SuggestedPostsModel {
   // state
   isLoading = false
   hasLoaded = false
   error = ''
 
   // data
-  posts: FeedItemModel[] = []
+  posts: PostsFeedItemModel[] = []
 
   constructor(public rootStore: RootStoreModel) {
     makeAutoObservable(
@@ -57,7 +57,7 @@ export class SuggestedPostsView {
         this.posts = finalPosts.map((post, i) => {
           // strip the reasons to hide that these are reposts
           delete post.reason
-          return new FeedItemModel(this.rootStore, `post-${i}`, post)
+          return new PostsFeedItemModel(this.rootStore, `post-${i}`, post)
         })
       })
       this._xIdle()
diff --git a/src/state/models/user-autocomplete-view.ts b/src/state/models/discovery/user-autocomplete.ts
index ad89bb08b..601e10ea0 100644
--- a/src/state/models/user-autocomplete-view.ts
+++ b/src/state/models/discovery/user-autocomplete.ts
@@ -1,9 +1,9 @@
 import {makeAutoObservable, runInAction} from 'mobx'
 import {AppBskyActorDefs} from '@atproto/api'
 import AwaitLock from 'await-lock'
-import {RootStoreModel} from './root-store'
+import {RootStoreModel} from '../root-store'
 
-export class UserAutocompleteViewModel {
+export class UserAutocompleteModel {
   // state
   isLoading = false
   isActive = false
diff --git a/src/state/models/notifications-view.ts b/src/state/models/feeds/notifications.ts
index 7089f0125..ea3538438 100644
--- a/src/state/models/notifications-view.ts
+++ b/src/state/models/feeds/notifications.ts
@@ -9,8 +9,8 @@ import {
 } from '@atproto/api'
 import AwaitLock from 'await-lock'
 import {bundleAsync} from 'lib/async/bundle'
-import {RootStoreModel} from './root-store'
-import {PostThreadViewModel} from './post-thread-view'
+import {RootStoreModel} from '../root-store'
+import {PostThreadModel} from '../content/post-thread'
 import {cleanError} from 'lib/strings/errors'
 
 const GROUPABLE_REASONS = ['like', 'repost', 'follow']
@@ -30,7 +30,7 @@ type SupportedRecord =
   | AppBskyFeedLike.Record
   | AppBskyGraphFollow.Record
 
-export class NotificationsViewItemModel {
+export class NotificationsFeedItemModel {
   // ui state
   _reactKey: string = ''
 
@@ -47,10 +47,10 @@ export class NotificationsViewItemModel {
   record?: SupportedRecord
   isRead: boolean = false
   indexedAt: string = ''
-  additional?: NotificationsViewItemModel[]
+  additional?: NotificationsFeedItemModel[]
 
   // additional data
-  additionalPost?: PostThreadViewModel
+  additionalPost?: PostThreadModel
 
   constructor(
     public rootStore: RootStoreModel,
@@ -75,7 +75,7 @@ export class NotificationsViewItemModel {
       this.additional = []
       for (const add of v.additional) {
         this.additional.push(
-          new NotificationsViewItemModel(this.rootStore, '', add),
+          new NotificationsFeedItemModel(this.rootStore, '', add),
         )
       }
     } else if (!preserve) {
@@ -171,7 +171,7 @@ export class NotificationsViewItemModel {
       postUri = this.subjectUri
     }
     if (postUri) {
-      this.additionalPost = new PostThreadViewModel(this.rootStore, {
+      this.additionalPost = new PostThreadModel(this.rootStore, {
         uri: postUri,
         depth: 0,
       })
@@ -185,7 +185,7 @@ export class NotificationsViewItemModel {
   }
 }
 
-export class NotificationsViewModel {
+export class NotificationsFeedModel {
   // state
   isLoading = false
   isRefreshing = false
@@ -199,7 +199,7 @@ export class NotificationsViewModel {
   lock = new AwaitLock()
 
   // data
-  notifications: NotificationsViewItemModel[] = []
+  notifications: NotificationsFeedItemModel[] = []
   unreadCount = 0
 
   // this is used to help trigger push notifications
@@ -416,7 +416,7 @@ export class NotificationsViewModel {
     }
   }
 
-  async getNewMostRecent(): Promise<NotificationsViewItemModel | undefined> {
+  async getNewMostRecent(): Promise<NotificationsFeedItemModel | undefined> {
     let old = this.mostRecentNotificationUri
     const res = await this.rootStore.agent.listNotifications({
       limit: 1,
@@ -425,7 +425,7 @@ export class NotificationsViewModel {
       return
     }
     this.mostRecentNotificationUri = res.data.notifications[0].uri
-    const notif = new NotificationsViewItemModel(
+    const notif = new NotificationsFeedItemModel(
       this.rootStore,
       'mostRecent',
       res.data.notifications[0],
@@ -467,9 +467,9 @@ export class NotificationsViewModel {
     this.loadMoreCursor = res.data.cursor
     this.hasMore = !!this.loadMoreCursor
     const promises = []
-    const itemModels: NotificationsViewItemModel[] = []
+    const itemModels: NotificationsFeedItemModel[] = []
     for (const item of groupNotifications(res.data.notifications)) {
-      const itemModel = new NotificationsViewItemModel(
+      const itemModel = new NotificationsFeedItemModel(
         this.rootStore,
         `item-${_idCounter++}`,
         item,
@@ -496,7 +496,7 @@ export class NotificationsViewModel {
 
   async _prependAll(res: ListNotifications.Response) {
     const promises = []
-    const itemModels: NotificationsViewItemModel[] = []
+    const itemModels: NotificationsFeedItemModel[] = []
     const dedupedNotifs = res.data.notifications.filter(
       n1 =>
         !this.notifications.find(
@@ -504,7 +504,7 @@ export class NotificationsViewModel {
         ),
     )
     for (const item of groupNotifications(dedupedNotifs)) {
-      const itemModel = new NotificationsViewItemModel(
+      const itemModel = new NotificationsFeedItemModel(
         this.rootStore,
         `item-${_idCounter++}`,
         item,
@@ -565,7 +565,7 @@ function groupNotifications(
   return items2
 }
 
-type N = ListNotifications.Notification | NotificationsViewItemModel
+type N = ListNotifications.Notification | NotificationsFeedItemModel
 function isEq(a: N, b: N) {
   // this function has a key subtlety- the indexedAt comparison
   // the reason for this is reposts: they set the URI of the original post, not of the repost record
diff --git a/src/state/models/feed-view.ts b/src/state/models/feeds/posts.ts
index 349723fbb..9e593f313 100644
--- a/src/state/models/feed-view.ts
+++ b/src/state/models/feeds/posts.ts
@@ -10,7 +10,7 @@ import {
 import AwaitLock from 'await-lock'
 import {bundleAsync} from 'lib/async/bundle'
 import sampleSize from 'lodash.samplesize'
-import {RootStoreModel} from './root-store'
+import {RootStoreModel} from '../root-store'
 import {cleanError} from 'lib/strings/errors'
 import {SUGGESTED_FOLLOWS} from 'lib/constants'
 import {
@@ -27,7 +27,7 @@ type PostView = AppBskyFeedDefs.PostView
 const PAGE_SIZE = 30
 let _idCounter = 0
 
-export class FeedItemModel {
+export class PostsFeedItemModel {
   // ui state
   _reactKey: string = ''
 
@@ -139,12 +139,12 @@ export class FeedItemModel {
   }
 }
 
-export class FeedSliceModel {
+export class PostsFeedSliceModel {
   // ui state
   _reactKey: string = ''
 
   // data
-  items: FeedItemModel[] = []
+  items: PostsFeedItemModel[] = []
 
   constructor(
     public rootStore: RootStoreModel,
@@ -154,7 +154,7 @@ export class FeedSliceModel {
     this._reactKey = reactKey
     for (const item of slice.items) {
       this.items.push(
-        new FeedItemModel(rootStore, `item-${_idCounter++}`, item),
+        new PostsFeedItemModel(rootStore, `item-${_idCounter++}`, item),
       )
     }
     makeAutoObservable(this, {rootStore: false})
@@ -206,7 +206,7 @@ export class FeedSliceModel {
   }
 }
 
-export class FeedModel {
+export class PostsFeedModel {
   // state
   isLoading = false
   isRefreshing = false
@@ -223,8 +223,8 @@ export class FeedModel {
   lock = new AwaitLock()
 
   // data
-  slices: FeedSliceModel[] = []
-  nextSlices: FeedSliceModel[] = []
+  slices: PostsFeedSliceModel[] = []
+  nextSlices: PostsFeedSliceModel[] = []
 
   constructor(
     public rootStore: RootStoreModel,
@@ -445,7 +445,11 @@ export class FeedModel {
     if (nextSlices[0]?.uri !== this.slices[0]?.uri) {
       const nextSlicesModels = nextSlices.map(
         slice =>
-          new FeedSliceModel(this.rootStore, `item-${_idCounter++}`, slice),
+          new PostsFeedSliceModel(
+            this.rootStore,
+            `item-${_idCounter++}`,
+            slice,
+          ),
       )
       if (autoPrepend) {
         runInAction(() => {
@@ -526,9 +530,9 @@ export class FeedModel {
 
     const slices = this.tuner.tune(res.data.feed, this.feedTuners)
 
-    const toAppend: FeedSliceModel[] = []
+    const toAppend: PostsFeedSliceModel[] = []
     for (const slice of slices) {
-      const sliceModel = new FeedSliceModel(
+      const sliceModel = new PostsFeedSliceModel(
         this.rootStore,
         `item-${_idCounter++}`,
         slice,
diff --git a/src/state/models/likes-view.ts b/src/state/models/lists/likes.ts
index 80e0be0ef..e88389c56 100644
--- a/src/state/models/likes-view.ts
+++ b/src/state/models/lists/likes.ts
@@ -1,7 +1,7 @@
 import {makeAutoObservable, runInAction} from 'mobx'
-import {AtUri} from '../../third-party/uri'
+import {AtUri} from '../../../third-party/uri'
 import {AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
-import {RootStoreModel} from './root-store'
+import {RootStoreModel} from '../root-store'
 import {cleanError} from 'lib/strings/errors'
 import {bundleAsync} from 'lib/async/bundle'
 import * as apilib from 'lib/api/index'
@@ -10,7 +10,7 @@ const PAGE_SIZE = 30
 
 export type LikeItem = GetLikes.Like
 
-export class LikesViewModel {
+export class LikesModel {
   // state
   isLoading = false
   isRefreshing = false
diff --git a/src/state/models/reposted-by-view.ts b/src/state/models/lists/reposted-by.ts
index c9b089c70..08cdc9ef5 100644
--- a/src/state/models/reposted-by-view.ts
+++ b/src/state/models/lists/reposted-by.ts
@@ -1,10 +1,10 @@
 import {makeAutoObservable, runInAction} from 'mobx'
-import {AtUri} from '../../third-party/uri'
+import {AtUri} from '../../../third-party/uri'
 import {
   AppBskyFeedGetRepostedBy as GetRepostedBy,
   AppBskyActorDefs,
 } from '@atproto/api'
-import {RootStoreModel} from './root-store'
+import {RootStoreModel} from '../root-store'
 import {bundleAsync} from 'lib/async/bundle'
 import {cleanError} from 'lib/strings/errors'
 import * as apilib from 'lib/api/index'
@@ -13,7 +13,7 @@ const PAGE_SIZE = 30
 
 export type RepostedByItem = AppBskyActorDefs.ProfileViewBasic
 
-export class RepostedByViewModel {
+export class RepostedByModel {
   // state
   isLoading = false
   isRefreshing = false
diff --git a/src/state/models/user-followers-view.ts b/src/state/models/lists/user-followers.ts
index 055032eb7..2962d6242 100644
--- a/src/state/models/user-followers-view.ts
+++ b/src/state/models/lists/user-followers.ts
@@ -3,7 +3,7 @@ import {
   AppBskyGraphGetFollowers as GetFollowers,
   AppBskyActorDefs as ActorDefs,
 } from '@atproto/api'
-import {RootStoreModel} from './root-store'
+import {RootStoreModel} from '../root-store'
 import {cleanError} from 'lib/strings/errors'
 import {bundleAsync} from 'lib/async/bundle'
 
@@ -11,7 +11,7 @@ const PAGE_SIZE = 30
 
 export type FollowerItem = ActorDefs.ProfileViewBasic
 
-export class UserFollowersViewModel {
+export class UserFollowersModel {
   // state
   isLoading = false
   isRefreshing = false
diff --git a/src/state/models/user-follows-view.ts b/src/state/models/lists/user-follows.ts
index 6d9d84592..56432a796 100644
--- a/src/state/models/user-follows-view.ts
+++ b/src/state/models/lists/user-follows.ts
@@ -3,7 +3,7 @@ import {
   AppBskyGraphGetFollows as GetFollows,
   AppBskyActorDefs as ActorDefs,
 } from '@atproto/api'
-import {RootStoreModel} from './root-store'
+import {RootStoreModel} from '../root-store'
 import {cleanError} from 'lib/strings/errors'
 import {bundleAsync} from 'lib/async/bundle'
 
@@ -11,7 +11,7 @@ const PAGE_SIZE = 30
 
 export type FollowItem = ActorDefs.ProfileViewBasic
 
-export class UserFollowsViewModel {
+export class UserFollowsModel {
   // state
   isLoading = false
   isRefreshing = false
diff --git a/src/state/models/me.ts b/src/state/models/me.ts
index 5f670b8f9..26f0849c7 100644
--- a/src/state/models/me.ts
+++ b/src/state/models/me.ts
@@ -1,7 +1,7 @@
 import {makeAutoObservable, runInAction} from 'mobx'
 import {RootStoreModel} from './root-store'
-import {FeedModel} from './feed-view'
-import {NotificationsViewModel} from './notifications-view'
+import {PostsFeedModel} from './feeds/posts'
+import {NotificationsFeedModel} from './feeds/notifications'
 import {MyFollowsCache} from './cache/my-follows'
 import {isObj, hasProp} from 'lib/type-guards'
 
@@ -13,8 +13,8 @@ export class MeModel {
   avatar: string = ''
   followsCount: number | undefined
   followersCount: number | undefined
-  mainFeed: FeedModel
-  notifications: NotificationsViewModel
+  mainFeed: PostsFeedModel
+  notifications: NotificationsFeedModel
   follows: MyFollowsCache
 
   constructor(public rootStore: RootStoreModel) {
@@ -23,10 +23,10 @@ export class MeModel {
       {rootStore: false, serialize: false, hydrate: false},
       {autoBind: true},
     )
-    this.mainFeed = new FeedModel(this.rootStore, 'home', {
+    this.mainFeed = new PostsFeedModel(this.rootStore, 'home', {
       algorithm: 'reverse-chronological',
     })
-    this.notifications = new NotificationsViewModel(this.rootStore, {})
+    this.notifications = new NotificationsFeedModel(this.rootStore, {})
     this.follows = new MyFollowsCache(this.rootStore)
   }
 
diff --git a/src/state/models/root-store.ts b/src/state/models/root-store.ts
index 0c2a31d28..d4fcbf74e 100644
--- a/src/state/models/root-store.ts
+++ b/src/state/models/root-store.ts
@@ -12,9 +12,9 @@ import {isObj, hasProp} from 'lib/type-guards'
 import {LogModel} from './log'
 import {SessionModel} from './session'
 import {ShellUiModel} from './ui/shell'
-import {ProfilesViewModel} from './profiles-view'
+import {ProfilesCache} from './cache/profiles-view'
 import {LinkMetasCache} from './cache/link-metas'
-import {NotificationsViewItemModel} from './notifications-view'
+import {NotificationsFeedItemModel} from './feeds/notifications'
 import {MeModel} from './me'
 import {PreferencesModel} from './ui/preferences'
 import {resetToTab} from '../../Navigation'
@@ -36,7 +36,7 @@ export class RootStoreModel {
   shell = new ShellUiModel(this)
   preferences = new PreferencesModel()
   me = new MeModel(this)
-  profiles = new ProfilesViewModel(this)
+  profiles = new ProfilesCache(this)
   linkMetas = new LinkMetasCache(this)
   imageSizes = new ImageSizesCache()
 
@@ -205,11 +205,11 @@ export class RootStoreModel {
 
   // a notification has been queued for push
   onPushNotification(
-    handler: (notif: NotificationsViewItemModel) => void,
+    handler: (notif: NotificationsFeedItemModel) => void,
   ): EmitterSubscription {
     return DeviceEventEmitter.addListener('push-notification', handler)
   }
-  emitPushNotification(notif: NotificationsViewItemModel) {
+  emitPushNotification(notif: NotificationsFeedItemModel) {
     DeviceEventEmitter.emit('push-notification', notif)
   }
 
diff --git a/src/state/models/ui/profile.ts b/src/state/models/ui/profile.ts
index 59529aa39..d06a196f3 100644
--- a/src/state/models/ui/profile.ts
+++ b/src/state/models/ui/profile.ts
@@ -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()
     }
   }
diff --git a/src/state/models/ui/shell.ts b/src/state/models/ui/shell.ts
index 7f57d5b54..b782dd2f7 100644
--- a/src/state/models/ui/shell.ts
+++ b/src/state/models/ui/shell.ts
@@ -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)
   }
 }