diff --git a/src/state/models/ui/saved-feeds.ts b/src/state/models/ui/saved-feeds.ts
index 0d04f9c8d0..244e758984 100644
--- a/src/state/models/ui/saved-feeds.ts
+++ b/src/state/models/ui/saved-feeds.ts
@@ -129,8 +129,14 @@ export class SavedFeedsModel {
)
}
- isPinned(feed: CustomFeedModel) {
- return this.rootStore.preferences.pinnedFeeds.includes(feed.uri)
+ isPinned(feedOrUri: CustomFeedModel | string) {
+ let uri: string
+ if (typeof feedOrUri === 'string') {
+ uri = feedOrUri
+ } else {
+ uri = feedOrUri.uri
+ }
+ return this.rootStore.preferences.pinnedFeeds.includes(uri)
}
async movePinnedFeed(item: CustomFeedModel, direction: 'up' | 'down') {
diff --git a/src/view/screens/CustomFeed.tsx b/src/view/screens/CustomFeed.tsx
index 353995540d..952461c9c8 100644
--- a/src/view/screens/CustomFeed.tsx
+++ b/src/view/screens/CustomFeed.tsx
@@ -24,7 +24,7 @@ import {isDesktopWeb} from 'platform/detection'
import {useSetTitle} from 'lib/hooks/useSetTitle'
import {shareUrl} from 'lib/sharing'
import {toShareUrl} from 'lib/strings/url-helpers'
-import { Haptics } from 'lib/haptics'
+import {Haptics} from 'lib/haptics'
const HITSLOP = {top: 5, left: 5, bottom: 5, right: 5}
@@ -47,6 +47,7 @@ export const CustomFeedScreen = withAuthRequired(
feed.setup()
return feed
}, [store, uri])
+ const isPinned = store.me.savedFeeds.isPinned(uri)
useSetTitle(currentFeed?.displayName)
@@ -65,7 +66,6 @@ export const CustomFeedScreen = withAuthRequired(
store.log.error('Failed up update feeds', {err})
}
}, [store, currentFeed])
-
const onToggleLiked = React.useCallback(async () => {
Haptics.default()
try {
@@ -81,6 +81,13 @@ export const CustomFeedScreen = withAuthRequired(
store.log.error('Failed up toggle like', {err})
}
}, [store, currentFeed])
+ const onTogglePinned = React.useCallback(async () => {
+ Haptics.default()
+ store.me.savedFeeds.togglePinnedFeed(currentFeed!).catch(e => {
+ Toast.show('There was an issue contacting the server')
+ store.log.error('Failed to toggle pinned feed', {e})
+ })
+ }, [store, currentFeed])
const onPressShare = React.useCallback(() => {
const url = toShareUrl(`/profile/${name}/feed/${rkey}`)
shareUrl(url)
@@ -212,15 +219,30 @@ export const CustomFeedScreen = withAuthRequired(
{currentFeed.data.description}
) : null}
-
+
+
+
+
)
@@ -275,6 +298,11 @@ const styles = StyleSheet.create({
paddingHorizontal: 16,
paddingBottom: 16,
},
+ headerDetailsFooter: {
+ flexDirection: 'row',
+ alignItems: 'center',
+ justifyContent: 'space-between',
+ },
fakeSelector: {
flexDirection: 'row',
paddingHorizontal: isDesktopWeb ? 16 : 6,