Bluesky app fork with some witchin' additions 馃挮
0
fork

Configure Feed

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

at 999e52ed2d5a2c8b2f7b8747dfcfd0e2017e5eb0 153 lines 5.2 kB view raw
1import {msg, Trans} from '@lingui/macro' 2import {useLingui} from '@lingui/react' 3 4import { 5 type CommonNavigatorParams, 6 type NativeStackScreenProps, 7} from '#/lib/routes/types' 8import { 9 usePreferencesQuery, 10 useSetFeedViewPreferencesMutation, 11} from '#/state/queries/preferences' 12import {atoms as a} from '#/alf' 13import {Admonition} from '#/components/Admonition' 14import * as Toggle from '#/components/forms/Toggle' 15import {Beaker_Stroke2_Corner2_Rounded as BeakerIcon} from '#/components/icons/Beaker' 16import {Bubbles_Stroke2_Corner2_Rounded as BubblesIcon} from '#/components/icons/Bubble' 17import {CloseQuote_Stroke2_Corner1_Rounded as QuoteIcon} from '#/components/icons/Quote' 18import {Repost_Stroke2_Corner2_Rounded as RepostIcon} from '#/components/icons/Repost' 19import * as Layout from '#/components/Layout' 20import * as SettingsList from './components/SettingsList' 21 22type Props = NativeStackScreenProps< 23 CommonNavigatorParams, 24 'PreferencesFollowingFeed' 25> 26export function FollowingFeedPreferencesScreen({}: Props) { 27 const {_} = useLingui() 28 29 const {data: preferences} = usePreferencesQuery() 30 const {mutate: setFeedViewPref, variables} = 31 useSetFeedViewPreferencesMutation() 32 33 const showReplies = !( 34 variables?.hideReplies ?? preferences?.feedViewPrefs?.hideReplies 35 ) 36 37 const showReposts = !( 38 variables?.hideReposts ?? preferences?.feedViewPrefs?.hideReposts 39 ) 40 41 const showQuotePosts = !( 42 variables?.hideQuotePosts ?? preferences?.feedViewPrefs?.hideQuotePosts 43 ) 44 45 const mergeFeedEnabled = Boolean( 46 variables?.lab_mergeFeedEnabled ?? 47 preferences?.feedViewPrefs?.lab_mergeFeedEnabled, 48 ) 49 50 return ( 51 <Layout.Screen testID="followingFeedPreferencesScreen"> 52 <Layout.Header.Outer> 53 <Layout.Header.BackButton /> 54 <Layout.Header.Content> 55 <Layout.Header.TitleText> 56 <Trans>Following Feed Preferences</Trans> 57 </Layout.Header.TitleText> 58 </Layout.Header.Content> 59 <Layout.Header.Slot /> 60 </Layout.Header.Outer> 61 <Layout.Content> 62 <SettingsList.Container> 63 <SettingsList.Item> 64 <Admonition type="tip" style={[a.flex_1]}> 65 <Trans>These settings only apply to the Following feed.</Trans> 66 </Admonition> 67 </SettingsList.Item> 68 <Toggle.Item 69 type="checkbox" 70 name="show-replies" 71 label={_(msg`Show replies`)} 72 value={showReplies} 73 onChange={value => 74 setFeedViewPref({ 75 hideReplies: !value, 76 }) 77 }> 78 <SettingsList.Item> 79 <SettingsList.ItemIcon icon={BubblesIcon} /> 80 <SettingsList.ItemText> 81 <Trans>Show replies</Trans> 82 </SettingsList.ItemText> 83 <Toggle.Platform /> 84 </SettingsList.Item> 85 </Toggle.Item> 86 <Toggle.Item 87 type="checkbox" 88 name="show-reposts" 89 label={_(msg`Show reposts`)} 90 value={showReposts} 91 onChange={value => 92 setFeedViewPref({ 93 hideReposts: !value, 94 }) 95 }> 96 <SettingsList.Item> 97 <SettingsList.ItemIcon icon={RepostIcon} /> 98 <SettingsList.ItemText> 99 <Trans>Show reposts</Trans> 100 </SettingsList.ItemText> 101 <Toggle.Platform /> 102 </SettingsList.Item> 103 </Toggle.Item> 104 <Toggle.Item 105 type="checkbox" 106 name="show-quotes" 107 label={_(msg`Show quote posts`)} 108 value={showQuotePosts} 109 onChange={value => 110 setFeedViewPref({ 111 hideQuotePosts: !value, 112 }) 113 }> 114 <SettingsList.Item> 115 <SettingsList.ItemIcon icon={QuoteIcon} /> 116 <SettingsList.ItemText> 117 <Trans>Show quote posts</Trans> 118 </SettingsList.ItemText> 119 <Toggle.Platform /> 120 </SettingsList.Item> 121 </Toggle.Item> 122 <SettingsList.Divider /> 123 <SettingsList.Group> 124 <SettingsList.ItemIcon icon={BeakerIcon} /> 125 <SettingsList.ItemText> 126 <Trans>Experimental</Trans> 127 </SettingsList.ItemText> 128 <Toggle.Item 129 type="checkbox" 130 name="merge-feed" 131 label={_( 132 msg`Show samples of your saved feeds in your Following feed`, 133 )} 134 value={mergeFeedEnabled} 135 onChange={value => 136 setFeedViewPref({ 137 lab_mergeFeedEnabled: value, 138 }) 139 } 140 style={[a.w_full, a.gap_md]}> 141 <Toggle.LabelText style={[a.flex_1]}> 142 <Trans> 143 Show samples of your saved feeds in your Following feed 144 </Trans> 145 </Toggle.LabelText> 146 <Toggle.Platform /> 147 </Toggle.Item> 148 </SettingsList.Group> 149 </SettingsList.Container> 150 </Layout.Content> 151 </Layout.Screen> 152 ) 153}