From 52a8879754e07c3e0aa90a40fdc27dfdc40fd450 Mon Sep 17 00:00:00 2001 From: Ansh Nanda Date: Mon, 22 May 2023 20:07:40 -0700 Subject: update pinned feed from custom feed view --- src/state/models/ui/saved-feeds.ts | 10 ++++++-- src/view/screens/CustomFeed.tsx | 52 +++++++++++++++++++++++++++++--------- 2 files changed, 48 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/state/models/ui/saved-feeds.ts b/src/state/models/ui/saved-feeds.ts index 0d04f9c8d..244e75898 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 353995540..952461c9c 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, -- cgit 1.4.1