mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at tooltip 115 lines 3.7 kB view raw
1import React from 'react' 2import {View} from 'react-native' 3import {TID} from '@atproto/common-web' 4import {msg, Trans} from '@lingui/macro' 5import {useLingui} from '@lingui/react' 6 7import {DISCOVER_SAVED_FEED, TIMELINE_SAVED_FEED} from '#/lib/constants' 8import {useOverwriteSavedFeedsMutation} from '#/state/queries/preferences' 9import {UsePreferencesQueryResponse} from '#/state/queries/preferences' 10import {CenteredView} from '#/view/com/util/Views' 11import {atoms as a} from '#/alf' 12import {Button, ButtonIcon, ButtonText} from '#/components/Button' 13import {useHeaderOffset} from '#/components/hooks/useHeaderOffset' 14import {ListSparkle_Stroke2_Corner0_Rounded as ListSparkle} from '#/components/icons/ListSparkle' 15import {PlusLarge_Stroke2_Corner0_Rounded as Plus} from '#/components/icons/Plus' 16import {Link} from '#/components/Link' 17import {Text} from '#/components/Typography' 18 19export function NoFeedsPinned({ 20 preferences, 21}: { 22 preferences: UsePreferencesQueryResponse 23}) { 24 const {_} = useLingui() 25 const headerOffset = useHeaderOffset() 26 const {isPending, mutateAsync: overwriteSavedFeeds} = 27 useOverwriteSavedFeedsMutation() 28 29 const addRecommendedFeeds = React.useCallback(async () => { 30 let skippedTimeline = false 31 let skippedDiscover = false 32 let remainingSavedFeeds = [] 33 34 // remove first instance of both timeline and discover, since we're going to overwrite them 35 for (const savedFeed of preferences.savedFeeds) { 36 if (savedFeed.type === 'timeline' && !skippedTimeline) { 37 skippedTimeline = true 38 } else if ( 39 savedFeed.value === DISCOVER_SAVED_FEED.value && 40 !skippedDiscover 41 ) { 42 skippedDiscover = true 43 } else { 44 remainingSavedFeeds.push(savedFeed) 45 } 46 } 47 48 const toSave = [ 49 { 50 ...DISCOVER_SAVED_FEED, 51 pinned: true, 52 id: TID.nextStr(), 53 }, 54 { 55 ...TIMELINE_SAVED_FEED, 56 pinned: true, 57 id: TID.nextStr(), 58 }, 59 ...remainingSavedFeeds, 60 ] 61 62 await overwriteSavedFeeds(toSave) 63 }, [overwriteSavedFeeds, preferences.savedFeeds]) 64 65 return ( 66 <CenteredView sideBorders style={[a.h_full_vh]}> 67 <View 68 style={[ 69 a.align_center, 70 a.h_full_vh, 71 a.py_3xl, 72 a.px_xl, 73 { 74 paddingTop: headerOffset + a.py_3xl.paddingTop, 75 }, 76 ]}> 77 <View style={[a.align_center, a.gap_sm, a.pb_xl]}> 78 <Text style={[a.text_xl, a.font_bold]}> 79 <Trans>Whoops!</Trans> 80 </Text> 81 <Text 82 style={[a.text_md, a.text_center, a.leading_snug, {maxWidth: 340}]}> 83 <Trans> 84 Looks like you unpinned all your feeds. But don't worry, you can 85 add some below 😄 86 </Trans> 87 </Text> 88 </View> 89 90 <View style={[a.flex_row, a.gap_md, a.justify_center, a.flex_wrap]}> 91 <Button 92 disabled={isPending} 93 label={_(msg`Apply default recommended feeds`)} 94 size="large" 95 variant="solid" 96 color="primary" 97 onPress={addRecommendedFeeds}> 98 <ButtonIcon icon={Plus} position="left" /> 99 <ButtonText>{_(msg`Add recommended feeds`)}</ButtonText> 100 </Button> 101 102 <Link 103 label={_(msg`Browse other feeds`)} 104 to="/feeds" 105 size="large" 106 variant="solid" 107 color="secondary"> 108 <ButtonIcon icon={ListSparkle} position="left" /> 109 <ButtonText>{_(msg`Browse other feeds`)}</ButtonText> 110 </Link> 111 </View> 112 </View> 113 </CenteredView> 114 ) 115}