forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1import {View} from 'react-native'
2import {msg} from '@lingui/macro'
3import {useLingui} from '@lingui/react'
4
5import {useEnableSquareButtons} from '#/state/preferences/enable-square-buttons'
6import {Nux, useNux, useSaveNux} from '#/state/queries/nuxs'
7import {atoms as a, type ViewStyleProp} from '#/alf'
8import {AgeAssuranceAdmonition} from '#/components/ageAssurance/AgeAssuranceAdmonition'
9import {useAgeAssuranceCopy} from '#/components/ageAssurance/useAgeAssuranceCopy'
10import {Button, ButtonIcon} from '#/components/Button'
11import {TimesLarge_Stroke2_Corner0_Rounded as X} from '#/components/icons/Times'
12import {useAgeAssurance} from '#/ageAssurance'
13import {logger} from '#/ageAssurance'
14
15export function AgeAssuranceDismissibleNotice({style}: ViewStyleProp & {}) {
16 const {_} = useLingui()
17 const aa = useAgeAssurance()
18 const {nux} = useNux(Nux.AgeAssuranceDismissibleNotice)
19 const copy = useAgeAssuranceCopy()
20 const {mutate: save, variables} = useSaveNux()
21 const enableSquareButtons = useEnableSquareButtons()
22 const hidden = !!variables
23
24 if (aa.state.access === aa.Access.Full) return null
25 if (aa.state.lastInitiatedAt) return null
26 if (hidden) return null
27 if (nux && nux.completed) return null
28
29 return (
30 <View style={style}>
31 <View>
32 <AgeAssuranceAdmonition>{copy.notice}</AgeAssuranceAdmonition>
33
34 <Button
35 label={_(msg`Don't show again`)}
36 size="tiny"
37 variant="solid"
38 color="secondary_inverted"
39 shape={enableSquareButtons ? 'square' : 'round'}
40 onPress={() => {
41 save({
42 id: Nux.AgeAssuranceDismissibleNotice,
43 completed: true,
44 data: undefined,
45 })
46 logger.metric('ageAssurance:dismissSettingsNotice', {})
47 }}
48 style={[
49 a.absolute,
50 {
51 top: 12,
52 right: 12,
53 },
54 ]}>
55 <ButtonIcon icon={X} />
56 </Button>
57 </View>
58 </View>
59 )
60}