From 438ec7c3e153a5a948bd808a29161eb34d9b81e7 Mon Sep 17 00:00:00 2001 From: hailey Date: Tue, 17 Jun 2025 13:09:15 -0700 Subject: [PATCH 1/9] add fabric package/lock files (#8509) --- .github/workflows/build-submit-android.yml | 4 ++++ .github/workflows/bundle-deploy-eas-update.yml | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/.github/workflows/build-submit-android.yml b/.github/workflows/build-submit-android.yml index f75c95052e..cff99f9c7e 100644 --- a/.github/workflows/build-submit-android.yml +++ b/.github/workflows/build-submit-android.yml @@ -52,6 +52,10 @@ jobs: distribution: 'temurin' java-version: '17' + - name: "Use upgraded MMKV for Fabric" + run: | + sed -i 's/"react-native-mmkv": "\^2\.12\.2"/"react-native-mmkv": "^3.3.0"/' filename.txt + - name: ⚙️ Install dependencies run: yarn install diff --git a/.github/workflows/bundle-deploy-eas-update.yml b/.github/workflows/bundle-deploy-eas-update.yml index 5a4702f964..cd62b4e8c5 100644 --- a/.github/workflows/bundle-deploy-eas-update.yml +++ b/.github/workflows/bundle-deploy-eas-update.yml @@ -275,6 +275,10 @@ jobs: distribution: 'temurin' java-version: '17' + - name: "Use upgraded MMKV for Fabric" + run: | + sed -i 's/"react-native-mmkv": "\^2\.12\.2"/"react-native-mmkv": "^3.3.0"/' filename.txt + - name: ⚙️ Install dependencies run: yarn install From f1f9ca960681b5257429b4b4c2a02cccc29e4fd6 Mon Sep 17 00:00:00 2001 From: hailey Date: Tue, 17 Jun 2025 13:19:07 -0700 Subject: [PATCH 2/9] facepalm (#8510) --- .github/workflows/build-submit-android.yml | 2 +- .github/workflows/bundle-deploy-eas-update.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-submit-android.yml b/.github/workflows/build-submit-android.yml index cff99f9c7e..8a8388ee80 100644 --- a/.github/workflows/build-submit-android.yml +++ b/.github/workflows/build-submit-android.yml @@ -54,7 +54,7 @@ jobs: - name: "Use upgraded MMKV for Fabric" run: | - sed -i 's/"react-native-mmkv": "\^2\.12\.2"/"react-native-mmkv": "^3.3.0"/' filename.txt + sed -i 's/"react-native-mmkv": "\^2\.12\.2"/"react-native-mmkv": "^3.3.0"/' package.json - name: ⚙️ Install dependencies run: yarn install diff --git a/.github/workflows/bundle-deploy-eas-update.yml b/.github/workflows/bundle-deploy-eas-update.yml index cd62b4e8c5..ab497954c6 100644 --- a/.github/workflows/bundle-deploy-eas-update.yml +++ b/.github/workflows/bundle-deploy-eas-update.yml @@ -277,7 +277,7 @@ jobs: - name: "Use upgraded MMKV for Fabric" run: | - sed -i 's/"react-native-mmkv": "\^2\.12\.2"/"react-native-mmkv": "^3.3.0"/' filename.txt + sed -i 's/"react-native-mmkv": "\^2\.12\.2"/"react-native-mmkv": "^3.3.0"/' package.json - name: ⚙️ Install dependencies run: yarn install From 9cf457acf8495c1287e366f677e1516847e4d739 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Wed, 18 Jun 2025 00:12:59 +0300 Subject: [PATCH 3/9] copy tweak (#8506) --- src/Navigation.tsx | 4 ++-- .../LikesOnRepostsNotificationSettings.tsx | 2 +- src/screens/Settings/NotificationSettings/index.tsx | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Navigation.tsx b/src/Navigation.tsx index 3bf1ace852..f1a9c569d0 100644 --- a/src/Navigation.tsx +++ b/src/Navigation.tsx @@ -447,7 +447,7 @@ function commonScreens(Stack: typeof Flat, unreadCountLabel?: string) { name="LikesOnRepostsNotificationSettings" getComponent={() => LikesOnRepostsNotificationSettingsScreen} options={{ - title: title(msg`Likes on your reposts notifications`), + title: title(msg`Likes of your reposts notifications`), requireAuth: true, }} /> @@ -455,7 +455,7 @@ function commonScreens(Stack: typeof Flat, unreadCountLabel?: string) { name="RepostsOnRepostsNotificationSettings" getComponent={() => RepostsOnRepostsNotificationSettingsScreen} options={{ - title: title(msg`Reposts on your reposts notifications`), + title: title(msg`Reposts of your reposts notifications`), requireAuth: true, }} /> diff --git a/src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx b/src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx index 08a05d468f..c72e8c7578 100644 --- a/src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx +++ b/src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx @@ -38,7 +38,7 @@ export function LikesOnRepostsNotificationSettingsScreen({}: Props) { Likes on your reposts} + titleText={Likes of your reposts} subtitleText={ Get notifications when people like posts that you've reposted. diff --git a/src/screens/Settings/NotificationSettings/index.tsx b/src/screens/Settings/NotificationSettings/index.tsx index a4f6dede05..7593635760 100644 --- a/src/screens/Settings/NotificationSettings/index.tsx +++ b/src/screens/Settings/NotificationSettings/index.tsx @@ -199,13 +199,13 @@ export function NotificationSettingsScreen({}: Props) { */} Likes on your reposts} + titleText={Likes of your reposts} subtitleText={ } From 619fa0d0bbac80100aefeb926ca7098f0644d0d8 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 17 Jun 2025 18:12:37 -0500 Subject: [PATCH 4/9] Delete some old dialogs (#8512) * Delete old EditProfile dialog * Delete old email verification dialogs --- src/components/dialogs/ChangeEmailDialog.tsx | 259 ------------- src/components/dialogs/VerifyEmailDialog.tsx | 360 ------------------- src/view/com/modals/EditProfile.tsx | 335 ----------------- 3 files changed, 954 deletions(-) delete mode 100644 src/components/dialogs/ChangeEmailDialog.tsx delete mode 100644 src/components/dialogs/VerifyEmailDialog.tsx delete mode 100644 src/view/com/modals/EditProfile.tsx diff --git a/src/components/dialogs/ChangeEmailDialog.tsx b/src/components/dialogs/ChangeEmailDialog.tsx deleted file mode 100644 index 93397bae93..0000000000 --- a/src/components/dialogs/ChangeEmailDialog.tsx +++ /dev/null @@ -1,259 +0,0 @@ -import {useState} from 'react' -import {View} from 'react-native' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' - -import {cleanError} from '#/lib/strings/errors' -import {useAgent, useSession} from '#/state/session' -import {ErrorMessage} from '#/view/com/util/error/ErrorMessage' -import {atoms as a, useBreakpoints, web} from '#/alf' -import {Button, ButtonText} from '#/components/Button' -import * as Dialog from '#/components/Dialog' -import * as TextField from '#/components/forms/TextField' -import {Loader} from '#/components/Loader' -import {Text} from '#/components/Typography' - -export function ChangeEmailDialog({ - control, - verifyEmailControl, -}: { - control: Dialog.DialogControlProps - verifyEmailControl: Dialog.DialogControlProps -}) { - return ( - - - - - ) -} - -export function Inner({ - verifyEmailControl, -}: { - verifyEmailControl: Dialog.DialogControlProps -}) { - const {_} = useLingui() - const {currentAccount} = useSession() - const agent = useAgent() - const control = Dialog.useDialogContext() - const {gtMobile} = useBreakpoints() - - const [currentStep, setCurrentStep] = useState< - 'StepOne' | 'StepTwo' | 'StepThree' - >('StepOne') - const [email, setEmail] = useState('') - const [confirmationCode, setConfirmationCode] = useState('') - const [isProcessing, setIsProcessing] = useState(false) - const [error, setError] = useState('') - - const currentEmail = currentAccount?.email || '(no email)' - const uiStrings = { - StepOne: { - title: _(msg`Change Your Email`), - message: '', - }, - StepTwo: { - title: _(msg`Security Step Required`), - message: _( - msg`An email has been sent to your previous address, ${currentEmail}. It includes a confirmation code which you can enter below.`, - ), - }, - StepThree: { - title: _(msg`Email Updated!`), - message: _( - msg`Your email address has been updated but it is not yet verified. As a next step, please verify your new email.`, - ), - }, - } - - const onRequestChange = async () => { - if (email === currentAccount?.email) { - setError( - _( - msg`The email address you entered is the same as your current email address.`, - ), - ) - return - } - setError('') - setIsProcessing(true) - try { - const res = await agent.com.atproto.server.requestEmailUpdate() - if (res.data.tokenRequired) { - setCurrentStep('StepTwo') - } else { - await agent.com.atproto.server.updateEmail({email: email.trim()}) - await agent.resumeSession(agent.session!) - setCurrentStep('StepThree') - } - } catch (e) { - setError(cleanError(String(e))) - } finally { - setIsProcessing(false) - } - } - - const onConfirm = async () => { - setError('') - setIsProcessing(true) - try { - await agent.com.atproto.server.updateEmail({ - email: email.trim(), - token: confirmationCode.trim(), - }) - await agent.resumeSession(agent.session!) - setCurrentStep('StepThree') - } catch (e) { - setError(cleanError(String(e))) - } finally { - setIsProcessing(false) - } - } - - const onVerify = async () => { - control.close(() => { - verifyEmailControl.open() - }) - } - - return ( - - - - - - {uiStrings[currentStep].title} - - {error ? ( - - - - ) : null} - {currentStep === 'StepOne' ? ( - - - Enter your new email address below. - - - - - - ) : ( - - {uiStrings[currentStep].message} - - )} - - {currentStep === 'StepTwo' ? ( - - - Confirmation code - - - - - - ) : null} - - {currentStep === 'StepOne' ? ( - <> - - - - ) : currentStep === 'StepTwo' ? ( - <> - - - - ) : currentStep === 'StepThree' ? ( - <> - - - - ) : null} - - - - ) -} diff --git a/src/components/dialogs/VerifyEmailDialog.tsx b/src/components/dialogs/VerifyEmailDialog.tsx deleted file mode 100644 index b8d1cd1925..0000000000 --- a/src/components/dialogs/VerifyEmailDialog.tsx +++ /dev/null @@ -1,360 +0,0 @@ -import {useState} from 'react' -import {View} from 'react-native' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' - -import {cleanError} from '#/lib/strings/errors' -import {logger} from '#/logger' -import {useAgent, useSession} from '#/state/session' -import {ErrorMessage} from '#/view/com/util/error/ErrorMessage' -import {atoms as a, useBreakpoints, useTheme, web} from '#/alf' -import {Button, ButtonText} from '#/components/Button' -import * as Dialog from '#/components/Dialog' -import * as TextField from '#/components/forms/TextField' -import {Envelope_Filled_Stroke2_Corner0_Rounded as EnvelopeIcon} from '#/components/icons/Envelope' -import {InlineLinkText} from '#/components/Link' -import {Loader} from '#/components/Loader' -import {Text} from '#/components/Typography' -import {ChangeEmailDialog} from './ChangeEmailDialog' - -export function VerifyEmailDialog({ - control, - onCloseWithoutVerifying, - onCloseAfterVerifying, - reasonText, - changeEmailControl, - reminder, -}: { - control: Dialog.DialogControlProps - onCloseWithoutVerifying?: () => void - onCloseAfterVerifying?: () => void - reasonText?: string - /** - * if a changeEmailControl for a ChangeEmailDialog is not provided, - * this component will create one for you. Using this prop - * helps reduce duplication, since these dialogs are often used together. - */ - changeEmailControl?: Dialog.DialogControlProps - reminder?: boolean -}) { - const agent = useAgent() - const fallbackChangeEmailControl = Dialog.useDialogControl() - - const [didVerify, setDidVerify] = useState(false) - - return ( - <> - { - if (!didVerify) { - onCloseWithoutVerifying?.() - return - } - - try { - await agent.resumeSession(agent.session!) - onCloseAfterVerifying?.() - } catch (e: unknown) { - logger.error(String(e)) - return - } - }}> - - - - {!changeEmailControl && ( - - )} - - ) -} - -export function Inner({ - setDidVerify, - reasonText, - changeEmailControl, - reminder, -}: { - setDidVerify: (value: boolean) => void - reasonText?: string - changeEmailControl: Dialog.DialogControlProps - reminder?: boolean -}) { - const control = Dialog.useDialogContext() - const {_} = useLingui() - const {currentAccount} = useSession() - const agent = useAgent() - const {gtMobile} = useBreakpoints() - const t = useTheme() - - const [currentStep, setCurrentStep] = useState< - 'Reminder' | 'StepOne' | 'StepTwo' | 'StepThree' - >(reminder ? 'Reminder' : 'StepOne') - const [confirmationCode, setConfirmationCode] = useState('') - const [isProcessing, setIsProcessing] = useState(false) - const [error, setError] = useState('') - - const uiStrings = { - Reminder: { - title: _(msg`Please Verify Your Email`), - message: _( - msg`Your email has not yet been verified. This is an important security step which we recommend.`, - ), - }, - StepOne: { - title: _(msg`Verify Your Email`), - message: '', - }, - StepTwo: { - title: _(msg`Enter Code`), - message: _( - msg`An email has been sent! Please enter the confirmation code included in the email below.`, - ), - }, - StepThree: { - title: _(msg`Success!`), - message: _(msg`Thank you! Your email has been successfully verified.`), - }, - } - - const onSendEmail = async () => { - setError('') - setIsProcessing(true) - try { - await agent.com.atproto.server.requestEmailConfirmation() - setCurrentStep('StepTwo') - } catch (e: unknown) { - setError(cleanError(e)) - } finally { - setIsProcessing(false) - } - } - - const onVerifyEmail = async () => { - setError('') - setIsProcessing(true) - try { - await agent.com.atproto.server.confirmEmail({ - email: (currentAccount?.email || '').trim(), - token: confirmationCode.trim(), - }) - } catch (e: unknown) { - setError(cleanError(String(e))) - setIsProcessing(false) - return - } - - setIsProcessing(false) - setDidVerify(true) - setCurrentStep('StepThree') - } - - return ( - - - {currentStep === 'Reminder' && ( - - - - )} - - - {uiStrings[currentStep].title} - - {error ? ( - - - - ) : null} - {currentStep === 'StepOne' ? ( - - {reasonText ? ( - - {reasonText} - - Don't have access to{' '} - - {currentAccount?.email} - - ?{' '} - { - e.preventDefault() - control.close(() => { - changeEmailControl.open() - }) - return false - }}> - Change your email address - - . - - - ) : ( - - - You'll receive an email at{' '} - - {currentAccount?.email} - {' '} - to verify it's you. - {' '} - { - e.preventDefault() - control.close(() => { - changeEmailControl.open() - }) - return false - }}> - Need to change it? - - - )} - - ) : ( - - {uiStrings[currentStep].message} - - )} - - {currentStep === 'StepTwo' ? ( - - - Confirmation Code - - - - - - ) : null} - - {currentStep === 'Reminder' ? ( - <> - - - - ) : currentStep === 'StepOne' ? ( - <> - - - - ) : currentStep === 'StepTwo' ? ( - <> - - - - ) : currentStep === 'StepThree' ? ( - - ) : null} - - - - ) -} diff --git a/src/view/com/modals/EditProfile.tsx b/src/view/com/modals/EditProfile.tsx deleted file mode 100644 index cb1552fe57..0000000000 --- a/src/view/com/modals/EditProfile.tsx +++ /dev/null @@ -1,335 +0,0 @@ -import {useCallback, useState} from 'react' -import { - ActivityIndicator, - KeyboardAvoidingView, - ScrollView, - StyleSheet, - TextInput, - TouchableOpacity, - View, -} from 'react-native' -import Animated, {FadeOut} from 'react-native-reanimated' -import {LinearGradient} from 'expo-linear-gradient' -import {type AppBskyActorDefs} from '@atproto/api' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' - -import {MAX_DESCRIPTION, MAX_DISPLAY_NAME, urls} from '#/lib/constants' -import {usePalette} from '#/lib/hooks/usePalette' -import {compressIfNeeded} from '#/lib/media/manip' -import {type PickerImage} from '#/lib/media/picker.shared' -import {cleanError} from '#/lib/strings/errors' -import {enforceLen} from '#/lib/strings/helpers' -import {colors, gradients, s} from '#/lib/styles' -import {useTheme} from '#/lib/ThemeContext' -import {logger} from '#/logger' -import {isWeb} from '#/platform/detection' -import {useModalControls} from '#/state/modals' -import {useProfileUpdateMutation} from '#/state/queries/profile' -import {Text} from '#/view/com/util/text/Text' -import * as Toast from '#/view/com/util/Toast' -import {EditableUserAvatar} from '#/view/com/util/UserAvatar' -import {UserBanner} from '#/view/com/util/UserBanner' -import {Admonition} from '#/components/Admonition' -import {InlineLinkText} from '#/components/Link' -import {useSimpleVerificationState} from '#/components/verification' -import {ErrorMessage} from '../util/error/ErrorMessage' - -const AnimatedTouchableOpacity = - Animated.createAnimatedComponent(TouchableOpacity) - -export const snapPoints = ['fullscreen'] - -export function Component({ - profile, - onUpdate, -}: { - profile: AppBskyActorDefs.ProfileViewDetailed - onUpdate?: () => void -}) { - const pal = usePalette('default') - const theme = useTheme() - const {_} = useLingui() - const {closeModal} = useModalControls() - const updateMutation = useProfileUpdateMutation() - const [imageError, setImageError] = useState('') - const initialDisplayName = profile.displayName || '' - const [displayName, setDisplayName] = useState( - profile.displayName || '', - ) - const [description, setDescription] = useState( - profile.description || '', - ) - const [userBanner, setUserBanner] = useState( - profile.banner, - ) - const [userAvatar, setUserAvatar] = useState( - profile.avatar, - ) - const [newUserBanner, setNewUserBanner] = useState< - PickerImage | undefined | null - >() - const [newUserAvatar, setNewUserAvatar] = useState< - PickerImage | undefined | null - >() - const onPressCancel = () => { - closeModal() - } - const onSelectNewAvatar = useCallback( - async (img: PickerImage | null) => { - setImageError('') - if (img === null) { - setNewUserAvatar(null) - setUserAvatar(null) - return - } - try { - const finalImg = await compressIfNeeded(img, 1000000) - setNewUserAvatar(finalImg) - setUserAvatar(finalImg.path) - } catch (e: any) { - setImageError(cleanError(e)) - } - }, - [setNewUserAvatar, setUserAvatar, setImageError], - ) - - const onSelectNewBanner = useCallback( - async (img: PickerImage | null) => { - setImageError('') - if (!img) { - setNewUserBanner(null) - setUserBanner(null) - return - } - try { - const finalImg = await compressIfNeeded(img, 1000000) - setNewUserBanner(finalImg) - setUserBanner(finalImg.path) - } catch (e: any) { - setImageError(cleanError(e)) - } - }, - [setNewUserBanner, setUserBanner, setImageError], - ) - - const onPressSave = useCallback(async () => { - setImageError('') - try { - await updateMutation.mutateAsync({ - profile, - updates: { - displayName, - description, - }, - newUserAvatar, - newUserBanner, - }) - Toast.show(_(msg({message: 'Profile updated', context: 'toast'}))) - onUpdate?.() - closeModal() - } catch (e: any) { - logger.error('Failed to update user profile', {message: String(e)}) - } - }, [ - updateMutation, - profile, - onUpdate, - closeModal, - displayName, - description, - newUserAvatar, - newUserBanner, - setImageError, - _, - ]) - const verification = useSimpleVerificationState({ - profile, - }) - - return ( - - - - Edit my profile - - - - - - - - {updateMutation.isError && ( - - - - )} - {imageError !== '' && ( - - - - )} - - - - Display Name - - - setDisplayName(enforceLen(v, MAX_DISPLAY_NAME)) - } - accessible={true} - accessibilityLabel={_(msg`Display name`)} - accessibilityHint={_(msg`Edit your display name`)} - /> - - {verification.isVerified && - verification.role === 'default' && - displayName !== initialDisplayName && ( - - - - You are verified. You will lose your verification status - if you change your display name.{' '} - - Learn more. - - - - - )} - - - - Description - - setDescription(enforceLen(v, MAX_DESCRIPTION))} - accessible={true} - accessibilityLabel={_(msg`Description`)} - accessibilityHint={_(msg`Edit your profile description`)} - /> - - {updateMutation.isPending ? ( - - - - ) : ( - - - - Save Changes - - - - )} - {!updateMutation.isPending && ( - - - - Cancel - - - - )} - - - - ) -} - -const styles = StyleSheet.create({ - title: { - textAlign: 'center', - fontWeight: '600', - fontSize: 24, - marginBottom: 18, - }, - label: { - fontWeight: '600', - paddingHorizontal: 4, - paddingBottom: 4, - marginTop: 20, - }, - form: { - paddingHorizontal: 14, - }, - textInput: { - borderWidth: 1, - borderRadius: 6, - paddingHorizontal: 14, - paddingVertical: 10, - fontSize: 16, - }, - textArea: { - borderWidth: 1, - borderRadius: 6, - paddingHorizontal: 12, - paddingTop: 10, - fontSize: 16, - height: 120, - textAlignVertical: 'top', - }, - btn: { - flexDirection: 'row', - alignItems: 'center', - justifyContent: 'center', - width: '100%', - borderRadius: 32, - padding: 10, - marginBottom: 10, - }, - avi: { - position: 'absolute', - top: 80, - left: 24, - width: 84, - height: 84, - borderWidth: 2, - borderRadius: 42, - }, - photos: { - marginBottom: 36, - marginHorizontal: -14, - }, - errorContainer: {marginTop: 20}, -}) From afd3d2829f692f5c480cfa019eed691b8b69d0bd Mon Sep 17 00:00:00 2001 From: pfrazee <1270099+pfrazee@users.noreply.github.com> Date: Wed, 18 Jun 2025 02:40:54 +0000 Subject: [PATCH 5/9] Nightly source-language update --- src/locale/locales/en/messages.po | 674 ++++++++++++++++-------------- 1 file changed, 357 insertions(+), 317 deletions(-) diff --git a/src/locale/locales/en/messages.po b/src/locale/locales/en/messages.po index 33dc6d5669..e668726899 100644 --- a/src/locale/locales/en/messages.po +++ b/src/locale/locales/en/messages.po @@ -464,10 +464,6 @@ msgstr "" msgid "<0>{date} at {time}" msgstr "" -#: src/screens/Settings/NotificationSettings.tsx:85 -msgid "<0>Experimental: When this preference is enabled, you'll only receive reply and quote notifications from users you follow. We'll continue to add more controls here over time." -msgstr "" - #: src/screens/StarterPack/Wizard/index.tsx:440 msgid "<0>You and<1> <2>{0} are included in your starter pack" msgstr "" @@ -501,10 +497,10 @@ msgstr "" msgid "A new form of verification" msgstr "" -#: src/Navigation.tsx:403 +#: src/Navigation.tsx:490 #: src/screens/Settings/AboutSettings.tsx:75 -#: src/screens/Settings/Settings.tsx:225 -#: src/screens/Settings/Settings.tsx:228 +#: src/screens/Settings/Settings.tsx:234 +#: src/screens/Settings/Settings.tsx:237 msgid "About" msgstr "" @@ -523,20 +519,20 @@ msgid "Accept Request" msgstr "" #: src/screens/Settings/AccessibilitySettings.tsx:46 -#: src/screens/Settings/Settings.tsx:201 -#: src/screens/Settings/Settings.tsx:204 +#: src/screens/Settings/Settings.tsx:210 +#: src/screens/Settings/Settings.tsx:213 msgid "Accessibility" msgstr "" -#: src/Navigation.tsx:355 +#: src/Navigation.tsx:365 msgid "Accessibility Settings" msgstr "" -#: src/Navigation.tsx:371 +#: src/Navigation.tsx:381 #: src/screens/Login/LoginForm.tsx:194 #: src/screens/Settings/AccountSettings.tsx:48 -#: src/screens/Settings/Settings.tsx:163 -#: src/screens/Settings/Settings.tsx:166 +#: src/screens/Settings/Settings.tsx:164 +#: src/screens/Settings/Settings.tsx:167 msgid "Account" msgstr "" @@ -567,11 +563,11 @@ msgstr "" msgid "Account Muted by List" msgstr "" -#: src/screens/Settings/Settings.tsx:505 +#: src/screens/Settings/Settings.tsx:514 msgid "Account options" msgstr "" -#: src/screens/Settings/Settings.tsx:541 +#: src/screens/Settings/Settings.tsx:550 msgid "Account removed from quick access" msgstr "" @@ -643,8 +639,8 @@ msgstr "" msgid "Add alt text (optional)" msgstr "" -#: src/screens/Settings/Settings.tsx:445 -#: src/screens/Settings/Settings.tsx:448 +#: src/screens/Settings/Settings.tsx:454 +#: src/screens/Settings/Settings.tsx:457 #: src/view/shell/desktop/LeftNav.tsx:260 #: src/view/shell/desktop/LeftNav.tsx:264 msgid "Add another account" @@ -772,7 +768,6 @@ msgstr "" msgid "Advanced" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:143 #: src/components/dialogs/EmailDialog/screens/Update.tsx:223 msgid "alice@example.com" msgstr "" @@ -859,14 +854,6 @@ msgstr "" msgid "An email has been sent to {0}. It includes a confirmation code which you can enter below." msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:59 -msgid "An email has been sent to your previous address, {currentEmail}. It includes a confirmation code which you can enter below." -msgstr "" - -#: src/components/dialogs/VerifyEmailDialog.tsx:120 -msgid "An email has been sent! Please enter the confirmation code included in the email below." -msgstr "" - #: src/components/dialogs/GifSelect.tsx:265 msgid "An error has occurred" msgstr "" @@ -978,7 +965,7 @@ msgstr "" msgid "Anybody can interact" msgstr "" -#: src/Navigation.tsx:411 +#: src/Navigation.tsx:498 #: src/screens/Settings/AppIconSettings/index.tsx:67 #: src/screens/Settings/AppIconSettings/SettingsListItem.tsx:18 #: src/screens/Settings/AppIconSettings/SettingsListItem.tsx:23 @@ -1015,7 +1002,7 @@ msgstr "" msgid "App passwords" msgstr "" -#: src/Navigation.tsx:323 +#: src/Navigation.tsx:333 #: src/screens/Settings/AppPasswords.tsx:51 msgid "App Passwords" msgstr "" @@ -1051,10 +1038,10 @@ msgstr "" msgid "Appeal this decision" msgstr "" -#: src/Navigation.tsx:363 +#: src/Navigation.tsx:373 #: src/screens/Settings/AppearanceSettings.tsx:85 -#: src/screens/Settings/Settings.tsx:193 -#: src/screens/Settings/Settings.tsx:196 +#: src/screens/Settings/Settings.tsx:202 +#: src/screens/Settings/Settings.tsx:205 msgid "Appearance" msgstr "" @@ -1271,7 +1258,7 @@ msgstr "" msgid "Blocked accounts" msgstr "" -#: src/Navigation.tsx:164 +#: src/Navigation.tsx:174 #: src/view/screens/ModerationBlockedAccounts.tsx:104 msgid "Blocked Accounts" msgstr "" @@ -1468,7 +1455,7 @@ msgstr "" #: src/screens/Settings/AppIconSettings/index.tsx:225 #: src/screens/Settings/components/ChangeHandleDialog.tsx:78 #: src/screens/Settings/components/ChangeHandleDialog.tsx:85 -#: src/screens/Settings/Settings.tsx:270 +#: src/screens/Settings/Settings.tsx:279 #: src/screens/Takendown.tsx:99 #: src/screens/Takendown.tsx:102 #: src/view/com/composer/Composer.tsx:960 @@ -1479,7 +1466,6 @@ msgstr "" #: src/view/com/modals/ChangePassword.tsx:282 #: src/view/com/modals/CreateOrEditList.tsx:333 #: src/view/com/modals/CropImage.web.tsx:97 -#: src/view/com/modals/EditProfile.tsx:269 #: src/view/com/modals/LinkWarning.tsx:105 #: src/view/com/modals/LinkWarning.tsx:107 #: src/view/shell/desktop/LeftNav.tsx:213 @@ -1502,10 +1488,6 @@ msgstr "" msgid "Cancel image crop" msgstr "" -#: src/view/com/modals/EditProfile.tsx:264 -msgid "Cancel profile editing" -msgstr "" - #: src/components/PostControls/RepostButton.tsx:203 msgid "Cancel quote post" msgstr "" @@ -1555,11 +1537,6 @@ msgstr "" msgid "Change app language" msgstr "" -#: src/components/dialogs/VerifyEmailDialog.tsx:200 -#: src/components/dialogs/VerifyEmailDialog.tsx:225 -msgid "Change email address" -msgstr "" - #: src/screens/Settings/components/ChangeHandleDialog.tsx:94 #: src/screens/Settings/components/ChangeHandleDialog.tsx:98 msgid "Change Handle" @@ -1581,14 +1558,6 @@ msgstr "" msgid "Change report reason" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:53 -msgid "Change Your Email" -msgstr "" - -#: src/components/dialogs/VerifyEmailDialog.tsx:209 -msgid "Change your email address" -msgstr "" - #: src/screens/Settings/AppIconSettings/index.tsx:216 msgid "Changes app icon" msgstr "" @@ -1598,7 +1567,7 @@ msgstr "" msgid "Changes hosting provider" msgstr "" -#: src/Navigation.tsx:428 +#: src/Navigation.tsx:515 #: src/view/shell/bottom-bar/BottomBar.tsx:221 #: src/view/shell/desktop/LeftNav.tsx:553 #: src/view/shell/Drawer.tsx:455 @@ -1616,7 +1585,7 @@ msgctxt "toast" msgid "Chat muted" msgstr "" -#: src/Navigation.tsx:438 +#: src/Navigation.tsx:525 #: src/screens/Messages/components/InboxPreview.tsx:24 msgid "Chat request inbox" msgstr "" @@ -1627,7 +1596,7 @@ msgid "Chat requests" msgstr "" #: src/components/dms/ConvoMenu.tsx:75 -#: src/Navigation.tsx:433 +#: src/Navigation.tsx:520 #: src/screens/Messages/ChatList.tsx:341 msgid "Chat settings" msgstr "" @@ -1699,11 +1668,11 @@ msgstr "" msgid "Choose your username" msgstr "" -#: src/screens/Settings/Settings.tsx:423 +#: src/screens/Settings/Settings.tsx:432 msgid "Clear all storage data" msgstr "" -#: src/screens/Settings/Settings.tsx:425 +#: src/screens/Settings/Settings.tsx:434 msgid "Clear all storage data (restart after this)" msgstr "" @@ -1752,14 +1721,10 @@ msgstr "" msgid "Clip 🐴 clop 🐴" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:244 -#: src/components/dialogs/ChangeEmailDialog.tsx:250 #: src/components/dialogs/GifSelect.tsx:281 #: src/components/dialogs/nuxs/InitialVerificationAnnouncement.tsx:178 #: src/components/dialogs/nuxs/InitialVerificationAnnouncement.tsx:187 #: src/components/dialogs/SearchablePeopleList.tsx:295 -#: src/components/dialogs/VerifyEmailDialog.tsx:346 -#: src/components/dialogs/VerifyEmailDialog.tsx:352 #: src/components/dms/EmojiPopup.android.tsx:58 #: src/components/dms/ReportDialog.tsx:381 #: src/components/dms/ReportDialog.tsx:390 @@ -1872,7 +1837,7 @@ msgstr "" msgid "Comics" msgstr "" -#: src/Navigation.tsx:313 +#: src/Navigation.tsx:323 #: src/view/screens/CommunityGuidelines.tsx:34 msgid "Community Guidelines" msgstr "" @@ -1909,10 +1874,6 @@ msgstr "" msgid "Configured in <0>moderation settings." msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:203 -#: src/components/dialogs/ChangeEmailDialog.tsx:210 -#: src/components/dialogs/VerifyEmailDialog.tsx:316 -#: src/components/dialogs/VerifyEmailDialog.tsx:323 #: src/components/Prompt.tsx:186 #: src/components/Prompt.tsx:189 #: src/screens/Settings/components/DisableEmail2FADialog.tsx:185 @@ -1936,10 +1897,7 @@ msgstr "" msgid "Confirm your birthdate" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:160 -#: src/components/dialogs/ChangeEmailDialog.tsx:164 #: src/components/dialogs/EmailDialog/components/TokenField.tsx:36 -#: src/components/dialogs/VerifyEmailDialog.tsx:252 #: src/screens/Login/LoginForm.tsx:274 #: src/screens/Settings/components/DisableEmail2FADialog.tsx:144 #: src/screens/Settings/components/DisableEmail2FADialog.tsx:150 @@ -1948,10 +1906,6 @@ msgstr "" msgid "Confirmation code" msgstr "" -#: src/components/dialogs/VerifyEmailDialog.tsx:248 -msgid "Confirmation Code" -msgstr "" - #: src/screens/Login/LoginForm.tsx:337 msgid "Connecting..." msgstr "" @@ -1966,12 +1920,12 @@ msgid "Content & Media" msgstr "" #: src/screens/Settings/AccessibilitySettings.tsx:109 -#: src/screens/Settings/Settings.tsx:185 -#: src/screens/Settings/Settings.tsx:188 +#: src/screens/Settings/Settings.tsx:194 +#: src/screens/Settings/Settings.tsx:197 msgid "Content and media" msgstr "" -#: src/Navigation.tsx:387 +#: src/Navigation.tsx:474 msgid "Content and Media" msgstr "" @@ -2162,7 +2116,7 @@ msgstr "" msgid "Copy TXT record value" msgstr "" -#: src/Navigation.tsx:318 +#: src/Navigation.tsx:328 #: src/view/screens/CopyrightPolicy.tsx:31 msgid "Copyright Policy" msgstr "" @@ -2188,6 +2142,10 @@ msgstr "" msgid "Could not process your video" msgstr "" +#: src/state/queries/notifications/settings.ts:47 +msgid "Could not update notification settings" +msgstr "" + #: src/components/StarterPack/ProfileStarterPacks.tsx:300 msgid "Create" msgstr "" @@ -2198,7 +2156,7 @@ msgstr "" #: src/components/StarterPack/ProfileStarterPacks.tsx:178 #: src/components/StarterPack/ProfileStarterPacks.tsx:287 -#: src/Navigation.tsx:463 +#: src/Navigation.tsx:550 msgid "Create a starter pack" msgstr "" @@ -2309,7 +2267,7 @@ msgstr "" msgid "Deactivate account" msgstr "" -#: src/screens/Settings/Settings.tsx:397 +#: src/screens/Settings/Settings.tsx:406 msgid "Debug Moderation" msgstr "" @@ -2358,7 +2316,7 @@ msgstr "" msgid "Delete chat" msgstr "" -#: src/screens/Settings/Settings.tsx:404 +#: src/screens/Settings/Settings.tsx:413 msgid "Delete chat declaration record" msgstr "" @@ -2432,8 +2390,6 @@ msgstr "" #: src/screens/Profile/Header/EditProfileDialog.tsx:369 #: src/view/com/modals/CreateOrEditList.tsx:278 #: src/view/com/modals/CreateOrEditList.tsx:299 -#: src/view/com/modals/EditProfile.tsx:218 -#: src/view/com/modals/EditProfile.tsx:230 msgid "Description" msgstr "" @@ -2469,8 +2425,8 @@ msgctxt "toast" msgid "Developer mode enabled" msgstr "" -#: src/screens/Settings/Settings.tsx:252 -#: src/screens/Settings/Settings.tsx:255 +#: src/screens/Settings/Settings.tsx:261 +#: src/screens/Settings/Settings.tsx:264 msgid "Developer options" msgstr "" @@ -2577,14 +2533,9 @@ msgstr "" #: src/screens/Profile/Header/EditProfileDialog.tsx:320 #: src/screens/Profile/Header/EditProfileDialog.tsx:326 #: src/screens/Profile/Header/EditProfileDialog.tsx:376 -#: src/view/com/modals/EditProfile.tsx:194 msgid "Display name" msgstr "" -#: src/view/com/modals/EditProfile.tsx:182 -msgid "Display Name" -msgstr "" - #: src/screens/Profile/Header/EditProfileDialog.tsx:339 msgid "Display name is too long" msgstr "" @@ -2692,18 +2643,10 @@ msgstr "" msgid "e.g. Alice Lastname" msgstr "" -#: src/view/com/modals/EditProfile.tsx:187 -msgid "e.g. Alice Roberts" -msgstr "" - #: src/screens/Settings/components/ChangeHandleDialog.tsx:376 msgid "e.g. alice.com" msgstr "" -#: src/view/com/modals/EditProfile.tsx:223 -msgid "e.g. Artist, dog-lover, and avid reader." -msgstr "" - #: src/lib/moderation/useGlobalLabelStrings.ts:43 msgid "E.g. artistic nudes." msgstr "" @@ -2779,15 +2722,11 @@ msgstr "" msgid "Edit Moderation List" msgstr "" -#: src/Navigation.tsx:328 +#: src/Navigation.tsx:338 #: src/view/screens/Feeds.tsx:518 msgid "Edit My Feeds" msgstr "" -#: src/view/com/modals/EditProfile.tsx:154 -msgid "Edit my profile" -msgstr "" - #: src/components/StarterPack/Wizard/WizardEditListDialog.tsx:109 msgid "Edit People" msgstr "" @@ -2821,15 +2760,7 @@ msgstr "" msgid "Edit who can reply" msgstr "" -#: src/view/com/modals/EditProfile.tsx:195 -msgid "Edit your display name" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:231 -msgid "Edit your profile description" -msgstr "" - -#: src/Navigation.tsx:468 +#: src/Navigation.tsx:555 msgid "Edit your starter pack" msgstr "" @@ -2868,10 +2799,6 @@ msgstr "" msgid "Email sent!" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:63 -msgid "Email Updated!" -msgstr "" - #: src/components/dialogs/EmailDialog/screens/Verify.tsx:182 msgid "Email verification complete!" msgstr "" @@ -2926,9 +2853,9 @@ msgstr "" msgid "Enable media players for" msgstr "" -#: src/screens/Settings/NotificationSettings.tsx:74 -#: src/screens/Settings/NotificationSettings.tsx:77 -msgid "Enable priority notifications" +#: src/screens/Settings/NotificationSettings/index.tsx:102 +#: src/screens/Settings/NotificationSettings/index.tsx:106 +msgid "Enable push notifications" msgstr "" #: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VideoControls.tsx:387 @@ -2980,10 +2907,6 @@ msgstr "" msgid "Enter code" msgstr "" -#: src/components/dialogs/VerifyEmailDialog.tsx:118 -msgid "Enter Code" -msgstr "" - #: src/components/Post/Embed/VideoEmbed/VideoEmbedInner/web-controls/VideoControls.tsx:405 msgid "Enter fullscreen" msgstr "" @@ -3013,10 +2936,6 @@ msgstr "" msgid "Enter your email address" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:138 -msgid "Enter your new email address below." -msgstr "" - #: src/screens/Login/LoginForm.tsx:243 msgid "Enter your password" msgstr "" @@ -3072,9 +2991,16 @@ msgstr "" #: src/screens/Messages/Settings.tsx:83 #: src/screens/Messages/Settings.tsx:86 +#: src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx:153 +#: src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx:167 msgid "Everyone" msgstr "" +#: src/screens/Settings/NotificationSettings/index.tsx:236 +#: src/screens/Settings/NotificationSettings/MiscellaneousNotificationSettings.tsx:41 +msgid "Everything else" +msgstr "" + #: src/components/moderation/ReportDialog/utils/useReportOptions.ts:73 #: src/lib/moderation/useReportOptions.ts:73 msgid "Excessive mentions or replies" @@ -3164,7 +3090,7 @@ msgstr "" msgid "Explicit sexual images." msgstr "" -#: src/Navigation.tsx:625 +#: src/Navigation.tsx:712 #: src/screens/Search/Shell.tsx:307 #: src/view/shell/desktop/LeftNav.tsx:635 #: src/view/shell/Drawer.tsx:403 @@ -3195,7 +3121,7 @@ msgstr "" msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button." msgstr "" -#: src/Navigation.tsx:347 +#: src/Navigation.tsx:357 #: src/screens/Settings/ExternalMediaPreferences.tsx:31 msgid "External Media Preferences" msgstr "" @@ -3265,6 +3191,19 @@ msgstr "" msgid "Failed to load GIFs" msgstr "" +#: src/screens/Settings/NotificationSettings/index.tsx:115 +#: src/screens/Settings/NotificationSettings/LikeNotificationSettings.tsx:50 +#: src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx:52 +#: src/screens/Settings/NotificationSettings/MentionNotificationSettings.tsx:50 +#: src/screens/Settings/NotificationSettings/MiscellaneousNotificationSettings.tsx:53 +#: src/screens/Settings/NotificationSettings/NewFollowerNotificationSettings.tsx:50 +#: src/screens/Settings/NotificationSettings/QuoteNotificationSettings.tsx:50 +#: src/screens/Settings/NotificationSettings/ReplyNotificationSettings.tsx:52 +#: src/screens/Settings/NotificationSettings/RepostNotificationSettings.tsx:50 +#: src/screens/Settings/NotificationSettings/RepostsOnRepostsNotificationSettings.tsx:53 +msgid "Failed to load notification settings." +msgstr "" + #: src/screens/Messages/components/MessageListError.tsx:23 msgid "Failed to load past messages" msgstr "" @@ -3302,15 +3241,11 @@ msgstr "" msgid "Failed to save image: {0}" msgstr "" -#: src/state/queries/notifications/settings.ts:39 -msgid "Failed to save notification preferences, please try again" -msgstr "" - #: src/screens/ModerationInteractionSettings/index.tsx:108 msgid "Failed to save settings. Please try again." msgstr "" -#: src/screens/Settings/SettingsInterests.tsx:133 +#: src/screens/Settings/InterestsSettings.tsx:136 msgctxt "toast" msgid "Failed to save your interests." msgstr "" @@ -3365,7 +3300,7 @@ msgstr "" msgid "Failed to verify handle. Please try again." msgstr "" -#: src/Navigation.tsx:263 +#: src/Navigation.tsx:273 msgid "Feed" msgstr "" @@ -3394,7 +3329,7 @@ msgctxt "toast" msgid "Feedback sent!" msgstr "" -#: src/Navigation.tsx:448 +#: src/Navigation.tsx:535 #: src/screens/Search/SearchResults.tsx:68 #: src/screens/StarterPack/StarterPackScreen.tsx:190 #: src/view/screens/Feeds.tsx:511 @@ -3555,7 +3490,7 @@ msgstr "" msgid "Followed by <0>{0}, <1>{1}, and {2, plural, one {# other} other {# others}}" msgstr "" -#: src/Navigation.tsx:217 +#: src/Navigation.tsx:227 msgid "Followers of @{0} that you know" msgstr "" @@ -3590,7 +3525,7 @@ msgstr "" msgid "Following feed preferences" msgstr "" -#: src/Navigation.tsx:334 +#: src/Navigation.tsx:344 #: src/screens/Settings/FollowingFeedPreferences.tsx:53 msgid "Following Feed Preferences" msgstr "" @@ -3675,10 +3610,40 @@ msgstr "" msgid "Get help" msgstr "" +#: src/screens/Settings/NotificationSettings/NewFollowerNotificationSettings.tsx:43 +msgid "Get notifications when people follow you." +msgstr "" + +#: src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx:43 +msgid "Get notifications when people like posts that you've reposted." +msgstr "" + +#: src/screens/Settings/NotificationSettings/LikeNotificationSettings.tsx:43 +msgid "Get notifications when people like your posts." +msgstr "" + +#: src/screens/Settings/NotificationSettings/MentionNotificationSettings.tsx:43 +msgid "Get notifications when people mention you." +msgstr "" + +#: src/screens/Settings/NotificationSettings/QuoteNotificationSettings.tsx:43 +msgid "Get notifications when people quote your posts." +msgstr "" + +#: src/screens/Settings/NotificationSettings/ReplyNotificationSettings.tsx:43 +msgid "Get notifications when people reply to your posts." +msgstr "" + +#: src/screens/Settings/NotificationSettings/RepostsOnRepostsNotificationSettings.tsx:43 +msgid "Get notifications when people repost posts that you've reposted." +msgstr "" + +#: src/screens/Settings/NotificationSettings/RepostNotificationSettings.tsx:43 +msgid "Get notifications when people repost your posts." +msgstr "" + #: src/components/dialogs/EmailDialog/screens/VerificationReminder.tsx:76 #: src/components/dialogs/EmailDialog/screens/VerificationReminder.tsx:86 -#: src/components/dialogs/VerifyEmailDialog.tsx:263 -#: src/components/dialogs/VerifyEmailDialog.tsx:269 msgid "Get started" msgstr "" @@ -3817,7 +3782,7 @@ msgstr "" msgid "Harassment, trolling, or intolerance" msgstr "" -#: src/Navigation.tsx:418 +#: src/Navigation.tsx:505 msgid "Hashtag" msgstr "" @@ -3834,8 +3799,8 @@ msgstr "" msgid "Having trouble?" msgstr "" -#: src/screens/Settings/Settings.tsx:217 -#: src/screens/Settings/Settings.tsx:221 +#: src/screens/Settings/Settings.tsx:226 +#: src/screens/Settings/Settings.tsx:230 #: src/view/shell/desktop/RightNav.tsx:120 #: src/view/shell/desktop/RightNav.tsx:121 #: src/view/shell/Drawer.tsx:370 @@ -3974,8 +3939,8 @@ msgstr "" msgid "Hold up! We’re gradually giving access to video, and you’re still waiting in line. Check back soon!" msgstr "" -#: src/Navigation.tsx:620 -#: src/Navigation.tsx:640 +#: src/Navigation.tsx:707 +#: src/Navigation.tsx:727 #: src/view/shell/bottom-bar/BottomBar.tsx:178 #: src/view/shell/desktop/LeftNav.tsx:617 #: src/view/shell/Drawer.tsx:429 @@ -4007,10 +3972,6 @@ msgstr "" msgid "How should we open this link?" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:189 -#: src/components/dialogs/ChangeEmailDialog.tsx:196 -#: src/components/dialogs/VerifyEmailDialog.tsx:302 -#: src/components/dialogs/VerifyEmailDialog.tsx:309 #: src/screens/Settings/components/DisableEmail2FADialog.tsx:133 #: src/screens/Settings/components/DisableEmail2FADialog.tsx:136 msgid "I have a code" @@ -4102,6 +4063,34 @@ msgstr "" msgid "Impersonation, misinformation, or false claims" msgstr "" +#: src/screens/Settings/NotificationSettings/index.tsx:285 +msgid "In-app" +msgstr "" + +#: src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx:134 +msgid "In-app notifications" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:268 +msgid "In-app, Everyone" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:276 +msgid "In-app, People you follow" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:283 +msgid "In-app, Push" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:266 +msgid "In-app, Push, Everyone" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:274 +msgid "In-app, Push, People you follow" +msgstr "" + #: src/components/moderation/ReportDialog/utils/useReportOptions.ts:91 #: src/lib/moderation/useReportOptions.ts:91 msgid "Inappropriate messages or explicit links" @@ -4264,13 +4253,13 @@ msgstr "" msgid "Language selection" msgstr "" -#: src/Navigation.tsx:190 +#: src/Navigation.tsx:200 msgid "Language Settings" msgstr "" #: src/screens/Settings/LanguageSettings.tsx:78 -#: src/screens/Settings/Settings.tsx:209 -#: src/screens/Settings/Settings.tsx:212 +#: src/screens/Settings/Settings.tsx:218 +#: src/screens/Settings/Settings.tsx:221 msgid "Languages" msgstr "" @@ -4293,7 +4282,6 @@ msgstr "" #: src/screens/Moderation/VerificationSettings.tsx:47 #: src/screens/Profile/Header/EditProfileDialog.tsx:359 #: src/screens/Settings/components/ChangeHandleDialog.tsx:212 -#: src/view/com/modals/EditProfile.tsx:207 msgid "Learn more" msgstr "" @@ -4408,6 +4396,10 @@ msgstr "" msgid "Like 10 posts to train the Discover feed" msgstr "" +#: src/Navigation.tsx:426 +msgid "Like notifications" +msgstr "" + #: src/screens/Profile/components/ProfileFeedHeader.tsx:505 msgid "Like this feed" msgstr "" @@ -4416,8 +4408,8 @@ msgstr "" msgid "Like this labeler" msgstr "" -#: src/Navigation.tsx:268 -#: src/Navigation.tsx:273 +#: src/Navigation.tsx:278 +#: src/Navigation.tsx:283 msgid "Liked by" msgstr "" @@ -4439,10 +4431,21 @@ msgstr "" msgid "Liked by {likeCount, plural, one {# user} other {# users}}" msgstr "" +#: src/screens/Settings/NotificationSettings/index.tsx:159 +#: src/screens/Settings/NotificationSettings/LikeNotificationSettings.tsx:41 #: src/view/screens/Profile.tsx:229 msgid "Likes" msgstr "" +#: src/screens/Settings/NotificationSettings/index.tsx:208 +#: src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx:41 +msgid "Likes of your reposts" +msgstr "" + +#: src/Navigation.tsx:450 +msgid "Likes of your reposts notifications" +msgstr "" + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:467 #: src/view/com/post-thread/PostThreadItem.tsx:243 msgid "Likes on this post" @@ -4455,7 +4458,7 @@ msgstr "" msgid "Linear" msgstr "" -#: src/Navigation.tsx:223 +#: src/Navigation.tsx:233 msgid "List" msgstr "" @@ -4513,7 +4516,7 @@ msgctxt "toast" msgid "List unmuted" msgstr "" -#: src/Navigation.tsx:144 +#: src/Navigation.tsx:154 #: src/view/screens/Lists.tsx:65 #: src/view/screens/Profile.tsx:224 #: src/view/screens/Profile.tsx:232 @@ -4566,7 +4569,7 @@ msgstr "" msgid "Loading..." msgstr "" -#: src/Navigation.tsx:293 +#: src/Navigation.tsx:303 msgid "Log" msgstr "" @@ -4646,8 +4649,6 @@ msgstr "" #: src/components/dialogs/EmailDialog/screens/VerificationReminder.tsx:90 #: src/components/dialogs/EmailDialog/screens/VerificationReminder.tsx:97 -#: src/components/dialogs/VerifyEmailDialog.tsx:273 -#: src/components/dialogs/VerifyEmailDialog.tsx:281 msgid "Maybe later" msgstr "" @@ -4659,6 +4660,10 @@ msgstr "" msgid "Media that may be disturbing or inappropriate for some audiences." msgstr "" +#: src/Navigation.tsx:410 +msgid "Mention notifications" +msgstr "" + #: src/components/WhoCanReply.tsx:263 msgid "mentioned users" msgstr "" @@ -4667,6 +4672,8 @@ msgstr "" msgid "Mentioned users" msgstr "" +#: src/screens/Settings/NotificationSettings/index.tsx:137 +#: src/screens/Settings/NotificationSettings/MentionNotificationSettings.tsx:41 #: src/view/screens/Notifications.tsx:99 msgid "Mentions" msgstr "" @@ -4709,7 +4716,7 @@ msgstr "" msgid "Message options" msgstr "" -#: src/Navigation.tsx:635 +#: src/Navigation.tsx:722 msgid "Messages" msgstr "" @@ -4718,6 +4725,10 @@ msgctxt "Name of app icon variant" msgid "Midnight" msgstr "" +#: src/Navigation.tsx:466 +msgid "Miscellaneous notifications" +msgstr "" + #: src/components/moderation/ReportDialog/utils/useReportOptions.ts:47 #: src/lib/moderation/useReportOptions.ts:47 msgid "Misleading Account" @@ -4728,10 +4739,10 @@ msgstr "" msgid "Misleading Post" msgstr "" -#: src/Navigation.tsx:149 +#: src/Navigation.tsx:159 #: src/screens/Moderation/index.tsx:93 -#: src/screens/Settings/Settings.tsx:177 -#: src/screens/Settings/Settings.tsx:180 +#: src/screens/Settings/Settings.tsx:178 +#: src/screens/Settings/Settings.tsx:181 msgid "Moderation" msgstr "" @@ -4767,7 +4778,7 @@ msgstr "" msgid "Moderation lists" msgstr "" -#: src/Navigation.tsx:154 +#: src/Navigation.tsx:164 #: src/view/screens/ModerationModlists.tsx:65 msgid "Moderation Lists" msgstr "" @@ -4776,7 +4787,7 @@ msgstr "" msgid "moderation settings" msgstr "" -#: src/Navigation.tsx:283 +#: src/Navigation.tsx:293 msgid "Moderation states" msgstr "" @@ -4899,7 +4910,7 @@ msgstr "" msgid "Muted accounts" msgstr "" -#: src/Navigation.tsx:159 +#: src/Navigation.tsx:169 #: src/view/screens/ModerationMutedAccounts.tsx:118 msgid "Muted Accounts" msgstr "" @@ -4972,10 +4983,6 @@ msgstr "" msgid "Navigates to your profile" msgstr "" -#: src/components/dialogs/VerifyEmailDialog.tsx:234 -msgid "Need to change it?" -msgstr "" - #: src/components/moderation/ReportDialog/index.tsx:288 #: src/components/ReportDialog/SelectReportOptionView.tsx:128 msgid "Need to report a copyright violation?" @@ -5005,7 +5012,6 @@ msgstr "" msgid "New chat" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:142 #: src/components/dialogs/EmailDialog/screens/Update.tsx:222 msgid "New email address" msgstr "" @@ -5014,6 +5020,15 @@ msgstr "" msgid "New Feature" msgstr "" +#: src/Navigation.tsx:442 +msgid "New follower notifications" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:181 +#: src/screens/Settings/NotificationSettings/NewFollowerNotificationSettings.tsx:41 +msgid "New followers" +msgstr "" + #: src/screens/Settings/components/ChangeHandleDialog.tsx:221 #: src/screens/Settings/components/ChangeHandleDialog.tsx:229 #: src/screens/Settings/components/ChangeHandleDialog.tsx:375 @@ -5246,7 +5261,7 @@ msgstr "" msgid "Not followed by anyone you're following" msgstr "" -#: src/Navigation.tsx:139 +#: src/Navigation.tsx:149 #: src/view/screens/Profile.tsx:125 msgid "Not Found" msgstr "" @@ -5267,19 +5282,12 @@ msgstr "" msgid "Nothing here" msgstr "" -#: src/screens/Settings/NotificationSettings.tsx:64 -msgid "Notification filters" -msgstr "" - -#: src/Navigation.tsx:443 +#: src/Navigation.tsx:396 +#: src/Navigation.tsx:530 #: src/view/screens/Notifications.tsx:134 msgid "Notification settings" msgstr "" -#: src/screens/Settings/NotificationSettings.tsx:46 -msgid "Notification Settings" -msgstr "" - #: src/screens/Messages/Settings.tsx:123 msgid "Notification sounds" msgstr "" @@ -5288,7 +5296,19 @@ msgstr "" msgid "Notification Sounds" msgstr "" -#: src/Navigation.tsx:630 +#: src/Navigation.tsx:717 +#: src/screens/Settings/NotificationSettings/index.tsx:92 +#: src/screens/Settings/NotificationSettings/LikeNotificationSettings.tsx:30 +#: src/screens/Settings/NotificationSettings/LikesOnRepostsNotificationSettings.tsx:30 +#: src/screens/Settings/NotificationSettings/MentionNotificationSettings.tsx:30 +#: src/screens/Settings/NotificationSettings/MiscellaneousNotificationSettings.tsx:30 +#: src/screens/Settings/NotificationSettings/NewFollowerNotificationSettings.tsx:30 +#: src/screens/Settings/NotificationSettings/QuoteNotificationSettings.tsx:30 +#: src/screens/Settings/NotificationSettings/ReplyNotificationSettings.tsx:30 +#: src/screens/Settings/NotificationSettings/RepostNotificationSettings.tsx:30 +#: src/screens/Settings/NotificationSettings/RepostsOnRepostsNotificationSettings.tsx:30 +#: src/screens/Settings/Settings.tsx:186 +#: src/screens/Settings/Settings.tsx:189 #: src/view/screens/Notifications.tsx:128 #: src/view/shell/bottom-bar/BottomBar.tsx:252 #: src/view/shell/desktop/LeftNav.tsx:654 @@ -5296,6 +5316,10 @@ msgstr "" msgid "Notifications" msgstr "" +#: src/screens/Settings/NotificationSettings/MiscellaneousNotificationSettings.tsx:43 +msgid "Notifications for everything else, such as when someone joins via one of your starter packs." +msgstr "" + #: src/lib/hooks/useTimeAgo.ts:135 msgid "now" msgstr "" @@ -5315,6 +5339,7 @@ msgid "Nudity or adult content not labeled as such" msgstr "" #: src/lib/moderation/useLabelBehaviorDescription.ts:11 +#: src/screens/Settings/NotificationSettings/index.tsx:292 msgid "Off" msgstr "" @@ -5356,7 +5381,7 @@ msgstr "" msgid "on<0><1/><2><3/>" msgstr "" -#: src/screens/Settings/Settings.tsx:358 +#: src/screens/Settings/Settings.tsx:367 msgid "Onboarding reset" msgstr "" @@ -5401,7 +5426,6 @@ msgstr "" #: src/components/StarterPack/ProfileStarterPacks.tsx:341 #: src/screens/Settings/AppPasswords.tsx:59 #: src/screens/Settings/components/ChangeHandleDialog.tsx:106 -#: src/screens/Settings/NotificationSettings.tsx:54 #: src/view/screens/Profile.tsx:125 msgid "Oops!" msgstr "" @@ -5449,7 +5473,7 @@ msgstr "" msgid "Open message options" msgstr "" -#: src/screens/Settings/Settings.tsx:395 +#: src/screens/Settings/Settings.tsx:404 msgid "Open moderation debug page" msgstr "" @@ -5478,12 +5502,12 @@ msgstr "" msgid "Open starter pack menu" msgstr "" -#: src/screens/Settings/Settings.tsx:388 -#: src/screens/Settings/Settings.tsx:402 +#: src/screens/Settings/Settings.tsx:397 +#: src/screens/Settings/Settings.tsx:411 msgid "Open storybook page" msgstr "" -#: src/screens/Settings/Settings.tsx:381 +#: src/screens/Settings/Settings.tsx:390 msgid "Open system log" msgstr "" @@ -5545,7 +5569,7 @@ msgstr "" msgid "Opens GIF select dialog" msgstr "" -#: src/screens/Settings/Settings.tsx:218 +#: src/screens/Settings/Settings.tsx:227 msgid "Opens helpdesk in browser" msgstr "" @@ -5683,14 +5707,19 @@ msgstr "" msgid "People" msgstr "" -#: src/Navigation.tsx:210 +#: src/Navigation.tsx:220 msgid "People followed by @{0}" msgstr "" -#: src/Navigation.tsx:203 +#: src/Navigation.tsx:213 msgid "People following @{0}" msgstr "" +#: src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx:171 +#: src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx:185 +msgid "People I follow" +msgstr "" + #: src/lib/media/save-image.ts:51 msgid "Permission to access your photo library was denied. Please enable it in your system settings." msgstr "" @@ -5895,10 +5924,6 @@ msgstr "" msgid "Please verify your email" msgstr "" -#: src/components/dialogs/VerifyEmailDialog.tsx:108 -msgid "Please Verify Your Email" -msgstr "" - #: src/screens/Onboarding/index.tsx:34 #: src/screens/Onboarding/state.ts:111 #: src/screens/Search/modules/ExploreTrendingTopics.tsx:235 @@ -5933,10 +5958,10 @@ msgstr "" msgid "Post by {0}" msgstr "" -#: src/Navigation.tsx:236 -#: src/Navigation.tsx:243 -#: src/Navigation.tsx:250 -#: src/Navigation.tsx:257 +#: src/Navigation.tsx:246 +#: src/Navigation.tsx:253 +#: src/Navigation.tsx:260 +#: src/Navigation.tsx:267 msgid "Post by @{0}" msgstr "" @@ -5974,7 +5999,7 @@ msgstr "" msgid "Post interaction settings" msgstr "" -#: src/Navigation.tsx:170 +#: src/Navigation.tsx:180 #: src/screens/ModerationInteractionSettings/index.tsx:34 msgid "Post Interaction Settings" msgstr "" @@ -6022,11 +6047,6 @@ msgstr "" msgid "Potentially Misleading Link" msgstr "" -#: src/state/queries/notifications/settings.ts:44 -msgctxt "toast" -msgid "Preference saved" -msgstr "" - #: src/screens/Messages/components/MessageListError.tsx:19 msgid "Press to attempt reconnection" msgstr "" @@ -6057,26 +6077,22 @@ msgstr "" msgid "Prioritize your Follows" msgstr "" -#: src/screens/Settings/NotificationSettings.tsx:67 -msgid "Priority notifications" -msgstr "" - #: src/view/shell/desktop/RightNav.tsx:110 #: src/view/shell/desktop/RightNav.tsx:111 msgid "Privacy" msgstr "" -#: src/screens/Settings/Settings.tsx:171 -#: src/screens/Settings/Settings.tsx:174 +#: src/screens/Settings/Settings.tsx:172 +#: src/screens/Settings/Settings.tsx:175 msgid "Privacy and security" msgstr "" -#: src/Navigation.tsx:379 +#: src/Navigation.tsx:389 #: src/screens/Settings/PrivacyAndSecuritySettings.tsx:36 msgid "Privacy and Security" msgstr "" -#: src/Navigation.tsx:303 +#: src/Navigation.tsx:313 #: src/screens/Settings/AboutSettings.tsx:92 #: src/screens/Settings/AboutSettings.tsx:95 #: src/view/screens/PrivacyPolicy.tsx:31 @@ -6107,7 +6123,6 @@ msgid "Profile" msgstr "" #: src/screens/Profile/Header/EditProfileDialog.tsx:196 -#: src/view/com/modals/EditProfile.tsx:128 msgctxt "toast" msgid "Profile updated" msgstr "" @@ -6144,6 +6159,22 @@ msgstr "" msgid "Publish reply" msgstr "" +#: src/screens/Settings/NotificationSettings/index.tsx:287 +msgid "Push" +msgstr "" + +#: src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx:117 +msgid "Push notifications" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:270 +msgid "Push, Everyone" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:278 +msgid "Push, People you follow" +msgstr "" + #: src/components/StarterPack/QrCodeDialog.tsx:134 msgid "QR code copied to your clipboard!" msgstr "" @@ -6156,6 +6187,10 @@ msgstr "" msgid "QR code saved to your camera roll!" msgstr "" +#: src/Navigation.tsx:418 +msgid "Quote notifications" +msgstr "" + #: src/components/PostControls/RepostButton.tsx:174 #: src/components/PostControls/RepostButton.tsx:197 #: src/components/PostControls/RepostButton.web.tsx:78 @@ -6183,6 +6218,8 @@ msgid "Quote settings" msgstr "" #: src/screens/Post/PostQuotes.tsx:38 +#: src/screens/Settings/NotificationSettings/index.tsx:148 +#: src/screens/Settings/NotificationSettings/QuoteNotificationSettings.tsx:41 msgid "Quotes" msgstr "" @@ -6259,6 +6296,14 @@ msgstr "" msgid "Reason:" msgstr "" +#: src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx:123 +msgid "Receive in-app notifications" +msgstr "" + +#: src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx:106 +msgid "Receive push notifications" +msgstr "" + #: src/screens/Search/components/SearchHistory.tsx:49 msgid "Recent Searches" msgstr "" @@ -6290,7 +6335,7 @@ msgstr "" #: src/components/FeedCard.tsx:343 #: src/components/StarterPack/Wizard/WizardListCard.tsx:102 #: src/components/StarterPack/Wizard/WizardListCard.tsx:109 -#: src/screens/Settings/Settings.tsx:543 +#: src/screens/Settings/Settings.tsx:552 #: src/view/com/feeds/FeedSourceCard.tsx:322 #: src/view/com/modals/UserAddRemoveLists.tsx:235 #: src/view/com/posts/PostFeedErrorMessage.tsx:213 @@ -6305,8 +6350,8 @@ msgstr "" msgid "Remove {historyItem}" msgstr "" -#: src/screens/Settings/Settings.tsx:522 -#: src/screens/Settings/Settings.tsx:525 +#: src/screens/Settings/Settings.tsx:531 +#: src/screens/Settings/Settings.tsx:534 msgid "Remove account" msgstr "" @@ -6347,7 +6392,7 @@ msgstr "" msgid "Remove from my feeds" msgstr "" -#: src/screens/Settings/Settings.tsx:535 +#: src/screens/Settings/Settings.tsx:544 msgid "Remove from quick access?" msgstr "" @@ -6442,6 +6487,8 @@ msgstr "" msgid "Replace with Discover" msgstr "" +#: src/screens/Settings/NotificationSettings/index.tsx:126 +#: src/screens/Settings/NotificationSettings/ReplyNotificationSettings.tsx:41 #: src/view/screens/Profile.tsx:226 msgid "Replies" msgstr "" @@ -6474,6 +6521,10 @@ msgstr "" msgid "Reply Hidden by You" msgstr "" +#: src/Navigation.tsx:402 +msgid "Reply notifications" +msgstr "" + #: src/components/dialogs/PostInteractionSettingsDialog.tsx:385 msgid "Reply settings" msgstr "" @@ -6622,6 +6673,10 @@ msgstr "" msgid "Repost ({0, plural, one {# repost} other {# reposts}})" msgstr "" +#: src/Navigation.tsx:434 +msgid "Repost notifications" +msgstr "" + #: src/components/PostControls/RepostButton.tsx:144 #: src/components/PostControls/RepostButton.web.tsx:43 #: src/components/PostControls/RepostButton.web.tsx:97 @@ -6646,14 +6701,23 @@ msgstr "" msgid "Reposted by you" msgstr "" +#: src/screens/Settings/NotificationSettings/index.tsx:170 +#: src/screens/Settings/NotificationSettings/RepostNotificationSettings.tsx:41 +msgid "Reposts" +msgstr "" + #: src/screens/PostThread/components/ThreadItemAnchor.tsx:433 #: src/view/com/post-thread/PostThreadItem.tsx:248 msgid "Reposts of this post" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:175 -#: src/components/dialogs/ChangeEmailDialog.tsx:182 -msgid "Request change" +#: src/screens/Settings/NotificationSettings/index.tsx:223 +#: src/screens/Settings/NotificationSettings/RepostsOnRepostsNotificationSettings.tsx:41 +msgid "Reposts of your reposts" +msgstr "" + +#: src/Navigation.tsx:458 +msgid "Reposts of your reposts notifications" msgstr "" #: src/view/com/modals/ChangePassword.tsx:253 @@ -6682,10 +6746,6 @@ msgstr "" msgid "Resend" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:217 -#: src/components/dialogs/ChangeEmailDialog.tsx:227 -#: src/components/dialogs/VerifyEmailDialog.tsx:330 -#: src/components/dialogs/VerifyEmailDialog.tsx:340 #: src/screens/Settings/components/DisableEmail2FADialog.tsx:173 #: src/screens/Settings/components/DisableEmail2FADialog.tsx:176 msgid "Resend email" @@ -6708,8 +6768,8 @@ msgstr "" msgid "Reset Code" msgstr "" -#: src/screens/Settings/Settings.tsx:409 -#: src/screens/Settings/Settings.tsx:411 +#: src/screens/Settings/Settings.tsx:418 +#: src/screens/Settings/Settings.tsx:420 msgid "Reset onboarding state" msgstr "" @@ -6790,7 +6850,6 @@ msgstr "" #: src/view/com/composer/photos/ImageAltTextDialog.tsx:153 #: src/view/com/composer/photos/ImageAltTextDialog.tsx:163 #: src/view/com/modals/CreateOrEditList.tsx:315 -#: src/view/com/modals/EditProfile.tsx:244 #: src/view/screens/SavedFeeds.tsx:109 msgid "Save" msgstr "" @@ -6810,10 +6869,6 @@ msgstr "" msgid "Save changes" msgstr "" -#: src/view/com/modals/EditProfile.tsx:252 -msgid "Save Changes" -msgstr "" - #: src/components/StarterPack/ShareDialog.tsx:131 #: src/components/StarterPack/ShareDialog.tsx:138 msgid "Save image" @@ -6845,10 +6900,6 @@ msgstr "" msgid "Saved to your feeds" msgstr "" -#: src/view/com/modals/EditProfile.tsx:245 -msgid "Saves any changes to your profile" -msgstr "" - #: src/view/com/modals/CropImage.web.tsx:105 msgid "Saves image crop settings" msgstr "" @@ -6878,7 +6929,7 @@ msgstr "" msgid "Search" msgstr "" -#: src/Navigation.tsx:229 +#: src/Navigation.tsx:239 #: src/screens/Profile/ProfileSearch.tsx:37 msgid "Search @{0}'s posts" msgstr "" @@ -6955,10 +7006,6 @@ msgstr "" msgid "Security step required" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:57 -msgid "Security Step Required" -msgstr "" - #: src/components/RichTextTag.tsx:111 msgid "See {tag} posts" msgstr "" @@ -7093,7 +7140,7 @@ msgid "Select your date of birth" msgstr "" #: src/screens/Onboarding/StepInterests/index.tsx:192 -#: src/screens/Settings/SettingsInterests.tsx:162 +#: src/screens/Settings/InterestsSettings.tsx:165 msgid "Select your interests from the options below" msgstr "" @@ -7109,14 +7156,6 @@ msgstr "" msgid "Send a neat website!" msgstr "" -#: src/components/dialogs/VerifyEmailDialog.tsx:295 -msgid "Send confirmation" -msgstr "" - -#: src/components/dialogs/VerifyEmailDialog.tsx:288 -msgid "Send confirmation email" -msgstr "" - #: src/components/dialogs/EmailDialog/screens/Manage2FA/Disable.tsx:174 #: src/components/dialogs/EmailDialog/screens/Manage2FA/Disable.tsx:181 #: src/components/dialogs/EmailDialog/screens/Verify.tsx:300 @@ -7202,13 +7241,49 @@ msgstr "" msgid "Sets email for password reset" msgstr "" -#: src/Navigation.tsx:185 -#: src/screens/Settings/Settings.tsx:90 +#: src/Navigation.tsx:195 +#: src/screens/Settings/Settings.tsx:91 #: src/view/shell/desktop/LeftNav.tsx:727 #: src/view/shell/Drawer.tsx:572 msgid "Settings" msgstr "" +#: src/screens/Settings/NotificationSettings/index.tsx:154 +msgid "Settings for like notifications" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:132 +msgid "Settings for mention notifications" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:176 +msgid "Settings for new follower notifications" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:231 +msgid "Settings for notifications for everything else" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:202 +msgid "Settings for notifications for likes of your reposts" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:217 +msgid "Settings for notifications for reposts of your reposts" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:143 +msgid "Settings for quote notifications" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:121 +msgid "Settings for reply notifications" +msgstr "" + +#: src/screens/Settings/NotificationSettings/index.tsx:165 +msgid "Settings for repost notifications" +msgstr "" + #: src/screens/ModerationInteractionSettings/index.tsx:102 msgctxt "toast" msgid "Settings saved" @@ -7301,7 +7376,7 @@ msgstr "" msgid "Share your favorite feed!" msgstr "" -#: src/Navigation.tsx:288 +#: src/Navigation.tsx:298 msgid "Shared Preferences Tester" msgstr "" @@ -7426,7 +7501,7 @@ msgstr "" msgid "Shows information about when this post was created" msgstr "" -#: src/screens/Settings/Settings.tsx:114 +#: src/screens/Settings/Settings.tsx:115 msgid "Shows other accounts you can switch to" msgstr "" @@ -7483,9 +7558,9 @@ msgstr "" msgid "Sign in to view post" msgstr "" -#: src/screens/Settings/Settings.tsx:235 -#: src/screens/Settings/Settings.tsx:237 -#: src/screens/Settings/Settings.tsx:269 +#: src/screens/Settings/Settings.tsx:244 +#: src/screens/Settings/Settings.tsx:246 +#: src/screens/Settings/Settings.tsx:278 #: src/screens/SignupQueued.tsx:93 #: src/screens/SignupQueued.tsx:96 #: src/screens/Takendown.tsx:85 @@ -7499,7 +7574,7 @@ msgstr "" msgid "Sign Out" msgstr "" -#: src/screens/Settings/Settings.tsx:266 +#: src/screens/Settings/Settings.tsx:275 #: src/view/shell/desktop/LeftNav.tsx:209 msgid "Sign out?" msgstr "" @@ -7532,7 +7607,6 @@ msgid "Smaller" msgstr "" #: src/components/dialogs/EmailDialog/screens/VerificationReminder.tsx:91 -#: src/components/dialogs/VerifyEmailDialog.tsx:274 msgid "Snoozes the reminder" msgstr "" @@ -7582,7 +7656,6 @@ msgid "Something went wrong, please try again." msgstr "" #: src/components/Lists.tsx:174 -#: src/screens/Settings/NotificationSettings.tsx:55 msgid "Something went wrong!" msgstr "" @@ -7663,8 +7736,8 @@ msgstr "" msgid "Start chat with {displayName}" msgstr "" -#: src/Navigation.tsx:453 -#: src/Navigation.tsx:458 +#: src/Navigation.tsx:540 +#: src/Navigation.tsx:545 #: src/screens/StarterPack/Wizard/index.tsx:186 msgid "Starter Pack" msgstr "" @@ -7704,12 +7777,12 @@ msgstr "" msgid "Step {0} of {1}" msgstr "" -#: src/screens/Settings/Settings.tsx:363 +#: src/screens/Settings/Settings.tsx:372 msgid "Storage cleared, you need to restart the app now." msgstr "" -#: src/Navigation.tsx:278 -#: src/screens/Settings/Settings.tsx:390 +#: src/Navigation.tsx:288 +#: src/screens/Settings/Settings.tsx:399 msgid "Storybook" msgstr "" @@ -7755,7 +7828,6 @@ msgid "Subscribe to this list" msgstr "" #: src/components/dialogs/EmailDialog/screens/Update.tsx:286 -#: src/components/dialogs/VerifyEmailDialog.tsx:124 msgid "Success!" msgstr "" @@ -7786,15 +7858,15 @@ msgctxt "Name of app icon variant" msgid "Sunset" msgstr "" -#: src/Navigation.tsx:298 +#: src/Navigation.tsx:308 #: src/view/screens/Support.tsx:31 #: src/view/screens/Support.tsx:34 msgid "Support" msgstr "" -#: src/screens/Settings/Settings.tsx:112 -#: src/screens/Settings/Settings.tsx:126 -#: src/screens/Settings/Settings.tsx:485 +#: src/screens/Settings/Settings.tsx:113 +#: src/screens/Settings/Settings.tsx:127 +#: src/screens/Settings/Settings.tsx:494 #: src/view/shell/desktop/LeftNav.tsx:246 msgid "Switch account" msgstr "" @@ -7821,7 +7893,7 @@ msgstr "" #: src/screens/Settings/AboutSettings.tsx:107 #: src/screens/Settings/AboutSettings.tsx:110 -#: src/screens/Settings/Settings.tsx:383 +#: src/screens/Settings/Settings.tsx:392 msgid "System log" msgstr "" @@ -7873,7 +7945,7 @@ msgstr "" msgid "Terms" msgstr "" -#: src/Navigation.tsx:308 +#: src/Navigation.tsx:318 #: src/screens/Settings/AboutSettings.tsx:84 #: src/screens/Settings/AboutSettings.tsx:87 #: src/view/screens/TermsOfService.tsx:31 @@ -7910,10 +7982,6 @@ msgstr "" msgid "Thank you for your feedback! It has been sent to the feed operator." msgstr "" -#: src/components/dialogs/VerifyEmailDialog.tsx:125 -msgid "Thank you! Your email has been successfully verified." -msgstr "" - #: src/components/ReportDialog/SubmitView.tsx:83 msgid "Thank you. Your report has been sent." msgstr "" @@ -7982,10 +8050,6 @@ msgstr "" msgid "The Discover feed now knows what you like" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:74 -msgid "The email address you entered is the same as your current email address." -msgstr "" - #: src/screens/StarterPack/StarterPackLandingScreen.tsx:324 msgid "The experience is better in the app. Download Bluesky now and we'll pick back up where you left off." msgstr "" @@ -8377,7 +8441,7 @@ msgstr "" msgid "This will delete \"{0}\" from your muted words. You can always add it back later." msgstr "" -#: src/screens/Settings/Settings.tsx:537 +#: src/screens/Settings/Settings.tsx:546 msgid "This will remove @{0} from the quick access list." msgstr "" @@ -8413,7 +8477,7 @@ msgstr "" msgid "Threaded mode" msgstr "" -#: src/Navigation.tsx:341 +#: src/Navigation.tsx:351 msgid "Threads Preferences" msgstr "" @@ -8467,7 +8531,7 @@ msgstr "" msgid "Top replies first" msgstr "" -#: src/Navigation.tsx:423 +#: src/Navigation.tsx:510 msgid "Topic" msgstr "" @@ -8694,8 +8758,8 @@ msgstr "" msgid "Unpinned from your feeds" msgstr "" -#: src/screens/Settings/Settings.tsx:416 -#: src/screens/Settings/Settings.tsx:418 +#: src/screens/Settings/Settings.tsx:425 +#: src/screens/Settings/Settings.tsx:427 msgid "Unsnooze email reminder" msgstr "" @@ -8930,7 +8994,7 @@ msgstr "" msgid "Verification settings" msgstr "" -#: src/Navigation.tsx:178 +#: src/Navigation.tsx:188 #: src/screens/Moderation/VerificationSettings.tsx:32 msgid "Verification Settings" msgstr "" @@ -8960,17 +9024,10 @@ msgstr "" msgid "Verify DNS Record" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:234 -#: src/components/dialogs/ChangeEmailDialog.tsx:240 -msgid "Verify email" -msgstr "" - #: src/components/dialogs/EmailDialog/screens/Verify.tsx:214 msgid "Verify email code" msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:122 -#: src/components/dialogs/VerifyEmailDialog.tsx:163 #: src/components/intents/VerifyEmailIntentDialog.tsx:67 msgid "Verify email dialog" msgstr "" @@ -8990,10 +9047,6 @@ msgstr "" msgid "Verify your email" msgstr "" -#: src/components/dialogs/VerifyEmailDialog.tsx:114 -msgid "Verify Your Email" -msgstr "" - #: src/screens/Settings/AboutSettings.tsx:126 #: src/screens/Settings/AboutSettings.tsx:155 msgid "Version {appVersion}" @@ -9008,7 +9061,7 @@ msgstr "" msgid "Video failed to process" msgstr "" -#: src/Navigation.tsx:474 +#: src/Navigation.tsx:561 msgid "Video Feed" msgstr "" @@ -9228,7 +9281,7 @@ msgstr "" msgid "We ran out of posts from your follows. Here's the latest from <0/>." msgstr "" -#: src/screens/Settings/SettingsInterests.tsx:155 +#: src/screens/Settings/InterestsSettings.tsx:158 msgid "We recommend selecting at least two interests." msgstr "" @@ -9500,7 +9553,6 @@ msgid "You are verified" msgstr "" #: src/screens/Profile/Header/EditProfileDialog.tsx:355 -#: src/view/com/modals/EditProfile.tsx:203 msgid "You are verified. You will lose your verification status if you change your display name. <0>Learn more." msgstr "" @@ -9701,7 +9753,7 @@ msgstr "" msgid "You previously deactivated @{0}." msgstr "" -#: src/screens/Settings/Settings.tsx:374 +#: src/screens/Settings/Settings.tsx:383 msgid "You probably want to restart the app now." msgstr "" @@ -9713,7 +9765,7 @@ msgstr "" msgid "You reacted {0} to {1}" msgstr "" -#: src/screens/Settings/Settings.tsx:267 +#: src/screens/Settings/Settings.tsx:276 #: src/view/shell/desktop/LeftNav.tsx:210 msgid "You will be signed out of all your accounts." msgstr "" @@ -9758,10 +9810,6 @@ msgstr "" msgid "You'll follow these people right away" msgstr "" -#: src/components/dialogs/VerifyEmailDialog.tsx:216 -msgid "You'll receive an email at <0>{0} to verify it's you." -msgstr "" - #: src/screens/StarterPack/StarterPackLandingScreen.tsx:274 msgid "You'll stay updated with these feeds" msgstr "" @@ -9856,10 +9904,6 @@ msgstr "" msgid "Your current handle <0>{0} will automatically remain reserved for you. You can switch back to it at any time from this account." msgstr "" -#: src/components/dialogs/ChangeEmailDialog.tsx:65 -msgid "Your email address has been updated but it is not yet verified. As a next step, please verify your new email." -msgstr "" - #: src/screens/Login/ForgotPasswordForm.tsx:51 #: src/screens/Signup/state.ts:270 #: src/screens/Signup/StepInfo/index.tsx:98 @@ -9871,10 +9915,6 @@ msgstr "" msgid "Your email has not yet been verified. Please verify your email in order to enjoy all the features of Bluesky." msgstr "" -#: src/components/dialogs/VerifyEmailDialog.tsx:110 -msgid "Your email has not yet been verified. This is an important security step which we recommend." -msgstr "" - #: src/state/shell/progress-guide.tsx:213 msgid "Your first like!" msgstr "" @@ -9895,15 +9935,15 @@ msgstr "" msgid "Your full username will be <0>@{0}" msgstr "" -#: src/Navigation.tsx:395 +#: src/Navigation.tsx:482 #: src/screens/Search/modules/ExploreInterestsCard.tsx:67 #: src/screens/Settings/ContentAndMediaSettings.tsx:92 #: src/screens/Settings/ContentAndMediaSettings.tsx:95 -#: src/screens/Settings/SettingsInterests.tsx:39 +#: src/screens/Settings/InterestsSettings.tsx:42 msgid "Your interests" msgstr "" -#: src/screens/Settings/SettingsInterests.tsx:124 +#: src/screens/Settings/InterestsSettings.tsx:127 msgctxt "toast" msgid "Your interests have been updated!" msgstr "" @@ -9952,7 +9992,7 @@ msgstr "" msgid "Your report will be sent to the Bluesky Moderation Service" msgstr "" -#: src/screens/Settings/SettingsInterests.tsx:53 +#: src/screens/Settings/InterestsSettings.tsx:56 msgid "Your selected interests help us serve you content you care about." msgstr "" From e672f43ec868f5d9d7aa4dabdfbcbc4f6bce69a2 Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Wed, 18 Jun 2025 14:08:44 +0300 Subject: [PATCH 6/9] fix other case of promise.all misuse (#8505) --- src/screens/Settings/InterestsSettings.tsx | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/screens/Settings/InterestsSettings.tsx b/src/screens/Settings/InterestsSettings.tsx index 746315f7b8..e3b5fcb084 100644 --- a/src/screens/Settings/InterestsSettings.tsx +++ b/src/screens/Settings/InterestsSettings.tsx @@ -113,13 +113,9 @@ function Inner({ }, ) await Promise.all([ - await qc.resetQueries({ - queryKey: createSuggestedStarterPacksQueryKey(), - }), - await qc.resetQueries({queryKey: createGetSuggestedFeedsQueryKey()}), - await qc.resetQueries({ - queryKey: createGetSuggestedUsersQueryKey({}), - }), + qc.resetQueries({queryKey: createSuggestedStarterPacksQueryKey()}), + qc.resetQueries({queryKey: createGetSuggestedFeedsQueryKey()}), + qc.resetQueries({queryKey: createGetSuggestedUsersQueryKey({})}), ]) Toast.show( From 13d21692bf28bbda502eb3694f94937dab851c41 Mon Sep 17 00:00:00 2001 From: Frudrax Cheng Date: Wed, 18 Jun 2025 19:57:49 +0800 Subject: [PATCH 7/9] Mark translatable text in `PreferenceControls.tsx` (#8516) * Update PreferenceControls.tsx * Update PreferenceControls.tsx Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com> * Update PreferenceControls.tsx Co-authored-by: Minseo Lee * Update PreferenceControls.tsx --------- Co-authored-by: surfdude29 <149612116+surfdude29@users.noreply.github.com> Co-authored-by: Minseo Lee --- .../components/PreferenceControls.tsx | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx b/src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx index 336e086950..3177bcadeb 100644 --- a/src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx +++ b/src/screens/Settings/NotificationSettings/components/PreferenceControls.tsx @@ -98,7 +98,7 @@ export function Inner({ @@ -141,10 +141,12 @@ export function Inner({ {'filter' in preference && ( <> - From + + From + From dd86402763518ae94ced8274dda886f92ec7b51e Mon Sep 17 00:00:00 2001 From: Samuel Newman Date: Wed, 18 Jun 2025 15:19:42 +0300 Subject: [PATCH 8/9] rearrange settings (#8519) --- .../Settings/NotificationSettings/index.tsx | 44 +++++++++---------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/src/screens/Settings/NotificationSettings/index.tsx b/src/screens/Settings/NotificationSettings/index.tsx index 7593635760..ec396d29a1 100644 --- a/src/screens/Settings/NotificationSettings/index.tsx +++ b/src/screens/Settings/NotificationSettings/index.tsx @@ -117,6 +117,28 @@ export function NotificationSettingsScreen({}: Props) { )} + + + Likes} + subtitleText={} + showSkeleton={!settings} + /> + + + + New followers} + subtitleText={} + showSkeleton={!settings} + /> + - - - Likes} - subtitleText={} - showSkeleton={!settings} - /> - - - - New followers} - subtitleText={} - showSkeleton={!settings} - /> - {/* Date: Wed, 18 Jun 2025 16:17:54 +0300 Subject: [PATCH 9/9] Modernise link warning dialog (#8243) * add link warning dialog * add copy for if sharing * delete old modal * get web working --- src/components/Link.tsx | 28 ++-- src/components/dialogs/Context.tsx | 12 ++ src/components/dialogs/LinkWarning.tsx | 161 ++++++++++++++++++++++ src/state/modals/index.tsx | 10 -- src/view/com/modals/LinkWarning.tsx | 180 ------------------------- src/view/com/modals/Modal.tsx | 4 - src/view/com/modals/Modal.web.tsx | 3 - src/view/com/util/Link.tsx | 11 +- src/view/shell/index.tsx | 2 + src/view/shell/index.web.tsx | 2 + 10 files changed, 200 insertions(+), 213 deletions(-) create mode 100644 src/components/dialogs/LinkWarning.tsx delete mode 100644 src/view/com/modals/LinkWarning.tsx diff --git a/src/components/Link.tsx b/src/components/Link.tsx index 49c9c52358..d0f8678ff1 100644 --- a/src/components/Link.tsx +++ b/src/components/Link.tsx @@ -24,6 +24,7 @@ import {Button, type ButtonProps} from '#/components/Button' import {useInteractionState} from '#/components/hooks/useInteractionState' import {Text, type TextProps} from '#/components/Typography' import {router} from '#/routes' +import {useGlobalDialogsControlContext} from './dialogs/Context' /** * Only available within a `Link`, since that inherits from `Button`. @@ -111,7 +112,8 @@ export function useLink({ } const isExternal = isExternalUrl(href) - const {openModal, closeModal} = useModalControls() + const {closeModal} = useModalControls() + const {linkWarningDialogControl} = useGlobalDialogsControlContext() const openLink = useOpenLink() const onPress = React.useCallback( @@ -132,10 +134,9 @@ export function useLink({ } if (requiresWarning) { - openModal({ - name: 'link-warning', - text: displayText, - href: href, + linkWarningDialogControl.open({ + displayText, + href, }) } else { if (isExternal) { @@ -176,13 +177,13 @@ export function useLink({ displayText, isExternal, href, - openModal, openLink, closeModal, action, navigation, overridePresentation, shouldProxy, + linkWarningDialogControl, ], ) @@ -195,16 +196,21 @@ export function useLink({ ) if (requiresWarning) { - openModal({ - name: 'link-warning', - text: displayText, - href: href, + linkWarningDialogControl.open({ + displayText, + href, share: true, }) } else { shareUrl(href) } - }, [disableMismatchWarning, displayText, href, isExternal, openModal]) + }, [ + disableMismatchWarning, + displayText, + href, + isExternal, + linkWarningDialogControl, + ]) const onLongPress = React.useCallback( (e: GestureResponderEvent) => { diff --git a/src/components/dialogs/Context.tsx b/src/components/dialogs/Context.tsx index 728044325b..1ee4d27398 100644 --- a/src/components/dialogs/Context.tsx +++ b/src/components/dialogs/Context.tsx @@ -17,6 +17,11 @@ type ControlsContext = { signinDialogControl: Control inAppBrowserConsentControl: StatefulControl emailDialogControl: StatefulControl + linkWarningDialogControl: StatefulControl<{ + href: string + displayText: string + share?: boolean + }> } const ControlsContext = createContext(null) @@ -36,6 +41,11 @@ export function Provider({children}: React.PropsWithChildren<{}>) { const signinDialogControl = Dialog.useDialogControl() const inAppBrowserConsentControl = useStatefulDialogControl() const emailDialogControl = useStatefulDialogControl() + const linkWarningDialogControl = useStatefulDialogControl<{ + href: string + displayText: string + share?: boolean + }>() const ctx = useMemo( () => ({ @@ -43,12 +53,14 @@ export function Provider({children}: React.PropsWithChildren<{}>) { signinDialogControl, inAppBrowserConsentControl, emailDialogControl, + linkWarningDialogControl, }), [ mutedWordsDialogControl, signinDialogControl, inAppBrowserConsentControl, emailDialogControl, + linkWarningDialogControl, ], ) diff --git a/src/components/dialogs/LinkWarning.tsx b/src/components/dialogs/LinkWarning.tsx new file mode 100644 index 0000000000..9ae8718127 --- /dev/null +++ b/src/components/dialogs/LinkWarning.tsx @@ -0,0 +1,161 @@ +import {useCallback, useMemo} from 'react' +import {View} from 'react-native' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' + +import {useOpenLink} from '#/lib/hooks/useOpenLink' +import {shareUrl} from '#/lib/sharing' +import {isPossiblyAUrl, splitApexDomain} from '#/lib/strings/url-helpers' +import {atoms as a, useBreakpoints, useTheme, web} from '#/alf' +import {Button, ButtonText} from '#/components/Button' +import * as Dialog from '#/components/Dialog' +import {Text} from '#/components/Typography' +import {useGlobalDialogsControlContext} from './Context' + +export function LinkWarningDialog() { + const {linkWarningDialogControl} = useGlobalDialogsControlContext() + + return ( + + + + + ) +} + +function InAppBrowserConsentInner({ + link, +}: { + link?: {href: string; displayText: string; share?: boolean} +}) { + const control = Dialog.useDialogContext() + const {_} = useLingui() + const t = useTheme() + const openLink = useOpenLink() + const {gtMobile} = useBreakpoints() + + const potentiallyMisleading = useMemo( + () => link && isPossiblyAUrl(link.displayText), + [link], + ) + + const onPressVisit = useCallback(() => { + control.close(() => { + if (!link) return + if (link.share) { + shareUrl(link.href) + } else { + openLink(link.href, undefined, true) + } + }) + }, [control, link, openLink]) + + const onCancel = useCallback(() => { + control.close() + }, [control]) + + return ( + + + + + {potentiallyMisleading ? ( + Potentially misleading link + ) : ( + Leaving Bluesky + )} + + + This link is taking you to the following website: + + {link && } + {potentiallyMisleading && ( + + Make sure this is where you intend to go! + + )} + + + + + + + + + ) +} + +function LinkBox({href}: {href: string}) { + const t = useTheme() + const [scheme, hostname, rest] = useMemo(() => { + try { + const urlp = new URL(href) + const [subdomain, apexdomain] = splitApexDomain(urlp.hostname) + return [ + urlp.protocol + '//' + subdomain, + apexdomain, + urlp.pathname.replace(/\/$/, '') + urlp.search + urlp.hash, + ] + } catch { + return ['', href, ''] + } + }, [href]) + return ( + + + {scheme} + + {hostname} + + {rest} + + + ) +} diff --git a/src/state/modals/index.tsx b/src/state/modals/index.tsx index 7ebcec4c79..a2cc637450 100644 --- a/src/state/modals/index.tsx +++ b/src/state/modals/index.tsx @@ -43,13 +43,6 @@ export interface ChangePasswordModal { name: 'change-password' } -export interface LinkWarningModal { - name: 'link-warning' - text: string - href: string - share?: boolean -} - export type Modal = // Account | DeleteAccountModal @@ -67,9 +60,6 @@ export type Modal = | WaitlistModal | InviteCodesModal - // Generic - | LinkWarningModal - const ModalContext = React.createContext<{ isModalActive: boolean activeModals: Modal[] diff --git a/src/view/com/modals/LinkWarning.tsx b/src/view/com/modals/LinkWarning.tsx deleted file mode 100644 index b0bf76ede1..0000000000 --- a/src/view/com/modals/LinkWarning.tsx +++ /dev/null @@ -1,180 +0,0 @@ -import React from 'react' -import {SafeAreaView, StyleSheet, View} from 'react-native' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' - -import {useOpenLink} from '#/lib/hooks/useOpenLink' -import {usePalette} from '#/lib/hooks/usePalette' -import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' -import {shareUrl} from '#/lib/sharing' -import {isPossiblyAUrl, splitApexDomain} from '#/lib/strings/url-helpers' -import {colors, s} from '#/lib/styles' -import {isWeb} from '#/platform/detection' -import {useModalControls} from '#/state/modals' -import {Button} from '#/view/com/util/forms/Button' -import {Text} from '#/view/com/util/text/Text' -import {ScrollView} from './util' - -export const snapPoints = ['50%'] - -export function Component({ - text, - href, - share, -}: { - text: string - href: string - share?: boolean -}) { - const pal = usePalette('default') - const {closeModal} = useModalControls() - const {isMobile} = useWebMediaQueries() - const {_} = useLingui() - const potentiallyMisleading = isPossiblyAUrl(text) - const openLink = useOpenLink() - - const onPressVisit = () => { - closeModal() - if (share) { - shareUrl(href) - } else { - openLink(href, false, true) - } - } - - return ( - - - - {potentiallyMisleading ? ( - <> - - - Potentially Misleading Link - - - ) : ( - - Leaving Bluesky - - )} - - - - - This link is taking you to the following website: - - - - - {potentiallyMisleading && ( - - Make sure this is where you intend to go! - - )} - - - -