diff --git a/src/screens/Feeds/NoSavedFeeds.tsx b/src/screens/Feeds/NoSavedFeeds.tsx
new file mode 100644
index 0000000000..2dbc6b5d99
--- /dev/null
+++ b/src/screens/Feeds/NoSavedFeeds.tsx
@@ -0,0 +1,45 @@
+import React from 'react'
+import {View} from 'react-native'
+import {msg, Trans} from '@lingui/macro'
+import {useLingui} from '@lingui/react'
+
+import {RECOMMENDED_SAVED_FEEDS} from '#/lib/constants'
+import {useSetSaveFeedsMutation} from '#/state/queries/preferences'
+import {atoms as a, useTheme} from '#/alf'
+import {Button, ButtonIcon, ButtonText} from '#/components/Button'
+import {PlusLarge_Stroke2_Corner0_Rounded as Plus} from '#/components/icons/Plus'
+import {Text} from '#/components/Typography'
+
+export function NoSavedFeeds() {
+ const t = useTheme()
+ const {_} = useLingui()
+ const {isPending, mutateAsync: setSavedFeeds} = useSetSaveFeedsMutation()
+
+ const addRecommendedFeeds = React.useCallback(async () => {
+ await setSavedFeeds(RECOMMENDED_SAVED_FEEDS)
+ }, [setSavedFeeds])
+
+ return (
+
+
+
+ Looks like you haven't saved any feeds! Use our recommendations or
+ browse more below.
+
+
+
+
+
+ )
+}
diff --git a/src/view/screens/Feeds.tsx b/src/view/screens/Feeds.tsx
index 820753f17f..a1e5c0229a 100644
--- a/src/view/screens/Feeds.tsx
+++ b/src/view/screens/Feeds.tsx
@@ -45,6 +45,7 @@ import {
import {Text} from 'view/com/util/text/Text'
import {UserAvatar} from 'view/com/util/UserAvatar'
import {ViewHeader} from 'view/com/util/ViewHeader'
+import {NoSavedFeeds} from '#/screens/Feeds/NoSavedFeeds'
import {atoms as a, useTheme} from '#/alf'
import {IconCircle} from '#/components/IconCircle'
import {FilterTimeline_Stroke2_Corner0_Rounded as FilterTimeline} from '#/components/icons/FilterTimeline'
@@ -232,7 +233,7 @@ export function FeedsScreen(_props: Props) {
error: cleanError(preferencesError.toString()),
})
} else {
- if (isPreferencesLoading || !preferences?.savedFeeds?.length) {
+ if (isPreferencesLoading || !preferences?.savedFeeds) {
slices.push({
key: 'savedFeedsLoading',
type: 'savedFeedsLoading',
@@ -264,6 +265,11 @@ export function FeedsScreen(_props: Props) {
savedFeedConfig: feed,
})),
)
+ } else {
+ slices.push({
+ key: 'savedFeedNoResults',
+ type: 'savedFeedNoResults',
+ })
}
}
}
@@ -476,19 +482,19 @@ export function FeedsScreen(_props: Props) {
)}
- {preferences?.savedFeeds?.length !== 0 && }
+
>
)
} else if (item.type === 'savedFeedNoResults') {
return (
-
- You don't have any saved feeds!
-
+ style={[
+ pal.border,
+ {
+ borderBottomWidth: 1,
+ },
+ ]}>
+
)
} else if (item.type === 'savedFeed') {
@@ -545,7 +551,6 @@ export function FeedsScreen(_props: Props) {
pal.icon,
pal.textLight,
_,
- preferences?.savedFeeds?.length,
query,
onChangeQuery,
onPressCancelSearch,