Reorganize state models for clarity (#378)
This commit is contained in:
parent
9652d994dd
commit
2045c615a8
44 changed files with 163 additions and 171 deletions
|
@ -15,7 +15,7 @@ import LinearGradient from 'react-native-linear-gradient'
|
|||
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
|
||||
import {RichText} from '@atproto/api'
|
||||
import {useAnalytics} from 'lib/analytics'
|
||||
import {UserAutocompleteViewModel} from 'state/models/user-autocomplete-view'
|
||||
import {UserAutocompleteModel} from 'state/models/discovery/user-autocomplete'
|
||||
import {ExternalEmbed} from './ExternalEmbed'
|
||||
import {Text} from '../util/text/Text'
|
||||
import * as Toast from '../util/Toast'
|
||||
|
@ -69,8 +69,8 @@ export const ComposePost = observer(function ComposePost({
|
|||
)
|
||||
const [selectedPhotos, setSelectedPhotos] = React.useState<string[]>([])
|
||||
|
||||
const autocompleteView = React.useMemo<UserAutocompleteViewModel>(
|
||||
() => new UserAutocompleteViewModel(store),
|
||||
const autocompleteView = React.useMemo<UserAutocompleteModel>(
|
||||
() => new UserAutocompleteModel(store),
|
||||
[store],
|
||||
)
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ import PasteInput, {
|
|||
} from '@mattermost/react-native-paste-input'
|
||||
import {AppBskyRichtextFacet, RichText} from '@atproto/api'
|
||||
import isEqual from 'lodash.isequal'
|
||||
import {UserAutocompleteViewModel} from 'state/models/user-autocomplete-view'
|
||||
import {UserAutocompleteModel} from 'state/models/discovery/user-autocomplete'
|
||||
import {Autocomplete} from './mobile/Autocomplete'
|
||||
import {Text} from 'view/com/util/text/Text'
|
||||
import {useStores} from 'state/index'
|
||||
|
@ -36,7 +36,7 @@ interface TextInputProps {
|
|||
richtext: RichText
|
||||
placeholder: string
|
||||
suggestedLinks: Set<string>
|
||||
autocompleteView: UserAutocompleteViewModel
|
||||
autocompleteView: UserAutocompleteModel
|
||||
setRichText: (v: RichText) => void
|
||||
onPhotoPasted: (uri: string) => void
|
||||
onSuggestedLinksChanged: (uris: Set<string>) => void
|
||||
|
|
|
@ -9,7 +9,7 @@ import {Paragraph} from '@tiptap/extension-paragraph'
|
|||
import {Placeholder} from '@tiptap/extension-placeholder'
|
||||
import {Text} from '@tiptap/extension-text'
|
||||
import isEqual from 'lodash.isequal'
|
||||
import {UserAutocompleteViewModel} from 'state/models/user-autocomplete-view'
|
||||
import {UserAutocompleteModel} from 'state/models/discovery/user-autocomplete'
|
||||
import {createSuggestion} from './web/Autocomplete'
|
||||
|
||||
export interface TextInputRef {
|
||||
|
@ -21,7 +21,7 @@ interface TextInputProps {
|
|||
richtext: RichText
|
||||
placeholder: string
|
||||
suggestedLinks: Set<string>
|
||||
autocompleteView: UserAutocompleteViewModel
|
||||
autocompleteView: UserAutocompleteModel
|
||||
setRichText: (v: RichText) => void
|
||||
onPhotoPasted: (uri: string) => void
|
||||
onSuggestedLinksChanged: (uris: Set<string>) => void
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React, {useEffect} from 'react'
|
||||
import {Animated, TouchableOpacity, StyleSheet, View} from 'react-native'
|
||||
import {observer} from 'mobx-react-lite'
|
||||
import {UserAutocompleteViewModel} from 'state/models/user-autocomplete-view'
|
||||
import {UserAutocompleteModel} from 'state/models/discovery/user-autocomplete'
|
||||
import {useAnimatedValue} from 'lib/hooks/useAnimatedValue'
|
||||
import {usePalette} from 'lib/hooks/usePalette'
|
||||
import {Text} from 'view/com/util/text/Text'
|
||||
|
@ -11,7 +11,7 @@ export const Autocomplete = observer(
|
|||
view,
|
||||
onSelect,
|
||||
}: {
|
||||
view: UserAutocompleteViewModel
|
||||
view: UserAutocompleteModel
|
||||
onSelect: (item: string) => void
|
||||
}) => {
|
||||
const pal = usePalette('default')
|
||||
|
|
|
@ -11,7 +11,7 @@ import {
|
|||
SuggestionProps,
|
||||
SuggestionKeyDownProps,
|
||||
} from '@tiptap/suggestion'
|
||||
import {UserAutocompleteViewModel} from 'state/models/user-autocomplete-view'
|
||||
import {UserAutocompleteModel} from 'state/models/discovery/user-autocomplete'
|
||||
|
||||
interface MentionListRef {
|
||||
onKeyDown: (props: SuggestionKeyDownProps) => boolean
|
||||
|
@ -20,7 +20,7 @@ interface MentionListRef {
|
|||
export function createSuggestion({
|
||||
autocompleteView,
|
||||
}: {
|
||||
autocompleteView: UserAutocompleteViewModel
|
||||
autocompleteView: UserAutocompleteModel
|
||||
}): Omit<SuggestionOptions, 'editor'> {
|
||||
return {
|
||||
async items({query}) {
|
||||
|
|
|
@ -2,7 +2,7 @@ import React from 'react'
|
|||
import {ActivityIndicator, StyleSheet, View} from 'react-native'
|
||||
import {observer} from 'mobx-react-lite'
|
||||
import {useStores} from 'state/index'
|
||||
import {SuggestedPostsView} from 'state/models/suggested-posts-view'
|
||||
import {SuggestedPostsModel} from 'state/models/discovery/suggested-posts'
|
||||
import {s} from 'lib/styles'
|
||||
import {FeedItem as Post} from '../posts/FeedItem'
|
||||
import {Text} from '../util/text/Text'
|
||||
|
@ -11,8 +11,8 @@ import {usePalette} from 'lib/hooks/usePalette'
|
|||
export const SuggestedPosts = observer(() => {
|
||||
const pal = usePalette('default')
|
||||
const store = useStores()
|
||||
const suggestedPostsView = React.useMemo<SuggestedPostsView>(
|
||||
() => new SuggestedPostsView(store),
|
||||
const suggestedPostsView = React.useMemo<SuggestedPostsModel>(
|
||||
() => new SuggestedPostsModel(store),
|
||||
[store],
|
||||
)
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ import {PickedMedia} from '../../../lib/media/picker'
|
|||
import {Text} from '../util/text/Text'
|
||||
import {ErrorMessage} from '../util/error/ErrorMessage'
|
||||
import {useStores} from 'state/index'
|
||||
import {ProfileViewModel} from 'state/models/profile-view'
|
||||
import {ProfileModel} from 'state/models/content/profile'
|
||||
import {s, colors, gradients} from 'lib/styles'
|
||||
import {enforceLen} from 'lib/strings/helpers'
|
||||
import {MAX_DISPLAY_NAME, MAX_DESCRIPTION} from 'lib/constants'
|
||||
|
@ -30,7 +30,7 @@ export function Component({
|
|||
profileView,
|
||||
onUpdate,
|
||||
}: {
|
||||
profileView: ProfileViewModel
|
||||
profileView: ProfileModel
|
||||
onUpdate?: () => void
|
||||
}) {
|
||||
const store = useStores()
|
||||
|
|
|
@ -2,7 +2,7 @@ import React, {MutableRefObject} from 'react'
|
|||
import {observer} from 'mobx-react-lite'
|
||||
import {CenteredView, FlatList} from '../util/Views'
|
||||
import {ActivityIndicator, RefreshControl, StyleSheet, View} from 'react-native'
|
||||
import {NotificationsViewModel} from 'state/models/notifications-view'
|
||||
import {NotificationsFeedModel} from 'state/models/feeds/notifications'
|
||||
import {FeedItem} from './FeedItem'
|
||||
import {NotificationFeedLoadingPlaceholder} from '../util/LoadingPlaceholder'
|
||||
import {ErrorMessage} from '../util/error/ErrorMessage'
|
||||
|
@ -19,7 +19,7 @@ export const Feed = observer(function Feed({
|
|||
onPressTryAgain,
|
||||
onScroll,
|
||||
}: {
|
||||
view: NotificationsViewModel
|
||||
view: NotificationsFeedModel
|
||||
scrollElRef?: MutableRefObject<FlatList<any> | null>
|
||||
onPressTryAgain?: () => void
|
||||
onScroll?: OnScrollCb
|
||||
|
|
|
@ -14,8 +14,8 @@ import {
|
|||
FontAwesomeIconStyle,
|
||||
Props,
|
||||
} from '@fortawesome/react-native-fontawesome'
|
||||
import {NotificationsViewItemModel} from 'state/models/notifications-view'
|
||||
import {PostThreadViewModel} from 'state/models/post-thread-view'
|
||||
import {NotificationsFeedItemModel} from 'state/models/feeds/notifications'
|
||||
import {PostThreadModel} from 'state/models/content/post-thread'
|
||||
import {s, colors} from 'lib/styles'
|
||||
import {ago} from 'lib/strings/time'
|
||||
import {pluralize} from 'lib/strings/helpers'
|
||||
|
@ -42,7 +42,7 @@ interface Author {
|
|||
export const FeedItem = observer(function FeedItem({
|
||||
item,
|
||||
}: {
|
||||
item: NotificationsViewItemModel
|
||||
item: NotificationsFeedItemModel
|
||||
}) {
|
||||
const pal = usePalette('default')
|
||||
const [isAuthorsExpanded, setAuthorsExpanded] = React.useState<boolean>(false)
|
||||
|
@ -338,7 +338,7 @@ function ExpandedAuthorsList({
|
|||
function AdditionalPostText({
|
||||
additionalPost,
|
||||
}: {
|
||||
additionalPost?: PostThreadViewModel
|
||||
additionalPost?: PostThreadModel
|
||||
}) {
|
||||
const pal = usePalette('default')
|
||||
if (
|
||||
|
|
|
@ -2,7 +2,7 @@ import React, {useEffect} from 'react'
|
|||
import {observer} from 'mobx-react-lite'
|
||||
import {ActivityIndicator, RefreshControl, StyleSheet, View} from 'react-native'
|
||||
import {CenteredView, FlatList} from '../util/Views'
|
||||
import {LikesViewModel, LikeItem} from 'state/models/likes-view'
|
||||
import {LikesModel, LikeItem} from 'state/models/lists/likes'
|
||||
import {ErrorMessage} from '../util/error/ErrorMessage'
|
||||
import {ProfileCardWithFollowBtn} from '../profile/ProfileCard'
|
||||
import {useStores} from 'state/index'
|
||||
|
@ -11,10 +11,7 @@ import {usePalette} from 'lib/hooks/usePalette'
|
|||
export const PostLikedBy = observer(function ({uri}: {uri: string}) {
|
||||
const pal = usePalette('default')
|
||||
const store = useStores()
|
||||
const view = React.useMemo(
|
||||
() => new LikesViewModel(store, {uri}),
|
||||
[store, uri],
|
||||
)
|
||||
const view = React.useMemo(() => new LikesModel(store, {uri}), [store, uri])
|
||||
|
||||
useEffect(() => {
|
||||
view.loadMore().catch(err => store.log.error('Failed to fetch likes', err))
|
||||
|
|
|
@ -2,10 +2,7 @@ import React, {useEffect} from 'react'
|
|||
import {observer} from 'mobx-react-lite'
|
||||
import {ActivityIndicator, RefreshControl, StyleSheet, View} from 'react-native'
|
||||
import {CenteredView, FlatList} from '../util/Views'
|
||||
import {
|
||||
RepostedByViewModel,
|
||||
RepostedByItem,
|
||||
} from 'state/models/reposted-by-view'
|
||||
import {RepostedByModel, RepostedByItem} from 'state/models/lists/reposted-by'
|
||||
import {ProfileCardWithFollowBtn} from '../profile/ProfileCard'
|
||||
import {ErrorMessage} from '../util/error/ErrorMessage'
|
||||
import {useStores} from 'state/index'
|
||||
|
@ -19,7 +16,7 @@ export const PostRepostedBy = observer(function PostRepostedBy({
|
|||
const pal = usePalette('default')
|
||||
const store = useStores()
|
||||
const view = React.useMemo(
|
||||
() => new RepostedByViewModel(store, {uri}),
|
||||
() => new RepostedByModel(store, {uri}),
|
||||
[store, uri],
|
||||
)
|
||||
|
||||
|
|
|
@ -9,9 +9,9 @@ import {
|
|||
} from 'react-native'
|
||||
import {CenteredView, FlatList} from '../util/Views'
|
||||
import {
|
||||
PostThreadViewModel,
|
||||
PostThreadViewPostModel,
|
||||
} from 'state/models/post-thread-view'
|
||||
PostThreadModel,
|
||||
PostThreadItemModel,
|
||||
} from 'state/models/content/post-thread'
|
||||
import {
|
||||
FontAwesomeIcon,
|
||||
FontAwesomeIconStyle,
|
||||
|
@ -31,7 +31,7 @@ const BOTTOM_BORDER = {
|
|||
_reactKey: '__bottom_border__',
|
||||
_isHighlightedPost: false,
|
||||
}
|
||||
type YieldedItem = PostThreadViewPostModel | typeof REPLY_PROMPT
|
||||
type YieldedItem = PostThreadItemModel | typeof REPLY_PROMPT
|
||||
|
||||
export const PostThread = observer(function PostThread({
|
||||
uri,
|
||||
|
@ -39,7 +39,7 @@ export const PostThread = observer(function PostThread({
|
|||
onPressReply,
|
||||
}: {
|
||||
uri: string
|
||||
view: PostThreadViewModel
|
||||
view: PostThreadModel
|
||||
onPressReply: () => void
|
||||
}) {
|
||||
const pal = usePalette('default')
|
||||
|
@ -109,7 +109,7 @@ export const PostThread = observer(function PostThread({
|
|||
// I could find to get a border positioned directly under the last item
|
||||
// -prf
|
||||
return <View style={[styles.bottomBorder, pal.border]} />
|
||||
} else if (item instanceof PostThreadViewPostModel) {
|
||||
} else if (item instanceof PostThreadItemModel) {
|
||||
return <PostThreadItem item={item} onPostReply={onRefresh} />
|
||||
}
|
||||
return <></>
|
||||
|
@ -187,14 +187,14 @@ export const PostThread = observer(function PostThread({
|
|||
})
|
||||
|
||||
function* flattenThread(
|
||||
post: PostThreadViewPostModel,
|
||||
post: PostThreadItemModel,
|
||||
isAscending = false,
|
||||
): Generator<YieldedItem, void> {
|
||||
if (post.parent) {
|
||||
if ('notFound' in post.parent && post.parent.notFound) {
|
||||
// TODO render not found
|
||||
} else {
|
||||
yield* flattenThread(post.parent as PostThreadViewPostModel, true)
|
||||
yield* flattenThread(post.parent as PostThreadItemModel, true)
|
||||
}
|
||||
}
|
||||
yield post
|
||||
|
@ -206,7 +206,7 @@ function* flattenThread(
|
|||
if ('notFound' in reply && reply.notFound) {
|
||||
// TODO render not found
|
||||
} else {
|
||||
yield* flattenThread(reply as PostThreadViewPostModel)
|
||||
yield* flattenThread(reply as PostThreadItemModel)
|
||||
}
|
||||
}
|
||||
} else if (!isAscending && !post.parent && post.post.replyCount) {
|
||||
|
|
|
@ -7,7 +7,7 @@ import {
|
|||
FontAwesomeIcon,
|
||||
FontAwesomeIconStyle,
|
||||
} from '@fortawesome/react-native-fontawesome'
|
||||
import {PostThreadViewPostModel} from 'state/models/post-thread-view'
|
||||
import {PostThreadItemModel} from 'state/models/content/post-thread'
|
||||
import {Link} from '../util/Link'
|
||||
import {RichText} from '../util/text/RichText'
|
||||
import {Text} from '../util/text/Text'
|
||||
|
@ -31,7 +31,7 @@ export const PostThreadItem = observer(function PostThreadItem({
|
|||
item,
|
||||
onPostReply,
|
||||
}: {
|
||||
item: PostThreadViewPostModel
|
||||
item: PostThreadItemModel
|
||||
onPostReply: () => void
|
||||
}) {
|
||||
const pal = usePalette('default')
|
||||
|
|
|
@ -11,7 +11,7 @@ import {observer} from 'mobx-react-lite'
|
|||
import Clipboard from '@react-native-clipboard/clipboard'
|
||||
import {AtUri} from '../../../third-party/uri'
|
||||
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
|
||||
import {PostThreadViewModel} from 'state/models/post-thread-view'
|
||||
import {PostThreadModel} from 'state/models/content/post-thread'
|
||||
import {Link} from '../util/Link'
|
||||
import {UserInfoText} from '../util/UserInfoText'
|
||||
import {PostMeta} from '../util/PostMeta'
|
||||
|
@ -34,21 +34,21 @@ export const Post = observer(function Post({
|
|||
style,
|
||||
}: {
|
||||
uri: string
|
||||
initView?: PostThreadViewModel
|
||||
initView?: PostThreadModel
|
||||
showReplyLine?: boolean
|
||||
hideError?: boolean
|
||||
style?: StyleProp<ViewStyle>
|
||||
}) {
|
||||
const pal = usePalette('default')
|
||||
const store = useStores()
|
||||
const [view, setView] = useState<PostThreadViewModel | undefined>(initView)
|
||||
const [view, setView] = useState<PostThreadModel | undefined>(initView)
|
||||
const [deleted, setDeleted] = useState(false)
|
||||
|
||||
useEffect(() => {
|
||||
if (initView || view?.params.uri === uri) {
|
||||
return // no change needed? or trigger refresh?
|
||||
}
|
||||
const newView = new PostThreadViewModel(store, {uri, depth: 0})
|
||||
const newView = new PostThreadModel(store, {uri, depth: 0})
|
||||
setView(newView)
|
||||
newView.setup().catch(err => store.log.error('Failed to fetch post', err))
|
||||
}, [initView, uri, view?.params.uri, store])
|
||||
|
|
|
@ -4,7 +4,7 @@ import {StyleProp, StyleSheet, TextStyle, View} from 'react-native'
|
|||
import {LoadingPlaceholder} from '../util/LoadingPlaceholder'
|
||||
import {ErrorMessage} from '../util/error/ErrorMessage'
|
||||
import {Text} from '../util/text/Text'
|
||||
import {PostModel} from 'state/models/post'
|
||||
import {PostModel} from 'state/models/content/post'
|
||||
import {useStores} from 'state/index'
|
||||
|
||||
export const PostText = observer(function PostText({
|
||||
|
|
|
@ -11,7 +11,7 @@ import {
|
|||
import {FlatList} from '../util/Views'
|
||||
import {PostFeedLoadingPlaceholder} from '../util/LoadingPlaceholder'
|
||||
import {ErrorMessage} from '../util/error/ErrorMessage'
|
||||
import {FeedModel} from 'state/models/feed-view'
|
||||
import {PostsFeedModel} from 'state/models/feeds/posts'
|
||||
import {FeedSlice} from './FeedSlice'
|
||||
import {OnScrollCb} from 'lib/hooks/useOnMainScroll'
|
||||
import {s} from 'lib/styles'
|
||||
|
@ -33,7 +33,7 @@ export const Feed = observer(function Feed({
|
|||
testID,
|
||||
headerOffset = 0,
|
||||
}: {
|
||||
feed: FeedModel
|
||||
feed: PostsFeedModel
|
||||
style?: StyleProp<ViewStyle>
|
||||
showPostFollowBtn?: boolean
|
||||
scrollElRef?: MutableRefObject<FlatList<any> | null>
|
||||
|
|
|
@ -7,7 +7,7 @@ import {
|
|||
FontAwesomeIcon,
|
||||
FontAwesomeIconStyle,
|
||||
} from '@fortawesome/react-native-fontawesome'
|
||||
import {FeedItemModel} from 'state/models/feed-view'
|
||||
import {PostsFeedItemModel} from 'state/models/feeds/posts'
|
||||
import {Link, DesktopWebTextLink} from '../util/Link'
|
||||
import {Text} from '../util/text/Text'
|
||||
import {UserInfoText} from '../util/UserInfoText'
|
||||
|
@ -30,7 +30,7 @@ export const FeedItem = observer(function ({
|
|||
showFollowBtn,
|
||||
ignoreMuteFor,
|
||||
}: {
|
||||
item: FeedItemModel
|
||||
item: PostsFeedItemModel
|
||||
isThreadChild?: boolean
|
||||
isThreadParent?: boolean
|
||||
showReplyLine?: boolean
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import React from 'react'
|
||||
import {StyleSheet, View} from 'react-native'
|
||||
import {FeedSliceModel} from 'state/models/feed-view'
|
||||
import {PostsFeedSliceModel} from 'state/models/feeds/posts'
|
||||
import {AtUri} from '../../../third-party/uri'
|
||||
import {Link} from '../util/Link'
|
||||
import {Text} from '../util/text/Text'
|
||||
|
@ -13,7 +13,7 @@ export function FeedSlice({
|
|||
showFollowBtn,
|
||||
ignoreMuteFor,
|
||||
}: {
|
||||
slice: FeedSliceModel
|
||||
slice: PostsFeedSliceModel
|
||||
showFollowBtn?: boolean
|
||||
ignoreMuteFor?: string
|
||||
}) {
|
||||
|
@ -66,7 +66,7 @@ export function FeedSlice({
|
|||
)
|
||||
}
|
||||
|
||||
function ViewFullThread({slice}: {slice: FeedSliceModel}) {
|
||||
function ViewFullThread({slice}: {slice: PostsFeedSliceModel}) {
|
||||
const pal = usePalette('default')
|
||||
const itemHref = React.useMemo(() => {
|
||||
const urip = new AtUri(slice.rootItem.post.uri)
|
||||
|
|
|
@ -2,9 +2,9 @@ import React, {useEffect} from 'react'
|
|||
import {observer} from 'mobx-react-lite'
|
||||
import {ActivityIndicator, RefreshControl, StyleSheet, View} from 'react-native'
|
||||
import {
|
||||
UserFollowersViewModel,
|
||||
UserFollowersModel,
|
||||
FollowerItem,
|
||||
} from 'state/models/user-followers-view'
|
||||
} from 'state/models/lists/user-followers'
|
||||
import {CenteredView, FlatList} from '../util/Views'
|
||||
import {ErrorMessage} from '../util/error/ErrorMessage'
|
||||
import {ProfileCardWithFollowBtn} from './ProfileCard'
|
||||
|
@ -19,7 +19,7 @@ export const ProfileFollowers = observer(function ProfileFollowers({
|
|||
const pal = usePalette('default')
|
||||
const store = useStores()
|
||||
const view = React.useMemo(
|
||||
() => new UserFollowersViewModel(store, {actor: name}),
|
||||
() => new UserFollowersModel(store, {actor: name}),
|
||||
[store, name],
|
||||
)
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ import React, {useEffect} from 'react'
|
|||
import {observer} from 'mobx-react-lite'
|
||||
import {ActivityIndicator, RefreshControl, StyleSheet, View} from 'react-native'
|
||||
import {CenteredView, FlatList} from '../util/Views'
|
||||
import {UserFollowsViewModel, FollowItem} from 'state/models/user-follows-view'
|
||||
import {UserFollowsModel, FollowItem} from 'state/models/lists/user-follows'
|
||||
import {ErrorMessage} from '../util/error/ErrorMessage'
|
||||
import {ProfileCardWithFollowBtn} from './ProfileCard'
|
||||
import {useStores} from 'state/index'
|
||||
|
@ -16,7 +16,7 @@ export const ProfileFollows = observer(function ProfileFollows({
|
|||
const pal = usePalette('default')
|
||||
const store = useStores()
|
||||
const view = React.useMemo(
|
||||
() => new UserFollowsViewModel(store, {actor: name}),
|
||||
() => new UserFollowsModel(store, {actor: name}),
|
||||
[store, name],
|
||||
)
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ import {
|
|||
} from '@fortawesome/react-native-fontawesome'
|
||||
import {useNavigation} from '@react-navigation/native'
|
||||
import {BlurView} from '../util/BlurView'
|
||||
import {ProfileViewModel} from 'state/models/profile-view'
|
||||
import {ProfileModel} from 'state/models/content/profile'
|
||||
import {useStores} from 'state/index'
|
||||
import {ProfileImageLightbox} from 'state/models/ui/shell'
|
||||
import {pluralize} from 'lib/strings/helpers'
|
||||
|
@ -34,13 +34,7 @@ import {isDesktopWeb} from 'platform/detection'
|
|||
const BACK_HITSLOP = {left: 30, top: 30, right: 30, bottom: 30}
|
||||
|
||||
export const ProfileHeader = observer(
|
||||
({
|
||||
view,
|
||||
onRefreshAll,
|
||||
}: {
|
||||
view: ProfileViewModel
|
||||
onRefreshAll: () => void
|
||||
}) => {
|
||||
({view, onRefreshAll}: {view: ProfileModel; onRefreshAll: () => void}) => {
|
||||
const pal = usePalette('default')
|
||||
|
||||
// loading
|
||||
|
@ -91,7 +85,7 @@ const ProfileHeaderLoaded = observer(function ProfileHeaderLoaded({
|
|||
view,
|
||||
onRefreshAll,
|
||||
}: {
|
||||
view: ProfileViewModel
|
||||
view: ProfileModel
|
||||
onRefreshAll: () => void
|
||||
}) {
|
||||
const pal = usePalette('default')
|
||||
|
|
|
@ -4,7 +4,7 @@ import {useFocusEffect, useIsFocused} from '@react-navigation/native'
|
|||
import {observer} from 'mobx-react-lite'
|
||||
import useAppState from 'react-native-appstate-hook'
|
||||
import {NativeStackScreenProps, HomeTabNavigatorParams} from 'lib/routes/types'
|
||||
import {FeedModel} from 'state/models/feed-view'
|
||||
import {PostsFeedModel} from 'state/models/feeds/posts'
|
||||
import {withAuthRequired} from 'view/com/auth/withAuthRequired'
|
||||
import {Feed} from '../com/posts/Feed'
|
||||
import {FollowingEmptyState} from 'view/com/posts/FollowingEmptyState'
|
||||
|
@ -26,7 +26,7 @@ export const HomeScreen = withAuthRequired((_opts: Props) => {
|
|||
const [selectedPage, setSelectedPage] = React.useState(0)
|
||||
|
||||
const algoFeed = React.useMemo(() => {
|
||||
const feed = new FeedModel(store, 'goodstuff', {})
|
||||
const feed = new PostsFeedModel(store, 'goodstuff', {})
|
||||
feed.setup()
|
||||
return feed
|
||||
}, [store])
|
||||
|
@ -104,7 +104,7 @@ const FeedPage = observer(
|
|||
renderEmptyState,
|
||||
}: {
|
||||
testID?: string
|
||||
feed: FeedModel
|
||||
feed: PostsFeedModel
|
||||
isPageFocused: boolean
|
||||
renderEmptyState?: () => JSX.Element
|
||||
}) => {
|
||||
|
|
|
@ -7,7 +7,7 @@ import {withAuthRequired} from 'view/com/auth/withAuthRequired'
|
|||
import {ViewHeader} from '../com/util/ViewHeader'
|
||||
import {PostThread as PostThreadComponent} from '../com/post-thread/PostThread'
|
||||
import {ComposePrompt} from 'view/com/composer/Prompt'
|
||||
import {PostThreadViewModel} from 'state/models/post-thread-view'
|
||||
import {PostThreadModel} from 'state/models/content/post-thread'
|
||||
import {useStores} from 'state/index'
|
||||
import {s} from 'lib/styles'
|
||||
import {useSafeAreaInsets} from 'react-native-safe-area-context'
|
||||
|
@ -22,8 +22,8 @@ export const PostThreadScreen = withAuthRequired(({route}: Props) => {
|
|||
const safeAreaInsets = useSafeAreaInsets()
|
||||
const {name, rkey} = route.params
|
||||
const uri = makeRecordUri(name, 'app.bsky.feed.post', rkey)
|
||||
const view = useMemo<PostThreadViewModel>(
|
||||
() => new PostThreadViewModel(store, {uri}),
|
||||
const view = useMemo<PostThreadModel>(
|
||||
() => new PostThreadModel(store, {uri}),
|
||||
[store, uri],
|
||||
)
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ import {ViewSelector} from '../com/util/ViewSelector'
|
|||
import {CenteredView} from '../com/util/Views'
|
||||
import {ProfileUiModel} from 'state/models/ui/profile'
|
||||
import {useStores} from 'state/index'
|
||||
import {FeedSliceModel} from 'state/models/feed-view'
|
||||
import {PostsFeedSliceModel} from 'state/models/feeds/posts'
|
||||
import {ProfileHeader} from '../com/profile/ProfileHeader'
|
||||
import {FeedSlice} from '../com/posts/FeedSlice'
|
||||
import {PostFeedLoadingPlaceholder} from '../com/util/LoadingPlaceholder'
|
||||
|
@ -124,7 +124,7 @@ export const ProfileScreen = withAuthRequired(
|
|||
style={styles.emptyState}
|
||||
/>
|
||||
)
|
||||
} else if (item instanceof FeedSliceModel) {
|
||||
} else if (item instanceof PostsFeedSliceModel) {
|
||||
return <FeedSlice slice={item} ignoreMuteFor={uiState.profile.did} />
|
||||
}
|
||||
return <View />
|
||||
|
|
|
@ -16,7 +16,7 @@ import {
|
|||
import {observer} from 'mobx-react-lite'
|
||||
import {Text} from 'view/com/util/text/Text'
|
||||
import {useStores} from 'state/index'
|
||||
import {UserAutocompleteViewModel} from 'state/models/user-autocomplete-view'
|
||||
import {UserAutocompleteModel} from 'state/models/discovery/user-autocomplete'
|
||||
import {SearchUIModel} from 'state/models/ui/search'
|
||||
import {FoafsModel} from 'state/models/discovery/foafs'
|
||||
import {SuggestedActorsModel} from 'state/models/discovery/suggested-actors'
|
||||
|
@ -37,8 +37,8 @@ export const SearchScreen = withAuthRequired(
|
|||
const onMainScroll = useOnMainScroll(store)
|
||||
const [isInputFocused, setIsInputFocused] = React.useState<boolean>(false)
|
||||
const [query, setQuery] = React.useState<string>('')
|
||||
const autocompleteView = React.useMemo<UserAutocompleteViewModel>(
|
||||
() => new UserAutocompleteViewModel(store),
|
||||
const autocompleteView = React.useMemo<UserAutocompleteModel>(
|
||||
() => new UserAutocompleteModel(store),
|
||||
[store],
|
||||
)
|
||||
const foafs = React.useMemo<FoafsModel>(
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import React from 'react'
|
||||
import {TextInput, View, StyleSheet, TouchableOpacity} from 'react-native'
|
||||
import {useNavigation, StackActions} from '@react-navigation/native'
|
||||
import {UserAutocompleteViewModel} from 'state/models/user-autocomplete-view'
|
||||
import {UserAutocompleteModel} from 'state/models/discovery/user-autocomplete'
|
||||
import {observer} from 'mobx-react-lite'
|
||||
import {useStores} from 'state/index'
|
||||
import {usePalette} from 'lib/hooks/usePalette'
|
||||
|
@ -16,8 +16,8 @@ export const DesktopSearch = observer(function DesktopSearch() {
|
|||
const textInput = React.useRef<TextInput>(null)
|
||||
const [isInputFocused, setIsInputFocused] = React.useState<boolean>(false)
|
||||
const [query, setQuery] = React.useState<string>('')
|
||||
const autocompleteView = React.useMemo<UserAutocompleteViewModel>(
|
||||
() => new UserAutocompleteViewModel(store),
|
||||
const autocompleteView = React.useMemo<UserAutocompleteModel>(
|
||||
() => new UserAutocompleteModel(store),
|
||||
[store],
|
||||
)
|
||||
const navigation = useNavigation<NavigationProp>()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue