+30
src/screens/Settings/ExperimentalSettings.tsx
+30
src/screens/Settings/ExperimentalSettings.tsx
···
19
19
useDirectFetchRecords,
20
20
useSetDirectFetchRecords,
21
21
} from '#/state/preferences/direct-fetch-records'
22
+
import {
23
+
useSetShowExternalShareButtons,
24
+
useShowExternalShareButtons,
25
+
} from '#/state/preferences/external-share-buttons'
22
26
import * as SettingsList from '#/screens/Settings/components/SettingsList'
23
27
import {atoms as a} from '#/alf'
24
28
import {Admonition} from '#/components/Admonition'
25
29
import * as Toggle from '#/components/forms/Toggle'
26
30
import {Atom_Stroke2_Corner0_Rounded as ExperimentalIcon} from '#/components/icons/Atom'
31
+
import {ChainLink_Stroke2_Corner0_Rounded as ChainLinkIcon} from '#/components/icons/ChainLink'
27
32
import {Eye_Stroke2_Corner0_Rounded as VisibilityIcon} from '#/components/icons/Eye'
28
33
import {PaintRoller_Stroke2_Corner2_Rounded as PaintRollerIcon} from '#/components/icons/PaintRoller'
29
34
import * as Layout from '#/components/Layout'
···
41
46
42
47
const directFetchRecords = useDirectFetchRecords()
43
48
const setDirectFetchRecords = useSetDirectFetchRecords()
49
+
50
+
const showExternalShareButtons = useShowExternalShareButtons()
51
+
const setShowExternalShareButtons = useSetShowExternalShareButtons()
44
52
45
53
const [gates, setGatesView] = useState(Object.fromEntries(useGatesCache()))
46
54
const dangerousSetGate = useDangerousSetGate()
···
116
124
<Toggle.LabelText style={[a.flex_1]}>
117
125
<Trans>
118
126
TODO: Fall back to constellation api to find blocked replies
127
+
</Trans>
128
+
</Toggle.LabelText>
129
+
<Toggle.Platform />
130
+
</Toggle.Item>
131
+
</SettingsList.Group>
132
+
133
+
<SettingsList.Group contentContainerStyle={[a.gap_sm]}>
134
+
<SettingsList.ItemIcon icon={ChainLinkIcon} />
135
+
<SettingsList.ItemText>
136
+
<Trans>Bridging and Fediverse</Trans>
137
+
</SettingsList.ItemText>
138
+
<Toggle.Item
139
+
name="external_share_buttons"
140
+
label={_(
141
+
msg`Show "Open original post" and "Open post in pdsls" buttons`,
142
+
)}
143
+
value={showExternalShareButtons}
144
+
onChange={value => setShowExternalShareButtons(value)}
145
+
style={[a.w_full]}>
146
+
<Toggle.LabelText style={[a.flex_1]}>
147
+
<Trans>
148
+
Show "Open original post" and "Open post in pdsls" buttons
119
149
</Trans>
120
150
</Toggle.LabelText>
121
151
<Toggle.Platform />
+3
src/state/persisted/schema.ts
+3
src/state/persisted/schema.ts
···
130
130
directFetchRecords: z.boolean().optional(),
131
131
unfollowConfirm: z.boolean().optional(),
132
132
133
+
showExternalShareButtons: z.boolean().optional(),
134
+
133
135
/** @deprecated */
134
136
mutedThreads: z.array(z.string()),
135
137
trendingDisabled: z.boolean().optional(),
···
187
189
constellationEnabled: false,
188
190
directFetchRecords: false,
189
191
unfollowConfirm: false,
192
+
showExternalShareButtons: false,
190
193
}
191
194
192
195
export function tryParse(rawData: string): Schema | undefined {
+28
-25
src/state/preferences/index.tsx
+28
-25
src/state/preferences/index.tsx
···
6
6
import {Provider as DirectFetchRecordsProvider} from './direct-fetch-records'
7
7
import {Provider as DisableHapticsProvider} from './disable-haptics'
8
8
import {Provider as ExternalEmbedsProvider} from './external-embeds-prefs'
9
+
import {Provider as ExternalShareButtonsProvider} from './external-share-buttons'
9
10
import {Provider as GoLinksProvider} from './go-links-enabled'
10
11
import {Provider as HiddenPostsProvider} from './hidden-posts'
11
12
import {Provider as InAppBrowserProvider} from './in-app-browser'
···
36
37
return (
37
38
<LanguagesProvider>
38
39
<AltTextRequiredProvider>
39
-
<GoLinksProvider>
40
-
<DirectFetchRecordsProvider>
41
-
<ConstellationProvider>
42
-
<LargeAltBadgeProvider>
43
-
<ExternalEmbedsProvider>
44
-
<HiddenPostsProvider>
45
-
<InAppBrowserProvider>
46
-
<DisableHapticsProvider>
47
-
<AutoplayProvider>
48
-
<UsedStarterPacksProvider>
49
-
<SubtitlesProvider>
50
-
<TrendingSettingsProvider>
51
-
<KawaiiProvider>{children}</KawaiiProvider>
52
-
</TrendingSettingsProvider>
53
-
</SubtitlesProvider>
54
-
</UsedStarterPacksProvider>
55
-
</AutoplayProvider>
56
-
</DisableHapticsProvider>
57
-
</InAppBrowserProvider>
58
-
</HiddenPostsProvider>
59
-
</ExternalEmbedsProvider>
60
-
</LargeAltBadgeProvider>
61
-
</ConstellationProvider>
62
-
</DirectFetchRecordsProvider>
63
-
</GoLinksProvider>
40
+
<ExternalShareButtonsProvider>
41
+
<GoLinksProvider>
42
+
<DirectFetchRecordsProvider>
43
+
<ConstellationProvider>
44
+
<LargeAltBadgeProvider>
45
+
<ExternalEmbedsProvider>
46
+
<HiddenPostsProvider>
47
+
<InAppBrowserProvider>
48
+
<DisableHapticsProvider>
49
+
<AutoplayProvider>
50
+
<UsedStarterPacksProvider>
51
+
<SubtitlesProvider>
52
+
<TrendingSettingsProvider>
53
+
<KawaiiProvider>{children}</KawaiiProvider>
54
+
</TrendingSettingsProvider>
55
+
</SubtitlesProvider>
56
+
</UsedStarterPacksProvider>
57
+
</AutoplayProvider>
58
+
</DisableHapticsProvider>
59
+
</InAppBrowserProvider>
60
+
</HiddenPostsProvider>
61
+
</ExternalEmbedsProvider>
62
+
</LargeAltBadgeProvider>
63
+
</ConstellationProvider>
64
+
</DirectFetchRecordsProvider>
65
+
</GoLinksProvider>
66
+
</ExternalShareButtonsProvider>
64
67
</AltTextRequiredProvider>
65
68
</LanguagesProvider>
66
69
)