From 6a4ee345283cf69f31015754069336731d189d6f Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Thu, 26 Jun 2025 11:21:15 -0500 Subject: [PATCH] Add initial prompt component --- .../ageAssurance/AgeAssurancePrompt.tsx | 123 ++++++++++++++++++ src/screens/Moderation/index.tsx | 3 + src/screens/Settings/Settings.tsx | 3 + 3 files changed, 129 insertions(+) create mode 100644 src/components/ageAssurance/AgeAssurancePrompt.tsx diff --git a/src/components/ageAssurance/AgeAssurancePrompt.tsx b/src/components/ageAssurance/AgeAssurancePrompt.tsx new file mode 100644 index 0000000000..842409478b --- /dev/null +++ b/src/components/ageAssurance/AgeAssurancePrompt.tsx @@ -0,0 +1,123 @@ +import {View} from 'react-native' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' + +import {useAgeAssuranceContext} from '#/state/ageAssurance' +import {atoms as a, select, useTheme, type ViewStyleProp} from '#/alf' +import {Button, ButtonText} from '#/components/Button' +import {Divider} from '#/components/Divider' +import {Shield_Stroke2_Corner0_Rounded as Shield} from '#/components/icons/Shield' +import {Text} from '#/components/Typography' + +export function AgeAssurancePrompt({style}: ViewStyleProp & {}) { + const t = useTheme() + const {_} = useLingui() + const {isAgeRestricted} = useAgeAssuranceContext() + + return !isAgeRestricted ? null : ( + + + + + + + Age Asurrance + + + + + You're currently accessing Bluesky from a location that by law + requires you to verify your age prior to accessing certain content and + features. + + + + + + + Verification takes only a few minutes + + + + + + + ) +} diff --git a/src/screens/Moderation/index.tsx b/src/screens/Moderation/index.tsx index 6e3d58892b..9b28e637a9 100644 --- a/src/screens/Moderation/index.tsx +++ b/src/screens/Moderation/index.tsx @@ -23,6 +23,7 @@ import {isNonConfigurableModerationAuthority} from '#/state/session/additional-m import {useSetMinimalShellMode} from '#/state/shell' import {ViewHeader} from '#/view/com/util/ViewHeader' import {atoms as a, useBreakpoints, useTheme, type ViewStyleProp} from '#/alf' +import {AgeAssurancePrompt} from '#/components/ageAssurance/AgeAssurancePrompt' import {Button, ButtonText} from '#/components/Button' import * as Dialog from '#/components/Dialog' import {BirthDateSettingsDialog} from '#/components/dialogs/BirthDateSettings' @@ -308,6 +309,8 @@ export function ModerationScreenInner({ Content filters + + {ageNotSet && ( <> diff --git a/src/screens/Settings/Settings.tsx b/src/screens/Settings/Settings.tsx index aaba0b4b5c..8631c26690 100644 --- a/src/screens/Settings/Settings.tsx +++ b/src/screens/Settings/Settings.tsx @@ -32,6 +32,7 @@ import * as Toast from '#/view/com/util/Toast' import {UserAvatar} from '#/view/com/util/UserAvatar' import * as SettingsList from '#/screens/Settings/components/SettingsList' import {atoms as a, platform, tokens, useBreakpoints, useTheme} from '#/alf' +import {AgeAssurancePrompt} from '#/components/ageAssurance/AgeAssurancePrompt' import {AvatarStackWithFetch} from '#/components/AvatarStack' import {useDialogControl} from '#/components/Dialog' import {SwitchAccountDialog} from '#/components/dialogs/SwitchAccount' @@ -96,6 +97,8 @@ export function SettingsScreen({}: Props) { + +