Get rid of deprecated interface usages

This commit is contained in:
Eric Bailey
2024-04-23 11:25:15 -05:00
parent e6761f8a2e
commit b0e394c42e
10 changed files with 75 additions and 56 deletions
+9 -4
View File
@@ -1,5 +1,6 @@
import React from 'react'
import {View} from 'react-native'
import {TID} from '@atproto/common-web'
import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'
@@ -62,10 +63,14 @@ export function StepFinished() {
// these must be serial
(async () => {
await getAgent().setInterestsPref({tags: selectedInterests})
await saveFeeds({
saved: selectedFeeds,
pinned: selectedFeeds,
})
await saveFeeds(
selectedFeeds.map(f => ({
id: TID.nextStr(),
type: 'feed',
value: f,
pinned: true,
})),
)
})(),
])
} catch (e: any) {
+5 -5
View File
@@ -14,9 +14,9 @@ import {createFullHandle, validateHandle} from '#/lib/strings/handles'
import {getAge} from '#/lib/strings/time'
import {logger} from '#/logger'
import {
DEFAULT_PROD_FEEDS,
DEFAULT_PROD_FEED,
useAddSavedFeedMutation,
usePreferencesSetBirthDateMutation,
useSetSaveFeedsMutation,
} from '#/state/queries/preferences'
import {useSessionApi} from '#/state/session'
import {useOnboardingDispatch} from '#/state/shell'
@@ -208,7 +208,7 @@ export function useSubmitSignup({
const {_} = useLingui()
const {createAccount} = useSessionApi()
const {mutateAsync: setBirthDate} = usePreferencesSetBirthDateMutation()
const {mutate: setSavedFeeds} = useSetSaveFeedsMutation()
const {mutate: addSavedFeed} = useAddSavedFeedMutation()
const onboardingDispatch = useOnboardingDispatch()
return useCallback(
@@ -266,7 +266,7 @@ export function useSubmitSignup({
})
await setBirthDate({birthDate: state.dateOfBirth})
if (IS_PROD_SERVICE(state.serviceUrl)) {
setSavedFeeds(DEFAULT_PROD_FEEDS)
addSavedFeed(DEFAULT_PROD_FEED)
}
} catch (e: any) {
onboardingDispatch({type: 'skip'}) // undo starting the onboard
@@ -314,7 +314,7 @@ export function useSubmitSignup({
onboardingDispatch,
createAccount,
setBirthDate,
setSavedFeeds,
addSavedFeed,
],
)
}
+5 -9
View File
@@ -22,18 +22,14 @@ export const DEFAULT_THREAD_VIEW_PREFS: ThreadViewPreferences = {
const DEFAULT_PROD_FEED_PREFIX = (rkey: string) =>
`at://did:plc:z72i7hdynmk6r22z27h6tvur/app.bsky.feed.generator/${rkey}`
export const DEFAULT_PROD_FEEDS = {
pinned: [DEFAULT_PROD_FEED_PREFIX('whats-hot')],
saved: [DEFAULT_PROD_FEED_PREFIX('whats-hot')],
export const DEFAULT_PROD_FEED = {
type: 'feed',
value: DEFAULT_PROD_FEED_PREFIX('whats-hot'),
pinned: true,
}
export const DEFAULT_LOGGED_OUT_PREFERENCES: UsePreferencesQueryResponse = {
birthDate: new Date('2022-11-17'), // TODO(pwi)
feeds: {
saved: [],
pinned: [],
unpinned: [],
},
moderationPrefs: {
adultContentEnabled: false,
labels: DEFAULT_LOGGED_OUT_LABEL_PREFERENCES,
@@ -45,5 +41,5 @@ export const DEFAULT_LOGGED_OUT_PREFERENCES: UsePreferencesQueryResponse = {
threadViewPrefs: DEFAULT_THREAD_VIEW_PREFS,
userAge: 13, // TODO(pwi)
interests: {tags: []},
savedFeeds: [], // TODO could put stub ehre
savedFeeds: [],
}
-8
View File
@@ -54,14 +54,6 @@ export function usePreferencesQuery() {
const preferences: UsePreferencesQueryResponse = {
...res,
feeds: {
saved: res.feeds?.saved || [],
pinned: res.feeds?.pinned || [],
unpinned:
res.feeds.saved?.filter(f => {
return !res.feeds.pinned?.includes(f)
}) || [],
},
feedViewPrefs: {
...DEFAULT_HOME_FEED_PREFS,
...(res.feedViewPrefs.home || {}),
+1 -4
View File
@@ -1,7 +1,7 @@
import {
BskyFeedViewPreference,
BskyPreferences,
BskyThreadViewPreference,
BskyFeedViewPreference,
} from '@atproto/api'
export type UsePreferencesQueryResponse = Omit<
@@ -16,9 +16,6 @@ export type UsePreferencesQueryResponse = Omit<
*/
threadViewPrefs: ThreadViewPreferences
userAge: number | undefined
feeds: Required<BskyPreferences['feeds']> & {
unpinned: string[]
}
}
export type ThreadViewPreferences = Pick<
+4
View File
@@ -1,5 +1,6 @@
import React from 'react'
import {useWindowDimensions, View} from 'react-native'
import {AppBskyActorDefs} from '@atproto/api'
import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native'
@@ -34,6 +35,7 @@ export function FeedPage({
feedParams,
renderEmptyState,
renderEndOfFeed,
savedFeedConfig,
}: {
testID?: string
feed: FeedDescriptor
@@ -41,6 +43,7 @@ export function FeedPage({
isPageFocused: boolean
renderEmptyState: () => JSX.Element
renderEndOfFeed?: () => JSX.Element
savedFeedConfig?: AppBskyActorDefs.SavedFeed
}) {
const {hasSession} = useSession()
const {_} = useLingui()
@@ -132,6 +135,7 @@ export function FeedPage({
renderEmptyState={renderEmptyState}
renderEndOfFeed={renderEndOfFeed}
headerOffset={headerOffset}
savedFeedConfig={savedFeedConfig}
/>
</MainScrollProvider>
{(isScrolledDown || hasNew) && (
+13 -1
View File
@@ -8,6 +8,7 @@ import {
View,
ViewStyle,
} from 'react-native'
import {AppBskyActorDefs} from '@atproto/api'
import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query'
@@ -63,6 +64,7 @@ let Feed = ({
desktopFixedHeightOffset,
ListHeaderComponent,
extraData,
savedFeedConfig,
}: {
feed: FeedDescriptor
feedParams?: FeedParams
@@ -81,6 +83,7 @@ let Feed = ({
desktopFixedHeightOffset?: number
ListHeaderComponent?: () => JSX.Element
extraData?: any
savedFeedConfig?: AppBskyActorDefs.SavedFeed
}): React.ReactNode => {
const theme = useTheme()
const {track} = useAnalytics()
@@ -278,6 +281,7 @@ let Feed = ({
feedDesc={feed}
error={error ?? undefined}
onPressTryAgain={onPressTryAgain}
savedFeedConfig={savedFeedConfig}
/>
)
} else if (item === LOAD_MORE_ERROR_ITEM) {
@@ -300,7 +304,15 @@ let Feed = ({
}
return <FeedSlice slice={item} />
},
[feed, error, onPressTryAgain, onPressRetryLoadMore, renderEmptyState, _],
[
feed,
error,
onPressTryAgain,
onPressRetryLoadMore,
renderEmptyState,
_,
savedFeedConfig,
],
)
const shouldRenderEndOfFeed =
+31 -22
View File
@@ -1,21 +1,22 @@
import React from 'react'
import {View} from 'react-native'
import {AppBskyFeedGetAuthorFeed, AtUri} from '@atproto/api'
import {Text} from '../util/text/Text'
import {Button} from '../util/forms/Button'
import * as Toast from '../util/Toast'
import {ErrorMessage} from '../util/error/ErrorMessage'
import {usePalette} from 'lib/hooks/usePalette'
import {useNavigation} from '@react-navigation/native'
import {NavigationProp} from 'lib/routes/types'
import {logger} from '#/logger'
import {AppBskyActorDefs, AppBskyFeedGetAuthorFeed, AtUri} from '@atproto/api'
import {msg as msgLingui, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {FeedDescriptor} from '#/state/queries/post-feed'
import {EmptyState} from '../util/EmptyState'
import {useNavigation} from '@react-navigation/native'
import {cleanError} from '#/lib/strings/errors'
import {logger} from '#/logger'
import {FeedDescriptor} from '#/state/queries/post-feed'
import {useRemoveFeedMutation} from '#/state/queries/preferences'
import {usePalette} from 'lib/hooks/usePalette'
import {NavigationProp} from 'lib/routes/types'
import * as Prompt from '#/components/Prompt'
import {EmptyState} from '../util/EmptyState'
import {ErrorMessage} from '../util/error/ErrorMessage'
import {Button} from '../util/forms/Button'
import {Text} from '../util/text/Text'
import * as Toast from '../util/Toast'
export enum KnownError {
Block = 'Block',
@@ -33,10 +34,12 @@ export function FeedErrorMessage({
feedDesc,
error,
onPressTryAgain,
savedFeedConfig,
}: {
feedDesc: FeedDescriptor
error?: Error
onPressTryAgain: () => void
savedFeedConfig?: AppBskyActorDefs.SavedFeed
}) {
const {_: _l} = useLingui()
const knownError = React.useMemo(
@@ -46,13 +49,15 @@ export function FeedErrorMessage({
if (
typeof knownError !== 'undefined' &&
knownError !== KnownError.Unknown &&
(feedDesc.startsWith('feedgen') || knownError === KnownError.FeedNSFPublic)
(savedFeedConfig?.type === 'feed' ||
knownError === KnownError.FeedNSFPublic)
) {
return (
<FeedgenErrorMessage
feedDesc={feedDesc}
knownError={knownError}
rawError={error}
savedFeedConfig={savedFeedConfig}
/>
)
}
@@ -79,10 +84,12 @@ function FeedgenErrorMessage({
feedDesc,
knownError,
rawError,
savedFeedConfig,
}: {
feedDesc: FeedDescriptor
knownError: KnownError
rawError?: Error
savedFeedConfig?: AppBskyActorDefs.SavedFeed
}) {
const pal = usePalette('default')
const {_: _l} = useLingui()
@@ -131,7 +138,8 @@ function FeedgenErrorMessage({
const onRemoveFeed = React.useCallback(async () => {
try {
await removeFeed({uri})
if (!savedFeedConfig) return
await removeFeed(savedFeedConfig)
} catch (err) {
Toast.show(
_l(
@@ -140,7 +148,7 @@ function FeedgenErrorMessage({
)
logger.error('Failed to remove feed', {message: err})
}
}, [uri, removeFeed, _l])
}, [removeFeed, _l, savedFeedConfig])
const cta = React.useMemo(() => {
switch (knownError) {
@@ -154,13 +162,14 @@ function FeedgenErrorMessage({
case KnownError.FeedgenUnknown: {
return (
<View style={{flexDirection: 'row', alignItems: 'center', gap: 10}}>
{knownError === KnownError.FeedgenDoesNotExist && (
<Button
type="inverted"
label={_l(msgLingui`Remove feed`)}
onPress={onRemoveFeed}
/>
)}
{knownError === KnownError.FeedgenDoesNotExist &&
savedFeedConfig && (
<Button
type="inverted"
label={_l(msgLingui`Remove feed`)}
onPress={onRemoveFeed}
/>
)}
<Button
type="default-light"
label={_l(msgLingui`View profile`)}
@@ -170,7 +179,7 @@ function FeedgenErrorMessage({
)
}
}
}, [knownError, onViewProfile, onRemoveFeed, _l])
}, [knownError, onViewProfile, onRemoveFeed, _l, savedFeedConfig])
return (
<>
+5 -1
View File
@@ -197,7 +197,7 @@ function HomeScreenReady({
return {
mergeFeedEnabled: Boolean(preferences.feedViewPrefs.lab_mergeFeedEnabled),
mergeFeedSources: preferences.feedViewPrefs.lab_mergeFeedEnabled
? preferences.feeds.saved
? preferences.savedFeeds.map(f => f.value)
: [],
}
}, [preferences])
@@ -226,6 +226,9 @@ function HomeScreenReady({
/>
)
}
const savedFeedConfig = preferences.savedFeeds.find(f => {
return feed.includes(f.value)
})
return (
<FeedPage
@@ -234,6 +237,7 @@ function HomeScreenReady({
isPageFocused={selectedFeed === feed}
feed={feed}
renderEmptyState={renderCustomFeedEmptyState}
savedFeedConfig={savedFeedConfig}
/>
)
})}
+2 -2
View File
@@ -92,7 +92,7 @@ export function SavedFeeds({}: Props) {
</Text>
</View>
{preferences?.feeds ? (
{preferences?.savedFeeds.length ? (
!pinnedFeeds.length ? (
<View
style={[
@@ -126,7 +126,7 @@ export function SavedFeeds({}: Props) {
<Trans>Saved Feeds</Trans>
</Text>
</View>
{preferences?.feeds ? (
{preferences?.savedFeeds.length ? (
!unpinnedFeeds.length ? (
<View
style={[