From bf9cedb67bacd1e2667bd1719aadcee92f234966 Mon Sep 17 00:00:00 2001 From: dan Date: Tue, 12 Dec 2023 23:11:20 +0000 Subject: [PATCH 01/23] Clean up pager refs to fix crash (#2195) --- src/view/com/pager/PagerWithHeader.tsx | 35 +++++++++++++++++--------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/view/com/pager/PagerWithHeader.tsx b/src/view/com/pager/PagerWithHeader.tsx index 22e2d86b17..cda2d13067 100644 --- a/src/view/com/pager/PagerWithHeader.tsx +++ b/src/view/com/pager/PagerWithHeader.tsx @@ -121,13 +121,16 @@ export const PagerWithHeader = React.forwardRef( ) const scrollRefs = useSharedValue[]>([]) - const registerRef = (scrollRef: AnimatedRef, index: number) => { - scrollRefs.modify(refs => { - 'worklet' - refs[index] = scrollRef - return refs - }) - } + const registerRef = React.useCallback( + (scrollRef: AnimatedRef | null, atIndex: number) => { + scrollRefs.modify(refs => { + 'worklet' + refs[atIndex] = scrollRef + return refs + }) + }, + [scrollRefs], + ) const lastForcedScrollY = useSharedValue(0) const adjustScrollForOtherPages = () => { @@ -138,8 +141,7 @@ export const PagerWithHeader = React.forwardRef( lastForcedScrollY.value = forcedScrollY const refs = scrollRefs.value for (let i = 0; i < refs.length; i++) { - if (i !== currentPage) { - // This needs to run on the UI thread. + if (i !== currentPage && refs[i] != null) { scrollTo(refs[i], 0, forcedScrollY, false) } } @@ -206,11 +208,12 @@ export const PagerWithHeader = React.forwardRef( ) => registerRef(r, i)} + registerRef={registerRef} renderTab={child} /> @@ -287,6 +290,7 @@ PagerTabBar = React.memo(PagerTabBar) function PagerItem({ headerHeight, + index, isReady, isFocused, isScrolledDown, @@ -295,15 +299,22 @@ function PagerItem({ registerRef, }: { headerHeight: number + index: number isFocused: boolean isReady: boolean isScrolledDown: boolean - registerRef: (scrollRef: AnimatedRef) => void + registerRef: (scrollRef: AnimatedRef | null, atIndex: number) => void onScrollWorklet: (e: NativeScrollEvent) => void renderTab: ((props: PagerWithHeaderChildParams) => JSX.Element) | null }) { const scrollElRef = useAnimatedRef() - registerRef(scrollElRef) + + React.useEffect(() => { + registerRef(scrollElRef, index) + return () => { + registerRef(null, index) + } + }, [scrollElRef, registerRef, index]) const scrollHandler = React.useMemo( () => ({onScroll: onScrollWorklet}), From b1f9454f1d4404bed9b1b3c656d5f9bbe1d4d39c Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Tue, 12 Dec 2023 17:18:38 -0600 Subject: [PATCH 02/23] Add fallback to email reminder modal (#2193) * Add fallback to email reminder modal * Add more debug --- src/state/session/index.tsx | 9 +++++++++ src/view/com/modals/VerifyEmail.tsx | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/src/state/session/index.tsx b/src/state/session/index.tsx index 56208bc70c..7cdbe6bb80 100644 --- a/src/state/session/index.tsx +++ b/src/state/session/index.tsx @@ -361,6 +361,8 @@ export function Provider({children}: React.PropsWithChildren<{}>) { } if (canReusePrevSession) { + logger.info(`session: attempting to reuse previous session`) + agent.session = prevSession __globalAgent = agent queryClient.clear() @@ -370,6 +372,9 @@ export function Provider({children}: React.PropsWithChildren<{}>) { resumeSessionWithFreshAccount() .then(freshAccount => { if (JSON.stringify(account) !== JSON.stringify(freshAccount)) { + logger.info( + `session: reuse of previous session returned a fresh account, upserting`, + ) upsertAccount(freshAccount) } }) @@ -385,6 +390,8 @@ export function Provider({children}: React.PropsWithChildren<{}>) { __globalAgent = PUBLIC_BSKY_AGENT }) } else { + logger.info(`session: attempting to resume using previous session`) + try { const freshAccount = await resumeSessionWithFreshAccount() __globalAgent = agent @@ -404,6 +411,8 @@ export function Provider({children}: React.PropsWithChildren<{}>) { } async function resumeSessionWithFreshAccount(): Promise { + logger.info(`session: resumeSessionWithFreshAccount`) + await networkRetry(1, () => agent.resumeSession(prevSession)) /* diff --git a/src/view/com/modals/VerifyEmail.tsx b/src/view/com/modals/VerifyEmail.tsx index 786a814a76..4f2b1aadf8 100644 --- a/src/view/com/modals/VerifyEmail.tsx +++ b/src/view/com/modals/VerifyEmail.tsx @@ -22,6 +22,7 @@ import {Trans, msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useModalControls} from '#/state/modals' import {useSession, useSessionApi, getAgent} from '#/state/session' +import {logger} from '#/logger' export const snapPoints = ['90%'] @@ -45,6 +46,13 @@ export function Component({showReminder}: {showReminder?: boolean}) { const {isMobile} = useWebMediaQueries() const {openModal, closeModal} = useModalControls() + React.useEffect(() => { + if (!currentAccount) { + logger.error(`VerifyEmail modal opened without currentAccount`) + closeModal() + } + }, [currentAccount, closeModal]) + const onSendEmail = async () => { setError('') setIsProcessing(true) From 0e3218db7decd7e67089a49c7c11fe2e6e643eba Mon Sep 17 00:00:00 2001 From: dan Date: Wed, 13 Dec 2023 07:09:07 +0000 Subject: [PATCH 03/23] Memoize usePalette (#2201) --- src/lib/hooks/usePalette.ts | 72 +++++++++++++++++++------------------ 1 file changed, 38 insertions(+), 34 deletions(-) diff --git a/src/lib/hooks/usePalette.ts b/src/lib/hooks/usePalette.ts index 7eeb742286..eeb43d0b1f 100644 --- a/src/lib/hooks/usePalette.ts +++ b/src/lib/hooks/usePalette.ts @@ -1,3 +1,4 @@ +import {useMemo} from 'react' import {TextStyle, ViewStyle} from 'react-native' import {useTheme, PaletteColorName, PaletteColor} from '../ThemeContext' @@ -15,38 +16,41 @@ export interface UsePaletteValue { icon: TextStyle } export function usePalette(color: PaletteColorName): UsePaletteValue { - const palette = useTheme().palette[color] - return { - colors: palette, - view: { - backgroundColor: palette.background, - }, - viewLight: { - backgroundColor: palette.backgroundLight, - }, - btn: { - backgroundColor: palette.backgroundLight, - }, - border: { - borderColor: palette.border, - }, - borderDark: { - borderColor: palette.borderDark, - }, - text: { - color: palette.text, - }, - textLight: { - color: palette.textLight, - }, - textInverted: { - color: palette.textInverted, - }, - link: { - color: palette.link, - }, - icon: { - color: palette.icon, - }, - } + const theme = useTheme() + return useMemo(() => { + const palette = theme.palette[color] + return { + colors: palette, + view: { + backgroundColor: palette.background, + }, + viewLight: { + backgroundColor: palette.backgroundLight, + }, + btn: { + backgroundColor: palette.backgroundLight, + }, + border: { + borderColor: palette.border, + }, + borderDark: { + borderColor: palette.borderDark, + }, + text: { + color: palette.text, + }, + textLight: { + color: palette.textLight, + }, + textInverted: { + color: palette.textInverted, + }, + link: { + color: palette.link, + }, + icon: { + color: palette.icon, + }, + } + }, [theme, color]) } From 001bbb41bb6b49c890a758887f1db143dfa0e1fd Mon Sep 17 00:00:00 2001 From: Ansh Date: Wed, 13 Dec 2023 19:48:53 +0530 Subject: [PATCH 04/23] Hotfix: Merge conflict in translation file (#2203) * remove unused translation files * re-run extract and compile --- src/locale/locales/cs/messages.po | 2479 ----------------------------- src/locale/locales/en/messages.po | 86 +- src/locale/locales/es/messages.po | 2479 ----------------------------- src/locale/locales/fr/messages.po | 2479 ----------------------------- src/locale/locales/hi/messages.po | 84 +- src/locale/locales/ja/messages.po | 84 +- 6 files changed, 127 insertions(+), 7564 deletions(-) delete mode 100644 src/locale/locales/cs/messages.po delete mode 100644 src/locale/locales/es/messages.po delete mode 100644 src/locale/locales/fr/messages.po diff --git a/src/locale/locales/cs/messages.po b/src/locale/locales/cs/messages.po deleted file mode 100644 index ce4ebf113d..0000000000 --- a/src/locale/locales/cs/messages.po +++ /dev/null @@ -1,2479 +0,0 @@ -msgid "" -msgstr "" -"POT-Creation-Date: 2023-11-05 16:01-0800\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: @lingui/cli\n" -"Language: cs\n" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Plural-Forms: \n" - -#: src/view/screens/Profile.tsx:214 -#~ msgid "- end of feed -" -#~ msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:138 -#~ msgid ". This warning is only available for posts with media attached." -#~ msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:158 -msgid "{0, plural, one {# invite code available} other {# invite codes available}}" -msgstr "" - -#: src/view/com/modals/Repost.tsx:44 -msgid "{0}" -msgstr "" - -#: src/view/com/modals/CreateOrEditList.tsx:176 -msgid "{0} {purposeLabel} List" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:141 -msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}" -msgstr "" - -#: src/view/screens/Settings.tsx:407 -#: src/view/shell/Drawer.tsx:648 -msgid "{invitesAvailable} invite code available" -msgstr "" - -#: src/view/screens/Settings.tsx:409 -#: src/view/shell/Drawer.tsx:650 -msgid "{invitesAvailable} invite codes available" -msgstr "" - -#: src/view/screens/Search/Search.tsx:87 -msgid "{message}" -msgstr "" - -#: src/view/com/threadgate/WhoCanReply.tsx:130 -msgid "<0/> members" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:30 -msgid "<0>Choose your<1>Recommended<2>Feeds" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:37 -msgid "<0>Follow some<1>Recommended<2>Users" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:132 -#~ msgid "<0>Here is your app password. Use this to sign into the other app along with your handle." -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:212 -#~ msgid "<0>Note: This setting may not be respected by third-party apps that display Bluesky content." -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:212 -#~ msgid "<0>Note: Your profile and posts will remain publicly available. Third-party apps that display Bluesky content may not respect this setting." -#~ msgstr "" - -#: src/lib/hooks/useOTAUpdate.ts:16 -msgid "A new version of the app is available. Please update to continue using the app." -msgstr "" - -#: src/view/com/modals/EditImage.tsx:299 -#: src/view/screens/Settings.tsx:417 -msgid "Accessibility" -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:159 -#: src/view/screens/Settings.tsx:286 -msgid "Account" -msgstr "" - -#: src/view/com/util/AccountDropdownBtn.tsx:41 -msgid "Account options" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:264 -#: src/view/com/modals/UserAddRemoveLists.tsx:193 -#: src/view/screens/ProfileList.tsx:783 -msgid "Add" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:56 -msgid "Add a content warning" -msgstr "" - -#: src/view/screens/ProfileList.tsx:773 -msgid "Add a user to this list" -msgstr "" - -#: src/view/screens/Settings.tsx:355 -#: src/view/screens/Settings.tsx:364 -msgid "Add account" -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:119 -#: src/view/com/composer/photos/Gallery.tsx:180 -msgid "Add alt text" -msgstr "" - -#: src/view/com/modals/report/InputIssueDetails.tsx:41 -#: src/view/com/modals/report/Modal.tsx:191 -msgid "Add details" -msgstr "" - -#: src/view/com/modals/report/Modal.tsx:194 -msgid "Add details to report" -msgstr "" - -#: src/view/com/composer/Composer.tsx:425 -msgid "Add link card" -msgstr "" - -#: src/view/com/composer/Composer.tsx:428 -msgid "Add link card:" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:415 -msgid "Add the following DNS record to your domain:" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:329 -msgid "Add to Lists" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:280 -msgid "Add to my feeds" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:191 -#: src/view/com/modals/UserAddRemoveLists.tsx:128 -msgid "Added to list" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:164 -msgid "Adjust the number of likes a reply must have to be shown in your feed." -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:75 -msgid "Adult Content" -msgstr "" - -#: src/view/screens/Settings.tsx:569 -msgid "Advanced" -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:130 -msgid "ALT" -msgstr "" - -#: src/view/com/modals/EditImage.tsx:315 -msgid "Alt text" -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:209 -msgid "Alt text describes images for blind and low-vision users, and helps give context to everyone." -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:110 -msgid "An email has been sent to {0}. It includes a confirmation code which you can enter below." -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:119 -msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below." -msgstr "" - -#: src/view/com/notifications/FeedItem.tsx:236 -msgid "and" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:94 -msgid "App Language" -msgstr "" - -#: src/view/screens/Settings.tsx:589 -msgid "App passwords" -msgstr "" - -#: src/view/screens/AppPasswords.tsx:186 -msgid "App Passwords" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:65 -msgid "Appeal Decision" -msgstr "" - -#: src/view/com/util/moderation/LabelInfo.tsx:51 -msgid "Appeal this decision" -msgstr "" - -#: src/view/com/util/moderation/LabelInfo.tsx:55 -msgid "Appeal this decision." -msgstr "" - -#: src/view/screens/Settings.tsx:432 -msgid "Appearance" -msgstr "" - -#: src/view/screens/Moderation.tsx:206 -#~ msgid "Apps that respect this setting, including the official Bluesky app and bsky.app website, won't show your content to logged out users." -#~ msgstr "" - -#: src/view/screens/AppPasswords.tsx:223 -msgid "Are you sure you want to delete the app password \"{name}\"?" -msgstr "" - -#: src/view/com/composer/Composer.tsx:139 -msgid "Are you sure you'd like to discard this draft?" -msgstr "" - -#: src/view/screens/ProfileList.tsx:375 -msgid "Are you sure?" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:185 -msgid "Are you sure? This cannot be undone." -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:123 -msgid "Artistic or non-erotic nudity." -msgstr "" - -#: src/view/screens/Moderation.tsx:189 -#~ msgid "Ask apps to limit the visibility of my account" -#~ msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:145 -#: src/view/com/auth/login/ChooseAccountForm.tsx:151 -#: src/view/com/auth/login/ForgotPasswordForm.tsx:166 -#: src/view/com/auth/login/LoginForm.tsx:249 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:148 -#: src/view/com/modals/report/InputIssueDetails.tsx:45 -#: src/view/com/post-thread/PostThread.tsx:385 -#: src/view/com/post-thread/PostThread.tsx:435 -#: src/view/com/post-thread/PostThread.tsx:443 -#: src/view/com/profile/ProfileHeader.tsx:648 -msgid "Back" -msgstr "" - -#: src/view/screens/Settings.tsx:461 -msgid "Basics" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:131 -#: src/view/com/modals/BirthDateSettings.tsx:72 -msgid "Birthday" -msgstr "" - -#: src/view/screens/Settings.tsx:312 -msgid "Birthday:" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:258 -#: src/view/com/profile/ProfileHeader.tsx:365 -msgid "Block Account" -msgstr "" - -#: src/view/screens/ProfileList.tsx:545 -msgid "Block accounts" -msgstr "" - -#: src/view/screens/ProfileList.tsx:495 -msgid "Block list" -msgstr "" - -#: src/view/screens/ProfileList.tsx:330 -msgid "Block these accounts?" -msgstr "" - -#: src/view/screens/Moderation.tsx:121 -msgid "Blocked accounts" -msgstr "" - -#: src/view/screens/ModerationBlockedAccounts.tsx:106 -msgid "Blocked Accounts" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:260 -msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you." -msgstr "" - -#: src/view/screens/ModerationBlockedAccounts.tsx:114 -msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours." -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:241 -msgid "Blocked post." -msgstr "" - -#: src/view/screens/ProfileList.tsx:332 -msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you." -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:26 -msgid "Bluesky" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:80 -msgid "Bluesky is flexible." -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:69 -msgid "Bluesky is open." -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:56 -msgid "Bluesky is public." -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:70 -msgid "Bluesky uses invites to build a healthier community. If you don't know anybody with an invite, you can sign up for the waitlist and we'll send one soon." -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:78 -msgid "Bluesky.Social" -msgstr "" - -#: src/view/screens/Settings.tsx:718 -msgid "Build version {0} {1}" -msgstr "" - -#: src/view/com/composer/photos/OpenCameraBtn.tsx:60 -#: src/view/com/util/UserAvatar.tsx:217 -#: src/view/com/util/UserBanner.tsx:38 -msgid "Camera" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:214 -msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long." -msgstr "" - -#: src/view/com/composer/Composer.tsx:278 -#: src/view/com/composer/Composer.tsx:281 -#: src/view/com/modals/AltImage.tsx:127 -#: src/view/com/modals/ChangeEmail.tsx:218 -#: src/view/com/modals/ChangeEmail.tsx:220 -#: src/view/com/modals/Confirm.tsx:88 -#: src/view/com/modals/CreateOrEditList.tsx:267 -#: src/view/com/modals/CreateOrEditList.tsx:272 -#: src/view/com/modals/DeleteAccount.tsx:150 -#: src/view/com/modals/DeleteAccount.tsx:223 -#: src/view/com/modals/EditImage.tsx:323 -#: src/view/com/modals/EditProfile.tsx:248 -#: src/view/com/modals/LinkWarning.tsx:85 -#: src/view/com/modals/Repost.tsx:73 -#: src/view/com/modals/Waitlist.tsx:136 -#: src/view/screens/Search/Search.tsx:558 -#: src/view/shell/desktop/Search.tsx:182 -msgid "Cancel" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:146 -#: src/view/com/modals/DeleteAccount.tsx:219 -msgid "Cancel account deletion" -msgstr "" - -#: src/view/com/modals/AltImage.tsx:122 -msgid "Cancel add image alt text" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:149 -msgid "Cancel change handle" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:134 -msgid "Cancel image crop" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:243 -msgid "Cancel profile editing" -msgstr "" - -#: src/view/com/modals/Repost.tsx:64 -msgid "Cancel quote post" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:87 -#: src/view/shell/desktop/Search.tsx:178 -msgid "Cancel search" -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:132 -msgid "Cancel waitlist signup" -msgstr "" - -#: src/view/screens/Settings.tsx:306 -msgid "Change" -msgstr "" - -#: src/view/screens/Settings.tsx:601 -#: src/view/screens/Settings.tsx:610 -msgid "Change handle" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:161 -msgid "Change Handle" -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:133 -msgid "Change my email" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:109 -msgid "Change Your Email" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:121 -msgid "Check out some recommended feeds. Tap + to add them to your list of pinned feeds." -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:185 -msgid "Check out some recommended users. Follow them to see similar users." -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:163 -msgid "Check your inbox for an email with the confirmation code to enter below:" -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:38 -msgid "Choose Service" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:83 -msgid "Choose the algorithms that power your experience with custom feeds." -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:65 -#~ msgid "Choose your" -#~ msgstr "" - -#: src/view/com/auth/create/Step2.tsx:106 -msgid "Choose your password" -msgstr "" - -#: src/view/screens/Settings.tsx:694 -msgid "Clear all legacy storage data" -msgstr "" - -#: src/view/screens/Settings.tsx:696 -msgid "Clear all legacy storage data (restart after this)" -msgstr "" - -#: src/view/screens/Settings.tsx:706 -msgid "Clear all storage data" -msgstr "" - -#: src/view/screens/Settings.tsx:708 -msgid "Clear all storage data (restart after this)" -msgstr "" - -#: src/view/com/util/forms/SearchInput.tsx:73 -#: src/view/screens/Search/Search.tsx:543 -msgid "Clear search query" -msgstr "" - -#: src/view/com/auth/login/PasswordUpdatedForm.tsx:38 -msgid "Close alert" -msgstr "" - -#: src/view/com/util/BottomSheetCustomBackdrop.tsx:33 -msgid "Close bottom drawer" -msgstr "" - -#: src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx:26 -msgid "Close image" -msgstr "" - -#: src/view/com/lightbox/Lightbox.web.tsx:112 -msgid "Close image viewer" -msgstr "" - -#: src/view/shell/index.web.tsx:49 -msgid "Close navigation footer" -msgstr "" - -#: src/view/screens/CommunityGuidelines.tsx:32 -msgid "Community Guidelines" -msgstr "" - -#: src/view/com/composer/Prompt.tsx:24 -msgid "Compose reply" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:98 -#: src/view/com/modals/Confirm.tsx:75 -#: src/view/com/modals/SelfLabel.tsx:154 -#: src/view/com/modals/VerifyEmail.tsx:217 -#: src/view/screens/PreferencesHomeFeed.tsx:299 -#: src/view/screens/PreferencesThreads.tsx:153 -msgid "Confirm" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:193 -#: src/view/com/modals/ChangeEmail.tsx:195 -msgid "Confirm Change" -msgstr "" - -#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:34 -msgid "Confirm content language settings" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:209 -msgid "Confirm delete account" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:157 -#: src/view/com/modals/DeleteAccount.tsx:176 -#: src/view/com/modals/VerifyEmail.tsx:151 -msgid "Confirmation code" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:178 -#: src/view/com/auth/login/LoginForm.tsx:268 -msgid "Connecting..." -msgstr "" - -#: src/view/screens/Moderation.tsx:79 -msgid "Content filtering" -msgstr "" - -#: src/view/com/modals/ContentFilteringSettings.tsx:44 -msgid "Content Filtering" -msgstr "" - -#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:74 -#: src/view/screens/LanguageSettings.tsx:277 -msgid "Content Languages" -msgstr "" - -#: src/view/com/util/moderation/ScreenHider.tsx:69 -msgid "Content Warning" -msgstr "" - -#: src/view/com/composer/labels/LabelsBtn.tsx:31 -msgid "Content warnings" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148 -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209 -msgid "Continue" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:193 -#: src/view/com/modals/InviteCodes.tsx:179 -msgid "Copied" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:186 -msgid "Copy" -msgstr "" - -#: src/view/screens/ProfileList.tsx:407 -msgid "Copy link to list" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:126 -msgid "Copy link to post" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:314 -msgid "Copy link to profile" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:112 -msgid "Copy post text" -msgstr "" - -#: src/view/screens/CopyrightPolicy.tsx:29 -msgid "Copyright Policy" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:103 -msgid "Could not load feed" -msgstr "" - -#: src/view/screens/ProfileList.tsx:860 -msgid "Could not load list" -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:41 -msgid "Create a new account" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:124 -msgid "Create Account" -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:38 -msgid "Create new account" -msgstr "" - -#: src/view/screens/AppPasswords.tsx:248 -msgid "Created {0}" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:387 -#: src/view/com/modals/ServerInput.tsx:102 -msgid "Custom domain" -msgstr "" - -#: src/view/screens/Settings.tsx:615 -msgid "Danger Zone" -msgstr "" - -#: src/view/screens/Settings.tsx:411 -#~ msgid "Dark" -#~ msgstr "" - -#: src/view/screens/Settings.tsx:622 -msgid "Delete account" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:83 -msgid "Delete Account" -msgstr "" - -#: src/view/screens/AppPasswords.tsx:221 -#: src/view/screens/AppPasswords.tsx:241 -msgid "Delete app password" -msgstr "" - -#: src/view/screens/ProfileList.tsx:374 -#: src/view/screens/ProfileList.tsx:434 -msgid "Delete List" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:212 -msgid "Delete my account" -msgstr "" - -#: src/view/screens/Settings.tsx:632 -msgid "Delete my account…" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:180 -msgid "Delete post" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:184 -msgid "Delete this post?" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:233 -msgid "Deleted post." -msgstr "" - -#: src/view/com/modals/CreateOrEditList.tsx:218 -#: src/view/com/modals/CreateOrEditList.tsx:234 -#: src/view/com/modals/EditProfile.tsx:197 -#: src/view/com/modals/EditProfile.tsx:209 -msgid "Description" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:96 -msgid "Dev Server" -msgstr "" - -#: src/view/screens/Settings.tsx:637 -msgid "Developer Tools" -msgstr "" - -#: src/view/com/composer/Composer.tsx:140 -msgid "Discard" -msgstr "" - -#: src/view/com/composer/Composer.tsx:134 -msgid "Discard draft" -msgstr "" - -#: src/view/screens/Feeds.tsx:405 -msgid "Discover new feeds" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:191 -msgid "Display name" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:179 -msgid "Display Name" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:485 -msgid "Domain verified!" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86 -#: src/view/com/modals/ContentFilteringSettings.tsx:88 -#: src/view/com/modals/ContentFilteringSettings.tsx:96 -#: src/view/com/modals/crop-image/CropImage.web.tsx:152 -#: src/view/com/modals/EditImage.tsx:333 -#: src/view/com/modals/ListAddRemoveUsers.tsx:142 -#: src/view/com/modals/SelfLabel.tsx:157 -#: src/view/com/modals/UserAddRemoveLists.tsx:79 -#: src/view/screens/PreferencesHomeFeed.tsx:302 -#: src/view/screens/PreferencesThreads.tsx:156 -msgid "Done" -msgstr "" - -#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:42 -msgid "Done{extraText}" -msgstr "" - -#: src/view/com/modals/InviteCodes.tsx:94 -msgid "Each code works once. You'll receive more invite codes periodically." -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:144 -#: src/view/com/modals/EditImage.tsx:207 -msgid "Edit image" -msgstr "" - -#: src/view/screens/ProfileList.tsx:422 -msgid "Edit list details" -msgstr "" - -#: src/view/screens/Feeds.tsx:367 -#: src/view/screens/SavedFeeds.tsx:85 -msgid "Edit My Feeds" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:151 -msgid "Edit my profile" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:429 -msgid "Edit profile" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:432 -msgid "Edit Profile" -msgstr "" - -#: src/view/screens/Feeds.tsx:330 -msgid "Edit Saved Feeds" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:90 -#: src/view/com/auth/login/ForgotPasswordForm.tsx:148 -#: src/view/com/modals/ChangeEmail.tsx:141 -#: src/view/com/modals/Waitlist.tsx:88 -msgid "Email" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:81 -msgid "Email address" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:111 -msgid "Email Updated" -msgstr "" - -#: src/view/screens/Settings.tsx:290 -msgid "Email:" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:138 -msgid "Enable this setting to only see replies between people you follow." -msgstr "" - -#: src/view/screens/Profile.tsx:472 -msgid "End of feed" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:71 -msgid "Enter the address of your provider:" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:369 -msgid "Enter the domain you want to use" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:101 -msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password." -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:86 -msgid "Enter your email address" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:117 -msgid "Enter your new email address below." -msgstr "" - -#: src/view/com/auth/login/Login.tsx:99 -msgid "Enter your username and password" -msgstr "" - -#: src/view/screens/Search/Search.tsx:105 -msgid "Error:" -msgstr "" - -#: src/view/com/modals/Threadgate.tsx:76 -msgid "Everybody" -msgstr "" - -#: src/view/com/lightbox/Lightbox.web.tsx:156 -msgid "Expand alt text" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109 -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141 -msgid "Failed to load recommended feeds" -msgstr "" - -#: src/view/screens/Feeds.tsx:559 -msgid "Feed offline" -msgstr "" - -#: src/view/com/feeds/FeedPage.tsx:140 -msgid "Feed Preferences" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:64 -#: src/view/shell/Drawer.tsx:300 -msgid "Feedback" -msgstr "" - -#: src/view/screens/Feeds.tsx:475 -#: src/view/shell/bottom-bar/BottomBar.tsx:168 -#: src/view/shell/desktop/LeftNav.tsx:341 -#: src/view/shell/Drawer.tsx:463 -#: src/view/shell/Drawer.tsx:464 -msgid "Feeds" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:57 -msgid "Feeds are created by users to curate content. Choose some feeds that you find interesting." -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:156 -msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information." -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:150 -msgid "Finding similar accounts..." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:102 -msgid "Fine-tune the content you see on your home screen." -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:60 -msgid "Fine-tune the discussion threads." -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:514 -msgid "Follow" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:42 -#~ msgid "Follow some" -#~ msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:64 -msgid "Follow some users to get started. We can recommend you more users based on who you find interesting." -msgstr "" - -#: src/view/com/modals/Threadgate.tsx:98 -msgid "Followed users" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:145 -msgid "Followed users only" -msgstr "" - -#: src/view/screens/ProfileFollowers.tsx:25 -msgid "Followers" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:600 -msgid "following" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:498 -#: src/view/screens/ProfileFollows.tsx:25 -msgid "Following" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:547 -msgid "Follows you" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:107 -msgid "For security reasons, we'll need to send a confirmation code to your email address." -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:207 -msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one." -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:231 -msgid "Forgot" -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:228 -msgid "Forgot password" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:127 -#: src/view/com/auth/login/Login.tsx:143 -msgid "Forgot Password" -msgstr "" - -#: src/view/com/composer/photos/SelectPhotoBtn.tsx:43 -msgid "Gallery" -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:175 -msgid "Get Started" -msgstr "" - -#: src/view/com/auth/LoggedOut.tsx:68 -#: src/view/com/auth/LoggedOut.tsx:69 -#: src/view/com/util/moderation/ScreenHider.tsx:105 -#: src/view/shell/desktop/LeftNav.tsx:106 -msgid "Go back" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:112 -#: src/view/screens/ProfileFeed.tsx:117 -#: src/view/screens/ProfileList.tsx:869 -#: src/view/screens/ProfileList.tsx:874 -msgid "Go Back" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:181 -#: src/view/com/auth/login/LoginForm.tsx:278 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:163 -msgid "Go to next" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:265 -msgid "Handle" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:93 -#: src/view/shell/Drawer.tsx:310 -msgid "Help" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:148 -msgid "Here is your app password." -msgstr "" - -#: src/view/com/notifications/FeedItem.tsx:316 -msgid "Hide" -msgstr "" - -#: src/view/com/notifications/FeedItem.tsx:308 -msgid "Hide user list" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:102 -#~ msgid "Hmm, some kind of issue occured when contacting the feed server. Please let the feed owner know about this issue." -#~ msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:110 -msgid "Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:98 -msgid "Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:104 -msgid "Hmm, the feed server appears to be offline. Please let the feed owner know about this issue." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:101 -msgid "Hmm, the feed server gave a bad response. Please let the feed owner know about this issue." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:95 -msgid "Hmm, we're having trouble finding this feed. It may have been deleted." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:87 -#~ msgid "Hmmm, we're having trouble finding this feed. It may have been deleted." -#~ msgstr "" - -#: src/view/shell/bottom-bar/BottomBar.tsx:124 -#: src/view/shell/desktop/LeftNav.tsx:305 -#: src/view/shell/Drawer.tsx:387 -#: src/view/shell/Drawer.tsx:388 -msgid "Home" -msgstr "" - -#: src/view/com/pager/FeedsTabBarMobile.tsx:99 -#: src/view/screens/PreferencesHomeFeed.tsx:95 -#: src/view/screens/Settings.tsx:481 -msgid "Home Feed Preferences" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:114 -msgid "Hosting provider" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:76 -#: src/view/com/auth/create/Step1.tsx:81 -msgid "Hosting provider address" -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:200 -msgid "I have a code" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:281 -msgid "I have my own domain" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:127 -msgid "If none are selected, suitable for all ages." -msgstr "" - -#: src/view/com/modals/AltImage.tsx:96 -msgid "Image alt text" -msgstr "" - -#: src/view/com/util/UserAvatar.tsx:304 -#: src/view/com/util/UserBanner.tsx:116 -msgid "Image options" -msgstr "" - -#: src/view/com/search/Suggestions.tsx:104 -#: src/view/com/search/Suggestions.tsx:115 -#~ msgid "In Your Network" -#~ msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:113 -msgid "Invalid username or password" -msgstr "" - -#: src/view/screens/Settings.tsx:383 -msgid "Invite" -msgstr "" - -#: src/view/com/modals/InviteCodes.tsx:91 -#: src/view/screens/Settings.tsx:371 -msgid "Invite a Friend" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:57 -msgid "Invite code" -msgstr "" - -#: src/view/com/auth/create/state.ts:136 -msgid "Invite code not accepted. Check that you input it correctly and try again." -msgstr "" - -#: src/view/shell/Drawer.tsx:629 -msgid "Invite codes: {invitesAvailable} available" -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:67 -msgid "Join the waitlist" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:68 -#: src/view/com/auth/create/Step2.tsx:72 -msgid "Join the waitlist." -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:124 -msgid "Join Waitlist" -msgstr "" - -#: src/view/com/composer/select-language/SelectLangBtn.tsx:104 -msgid "Language selection" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:88 -msgid "Language Settings" -msgstr "" - -#: src/view/screens/Settings.tsx:541 -msgid "Languages" -msgstr "" - -#: src/view/com/util/moderation/PostAlerts.tsx:47 -#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:65 -#: src/view/com/util/moderation/ScreenHider.tsx:88 -msgid "Learn More" -msgstr "" - -#: src/view/com/util/moderation/ContentHider.tsx:83 -#: src/view/com/util/moderation/PostAlerts.tsx:40 -#: src/view/com/util/moderation/PostHider.tsx:76 -#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:49 -#: src/view/com/util/moderation/ScreenHider.tsx:85 -msgid "Learn more about this warning" -msgstr "" - -#: src/view/screens/Moderation.tsx:239 -msgid "Learn more about what is public on Bluesky." -msgstr "" - -#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:82 -msgid "Leave them all unchecked to see any language." -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:49 -msgid "Leaving Bluesky" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:128 -#: src/view/com/auth/login/Login.tsx:144 -msgid "Let's get your password reset!" -msgstr "" - -#: src/view/com/util/UserAvatar.tsx:241 -#: src/view/com/util/UserBanner.tsx:60 -msgid "Library" -msgstr "" - -#: src/view/screens/Settings.tsx:405 -#~ msgid "Light" -#~ msgstr "" - -#: src/view/screens/ProfileFeed.tsx:643 -msgid "Like this feed" -msgstr "" - -#: src/view/screens/PostLikedBy.tsx:27 -#: src/view/screens/ProfileFeedLikedBy.tsx:27 -msgid "Liked by" -msgstr "" - -#: src/view/screens/Moderation.tsx:203 -#~ msgid "Limit the visibility of my account" -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:203 -msgid "Limit the visibility of my account to logged-out users" -msgstr "" - -#: src/view/com/modals/CreateOrEditList.tsx:186 -msgid "List Avatar" -msgstr "" - -#: src/view/com/modals/CreateOrEditList.tsx:199 -msgid "List Name" -msgstr "" - -#: src/view/shell/desktop/LeftNav.tsx:381 -#: src/view/shell/Drawer.tsx:479 -#: src/view/shell/Drawer.tsx:480 -msgid "Lists" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:250 -#: src/view/com/post-thread/PostThread.tsx:258 -msgid "Load more posts" -msgstr "" - -#: src/view/screens/Notifications.tsx:130 -msgid "Load new notifications" -msgstr "" - -#: src/view/com/feeds/FeedPage.tsx:185 -msgid "Load new posts" -msgstr "" - -#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:95 -msgid "Loading..." -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:50 -msgid "Local dev server" -msgstr "" - -#: src/view/screens/Moderation.tsx:134 -msgid "Logged-out users" -msgstr "" - -#: src/view/com/auth/login/ChooseAccountForm.tsx:133 -msgid "Login to account that is not listed" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:482 -msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!" -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:63 -msgid "Make sure this is where you intend to go!" -msgstr "" - -#: src/view/screens/Search/Search.tsx:503 -msgid "Menu" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:194 -#: src/view/screens/ProfileFeed.tsx:490 -msgid "Message from server" -msgstr "" - -#: src/view/screens/Moderation.tsx:63 -#: src/view/screens/Settings.tsx:563 -#: src/view/shell/desktop/LeftNav.tsx:399 -#: src/view/shell/Drawer.tsx:498 -#: src/view/shell/Drawer.tsx:499 -msgid "Moderation" -msgstr "" - -#: src/view/screens/Moderation.tsx:93 -msgid "Moderation lists" -msgstr "" - -#: src/view/screens/ModerationModlists.tsx:58 -msgid "Moderation Lists" -msgstr "" - -#: src/view/shell/desktop/Feeds.tsx:53 -msgid "More feeds" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:524 -#: src/view/screens/ProfileFeed.tsx:370 -#: src/view/screens/ProfileList.tsx:606 -msgid "More options" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:158 -#~ msgid "More post options" -#~ msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:346 -msgid "Mute Account" -msgstr "" - -#: src/view/screens/ProfileList.tsx:533 -msgid "Mute accounts" -msgstr "" - -#: src/view/screens/ProfileList.tsx:480 -msgid "Mute list" -msgstr "" - -#: src/view/screens/ProfileList.tsx:293 -msgid "Mute these accounts?" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:144 -msgid "Mute thread" -msgstr "" - -#: src/view/screens/Moderation.tsx:107 -msgid "Muted accounts" -msgstr "" - -#: src/view/screens/ModerationMutedAccounts.tsx:106 -msgid "Muted Accounts" -msgstr "" - -#: src/view/screens/ModerationMutedAccounts.tsx:114 -msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private." -msgstr "" - -#: src/view/screens/ProfileList.tsx:295 -msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them." -msgstr "" - -#: src/view/screens/Moderation.tsx:134 -#~ msgid "My Account" -#~ msgstr "" - -#: src/view/com/modals/BirthDateSettings.tsx:56 -msgid "My Birthday" -msgstr "" - -#: src/view/screens/Feeds.tsx:363 -msgid "My Feeds" -msgstr "" - -#: src/view/shell/desktop/LeftNav.tsx:67 -msgid "My Profile" -msgstr "" - -#: src/view/screens/Settings.tsx:520 -msgid "My Saved Feeds" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:177 -#: src/view/com/modals/CreateOrEditList.tsx:211 -msgid "Name" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72 -msgid "Never lose access to your followers and data." -msgstr "" - -#: src/view/screens/Lists.tsx:76 -#: src/view/screens/ModerationModlists.tsx:78 -msgid "New" -msgstr "" - -#: src/view/com/feeds/FeedPage.tsx:196 -#: src/view/screens/Feeds.tsx:510 -#: src/view/screens/Profile.tsx:389 -#: src/view/screens/ProfileFeed.tsx:451 -#: src/view/screens/ProfileList.tsx:212 -#: src/view/screens/ProfileList.tsx:244 -#: src/view/shell/desktop/LeftNav.tsx:254 -msgid "New post" -msgstr "" - -#: src/view/shell/desktop/LeftNav.tsx:264 -msgid "New Post" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:158 -#: src/view/com/auth/login/ForgotPasswordForm.tsx:174 -#: src/view/com/auth/login/ForgotPasswordForm.tsx:184 -#: src/view/com/auth/login/LoginForm.tsx:281 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:156 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:166 -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79 -msgid "Next" -msgstr "" - -#: src/view/com/lightbox/Lightbox.web.tsx:142 -msgid "Next image" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:191 -#: src/view/screens/PreferencesHomeFeed.tsx:226 -#: src/view/screens/PreferencesHomeFeed.tsx:263 -msgid "No" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:636 -#: src/view/screens/ProfileList.tsx:740 -msgid "No description" -msgstr "" - -#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:97 -msgid "No result" -msgstr "" - -#: src/view/screens/Feeds.tsx:452 -msgid "No results found for \"{query}\"" -msgstr "" - -#: src/view/com/modals/ListAddUser.tsx:142 -#: src/view/shell/desktop/Search.tsx:112 -#~ msgid "No results found for {0}" -#~ msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:127 -#: src/view/screens/Search/Search.tsx:270 -#: src/view/screens/Search/Search.tsx:298 -#: src/view/screens/Search/Search.tsx:581 -#: src/view/shell/desktop/Search.tsx:210 -msgid "No results found for {query}" -msgstr "" - -#: src/view/com/modals/Threadgate.tsx:82 -msgid "Nobody" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:136 -#~ msgid "Not Applicable" -#~ msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:135 -msgid "Not Applicable." -msgstr "" - -#: src/view/screens/Moderation.tsx:227 -msgid "Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users." -msgstr "" - -#: src/view/screens/Moderation.tsx:227 -#~ msgid "Note: Third-party apps that display Bluesky content may not respect this setting." -#~ msgstr "" - -#: src/view/screens/Notifications.tsx:97 -#: src/view/screens/Notifications.tsx:121 -#: src/view/shell/bottom-bar/BottomBar.tsx:195 -#: src/view/shell/desktop/LeftNav.tsx:363 -#: src/view/shell/Drawer.tsx:424 -#: src/view/shell/Drawer.tsx:425 -msgid "Notifications" -msgstr "" - -#: src/view/com/util/ErrorBoundary.tsx:34 -msgid "Oh no!" -msgstr "" - -#: src/view/com/auth/login/PasswordUpdatedForm.tsx:41 -msgid "Okay" -msgstr "" - -#: src/view/com/composer/Composer.tsx:341 -msgid "One or more images is missing alt text." -msgstr "" - -#: src/view/com/pager/FeedsTabBarMobile.tsx:79 -msgid "Open navigation" -msgstr "" - -#: src/view/screens/Settings.tsx:533 -msgid "Opens configurable language settings" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:146 -#: src/view/shell/Drawer.tsx:630 -msgid "Opens list of invite codes" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:279 -msgid "Opens modal for using custom domain" -msgstr "" - -#: src/view/screens/Settings.tsx:558 -msgid "Opens moderation settings" -msgstr "" - -#: src/view/screens/Settings.tsx:514 -msgid "Opens screen with all saved feeds" -msgstr "" - -#: src/view/screens/Settings.tsx:581 -msgid "Opens the app password settings page" -msgstr "" - -#: src/view/screens/Settings.tsx:473 -msgid "Opens the home feed preferences" -msgstr "" - -#: src/view/screens/Settings.tsx:664 -msgid "Opens the storybook page" -msgstr "" - -#: src/view/screens/Settings.tsx:644 -msgid "Opens the system log page" -msgstr "" - -#: src/view/screens/Settings.tsx:494 -msgid "Opens the threads preferences" -msgstr "" - -#: src/view/com/auth/login/ChooseAccountForm.tsx:138 -msgid "Other account" -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:88 -msgid "Other service" -msgstr "" - -#: src/view/com/composer/select-language/SelectLangBtn.tsx:91 -msgid "Other..." -msgstr "" - -#: src/view/screens/NotFound.tsx:42 -#: src/view/screens/NotFound.tsx:45 -msgid "Page not found" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:101 -#: src/view/com/auth/create/Step2.tsx:111 -#: src/view/com/auth/login/LoginForm.tsx:216 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:130 -#: src/view/com/modals/DeleteAccount.tsx:191 -msgid "Password" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:157 -msgid "Password updated" -msgstr "" - -#: src/view/com/auth/login/PasswordUpdatedForm.tsx:28 -msgid "Password updated!" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:121 -msgid "Pictures meant for adults." -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:89 -msgid "Pinned Feeds" -msgstr "" - -#: src/view/com/auth/create/state.ts:116 -msgid "Please choose your handle." -msgstr "" - -#: src/view/com/auth/create/state.ts:109 -msgid "Please choose your password." -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:67 -msgid "Please confirm your email before changing it. This is a temporary requirement while email-updating tools are added, and it will soon be removed." -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:140 -msgid "Please enter a unique name for this App Password or use our randomly generated one." -msgstr "" - -#: src/view/com/auth/create/state.ts:95 -msgid "Please enter your email." -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:180 -msgid "Please enter your password as well:" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:72 -#: src/view/com/modals/AppealLabel.tsx:75 -msgid "Please tell us why you think this decision was incorrect." -msgstr "" - -#: src/view/com/composer/Composer.tsx:324 -#: src/view/com/post-thread/PostThread.tsx:216 -#: src/view/screens/PostThread.tsx:77 -msgid "Post" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:375 -msgid "Post hidden" -msgstr "" - -#: src/view/com/composer/select-language/SelectLangBtn.tsx:87 -msgid "Post language" -msgstr "" - -#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:75 -msgid "Post Languages" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:427 -msgid "Post not found" -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:44 -msgid "Potentially Misleading Link" -msgstr "" - -#: src/view/com/lightbox/Lightbox.web.tsx:128 -msgid "Previous image" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:186 -msgid "Primary Language" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:91 -msgid "Prioritize Your Follows" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:75 -msgid "Privacy" -msgstr "" - -#: src/view/screens/PrivacyPolicy.tsx:29 -msgid "Privacy Policy" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:190 -msgid "Processing..." -msgstr "" - -#: src/view/shell/bottom-bar/BottomBar.tsx:237 -#: src/view/shell/Drawer.tsx:72 -#: src/view/shell/Drawer.tsx:533 -#: src/view/shell/Drawer.tsx:534 -msgid "Profile" -msgstr "" - -#: src/view/screens/Settings.tsx:789 -msgid "Protect your account by verifying your email." -msgstr "" - -#: src/view/screens/ModerationModlists.tsx:61 -msgid "Public, shareable lists of users to mute or block in bulk." -msgstr "" - -#: src/view/screens/Lists.tsx:61 -msgid "Public, shareable lists which can drive feeds." -msgstr "" - -#: src/view/com/modals/Repost.tsx:52 -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:58 -msgid "Quote post" -msgstr "" - -#: src/view/com/modals/Repost.tsx:56 -msgid "Quote Post" -msgstr "" - -#: src/view/com/modals/EditImage.tsx:236 -msgid "Ratios" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:73 -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:50 -#~ msgid "Recommended" -#~ msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:116 -msgid "Recommended Feeds" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:180 -msgid "Recommended Users" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:264 -#: src/view/com/modals/SelfLabel.tsx:83 -#: src/view/com/modals/UserAddRemoveLists.tsx:193 -#: src/view/com/util/UserAvatar.tsx:278 -#: src/view/com/util/UserBanner.tsx:89 -msgid "Remove" -msgstr "" - -#: src/view/com/feeds/FeedSourceCard.tsx:108 -msgid "Remove {0} from my feeds?" -msgstr "" - -#: src/view/com/util/AccountDropdownBtn.tsx:22 -msgid "Remove account" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:130 -msgid "Remove feed" -msgstr "" - -#: src/view/com/feeds/FeedSourceCard.tsx:107 -#: src/view/screens/ProfileFeed.tsx:280 -msgid "Remove from my feeds" -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:167 -msgid "Remove image" -msgstr "" - -#: src/view/com/composer/ExternalEmbed.tsx:70 -msgid "Remove image preview" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:131 -msgid "Remove this feed from your saved feeds?" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:199 -#: src/view/com/modals/UserAddRemoveLists.tsx:136 -msgid "Removed from list" -msgstr "" - -#: src/view/com/threadgate/WhoCanReply.tsx:74 -msgid "Replies to this thread are disabled" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:135 -msgid "Reply Filters" -msgstr "" - -#: src/view/com/modals/report/Modal.tsx:166 -msgid "Report {collectionName}" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:380 -msgid "Report Account" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:300 -msgid "Report feed" -msgstr "" - -#: src/view/screens/ProfileList.tsx:448 -msgid "Report List" -msgstr "" - -#: src/view/com/modals/report/SendReportButton.tsx:37 -#: src/view/com/util/forms/PostDropdownBtn.tsx:162 -msgid "Report post" -msgstr "" - -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48 -msgid "Repost" -msgstr "" - -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:94 -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:105 -msgid "Repost or quote post" -msgstr "" - -#: src/view/screens/PostRepostedBy.tsx:27 -msgid "Reposted by" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:181 -#: src/view/com/modals/ChangeEmail.tsx:183 -msgid "Request Change" -msgstr "" - -#: src/view/screens/Moderation.tsx:188 -#~ msgid "Request to limit the visibility of my account" -#~ msgstr "" - -#: src/view/screens/Settings.tsx:382 -#~ msgid "Require alt text before posting" -#~ msgstr "" - -#: src/view/com/auth/create/Step2.tsx:53 -msgid "Required for this provider" -msgstr "" - -#: src/view/com/auth/login/SetNewPasswordForm.tsx:108 -msgid "Reset code" -msgstr "" - -#: src/view/screens/Settings.tsx:686 -msgid "Reset onboarding state" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:98 -msgid "Reset password" -msgstr "" - -#: src/view/screens/Settings.tsx:676 -msgid "Reset preferences state" -msgstr "" - -#: src/view/screens/Settings.tsx:684 -msgid "Resets the onboarding state" -msgstr "" - -#: src/view/screens/Settings.tsx:674 -msgid "Resets the preferences state" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:167 -#: src/view/com/auth/create/CreateAccount.tsx:171 -#: src/view/com/auth/login/LoginForm.tsx:258 -#: src/view/com/auth/login/LoginForm.tsx:261 -#: src/view/com/util/error/ErrorMessage.tsx:55 -#: src/view/com/util/error/ErrorScreen.tsx:65 -msgid "Retry" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:169 -#~ msgid "Retry change handle" -#~ msgstr "" - -#: src/view/com/modals/AltImage.tsx:114 -#: src/view/com/modals/BirthDateSettings.tsx:93 -#: src/view/com/modals/BirthDateSettings.tsx:96 -#: src/view/com/modals/ChangeHandle.tsx:173 -#: src/view/com/modals/CreateOrEditList.tsx:249 -#: src/view/com/modals/CreateOrEditList.tsx:257 -#: src/view/com/modals/EditProfile.tsx:223 -msgid "Save" -msgstr "" - -#: src/view/com/modals/AltImage.tsx:105 -msgid "Save alt text" -msgstr "" - -#: src/view/com/modals/UserAddRemoveLists.tsx:212 -#~ msgid "Save changes" -#~ msgstr "" - -#: src/view/com/modals/EditProfile.tsx:231 -msgid "Save Changes" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:170 -msgid "Save handle change" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:144 -msgid "Save image crop" -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:122 -msgid "Saved Feeds" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:75 -#: src/view/com/util/forms/SearchInput.tsx:64 -#: src/view/screens/Search/Search.tsx:381 -#: src/view/screens/Search/Search.tsx:533 -#: src/view/shell/bottom-bar/BottomBar.tsx:146 -#: src/view/shell/desktop/LeftNav.tsx:323 -#: src/view/shell/desktop/Search.tsx:161 -#: src/view/shell/desktop/Search.tsx:170 -#: src/view/shell/Drawer.tsx:351 -#: src/view/shell/Drawer.tsx:352 -msgid "Search" -msgstr "" - -#: src/view/screens/Search/Search.tsx:390 -msgid "Search for posts and users." -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:110 -msgid "Security Step Required" -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:29 -msgid "See what's next" -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:75 -msgid "Select Bluesky Social" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:117 -msgid "Select from an existing account" -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:143 -msgid "Select service" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:280 -msgid "Select which languages you want your subscribed feeds to include. If none are selected, all languages will be shown." -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:97 -msgid "Select your app language for the default text to display in the app" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:189 -msgid "Select your preferred language for translations in your feed." -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:188 -msgid "Send Confirmation Email" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:127 -msgid "Send email" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:138 -msgid "Send Email" -msgstr "" - -#: src/view/shell/Drawer.tsx:284 -#: src/view/shell/Drawer.tsx:305 -msgid "Send feedback" -msgstr "" - -#: src/view/com/modals/report/SendReportButton.tsx:45 -msgid "Send Report" -msgstr "" - -#: src/view/com/auth/login/SetNewPasswordForm.tsx:78 -msgid "Set new password" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:216 -msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:113 -msgid "Set this setting to \"No\" to hide all replies from your feed." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:182 -msgid "Set this setting to \"No\" to hide all reposts from your feed." -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:116 -msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:252 -msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature." -msgstr "" - -#: src/view/screens/Settings.tsx:277 -#: src/view/shell/desktop/LeftNav.tsx:435 -#: src/view/shell/Drawer.tsx:554 -#: src/view/shell/Drawer.tsx:555 -msgid "Settings" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:125 -msgid "Sexual activity or erotic nudity." -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:314 -#: src/view/com/util/forms/PostDropdownBtn.tsx:126 -#: src/view/screens/ProfileList.tsx:407 -msgid "Share" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:312 -msgid "Share feed" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:276 -#~ msgid "Share link" -#~ msgstr "" - -#: src/view/screens/Settings.tsx:316 -msgid "Show" -msgstr "" - -#: src/view/com/util/moderation/ScreenHider.tsx:114 -msgid "Show anyway" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:249 -msgid "Show Posts from My Feeds" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:213 -msgid "Show Quote Posts" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:110 -msgid "Show Replies" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:94 -msgid "Show replies by people you follow before all other replies." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:179 -msgid "Show Reposts" -msgstr "" - -#: src/view/com/notifications/FeedItem.tsx:337 -msgid "Show users" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:98 -#: src/view/com/auth/SplashScreen.tsx:49 -#: src/view/shell/NavSignupCard.tsx:52 -#: src/view/shell/NavSignupCard.tsx:53 -msgid "Sign in" -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:52 -#: src/view/com/auth/SplashScreen.web.tsx:84 -msgid "Sign In" -msgstr "" - -#: src/view/com/auth/login/ChooseAccountForm.tsx:44 -msgid "Sign in as {0}" -msgstr "" - -#: src/view/com/auth/login/ChooseAccountForm.tsx:118 -#: src/view/com/auth/login/Login.tsx:116 -msgid "Sign in as..." -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:130 -msgid "Sign into" -msgstr "" - -#: src/view/com/modals/SwitchAccount.tsx:60 -#: src/view/com/modals/SwitchAccount.tsx:63 -msgid "Sign out" -msgstr "" - -#: src/view/shell/NavSignupCard.tsx:43 -#: src/view/shell/NavSignupCard.tsx:44 -#: src/view/shell/NavSignupCard.tsx:46 -msgid "Sign up" -msgstr "" - -#: src/view/shell/NavSignupCard.tsx:36 -msgid "Sign up or sign in to join the conversation" -msgstr "" - -#: src/view/screens/Settings.tsx:327 -msgid "Signed in as" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:33 -msgid "Skip" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:69 -msgid "Sort Replies" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:72 -msgid "Sort replies to the same post by:" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:122 -msgid "Square" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:90 -#: src/view/com/modals/ServerInput.tsx:62 -msgid "Staging" -msgstr "" - -#: src/view/screens/Settings.tsx:730 -msgid "Status page" -msgstr "" - -#: src/view/screens/Settings.tsx:666 -msgid "Storybook" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:101 -msgid "Submit" -msgstr ">>>>>>> cb8a33b6 (Fix translations)" - -#: src/view/screens/ProfileList.tsx:597 -msgid "Subscribe" -msgstr "" - -#: src/view/screens/ProfileList.tsx:593 -msgid "Subscribe to this list" -msgstr "" - -#: src/view/screens/Search/Search.tsx:354 -msgid "Suggested Follows" -msgstr "" - -#: src/view/screens/Support.tsx:30 -#: src/view/screens/Support.tsx:33 -msgid "Support" -msgstr "" - -#: src/view/com/modals/SwitchAccount.tsx:111 -msgid "Switch Account" -msgstr "" - -#: src/view/screens/Settings.tsx:398 -#~ msgid "System" -#~ msgstr "" - -#: src/view/screens/Settings.tsx:646 -msgid "System log" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:112 -msgid "Tall" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:84 -msgid "Terms" -msgstr "" - -#: src/view/screens/TermsOfService.tsx:29 -msgid "Terms of Service" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:70 -#: src/view/com/modals/report/InputIssueDetails.tsx:50 -msgid "Text input field" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:282 -msgid "The account will be able to interact with you after unblocking." -msgstr "" - -#: src/view/screens/CommunityGuidelines.tsx:36 -msgid "The Community Guidelines have been moved to <0/>" -msgstr "" - -#: src/view/screens/CopyrightPolicy.tsx:33 -msgid "The Copyright Policy has been moved to <0/>" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:430 -msgid "The post may have been deleted." -msgstr "" - -#: src/view/screens/PrivacyPolicy.tsx:33 -msgid "The Privacy Policy has been moved to <0/>" -msgstr "" - -#: src/view/screens/Support.tsx:36 -msgid "The support form has been moved. If you need help, please<0/> or visit {HELP_DESK_URL} to get in touch with us." -msgstr "" - -#: src/view/screens/TermsOfService.tsx:33 -msgid "The Terms of Service have been moved to" -msgstr "" - -#: src/view/com/util/ErrorBoundary.tsx:35 -msgid "There was an unexpected issue in the application. Please let us know if this happened to you!" -msgstr "" - -#: src/view/com/util/moderation/LabelInfo.tsx:45 -msgid "This {0} has been labeled." -msgstr "" - -#: src/view/com/util/moderation/ScreenHider.tsx:72 -msgid "This {screenDescription} has been flagged:" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:107 -msgid "This content is not viewable without a Bluesky account." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:113 -msgid "This feed is currently receiving high traffic and is temporarily unavailable. Please try again later." -msgstr "" - -#: src/view/com/modals/BirthDateSettings.tsx:61 -msgid "This information is not shared with other users." -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:105 -msgid "This is important in case you ever need to change your email or reset your password." -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:55 -msgid "This is the service that keeps you online." -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:56 -msgid "This link is taking you to the following website:" -msgstr "" - -#: src/view/com/post-thread/PostThreadItem.tsx:123 -msgid "This post has been deleted." -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:137 -msgid "This warning is only available for posts with media attached." -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:53 -#: src/view/screens/Settings.tsx:503 -msgid "Thread Preferences" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:113 -msgid "Threaded Mode" -msgstr "" - -#: src/view/com/util/forms/DropdownButton.tsx:230 -msgid "Toggle dropdown" -msgstr "" - -#: src/view/com/modals/EditImage.tsx:271 -msgid "Transformations" -msgstr "" - -#: src/view/com/post-thread/PostThreadItem.tsx:692 -#: src/view/com/post-thread/PostThreadItem.tsx:694 -#: src/view/com/util/forms/PostDropdownBtn.tsx:98 -msgid "Translate" -msgstr "" - -#: src/view/com/util/error/ErrorScreen.tsx:73 -msgid "Try again" -msgstr "" - -#: src/view/screens/ProfileList.tsx:495 -msgid "Un-block list" -msgstr "" - -#: src/view/screens/ProfileList.tsx:480 -msgid "Un-mute list" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:64 -#: src/view/com/auth/login/Login.tsx:76 -#: src/view/com/auth/login/LoginForm.tsx:117 -msgid "Unable to contact your service. Please check your Internet connection." -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:442 -#: src/view/com/profile/ProfileHeader.tsx:445 -msgid "Unblock" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:280 -#: src/view/com/profile/ProfileHeader.tsx:364 -msgid "Unblock Account" -msgstr "" - -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48 -msgid "Undo repost" -msgstr "" - -#: src/view/com/auth/create/state.ts:210 -msgid "Unfortunately, you do not meet the requirements to create an account." -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:345 -msgid "Unmute Account" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:144 -msgid "Unmute thread" -msgstr "" - -#: src/view/screens/ProfileList.tsx:463 -msgid "Unpin moderation list" -msgstr "" - -#: src/view/com/modals/UserAddRemoveLists.tsx:54 -msgid "Update {displayName} in Lists" -msgstr "" - -#: src/lib/hooks/useOTAUpdate.ts:15 -msgid "Update Available" -msgstr "" - -#: src/view/com/auth/login/SetNewPasswordForm.tsx:172 -msgid "Updating..." -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:453 -msgid "Upload a text file to:" -msgstr "" - -#: src/view/screens/AppPasswords.tsx:194 -msgid "Use app passwords to login to other Bluesky clients without giving full access to your account or password." -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:513 -msgid "Use default provider" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:150 -msgid "Use this to sign into the other app along with your handle." -msgstr "" - -#: src/view/com/modals/InviteCodes.tsx:197 -msgid "Used by:" -msgstr "" - -#: src/view/com/auth/create/Step3.tsx:38 -msgid "User handle" -msgstr "" - -#: src/view/screens/Lists.tsx:58 -msgid "User Lists" -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:170 -#: src/view/com/auth/login/LoginForm.tsx:187 -msgid "Username or email address" -msgstr "" - -#: src/view/screens/ProfileList.tsx:767 -msgid "Users" -msgstr "" - -#: src/view/com/threadgate/WhoCanReply.tsx:115 -msgid "Users followed by <0/>" -msgstr "" - -#: src/view/com/modals/Threadgate.tsx:106 -msgid "Users in \"{0}\"" -msgstr "" - -#: src/view/screens/Settings.tsx:750 -msgid "Verify email" -msgstr "" - -#: src/view/screens/Settings.tsx:775 -msgid "Verify my email" -msgstr "" - -#: src/view/screens/Settings.tsx:784 -msgid "Verify My Email" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:205 -#: src/view/com/modals/ChangeEmail.tsx:207 -msgid "Verify New Email" -msgstr "" - -#: src/view/screens/Log.tsx:52 -msgid "View debug entry" -msgstr "" - -#: src/view/com/profile/ProfileSubpageHeader.tsx:128 -msgid "View the avatar" -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:73 -msgid "Visit Site" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:125 -msgid "We're so excited to have you join us!" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:99 -#~ msgid "We're sorry, but this content is not viewable without a Bluesky account." -#~ msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:105 -#~ msgid "We're sorry, but this feed is currently receiving high traffic and is temporarily unavailable. Please try again later." -#~ msgstr "" - -#: src/view/screens/Search/Search.tsx:237 -msgid "We're sorry, but your search could not be completed. Please try again in a few minutes." -msgstr "" - -#: src/view/screens/NotFound.tsx:48 -msgid "We're sorry! We can't find the page you were looking for." -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:46 -msgid "Welcome to <0>Bluesky" -msgstr "" - -#: src/view/com/modals/report/Modal.tsx:169 -msgid "What is the issue with this {collectionName}?" -msgstr "" - -#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:78 -msgid "Which languages are used in this post?" -msgstr "" - -#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:77 -msgid "Which languages would you like to see in your algorithmic feeds?" -msgstr "" - -#: src/view/com/composer/threadgate/ThreadgateBtn.tsx:43 -#: src/view/com/modals/Threadgate.tsx:66 -msgid "Who can reply" -msgstr "" - -#: src/view/com/threadgate/WhoCanReply.tsx:79 -msgid "Who can reply?" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:102 -msgid "Wide" -msgstr "" - -#: src/view/com/composer/Composer.tsx:396 -msgid "Write post" -msgstr "" - -#: src/view/com/composer/Prompt.tsx:33 -msgid "Write your reply" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:192 -#: src/view/screens/PreferencesHomeFeed.tsx:227 -#: src/view/screens/PreferencesHomeFeed.tsx:262 -msgid "Yes" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:106 -msgid "You can change hosting providers at any time." -msgstr "" - -#: src/view/com/auth/login/Login.tsx:158 -#: src/view/com/auth/login/PasswordUpdatedForm.tsx:31 -msgid "You can now sign in with your new password." -msgstr "" - -#: src/view/com/modals/InviteCodes.tsx:64 -msgid "You don't have any invite codes yet! We'll send you some when you've been on Bluesky for a little longer." -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:102 -msgid "You don't have any pinned feeds." -msgstr "" - -#: src/view/screens/Feeds.tsx:383 -msgid "You don't have any saved feeds!" -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:135 -msgid "You don't have any saved feeds." -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:378 -msgid "You have blocked the author or you have been blocked by the author." -msgstr "" - -#: src/view/com/feeds/ProfileFeedgens.tsx:154 -msgid "You have no feeds." -msgstr "" - -#: src/view/com/lists/MyLists.tsx:89 -#: src/view/com/lists/ProfileLists.tsx:158 -msgid "You have no lists." -msgstr "" - -#: src/view/screens/ModerationBlockedAccounts.tsx:131 -msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account." -msgstr "" - -#: src/view/screens/AppPasswords.tsx:86 -msgid "You have not created any app passwords yet. You can create one by pressing the button below." -msgstr "" - -#: src/view/screens/ModerationMutedAccounts.tsx:130 -msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account." -msgstr "" - -#: src/view/com/auth/login/SetNewPasswordForm.tsx:81 -msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password." -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:43 -msgid "Your account" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:122 -msgid "Your birth date" -msgstr "" - -#: src/view/com/auth/create/state.ts:102 -msgid "Your email appears to be invalid." -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:107 -msgid "Your email has been saved! We'll be in touch soon." -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:125 -msgid "Your email has been updated but not verified. As a next step, please verify your new email." -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:100 -msgid "Your email has not yet been verified. This is an important security step which we recommend." -msgstr "" - -#: src/view/com/auth/create/Step3.tsx:42 -#: src/view/com/modals/ChangeHandle.tsx:270 -msgid "Your full handle will be" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:53 -msgid "Your hosting provider" -msgstr "" - -#: src/view/screens/Settings.tsx:402 -#: src/view/shell/desktop/RightNav.tsx:127 -#: src/view/shell/Drawer.tsx:644 -msgid "Your invite codes are hidden when logged in using an App Password" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:59 -msgid "Your posts, likes, and blocks are public. Mutes are private." -msgstr "" - -#: src/view/com/modals/SwitchAccount.tsx:78 -msgid "Your profile" -msgstr "" - -#: src/view/screens/Moderation.tsx:205 -#~ msgid "Your profile and account will not be visible to anyone visiting the Bluesky app without an account, or to account holders who are not logged in. Enabling this will not make your profile private." -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:220 -#~ msgid "Your profile and content will not be visible to anyone visiting the Bluesky app without an account. Enabling this will not make your profile private." -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:220 -msgid "Your profile and posts will not be visible to people visiting the Bluesky app or website without having an account and being logged in." -msgstr "" - -#: src/view/com/auth/create/Step3.tsx:28 -msgid "Your user handle" -msgstr "" diff --git a/src/locale/locales/en/messages.po b/src/locale/locales/en/messages.po index 6949b6ac0e..65303d9df3 100644 --- a/src/locale/locales/en/messages.po +++ b/src/locale/locales/en/messages.po @@ -21,7 +21,7 @@ msgstr "" #~ msgid ". This warning is only available for posts with media attached." #~ msgstr "" -#: src/view/shell/desktop/RightNav.tsx:158 +#: src/view/shell/desktop/RightNav.tsx:163 msgid "{0, plural, one {# invite code available} other {# invite codes available}}" msgstr "" @@ -33,7 +33,7 @@ msgstr "" msgid "{0} {purposeLabel} List" msgstr "" -#: src/view/shell/desktop/RightNav.tsx:141 +#: src/view/shell/desktop/RightNav.tsx:146 msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}" msgstr "" @@ -175,7 +175,7 @@ msgstr "" msgid "Alt text describes images for blind and low-vision users, and helps give context to everyone." msgstr "" -#: src/view/com/modals/VerifyEmail.tsx:110 +#: src/view/com/modals/VerifyEmail.tsx:118 msgid "An email has been sent to {0}. It includes a confirmation code which you can enter below." msgstr "" @@ -232,7 +232,7 @@ msgstr "" msgid "Are you sure?" msgstr "" -#: src/view/com/util/forms/PostDropdownBtn.tsx:185 +#: src/view/com/util/forms/PostDropdownBtn.tsx:188 msgid "Are you sure? This cannot be undone." msgstr "" @@ -287,7 +287,7 @@ msgstr "" msgid "Block these accounts?" msgstr "" -#: src/view/screens/Moderation.tsx:121 +#: src/view/screens/Moderation.tsx:123 msgid "Blocked accounts" msgstr "" @@ -331,7 +331,7 @@ msgstr "" msgid "Bluesky uses invites to build a healthier community. If you don't know anybody with an invite, you can sign up for the waitlist and we'll send one soon." msgstr "" -#: src/view/screens/Moderation.tsx:222 +#: src/view/screens/Moderation.tsx:225 msgid "Bluesky will not show your profile and posts to logged-out users. Other apps may not honor this request. This does not make your account private." msgstr "" @@ -344,7 +344,7 @@ msgid "Build version {0} {1}" msgstr "" #: src/view/com/composer/photos/OpenCameraBtn.tsx:60 -#: src/view/com/util/UserAvatar.tsx:217 +#: src/view/com/util/UserAvatar.tsx:221 #: src/view/com/util/UserBanner.tsx:38 msgid "Camera" msgstr "" @@ -420,7 +420,7 @@ msgstr "" msgid "Change Handle" msgstr "" -#: src/view/com/modals/VerifyEmail.tsx:133 +#: src/view/com/modals/VerifyEmail.tsx:141 msgid "Change my email" msgstr "" @@ -508,7 +508,7 @@ msgstr "" #: src/view/com/modals/AppealLabel.tsx:98 #: src/view/com/modals/Confirm.tsx:75 #: src/view/com/modals/SelfLabel.tsx:154 -#: src/view/com/modals/VerifyEmail.tsx:217 +#: src/view/com/modals/VerifyEmail.tsx:225 #: src/view/screens/PreferencesHomeFeed.tsx:299 #: src/view/screens/PreferencesThreads.tsx:153 msgid "Confirm" @@ -529,7 +529,7 @@ msgstr "" #: src/view/com/modals/ChangeEmail.tsx:157 #: src/view/com/modals/DeleteAccount.tsx:176 -#: src/view/com/modals/VerifyEmail.tsx:151 +#: src/view/com/modals/VerifyEmail.tsx:159 msgid "Confirmation code" msgstr "" @@ -538,7 +538,7 @@ msgstr "" msgid "Connecting..." msgstr "" -#: src/view/screens/Moderation.tsx:79 +#: src/view/screens/Moderation.tsx:81 msgid "Content filtering" msgstr "" @@ -577,7 +577,7 @@ msgstr "" msgid "Copy link to list" msgstr "" -#: src/view/com/util/forms/PostDropdownBtn.tsx:126 +#: src/view/com/util/forms/PostDropdownBtn.tsx:129 msgid "Copy link to post" msgstr "" @@ -585,7 +585,7 @@ msgstr "" msgid "Copy link to profile" msgstr "" -#: src/view/com/util/forms/PostDropdownBtn.tsx:112 +#: src/view/com/util/forms/PostDropdownBtn.tsx:115 msgid "Copy post text" msgstr "" @@ -656,11 +656,11 @@ msgstr "" msgid "Delete my account…" msgstr "" -#: src/view/com/util/forms/PostDropdownBtn.tsx:180 +#: src/view/com/util/forms/PostDropdownBtn.tsx:183 msgid "Delete post" msgstr "" -#: src/view/com/util/forms/PostDropdownBtn.tsx:184 +#: src/view/com/util/forms/PostDropdownBtn.tsx:187 msgid "Delete this post?" msgstr "" @@ -691,7 +691,7 @@ msgstr "" msgid "Discard draft" msgstr "" -#: src/view/screens/Moderation.tsx:204 +#: src/view/screens/Moderation.tsx:207 msgid "Discourage apps from showing my account to logged-out users" msgstr "" @@ -840,7 +840,7 @@ msgstr "" msgid "Feed Preferences" msgstr "" -#: src/view/shell/desktop/RightNav.tsx:64 +#: src/view/shell/desktop/RightNav.tsx:67 #: src/view/shell/Drawer.tsx:292 msgid "Feedback" msgstr "" @@ -936,7 +936,7 @@ msgstr "" msgid "Gallery" msgstr "" -#: src/view/com/modals/VerifyEmail.tsx:175 +#: src/view/com/modals/VerifyEmail.tsx:183 msgid "Get Started" msgstr "" @@ -964,7 +964,7 @@ msgstr "" msgid "Handle" msgstr "" -#: src/view/shell/desktop/RightNav.tsx:93 +#: src/view/shell/desktop/RightNav.tsx:96 #: src/view/shell/Drawer.tsx:302 msgid "Help" msgstr "" @@ -1031,7 +1031,7 @@ msgstr "" msgid "Hosting provider address" msgstr "" -#: src/view/com/modals/VerifyEmail.tsx:200 +#: src/view/com/modals/VerifyEmail.tsx:208 msgid "I have a code" msgstr "" @@ -1047,7 +1047,7 @@ msgstr "" msgid "Image alt text" msgstr "" -#: src/view/com/util/UserAvatar.tsx:304 +#: src/view/com/util/UserAvatar.tsx:308 #: src/view/com/util/UserBanner.tsx:116 msgid "Image options" msgstr "" @@ -1121,7 +1121,7 @@ msgstr "" msgid "Learn more about this warning" msgstr "" -#: src/view/screens/Moderation.tsx:239 +#: src/view/screens/Moderation.tsx:242 msgid "Learn more about what is public on Bluesky." msgstr "" @@ -1138,7 +1138,7 @@ msgstr "" msgid "Let's get your password reset!" msgstr "" -#: src/view/com/util/UserAvatar.tsx:241 +#: src/view/com/util/UserAvatar.tsx:245 #: src/view/com/util/UserBanner.tsx:60 msgid "Library" msgstr "" @@ -1208,7 +1208,7 @@ msgstr "" #~ msgid "Logged-out users" #~ msgstr "" -#: src/view/screens/Moderation.tsx:134 +#: src/view/screens/Moderation.tsx:136 msgid "Logged-out visibility" msgstr "" @@ -1245,7 +1245,7 @@ msgstr "" msgid "Message from server" msgstr "" -#: src/view/screens/Moderation.tsx:63 +#: src/view/screens/Moderation.tsx:64 #: src/view/screens/Settings.tsx:563 #: src/view/shell/desktop/LeftNav.tsx:391 #: src/view/shell/Drawer.tsx:490 @@ -1253,7 +1253,7 @@ msgstr "" msgid "Moderation" msgstr "" -#: src/view/screens/Moderation.tsx:93 +#: src/view/screens/Moderation.tsx:95 msgid "Moderation lists" msgstr "" @@ -1291,11 +1291,11 @@ msgstr "" msgid "Mute these accounts?" msgstr "" -#: src/view/com/util/forms/PostDropdownBtn.tsx:144 +#: src/view/com/util/forms/PostDropdownBtn.tsx:147 msgid "Mute thread" msgstr "" -#: src/view/screens/Moderation.tsx:107 +#: src/view/screens/Moderation.tsx:109 msgid "Muted accounts" msgstr "" @@ -1421,7 +1421,7 @@ msgstr "" #~ msgid "Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users." #~ msgstr "" -#: src/view/screens/Moderation.tsx:229 +#: src/view/screens/Moderation.tsx:232 msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites." msgstr "" @@ -1462,7 +1462,7 @@ msgstr "" msgid "Opens configurable language settings" msgstr "" -#: src/view/shell/desktop/RightNav.tsx:146 +#: src/view/shell/desktop/RightNav.tsx:151 #: src/view/shell/Drawer.tsx:622 msgid "Opens list of invite codes" msgstr "" @@ -1611,7 +1611,7 @@ msgstr "" msgid "Prioritize Your Follows" msgstr "" -#: src/view/shell/desktop/RightNav.tsx:75 +#: src/view/shell/desktop/RightNav.tsx:78 msgid "Privacy" msgstr "" @@ -1671,7 +1671,7 @@ msgstr "" #: src/view/com/modals/ListAddRemoveUsers.tsx:264 #: src/view/com/modals/SelfLabel.tsx:83 #: src/view/com/modals/UserAddRemoveLists.tsx:193 -#: src/view/com/util/UserAvatar.tsx:278 +#: src/view/com/util/UserAvatar.tsx:282 #: src/view/com/util/UserBanner.tsx:89 msgid "Remove" msgstr "" @@ -1744,7 +1744,7 @@ msgid "Report List" msgstr "" #: src/view/com/modals/report/SendReportButton.tsx:37 -#: src/view/com/util/forms/PostDropdownBtn.tsx:162 +#: src/view/com/util/forms/PostDropdownBtn.tsx:165 msgid "Report post" msgstr "" @@ -1898,7 +1898,7 @@ msgstr "" msgid "Select your preferred language for translations in your feed." msgstr "" -#: src/view/com/modals/VerifyEmail.tsx:188 +#: src/view/com/modals/VerifyEmail.tsx:196 msgid "Send Confirmation Email" msgstr "" @@ -1955,7 +1955,7 @@ msgid "Sexual activity or erotic nudity." msgstr "" #: src/view/com/profile/ProfileHeader.tsx:338 -#: src/view/com/util/forms/PostDropdownBtn.tsx:126 +#: src/view/com/util/forms/PostDropdownBtn.tsx:129 #: src/view/screens/ProfileList.tsx:407 msgid "Share" msgstr "" @@ -2075,7 +2075,7 @@ msgstr "" #: src/view/com/modals/AppealLabel.tsx:101 msgid "Submit" -msgstr ">>>>>>> cb8a33b6 (Fix translations)" +msgstr "Submit" #: src/view/screens/ProfileList.tsx:597 msgid "Subscribe" @@ -2110,7 +2110,7 @@ msgstr "" msgid "Tall" msgstr "" -#: src/view/shell/desktop/RightNav.tsx:84 +#: src/view/shell/desktop/RightNav.tsx:87 msgid "Terms" msgstr "" @@ -2175,7 +2175,7 @@ msgstr "" msgid "This information is not shared with other users." msgstr "" -#: src/view/com/modals/VerifyEmail.tsx:105 +#: src/view/com/modals/VerifyEmail.tsx:113 msgid "This is important in case you ever need to change your email or reset your password." msgstr "" @@ -2212,9 +2212,9 @@ msgstr "" msgid "Transformations" msgstr "" -#: src/view/com/post-thread/PostThreadItem.tsx:704 #: src/view/com/post-thread/PostThreadItem.tsx:706 -#: src/view/com/util/forms/PostDropdownBtn.tsx:98 +#: src/view/com/post-thread/PostThreadItem.tsx:708 +#: src/view/com/util/forms/PostDropdownBtn.tsx:101 msgid "Translate" msgstr "" @@ -2258,7 +2258,7 @@ msgstr "" msgid "Unmute Account" msgstr "" -#: src/view/com/util/forms/PostDropdownBtn.tsx:144 +#: src/view/com/util/forms/PostDropdownBtn.tsx:147 msgid "Unmute thread" msgstr "" @@ -2493,7 +2493,7 @@ msgstr "" msgid "Your email has been updated but not verified. As a next step, please verify your new email." msgstr "" -#: src/view/com/modals/VerifyEmail.tsx:100 +#: src/view/com/modals/VerifyEmail.tsx:108 msgid "Your email has not yet been verified. This is an important security step which we recommend." msgstr "" @@ -2507,7 +2507,7 @@ msgid "Your hosting provider" msgstr "" #: src/view/screens/Settings.tsx:402 -#: src/view/shell/desktop/RightNav.tsx:127 +#: src/view/shell/desktop/RightNav.tsx:132 #: src/view/shell/Drawer.tsx:636 msgid "Your invite codes are hidden when logged in using an App Password" msgstr "" diff --git a/src/locale/locales/es/messages.po b/src/locale/locales/es/messages.po deleted file mode 100644 index 04aef65a18..0000000000 --- a/src/locale/locales/es/messages.po +++ /dev/null @@ -1,2479 +0,0 @@ -msgid "" -msgstr "" -"POT-Creation-Date: 2023-11-06 12:28-0800\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: @lingui/cli\n" -"Language: es\n" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Plural-Forms: \n" - -#: src/view/screens/Profile.tsx:214 -#~ msgid "- end of feed -" -#~ msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:138 -#~ msgid ". This warning is only available for posts with media attached." -#~ msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:158 -msgid "{0, plural, one {# invite code available} other {# invite codes available}}" -msgstr "" - -#: src/view/com/modals/Repost.tsx:44 -msgid "{0}" -msgstr "" - -#: src/view/com/modals/CreateOrEditList.tsx:176 -msgid "{0} {purposeLabel} List" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:141 -msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}" -msgstr "" - -#: src/view/screens/Settings.tsx:407 -#: src/view/shell/Drawer.tsx:648 -msgid "{invitesAvailable} invite code available" -msgstr "" - -#: src/view/screens/Settings.tsx:409 -#: src/view/shell/Drawer.tsx:650 -msgid "{invitesAvailable} invite codes available" -msgstr "" - -#: src/view/screens/Search/Search.tsx:87 -msgid "{message}" -msgstr "" - -#: src/view/com/threadgate/WhoCanReply.tsx:130 -msgid "<0/> members" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:30 -msgid "<0>Choose your<1>Recommended<2>Feeds" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:37 -msgid "<0>Follow some<1>Recommended<2>Users" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:132 -#~ msgid "<0>Here is your app password. Use this to sign into the other app along with your handle." -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:212 -#~ msgid "<0>Note: This setting may not be respected by third-party apps that display Bluesky content." -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:212 -#~ msgid "<0>Note: Your profile and posts will remain publicly available. Third-party apps that display Bluesky content may not respect this setting." -#~ msgstr "" - -#: src/lib/hooks/useOTAUpdate.ts:16 -msgid "A new version of the app is available. Please update to continue using the app." -msgstr "" - -#: src/view/com/modals/EditImage.tsx:299 -#: src/view/screens/Settings.tsx:417 -msgid "Accessibility" -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:159 -#: src/view/screens/Settings.tsx:286 -msgid "Account" -msgstr "" - -#: src/view/com/util/AccountDropdownBtn.tsx:41 -msgid "Account options" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:264 -#: src/view/com/modals/UserAddRemoveLists.tsx:193 -#: src/view/screens/ProfileList.tsx:783 -msgid "Add" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:56 -msgid "Add a content warning" -msgstr "" - -#: src/view/screens/ProfileList.tsx:773 -msgid "Add a user to this list" -msgstr "" - -#: src/view/screens/Settings.tsx:355 -#: src/view/screens/Settings.tsx:364 -msgid "Add account" -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:119 -#: src/view/com/composer/photos/Gallery.tsx:180 -msgid "Add alt text" -msgstr "" - -#: src/view/com/modals/report/InputIssueDetails.tsx:41 -#: src/view/com/modals/report/Modal.tsx:191 -msgid "Add details" -msgstr "" - -#: src/view/com/modals/report/Modal.tsx:194 -msgid "Add details to report" -msgstr "" - -#: src/view/com/composer/Composer.tsx:425 -msgid "Add link card" -msgstr "" - -#: src/view/com/composer/Composer.tsx:428 -msgid "Add link card:" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:415 -msgid "Add the following DNS record to your domain:" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:329 -msgid "Add to Lists" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:280 -msgid "Add to my feeds" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:191 -#: src/view/com/modals/UserAddRemoveLists.tsx:128 -msgid "Added to list" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:164 -msgid "Adjust the number of likes a reply must have to be shown in your feed." -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:75 -msgid "Adult Content" -msgstr "" - -#: src/view/screens/Settings.tsx:569 -msgid "Advanced" -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:130 -msgid "ALT" -msgstr "" - -#: src/view/com/modals/EditImage.tsx:315 -msgid "Alt text" -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:209 -msgid "Alt text describes images for blind and low-vision users, and helps give context to everyone." -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:110 -msgid "An email has been sent to {0}. It includes a confirmation code which you can enter below." -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:119 -msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below." -msgstr "" - -#: src/view/com/notifications/FeedItem.tsx:236 -msgid "and" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:94 -msgid "App Language" -msgstr "" - -#: src/view/screens/Settings.tsx:589 -msgid "App passwords" -msgstr "" - -#: src/view/screens/AppPasswords.tsx:186 -msgid "App Passwords" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:65 -msgid "Appeal Decision" -msgstr "" - -#: src/view/com/util/moderation/LabelInfo.tsx:51 -msgid "Appeal this decision" -msgstr "" - -#: src/view/com/util/moderation/LabelInfo.tsx:55 -msgid "Appeal this decision." -msgstr "" - -#: src/view/screens/Settings.tsx:432 -msgid "Appearance" -msgstr "" - -#: src/view/screens/Moderation.tsx:206 -#~ msgid "Apps that respect this setting, including the official Bluesky app and bsky.app website, won't show your content to logged out users." -#~ msgstr "" - -#: src/view/screens/AppPasswords.tsx:223 -msgid "Are you sure you want to delete the app password \"{name}\"?" -msgstr "" - -#: src/view/com/composer/Composer.tsx:139 -msgid "Are you sure you'd like to discard this draft?" -msgstr "" - -#: src/view/screens/ProfileList.tsx:375 -msgid "Are you sure?" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:185 -msgid "Are you sure? This cannot be undone." -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:123 -msgid "Artistic or non-erotic nudity." -msgstr "" - -#: src/view/screens/Moderation.tsx:189 -#~ msgid "Ask apps to limit the visibility of my account" -#~ msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:145 -#: src/view/com/auth/login/ChooseAccountForm.tsx:151 -#: src/view/com/auth/login/ForgotPasswordForm.tsx:166 -#: src/view/com/auth/login/LoginForm.tsx:249 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:148 -#: src/view/com/modals/report/InputIssueDetails.tsx:45 -#: src/view/com/post-thread/PostThread.tsx:385 -#: src/view/com/post-thread/PostThread.tsx:435 -#: src/view/com/post-thread/PostThread.tsx:443 -#: src/view/com/profile/ProfileHeader.tsx:648 -msgid "Back" -msgstr "" - -#: src/view/screens/Settings.tsx:461 -msgid "Basics" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:131 -#: src/view/com/modals/BirthDateSettings.tsx:72 -msgid "Birthday" -msgstr "" - -#: src/view/screens/Settings.tsx:312 -msgid "Birthday:" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:258 -#: src/view/com/profile/ProfileHeader.tsx:365 -msgid "Block Account" -msgstr "" - -#: src/view/screens/ProfileList.tsx:545 -msgid "Block accounts" -msgstr "" - -#: src/view/screens/ProfileList.tsx:495 -msgid "Block list" -msgstr "" - -#: src/view/screens/ProfileList.tsx:330 -msgid "Block these accounts?" -msgstr "" - -#: src/view/screens/Moderation.tsx:121 -msgid "Blocked accounts" -msgstr "" - -#: src/view/screens/ModerationBlockedAccounts.tsx:106 -msgid "Blocked Accounts" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:260 -msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you." -msgstr "" - -#: src/view/screens/ModerationBlockedAccounts.tsx:114 -msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours." -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:241 -msgid "Blocked post." -msgstr "" - -#: src/view/screens/ProfileList.tsx:332 -msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you." -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:26 -msgid "Bluesky" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:80 -msgid "Bluesky is flexible." -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:69 -msgid "Bluesky is open." -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:56 -msgid "Bluesky is public." -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:70 -msgid "Bluesky uses invites to build a healthier community. If you don't know anybody with an invite, you can sign up for the waitlist and we'll send one soon." -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:78 -msgid "Bluesky.Social" -msgstr "" - -#: src/view/screens/Settings.tsx:718 -msgid "Build version {0} {1}" -msgstr "" - -#: src/view/com/composer/photos/OpenCameraBtn.tsx:60 -#: src/view/com/util/UserAvatar.tsx:217 -#: src/view/com/util/UserBanner.tsx:38 -msgid "Camera" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:214 -msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long." -msgstr "" - -#: src/view/com/composer/Composer.tsx:278 -#: src/view/com/composer/Composer.tsx:281 -#: src/view/com/modals/AltImage.tsx:127 -#: src/view/com/modals/ChangeEmail.tsx:218 -#: src/view/com/modals/ChangeEmail.tsx:220 -#: src/view/com/modals/Confirm.tsx:88 -#: src/view/com/modals/CreateOrEditList.tsx:267 -#: src/view/com/modals/CreateOrEditList.tsx:272 -#: src/view/com/modals/DeleteAccount.tsx:150 -#: src/view/com/modals/DeleteAccount.tsx:223 -#: src/view/com/modals/EditImage.tsx:323 -#: src/view/com/modals/EditProfile.tsx:248 -#: src/view/com/modals/LinkWarning.tsx:85 -#: src/view/com/modals/Repost.tsx:73 -#: src/view/com/modals/Waitlist.tsx:136 -#: src/view/screens/Search/Search.tsx:558 -#: src/view/shell/desktop/Search.tsx:182 -msgid "Cancel" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:146 -#: src/view/com/modals/DeleteAccount.tsx:219 -msgid "Cancel account deletion" -msgstr "" - -#: src/view/com/modals/AltImage.tsx:122 -msgid "Cancel add image alt text" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:149 -msgid "Cancel change handle" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:134 -msgid "Cancel image crop" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:243 -msgid "Cancel profile editing" -msgstr "" - -#: src/view/com/modals/Repost.tsx:64 -msgid "Cancel quote post" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:87 -#: src/view/shell/desktop/Search.tsx:178 -msgid "Cancel search" -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:132 -msgid "Cancel waitlist signup" -msgstr "" - -#: src/view/screens/Settings.tsx:306 -msgid "Change" -msgstr "" - -#: src/view/screens/Settings.tsx:601 -#: src/view/screens/Settings.tsx:610 -msgid "Change handle" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:161 -msgid "Change Handle" -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:133 -msgid "Change my email" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:109 -msgid "Change Your Email" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:121 -msgid "Check out some recommended feeds. Tap + to add them to your list of pinned feeds." -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:185 -msgid "Check out some recommended users. Follow them to see similar users." -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:163 -msgid "Check your inbox for an email with the confirmation code to enter below:" -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:38 -msgid "Choose Service" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:83 -msgid "Choose the algorithms that power your experience with custom feeds." -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:65 -#~ msgid "Choose your" -#~ msgstr "" - -#: src/view/com/auth/create/Step2.tsx:106 -msgid "Choose your password" -msgstr "" - -#: src/view/screens/Settings.tsx:694 -msgid "Clear all legacy storage data" -msgstr "" - -#: src/view/screens/Settings.tsx:696 -msgid "Clear all legacy storage data (restart after this)" -msgstr "" - -#: src/view/screens/Settings.tsx:706 -msgid "Clear all storage data" -msgstr "" - -#: src/view/screens/Settings.tsx:708 -msgid "Clear all storage data (restart after this)" -msgstr "" - -#: src/view/com/util/forms/SearchInput.tsx:73 -#: src/view/screens/Search/Search.tsx:543 -msgid "Clear search query" -msgstr "" - -#: src/view/com/auth/login/PasswordUpdatedForm.tsx:38 -msgid "Close alert" -msgstr "" - -#: src/view/com/util/BottomSheetCustomBackdrop.tsx:33 -msgid "Close bottom drawer" -msgstr "" - -#: src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx:26 -msgid "Close image" -msgstr "" - -#: src/view/com/lightbox/Lightbox.web.tsx:112 -msgid "Close image viewer" -msgstr "" - -#: src/view/shell/index.web.tsx:49 -msgid "Close navigation footer" -msgstr "" - -#: src/view/screens/CommunityGuidelines.tsx:32 -msgid "Community Guidelines" -msgstr "" - -#: src/view/com/composer/Prompt.tsx:24 -msgid "Compose reply" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:98 -#: src/view/com/modals/Confirm.tsx:75 -#: src/view/com/modals/SelfLabel.tsx:154 -#: src/view/com/modals/VerifyEmail.tsx:217 -#: src/view/screens/PreferencesHomeFeed.tsx:299 -#: src/view/screens/PreferencesThreads.tsx:153 -msgid "Confirm" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:193 -#: src/view/com/modals/ChangeEmail.tsx:195 -msgid "Confirm Change" -msgstr "" - -#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:34 -msgid "Confirm content language settings" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:209 -msgid "Confirm delete account" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:157 -#: src/view/com/modals/DeleteAccount.tsx:176 -#: src/view/com/modals/VerifyEmail.tsx:151 -msgid "Confirmation code" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:178 -#: src/view/com/auth/login/LoginForm.tsx:268 -msgid "Connecting..." -msgstr "" - -#: src/view/screens/Moderation.tsx:79 -msgid "Content filtering" -msgstr "" - -#: src/view/com/modals/ContentFilteringSettings.tsx:44 -msgid "Content Filtering" -msgstr "" - -#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:74 -#: src/view/screens/LanguageSettings.tsx:277 -msgid "Content Languages" -msgstr "" - -#: src/view/com/util/moderation/ScreenHider.tsx:69 -msgid "Content Warning" -msgstr "" - -#: src/view/com/composer/labels/LabelsBtn.tsx:31 -msgid "Content warnings" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148 -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209 -msgid "Continue" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:193 -#: src/view/com/modals/InviteCodes.tsx:179 -msgid "Copied" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:186 -msgid "Copy" -msgstr "" - -#: src/view/screens/ProfileList.tsx:407 -msgid "Copy link to list" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:126 -msgid "Copy link to post" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:314 -msgid "Copy link to profile" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:112 -msgid "Copy post text" -msgstr "" - -#: src/view/screens/CopyrightPolicy.tsx:29 -msgid "Copyright Policy" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:103 -msgid "Could not load feed" -msgstr "" - -#: src/view/screens/ProfileList.tsx:860 -msgid "Could not load list" -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:41 -msgid "Create a new account" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:124 -msgid "Create Account" -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:38 -msgid "Create new account" -msgstr "" - -#: src/view/screens/AppPasswords.tsx:248 -msgid "Created {0}" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:387 -#: src/view/com/modals/ServerInput.tsx:102 -msgid "Custom domain" -msgstr "" - -#: src/view/screens/Settings.tsx:615 -msgid "Danger Zone" -msgstr "" - -#: src/view/screens/Settings.tsx:411 -#~ msgid "Dark" -#~ msgstr "" - -#: src/view/screens/Settings.tsx:622 -msgid "Delete account" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:83 -msgid "Delete Account" -msgstr "" - -#: src/view/screens/AppPasswords.tsx:221 -#: src/view/screens/AppPasswords.tsx:241 -msgid "Delete app password" -msgstr "" - -#: src/view/screens/ProfileList.tsx:374 -#: src/view/screens/ProfileList.tsx:434 -msgid "Delete List" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:212 -msgid "Delete my account" -msgstr "" - -#: src/view/screens/Settings.tsx:632 -msgid "Delete my account…" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:180 -msgid "Delete post" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:184 -msgid "Delete this post?" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:233 -msgid "Deleted post." -msgstr "" - -#: src/view/com/modals/CreateOrEditList.tsx:218 -#: src/view/com/modals/CreateOrEditList.tsx:234 -#: src/view/com/modals/EditProfile.tsx:197 -#: src/view/com/modals/EditProfile.tsx:209 -msgid "Description" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:96 -msgid "Dev Server" -msgstr "" - -#: src/view/screens/Settings.tsx:637 -msgid "Developer Tools" -msgstr "" - -#: src/view/com/composer/Composer.tsx:140 -msgid "Discard" -msgstr "" - -#: src/view/com/composer/Composer.tsx:134 -msgid "Discard draft" -msgstr "" - -#: src/view/screens/Feeds.tsx:405 -msgid "Discover new feeds" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:191 -msgid "Display name" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:179 -msgid "Display Name" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:485 -msgid "Domain verified!" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86 -#: src/view/com/modals/ContentFilteringSettings.tsx:88 -#: src/view/com/modals/ContentFilteringSettings.tsx:96 -#: src/view/com/modals/crop-image/CropImage.web.tsx:152 -#: src/view/com/modals/EditImage.tsx:333 -#: src/view/com/modals/ListAddRemoveUsers.tsx:142 -#: src/view/com/modals/SelfLabel.tsx:157 -#: src/view/com/modals/UserAddRemoveLists.tsx:79 -#: src/view/screens/PreferencesHomeFeed.tsx:302 -#: src/view/screens/PreferencesThreads.tsx:156 -msgid "Done" -msgstr "" - -#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:42 -msgid "Done{extraText}" -msgstr "" - -#: src/view/com/modals/InviteCodes.tsx:94 -msgid "Each code works once. You'll receive more invite codes periodically." -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:144 -#: src/view/com/modals/EditImage.tsx:207 -msgid "Edit image" -msgstr "" - -#: src/view/screens/ProfileList.tsx:422 -msgid "Edit list details" -msgstr "" - -#: src/view/screens/Feeds.tsx:367 -#: src/view/screens/SavedFeeds.tsx:85 -msgid "Edit My Feeds" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:151 -msgid "Edit my profile" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:429 -msgid "Edit profile" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:432 -msgid "Edit Profile" -msgstr "" - -#: src/view/screens/Feeds.tsx:330 -msgid "Edit Saved Feeds" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:90 -#: src/view/com/auth/login/ForgotPasswordForm.tsx:148 -#: src/view/com/modals/ChangeEmail.tsx:141 -#: src/view/com/modals/Waitlist.tsx:88 -msgid "Email" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:81 -msgid "Email address" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:111 -msgid "Email Updated" -msgstr "" - -#: src/view/screens/Settings.tsx:290 -msgid "Email:" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:138 -msgid "Enable this setting to only see replies between people you follow." -msgstr "" - -#: src/view/screens/Profile.tsx:472 -msgid "End of feed" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:71 -msgid "Enter the address of your provider:" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:369 -msgid "Enter the domain you want to use" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:101 -msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password." -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:86 -msgid "Enter your email address" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:117 -msgid "Enter your new email address below." -msgstr "" - -#: src/view/com/auth/login/Login.tsx:99 -msgid "Enter your username and password" -msgstr "" - -#: src/view/screens/Search/Search.tsx:105 -msgid "Error:" -msgstr "" - -#: src/view/com/modals/Threadgate.tsx:76 -msgid "Everybody" -msgstr "" - -#: src/view/com/lightbox/Lightbox.web.tsx:156 -msgid "Expand alt text" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109 -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141 -msgid "Failed to load recommended feeds" -msgstr "" - -#: src/view/screens/Feeds.tsx:559 -msgid "Feed offline" -msgstr "" - -#: src/view/com/feeds/FeedPage.tsx:140 -msgid "Feed Preferences" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:64 -#: src/view/shell/Drawer.tsx:300 -msgid "Feedback" -msgstr "" - -#: src/view/screens/Feeds.tsx:475 -#: src/view/shell/bottom-bar/BottomBar.tsx:168 -#: src/view/shell/desktop/LeftNav.tsx:341 -#: src/view/shell/Drawer.tsx:463 -#: src/view/shell/Drawer.tsx:464 -msgid "Feeds" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:57 -msgid "Feeds are created by users to curate content. Choose some feeds that you find interesting." -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:156 -msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information." -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:150 -msgid "Finding similar accounts..." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:102 -msgid "Fine-tune the content you see on your home screen." -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:60 -msgid "Fine-tune the discussion threads." -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:514 -msgid "Follow" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:42 -#~ msgid "Follow some" -#~ msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:64 -msgid "Follow some users to get started. We can recommend you more users based on who you find interesting." -msgstr "" - -#: src/view/com/modals/Threadgate.tsx:98 -msgid "Followed users" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:145 -msgid "Followed users only" -msgstr "" - -#: src/view/screens/ProfileFollowers.tsx:25 -msgid "Followers" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:600 -msgid "following" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:498 -#: src/view/screens/ProfileFollows.tsx:25 -msgid "Following" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:547 -msgid "Follows you" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:107 -msgid "For security reasons, we'll need to send a confirmation code to your email address." -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:207 -msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one." -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:231 -msgid "Forgot" -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:228 -msgid "Forgot password" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:127 -#: src/view/com/auth/login/Login.tsx:143 -msgid "Forgot Password" -msgstr "" - -#: src/view/com/composer/photos/SelectPhotoBtn.tsx:43 -msgid "Gallery" -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:175 -msgid "Get Started" -msgstr "" - -#: src/view/com/auth/LoggedOut.tsx:68 -#: src/view/com/auth/LoggedOut.tsx:69 -#: src/view/com/util/moderation/ScreenHider.tsx:105 -#: src/view/shell/desktop/LeftNav.tsx:106 -msgid "Go back" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:112 -#: src/view/screens/ProfileFeed.tsx:117 -#: src/view/screens/ProfileList.tsx:869 -#: src/view/screens/ProfileList.tsx:874 -msgid "Go Back" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:181 -#: src/view/com/auth/login/LoginForm.tsx:278 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:163 -msgid "Go to next" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:265 -msgid "Handle" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:93 -#: src/view/shell/Drawer.tsx:310 -msgid "Help" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:148 -msgid "Here is your app password." -msgstr "" - -#: src/view/com/notifications/FeedItem.tsx:316 -msgid "Hide" -msgstr "" - -#: src/view/com/notifications/FeedItem.tsx:308 -msgid "Hide user list" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:102 -#~ msgid "Hmm, some kind of issue occured when contacting the feed server. Please let the feed owner know about this issue." -#~ msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:110 -msgid "Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:98 -msgid "Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:104 -msgid "Hmm, the feed server appears to be offline. Please let the feed owner know about this issue." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:101 -msgid "Hmm, the feed server gave a bad response. Please let the feed owner know about this issue." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:95 -msgid "Hmm, we're having trouble finding this feed. It may have been deleted." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:87 -#~ msgid "Hmmm, we're having trouble finding this feed. It may have been deleted." -#~ msgstr "" - -#: src/view/shell/bottom-bar/BottomBar.tsx:124 -#: src/view/shell/desktop/LeftNav.tsx:305 -#: src/view/shell/Drawer.tsx:387 -#: src/view/shell/Drawer.tsx:388 -msgid "Home" -msgstr "" - -#: src/view/com/pager/FeedsTabBarMobile.tsx:99 -#: src/view/screens/PreferencesHomeFeed.tsx:95 -#: src/view/screens/Settings.tsx:481 -msgid "Home Feed Preferences" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:114 -msgid "Hosting provider" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:76 -#: src/view/com/auth/create/Step1.tsx:81 -msgid "Hosting provider address" -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:200 -msgid "I have a code" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:281 -msgid "I have my own domain" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:127 -msgid "If none are selected, suitable for all ages." -msgstr "" - -#: src/view/com/modals/AltImage.tsx:96 -msgid "Image alt text" -msgstr "" - -#: src/view/com/util/UserAvatar.tsx:304 -#: src/view/com/util/UserBanner.tsx:116 -msgid "Image options" -msgstr "" - -#: src/view/com/search/Suggestions.tsx:104 -#: src/view/com/search/Suggestions.tsx:115 -#~ msgid "In Your Network" -#~ msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:113 -msgid "Invalid username or password" -msgstr "" - -#: src/view/screens/Settings.tsx:383 -msgid "Invite" -msgstr "" - -#: src/view/com/modals/InviteCodes.tsx:91 -#: src/view/screens/Settings.tsx:371 -msgid "Invite a Friend" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:57 -msgid "Invite code" -msgstr "" - -#: src/view/com/auth/create/state.ts:136 -msgid "Invite code not accepted. Check that you input it correctly and try again." -msgstr "" - -#: src/view/shell/Drawer.tsx:629 -msgid "Invite codes: {invitesAvailable} available" -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:67 -msgid "Join the waitlist" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:68 -#: src/view/com/auth/create/Step2.tsx:72 -msgid "Join the waitlist." -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:124 -msgid "Join Waitlist" -msgstr "" - -#: src/view/com/composer/select-language/SelectLangBtn.tsx:104 -msgid "Language selection" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:88 -msgid "Language Settings" -msgstr "" - -#: src/view/screens/Settings.tsx:541 -msgid "Languages" -msgstr "" - -#: src/view/com/util/moderation/PostAlerts.tsx:47 -#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:65 -#: src/view/com/util/moderation/ScreenHider.tsx:88 -msgid "Learn More" -msgstr "" - -#: src/view/com/util/moderation/ContentHider.tsx:83 -#: src/view/com/util/moderation/PostAlerts.tsx:40 -#: src/view/com/util/moderation/PostHider.tsx:76 -#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:49 -#: src/view/com/util/moderation/ScreenHider.tsx:85 -msgid "Learn more about this warning" -msgstr "" - -#: src/view/screens/Moderation.tsx:239 -msgid "Learn more about what is public on Bluesky." -msgstr "" - -#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:82 -msgid "Leave them all unchecked to see any language." -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:49 -msgid "Leaving Bluesky" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:128 -#: src/view/com/auth/login/Login.tsx:144 -msgid "Let's get your password reset!" -msgstr "" - -#: src/view/com/util/UserAvatar.tsx:241 -#: src/view/com/util/UserBanner.tsx:60 -msgid "Library" -msgstr "" - -#: src/view/screens/Settings.tsx:405 -#~ msgid "Light" -#~ msgstr "" - -#: src/view/screens/ProfileFeed.tsx:643 -msgid "Like this feed" -msgstr "" - -#: src/view/screens/PostLikedBy.tsx:27 -#: src/view/screens/ProfileFeedLikedBy.tsx:27 -msgid "Liked by" -msgstr "" - -#: src/view/screens/Moderation.tsx:203 -#~ msgid "Limit the visibility of my account" -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:203 -msgid "Limit the visibility of my account to logged-out users" -msgstr "" - -#: src/view/com/modals/CreateOrEditList.tsx:186 -msgid "List Avatar" -msgstr "" - -#: src/view/com/modals/CreateOrEditList.tsx:199 -msgid "List Name" -msgstr "" - -#: src/view/shell/desktop/LeftNav.tsx:381 -#: src/view/shell/Drawer.tsx:479 -#: src/view/shell/Drawer.tsx:480 -msgid "Lists" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:250 -#: src/view/com/post-thread/PostThread.tsx:258 -msgid "Load more posts" -msgstr "" - -#: src/view/screens/Notifications.tsx:130 -msgid "Load new notifications" -msgstr "" - -#: src/view/com/feeds/FeedPage.tsx:185 -msgid "Load new posts" -msgstr "" - -#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:95 -msgid "Loading..." -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:50 -msgid "Local dev server" -msgstr "" - -#: src/view/screens/Moderation.tsx:134 -msgid "Logged-out users" -msgstr "" - -#: src/view/com/auth/login/ChooseAccountForm.tsx:133 -msgid "Login to account that is not listed" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:482 -msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!" -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:63 -msgid "Make sure this is where you intend to go!" -msgstr "" - -#: src/view/screens/Search/Search.tsx:503 -msgid "Menu" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:194 -#: src/view/screens/ProfileFeed.tsx:490 -msgid "Message from server" -msgstr "" - -#: src/view/screens/Moderation.tsx:63 -#: src/view/screens/Settings.tsx:563 -#: src/view/shell/desktop/LeftNav.tsx:399 -#: src/view/shell/Drawer.tsx:498 -#: src/view/shell/Drawer.tsx:499 -msgid "Moderation" -msgstr "" - -#: src/view/screens/Moderation.tsx:93 -msgid "Moderation lists" -msgstr "" - -#: src/view/screens/ModerationModlists.tsx:58 -msgid "Moderation Lists" -msgstr "" - -#: src/view/shell/desktop/Feeds.tsx:53 -msgid "More feeds" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:524 -#: src/view/screens/ProfileFeed.tsx:370 -#: src/view/screens/ProfileList.tsx:606 -msgid "More options" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:158 -#~ msgid "More post options" -#~ msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:346 -msgid "Mute Account" -msgstr "" - -#: src/view/screens/ProfileList.tsx:533 -msgid "Mute accounts" -msgstr "" - -#: src/view/screens/ProfileList.tsx:480 -msgid "Mute list" -msgstr "" - -#: src/view/screens/ProfileList.tsx:293 -msgid "Mute these accounts?" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:144 -msgid "Mute thread" -msgstr "" - -#: src/view/screens/Moderation.tsx:107 -msgid "Muted accounts" -msgstr "" - -#: src/view/screens/ModerationMutedAccounts.tsx:106 -msgid "Muted Accounts" -msgstr "" - -#: src/view/screens/ModerationMutedAccounts.tsx:114 -msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private." -msgstr "" - -#: src/view/screens/ProfileList.tsx:295 -msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them." -msgstr "" - -#: src/view/screens/Moderation.tsx:134 -#~ msgid "My Account" -#~ msgstr "" - -#: src/view/com/modals/BirthDateSettings.tsx:56 -msgid "My Birthday" -msgstr "" - -#: src/view/screens/Feeds.tsx:363 -msgid "My Feeds" -msgstr "" - -#: src/view/shell/desktop/LeftNav.tsx:67 -msgid "My Profile" -msgstr "" - -#: src/view/screens/Settings.tsx:520 -msgid "My Saved Feeds" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:177 -#: src/view/com/modals/CreateOrEditList.tsx:211 -msgid "Name" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72 -msgid "Never lose access to your followers and data." -msgstr "" - -#: src/view/screens/Lists.tsx:76 -#: src/view/screens/ModerationModlists.tsx:78 -msgid "New" -msgstr "" - -#: src/view/com/feeds/FeedPage.tsx:196 -#: src/view/screens/Feeds.tsx:510 -#: src/view/screens/Profile.tsx:389 -#: src/view/screens/ProfileFeed.tsx:451 -#: src/view/screens/ProfileList.tsx:212 -#: src/view/screens/ProfileList.tsx:244 -#: src/view/shell/desktop/LeftNav.tsx:254 -msgid "New post" -msgstr "" - -#: src/view/shell/desktop/LeftNav.tsx:264 -msgid "New Post" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:158 -#: src/view/com/auth/login/ForgotPasswordForm.tsx:174 -#: src/view/com/auth/login/ForgotPasswordForm.tsx:184 -#: src/view/com/auth/login/LoginForm.tsx:281 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:156 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:166 -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79 -msgid "Next" -msgstr "" - -#: src/view/com/lightbox/Lightbox.web.tsx:142 -msgid "Next image" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:191 -#: src/view/screens/PreferencesHomeFeed.tsx:226 -#: src/view/screens/PreferencesHomeFeed.tsx:263 -msgid "No" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:636 -#: src/view/screens/ProfileList.tsx:740 -msgid "No description" -msgstr "" - -#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:97 -msgid "No result" -msgstr "" - -#: src/view/screens/Feeds.tsx:452 -msgid "No results found for \"{query}\"" -msgstr "" - -#: src/view/com/modals/ListAddUser.tsx:142 -#: src/view/shell/desktop/Search.tsx:112 -#~ msgid "No results found for {0}" -#~ msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:127 -#: src/view/screens/Search/Search.tsx:270 -#: src/view/screens/Search/Search.tsx:298 -#: src/view/screens/Search/Search.tsx:581 -#: src/view/shell/desktop/Search.tsx:210 -msgid "No results found for {query}" -msgstr "" - -#: src/view/com/modals/Threadgate.tsx:82 -msgid "Nobody" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:136 -#~ msgid "Not Applicable" -#~ msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:135 -msgid "Not Applicable." -msgstr "" - -#: src/view/screens/Moderation.tsx:227 -msgid "Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users." -msgstr "" - -#: src/view/screens/Moderation.tsx:227 -#~ msgid "Note: Third-party apps that display Bluesky content may not respect this setting." -#~ msgstr "" - -#: src/view/screens/Notifications.tsx:97 -#: src/view/screens/Notifications.tsx:121 -#: src/view/shell/bottom-bar/BottomBar.tsx:195 -#: src/view/shell/desktop/LeftNav.tsx:363 -#: src/view/shell/Drawer.tsx:424 -#: src/view/shell/Drawer.tsx:425 -msgid "Notifications" -msgstr "" - -#: src/view/com/util/ErrorBoundary.tsx:34 -msgid "Oh no!" -msgstr "" - -#: src/view/com/auth/login/PasswordUpdatedForm.tsx:41 -msgid "Okay" -msgstr "" - -#: src/view/com/composer/Composer.tsx:341 -msgid "One or more images is missing alt text." -msgstr "" - -#: src/view/com/pager/FeedsTabBarMobile.tsx:79 -msgid "Open navigation" -msgstr "" - -#: src/view/screens/Settings.tsx:533 -msgid "Opens configurable language settings" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:146 -#: src/view/shell/Drawer.tsx:630 -msgid "Opens list of invite codes" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:279 -msgid "Opens modal for using custom domain" -msgstr "" - -#: src/view/screens/Settings.tsx:558 -msgid "Opens moderation settings" -msgstr "" - -#: src/view/screens/Settings.tsx:514 -msgid "Opens screen with all saved feeds" -msgstr "" - -#: src/view/screens/Settings.tsx:581 -msgid "Opens the app password settings page" -msgstr "" - -#: src/view/screens/Settings.tsx:473 -msgid "Opens the home feed preferences" -msgstr "" - -#: src/view/screens/Settings.tsx:664 -msgid "Opens the storybook page" -msgstr "" - -#: src/view/screens/Settings.tsx:644 -msgid "Opens the system log page" -msgstr "" - -#: src/view/screens/Settings.tsx:494 -msgid "Opens the threads preferences" -msgstr "" - -#: src/view/com/auth/login/ChooseAccountForm.tsx:138 -msgid "Other account" -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:88 -msgid "Other service" -msgstr "" - -#: src/view/com/composer/select-language/SelectLangBtn.tsx:91 -msgid "Other..." -msgstr "" - -#: src/view/screens/NotFound.tsx:42 -#: src/view/screens/NotFound.tsx:45 -msgid "Page not found" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:101 -#: src/view/com/auth/create/Step2.tsx:111 -#: src/view/com/auth/login/LoginForm.tsx:216 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:130 -#: src/view/com/modals/DeleteAccount.tsx:191 -msgid "Password" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:157 -msgid "Password updated" -msgstr "" - -#: src/view/com/auth/login/PasswordUpdatedForm.tsx:28 -msgid "Password updated!" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:121 -msgid "Pictures meant for adults." -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:89 -msgid "Pinned Feeds" -msgstr "" - -#: src/view/com/auth/create/state.ts:116 -msgid "Please choose your handle." -msgstr "" - -#: src/view/com/auth/create/state.ts:109 -msgid "Please choose your password." -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:67 -msgid "Please confirm your email before changing it. This is a temporary requirement while email-updating tools are added, and it will soon be removed." -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:140 -msgid "Please enter a unique name for this App Password or use our randomly generated one." -msgstr "" - -#: src/view/com/auth/create/state.ts:95 -msgid "Please enter your email." -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:180 -msgid "Please enter your password as well:" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:72 -#: src/view/com/modals/AppealLabel.tsx:75 -msgid "Please tell us why you think this decision was incorrect." -msgstr "" - -#: src/view/com/composer/Composer.tsx:324 -#: src/view/com/post-thread/PostThread.tsx:216 -#: src/view/screens/PostThread.tsx:77 -msgid "Post" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:375 -msgid "Post hidden" -msgstr "" - -#: src/view/com/composer/select-language/SelectLangBtn.tsx:87 -msgid "Post language" -msgstr "" - -#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:75 -msgid "Post Languages" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:427 -msgid "Post not found" -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:44 -msgid "Potentially Misleading Link" -msgstr "" - -#: src/view/com/lightbox/Lightbox.web.tsx:128 -msgid "Previous image" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:186 -msgid "Primary Language" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:91 -msgid "Prioritize Your Follows" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:75 -msgid "Privacy" -msgstr "" - -#: src/view/screens/PrivacyPolicy.tsx:29 -msgid "Privacy Policy" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:190 -msgid "Processing..." -msgstr "" - -#: src/view/shell/bottom-bar/BottomBar.tsx:237 -#: src/view/shell/Drawer.tsx:72 -#: src/view/shell/Drawer.tsx:533 -#: src/view/shell/Drawer.tsx:534 -msgid "Profile" -msgstr "" - -#: src/view/screens/Settings.tsx:789 -msgid "Protect your account by verifying your email." -msgstr "" - -#: src/view/screens/ModerationModlists.tsx:61 -msgid "Public, shareable lists of users to mute or block in bulk." -msgstr "" - -#: src/view/screens/Lists.tsx:61 -msgid "Public, shareable lists which can drive feeds." -msgstr "" - -#: src/view/com/modals/Repost.tsx:52 -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:58 -msgid "Quote post" -msgstr "" - -#: src/view/com/modals/Repost.tsx:56 -msgid "Quote Post" -msgstr "" - -#: src/view/com/modals/EditImage.tsx:236 -msgid "Ratios" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:73 -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:50 -#~ msgid "Recommended" -#~ msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:116 -msgid "Recommended Feeds" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:180 -msgid "Recommended Users" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:264 -#: src/view/com/modals/SelfLabel.tsx:83 -#: src/view/com/modals/UserAddRemoveLists.tsx:193 -#: src/view/com/util/UserAvatar.tsx:278 -#: src/view/com/util/UserBanner.tsx:89 -msgid "Remove" -msgstr "" - -#: src/view/com/feeds/FeedSourceCard.tsx:108 -msgid "Remove {0} from my feeds?" -msgstr "" - -#: src/view/com/util/AccountDropdownBtn.tsx:22 -msgid "Remove account" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:130 -msgid "Remove feed" -msgstr "" - -#: src/view/com/feeds/FeedSourceCard.tsx:107 -#: src/view/screens/ProfileFeed.tsx:280 -msgid "Remove from my feeds" -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:167 -msgid "Remove image" -msgstr "" - -#: src/view/com/composer/ExternalEmbed.tsx:70 -msgid "Remove image preview" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:131 -msgid "Remove this feed from your saved feeds?" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:199 -#: src/view/com/modals/UserAddRemoveLists.tsx:136 -msgid "Removed from list" -msgstr "" - -#: src/view/com/threadgate/WhoCanReply.tsx:74 -msgid "Replies to this thread are disabled" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:135 -msgid "Reply Filters" -msgstr "" - -#: src/view/com/modals/report/Modal.tsx:166 -msgid "Report {collectionName}" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:380 -msgid "Report Account" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:300 -msgid "Report feed" -msgstr "" - -#: src/view/screens/ProfileList.tsx:448 -msgid "Report List" -msgstr "" - -#: src/view/com/modals/report/SendReportButton.tsx:37 -#: src/view/com/util/forms/PostDropdownBtn.tsx:162 -msgid "Report post" -msgstr "" - -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48 -msgid "Repost" -msgstr "" - -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:94 -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:105 -msgid "Repost or quote post" -msgstr "" - -#: src/view/screens/PostRepostedBy.tsx:27 -msgid "Reposted by" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:181 -#: src/view/com/modals/ChangeEmail.tsx:183 -msgid "Request Change" -msgstr "" - -#: src/view/screens/Moderation.tsx:188 -#~ msgid "Request to limit the visibility of my account" -#~ msgstr "" - -#: src/view/screens/Settings.tsx:382 -#~ msgid "Require alt text before posting" -#~ msgstr "" - -#: src/view/com/auth/create/Step2.tsx:53 -msgid "Required for this provider" -msgstr "" - -#: src/view/com/auth/login/SetNewPasswordForm.tsx:108 -msgid "Reset code" -msgstr "" - -#: src/view/screens/Settings.tsx:686 -msgid "Reset onboarding state" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:98 -msgid "Reset password" -msgstr "" - -#: src/view/screens/Settings.tsx:676 -msgid "Reset preferences state" -msgstr "" - -#: src/view/screens/Settings.tsx:684 -msgid "Resets the onboarding state" -msgstr "" - -#: src/view/screens/Settings.tsx:674 -msgid "Resets the preferences state" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:167 -#: src/view/com/auth/create/CreateAccount.tsx:171 -#: src/view/com/auth/login/LoginForm.tsx:258 -#: src/view/com/auth/login/LoginForm.tsx:261 -#: src/view/com/util/error/ErrorMessage.tsx:55 -#: src/view/com/util/error/ErrorScreen.tsx:65 -msgid "Retry" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:169 -#~ msgid "Retry change handle" -#~ msgstr "" - -#: src/view/com/modals/AltImage.tsx:114 -#: src/view/com/modals/BirthDateSettings.tsx:93 -#: src/view/com/modals/BirthDateSettings.tsx:96 -#: src/view/com/modals/ChangeHandle.tsx:173 -#: src/view/com/modals/CreateOrEditList.tsx:249 -#: src/view/com/modals/CreateOrEditList.tsx:257 -#: src/view/com/modals/EditProfile.tsx:223 -msgid "Save" -msgstr "" - -#: src/view/com/modals/AltImage.tsx:105 -msgid "Save alt text" -msgstr "" - -#: src/view/com/modals/UserAddRemoveLists.tsx:212 -#~ msgid "Save changes" -#~ msgstr "" - -#: src/view/com/modals/EditProfile.tsx:231 -msgid "Save Changes" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:170 -msgid "Save handle change" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:144 -msgid "Save image crop" -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:122 -msgid "Saved Feeds" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:75 -#: src/view/com/util/forms/SearchInput.tsx:64 -#: src/view/screens/Search/Search.tsx:381 -#: src/view/screens/Search/Search.tsx:533 -#: src/view/shell/bottom-bar/BottomBar.tsx:146 -#: src/view/shell/desktop/LeftNav.tsx:323 -#: src/view/shell/desktop/Search.tsx:161 -#: src/view/shell/desktop/Search.tsx:170 -#: src/view/shell/Drawer.tsx:351 -#: src/view/shell/Drawer.tsx:352 -msgid "Search" -msgstr "" - -#: src/view/screens/Search/Search.tsx:390 -msgid "Search for posts and users." -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:110 -msgid "Security Step Required" -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:29 -msgid "See what's next" -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:75 -msgid "Select Bluesky Social" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:117 -msgid "Select from an existing account" -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:143 -msgid "Select service" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:280 -msgid "Select which languages you want your subscribed feeds to include. If none are selected, all languages will be shown." -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:97 -msgid "Select your app language for the default text to display in the app" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:189 -msgid "Select your preferred language for translations in your feed." -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:188 -msgid "Send Confirmation Email" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:127 -msgid "Send email" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:138 -msgid "Send Email" -msgstr "" - -#: src/view/shell/Drawer.tsx:284 -#: src/view/shell/Drawer.tsx:305 -msgid "Send feedback" -msgstr "" - -#: src/view/com/modals/report/SendReportButton.tsx:45 -msgid "Send Report" -msgstr "" - -#: src/view/com/auth/login/SetNewPasswordForm.tsx:78 -msgid "Set new password" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:216 -msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:113 -msgid "Set this setting to \"No\" to hide all replies from your feed." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:182 -msgid "Set this setting to \"No\" to hide all reposts from your feed." -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:116 -msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:252 -msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature." -msgstr "" - -#: src/view/screens/Settings.tsx:277 -#: src/view/shell/desktop/LeftNav.tsx:435 -#: src/view/shell/Drawer.tsx:554 -#: src/view/shell/Drawer.tsx:555 -msgid "Settings" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:125 -msgid "Sexual activity or erotic nudity." -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:314 -#: src/view/com/util/forms/PostDropdownBtn.tsx:126 -#: src/view/screens/ProfileList.tsx:407 -msgid "Share" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:312 -msgid "Share feed" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:276 -#~ msgid "Share link" -#~ msgstr "" - -#: src/view/screens/Settings.tsx:316 -msgid "Show" -msgstr "" - -#: src/view/com/util/moderation/ScreenHider.tsx:114 -msgid "Show anyway" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:249 -msgid "Show Posts from My Feeds" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:213 -msgid "Show Quote Posts" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:110 -msgid "Show Replies" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:94 -msgid "Show replies by people you follow before all other replies." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:179 -msgid "Show Reposts" -msgstr "" - -#: src/view/com/notifications/FeedItem.tsx:337 -msgid "Show users" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:98 -#: src/view/com/auth/SplashScreen.tsx:49 -#: src/view/shell/NavSignupCard.tsx:52 -#: src/view/shell/NavSignupCard.tsx:53 -msgid "Sign in" -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:52 -#: src/view/com/auth/SplashScreen.web.tsx:84 -msgid "Sign In" -msgstr "" - -#: src/view/com/auth/login/ChooseAccountForm.tsx:44 -msgid "Sign in as {0}" -msgstr "" - -#: src/view/com/auth/login/ChooseAccountForm.tsx:118 -#: src/view/com/auth/login/Login.tsx:116 -msgid "Sign in as..." -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:130 -msgid "Sign into" -msgstr "" - -#: src/view/com/modals/SwitchAccount.tsx:60 -#: src/view/com/modals/SwitchAccount.tsx:63 -msgid "Sign out" -msgstr "" - -#: src/view/shell/NavSignupCard.tsx:43 -#: src/view/shell/NavSignupCard.tsx:44 -#: src/view/shell/NavSignupCard.tsx:46 -msgid "Sign up" -msgstr "" - -#: src/view/shell/NavSignupCard.tsx:36 -msgid "Sign up or sign in to join the conversation" -msgstr "" - -#: src/view/screens/Settings.tsx:327 -msgid "Signed in as" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:33 -msgid "Skip" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:69 -msgid "Sort Replies" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:72 -msgid "Sort replies to the same post by:" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:122 -msgid "Square" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:90 -#: src/view/com/modals/ServerInput.tsx:62 -msgid "Staging" -msgstr "" - -#: src/view/screens/Settings.tsx:730 -msgid "Status page" -msgstr "" - -#: src/view/screens/Settings.tsx:666 -msgid "Storybook" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:101 -msgid "Submit" -msgstr ">>>>>>> cb8a33b6 (Fix translations)" - -#: src/view/screens/ProfileList.tsx:597 -msgid "Subscribe" -msgstr "" - -#: src/view/screens/ProfileList.tsx:593 -msgid "Subscribe to this list" -msgstr "" - -#: src/view/screens/Search/Search.tsx:354 -msgid "Suggested Follows" -msgstr "" - -#: src/view/screens/Support.tsx:30 -#: src/view/screens/Support.tsx:33 -msgid "Support" -msgstr "" - -#: src/view/com/modals/SwitchAccount.tsx:111 -msgid "Switch Account" -msgstr "" - -#: src/view/screens/Settings.tsx:398 -#~ msgid "System" -#~ msgstr "" - -#: src/view/screens/Settings.tsx:646 -msgid "System log" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:112 -msgid "Tall" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:84 -msgid "Terms" -msgstr "" - -#: src/view/screens/TermsOfService.tsx:29 -msgid "Terms of Service" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:70 -#: src/view/com/modals/report/InputIssueDetails.tsx:50 -msgid "Text input field" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:282 -msgid "The account will be able to interact with you after unblocking." -msgstr "" - -#: src/view/screens/CommunityGuidelines.tsx:36 -msgid "The Community Guidelines have been moved to <0/>" -msgstr "" - -#: src/view/screens/CopyrightPolicy.tsx:33 -msgid "The Copyright Policy has been moved to <0/>" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:430 -msgid "The post may have been deleted." -msgstr "" - -#: src/view/screens/PrivacyPolicy.tsx:33 -msgid "The Privacy Policy has been moved to <0/>" -msgstr "" - -#: src/view/screens/Support.tsx:36 -msgid "The support form has been moved. If you need help, please<0/> or visit {HELP_DESK_URL} to get in touch with us." -msgstr "" - -#: src/view/screens/TermsOfService.tsx:33 -msgid "The Terms of Service have been moved to" -msgstr "" - -#: src/view/com/util/ErrorBoundary.tsx:35 -msgid "There was an unexpected issue in the application. Please let us know if this happened to you!" -msgstr "" - -#: src/view/com/util/moderation/LabelInfo.tsx:45 -msgid "This {0} has been labeled." -msgstr "" - -#: src/view/com/util/moderation/ScreenHider.tsx:72 -msgid "This {screenDescription} has been flagged:" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:107 -msgid "This content is not viewable without a Bluesky account." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:113 -msgid "This feed is currently receiving high traffic and is temporarily unavailable. Please try again later." -msgstr "" - -#: src/view/com/modals/BirthDateSettings.tsx:61 -msgid "This information is not shared with other users." -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:105 -msgid "This is important in case you ever need to change your email or reset your password." -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:55 -msgid "This is the service that keeps you online." -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:56 -msgid "This link is taking you to the following website:" -msgstr "" - -#: src/view/com/post-thread/PostThreadItem.tsx:123 -msgid "This post has been deleted." -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:137 -msgid "This warning is only available for posts with media attached." -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:53 -#: src/view/screens/Settings.tsx:503 -msgid "Thread Preferences" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:113 -msgid "Threaded Mode" -msgstr "" - -#: src/view/com/util/forms/DropdownButton.tsx:230 -msgid "Toggle dropdown" -msgstr "" - -#: src/view/com/modals/EditImage.tsx:271 -msgid "Transformations" -msgstr "" - -#: src/view/com/post-thread/PostThreadItem.tsx:692 -#: src/view/com/post-thread/PostThreadItem.tsx:694 -#: src/view/com/util/forms/PostDropdownBtn.tsx:98 -msgid "Translate" -msgstr "" - -#: src/view/com/util/error/ErrorScreen.tsx:73 -msgid "Try again" -msgstr "" - -#: src/view/screens/ProfileList.tsx:495 -msgid "Un-block list" -msgstr "" - -#: src/view/screens/ProfileList.tsx:480 -msgid "Un-mute list" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:64 -#: src/view/com/auth/login/Login.tsx:76 -#: src/view/com/auth/login/LoginForm.tsx:117 -msgid "Unable to contact your service. Please check your Internet connection." -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:442 -#: src/view/com/profile/ProfileHeader.tsx:445 -msgid "Unblock" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:280 -#: src/view/com/profile/ProfileHeader.tsx:364 -msgid "Unblock Account" -msgstr "" - -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48 -msgid "Undo repost" -msgstr "" - -#: src/view/com/auth/create/state.ts:210 -msgid "Unfortunately, you do not meet the requirements to create an account." -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:345 -msgid "Unmute Account" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:144 -msgid "Unmute thread" -msgstr "" - -#: src/view/screens/ProfileList.tsx:463 -msgid "Unpin moderation list" -msgstr "" - -#: src/view/com/modals/UserAddRemoveLists.tsx:54 -msgid "Update {displayName} in Lists" -msgstr "" - -#: src/lib/hooks/useOTAUpdate.ts:15 -msgid "Update Available" -msgstr "" - -#: src/view/com/auth/login/SetNewPasswordForm.tsx:172 -msgid "Updating..." -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:453 -msgid "Upload a text file to:" -msgstr "" - -#: src/view/screens/AppPasswords.tsx:194 -msgid "Use app passwords to login to other Bluesky clients without giving full access to your account or password." -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:513 -msgid "Use default provider" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:150 -msgid "Use this to sign into the other app along with your handle." -msgstr "" - -#: src/view/com/modals/InviteCodes.tsx:197 -msgid "Used by:" -msgstr "" - -#: src/view/com/auth/create/Step3.tsx:38 -msgid "User handle" -msgstr "" - -#: src/view/screens/Lists.tsx:58 -msgid "User Lists" -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:170 -#: src/view/com/auth/login/LoginForm.tsx:187 -msgid "Username or email address" -msgstr "" - -#: src/view/screens/ProfileList.tsx:767 -msgid "Users" -msgstr "" - -#: src/view/com/threadgate/WhoCanReply.tsx:115 -msgid "Users followed by <0/>" -msgstr "" - -#: src/view/com/modals/Threadgate.tsx:106 -msgid "Users in \"{0}\"" -msgstr "" - -#: src/view/screens/Settings.tsx:750 -msgid "Verify email" -msgstr "" - -#: src/view/screens/Settings.tsx:775 -msgid "Verify my email" -msgstr "" - -#: src/view/screens/Settings.tsx:784 -msgid "Verify My Email" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:205 -#: src/view/com/modals/ChangeEmail.tsx:207 -msgid "Verify New Email" -msgstr "" - -#: src/view/screens/Log.tsx:52 -msgid "View debug entry" -msgstr "" - -#: src/view/com/profile/ProfileSubpageHeader.tsx:128 -msgid "View the avatar" -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:73 -msgid "Visit Site" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:125 -msgid "We're so excited to have you join us!" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:99 -#~ msgid "We're sorry, but this content is not viewable without a Bluesky account." -#~ msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:105 -#~ msgid "We're sorry, but this feed is currently receiving high traffic and is temporarily unavailable. Please try again later." -#~ msgstr "" - -#: src/view/screens/Search/Search.tsx:237 -msgid "We're sorry, but your search could not be completed. Please try again in a few minutes." -msgstr "" - -#: src/view/screens/NotFound.tsx:48 -msgid "We're sorry! We can't find the page you were looking for." -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:46 -msgid "Welcome to <0>Bluesky" -msgstr "" - -#: src/view/com/modals/report/Modal.tsx:169 -msgid "What is the issue with this {collectionName}?" -msgstr "" - -#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:78 -msgid "Which languages are used in this post?" -msgstr "" - -#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:77 -msgid "Which languages would you like to see in your algorithmic feeds?" -msgstr "" - -#: src/view/com/composer/threadgate/ThreadgateBtn.tsx:43 -#: src/view/com/modals/Threadgate.tsx:66 -msgid "Who can reply" -msgstr "" - -#: src/view/com/threadgate/WhoCanReply.tsx:79 -msgid "Who can reply?" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:102 -msgid "Wide" -msgstr "" - -#: src/view/com/composer/Composer.tsx:396 -msgid "Write post" -msgstr "" - -#: src/view/com/composer/Prompt.tsx:33 -msgid "Write your reply" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:192 -#: src/view/screens/PreferencesHomeFeed.tsx:227 -#: src/view/screens/PreferencesHomeFeed.tsx:262 -msgid "Yes" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:106 -msgid "You can change hosting providers at any time." -msgstr "" - -#: src/view/com/auth/login/Login.tsx:158 -#: src/view/com/auth/login/PasswordUpdatedForm.tsx:31 -msgid "You can now sign in with your new password." -msgstr "" - -#: src/view/com/modals/InviteCodes.tsx:64 -msgid "You don't have any invite codes yet! We'll send you some when you've been on Bluesky for a little longer." -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:102 -msgid "You don't have any pinned feeds." -msgstr "" - -#: src/view/screens/Feeds.tsx:383 -msgid "You don't have any saved feeds!" -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:135 -msgid "You don't have any saved feeds." -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:378 -msgid "You have blocked the author or you have been blocked by the author." -msgstr "" - -#: src/view/com/feeds/ProfileFeedgens.tsx:154 -msgid "You have no feeds." -msgstr "" - -#: src/view/com/lists/MyLists.tsx:89 -#: src/view/com/lists/ProfileLists.tsx:158 -msgid "You have no lists." -msgstr "" - -#: src/view/screens/ModerationBlockedAccounts.tsx:131 -msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account." -msgstr "" - -#: src/view/screens/AppPasswords.tsx:86 -msgid "You have not created any app passwords yet. You can create one by pressing the button below." -msgstr "" - -#: src/view/screens/ModerationMutedAccounts.tsx:130 -msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account." -msgstr "" - -#: src/view/com/auth/login/SetNewPasswordForm.tsx:81 -msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password." -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:43 -msgid "Your account" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:122 -msgid "Your birth date" -msgstr "" - -#: src/view/com/auth/create/state.ts:102 -msgid "Your email appears to be invalid." -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:107 -msgid "Your email has been saved! We'll be in touch soon." -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:125 -msgid "Your email has been updated but not verified. As a next step, please verify your new email." -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:100 -msgid "Your email has not yet been verified. This is an important security step which we recommend." -msgstr "" - -#: src/view/com/auth/create/Step3.tsx:42 -#: src/view/com/modals/ChangeHandle.tsx:270 -msgid "Your full handle will be" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:53 -msgid "Your hosting provider" -msgstr "" - -#: src/view/screens/Settings.tsx:402 -#: src/view/shell/desktop/RightNav.tsx:127 -#: src/view/shell/Drawer.tsx:644 -msgid "Your invite codes are hidden when logged in using an App Password" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:59 -msgid "Your posts, likes, and blocks are public. Mutes are private." -msgstr "" - -#: src/view/com/modals/SwitchAccount.tsx:78 -msgid "Your profile" -msgstr "" - -#: src/view/screens/Moderation.tsx:205 -#~ msgid "Your profile and account will not be visible to anyone visiting the Bluesky app without an account, or to account holders who are not logged in. Enabling this will not make your profile private." -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:220 -#~ msgid "Your profile and content will not be visible to anyone visiting the Bluesky app without an account. Enabling this will not make your profile private." -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:220 -msgid "Your profile and posts will not be visible to people visiting the Bluesky app or website without having an account and being logged in." -msgstr "" - -#: src/view/com/auth/create/Step3.tsx:28 -msgid "Your user handle" -msgstr "" diff --git a/src/locale/locales/fr/messages.po b/src/locale/locales/fr/messages.po deleted file mode 100644 index 0a195de0e3..0000000000 --- a/src/locale/locales/fr/messages.po +++ /dev/null @@ -1,2479 +0,0 @@ -msgid "" -msgstr "" -"POT-Creation-Date: 2023-11-05 16:01-0800\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=utf-8\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: @lingui/cli\n" -"Language: fr\n" -"Project-Id-Version: \n" -"Report-Msgid-Bugs-To: \n" -"PO-Revision-Date: \n" -"Last-Translator: \n" -"Language-Team: \n" -"Plural-Forms: \n" - -#: src/view/screens/Profile.tsx:214 -#~ msgid "- end of feed -" -#~ msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:138 -#~ msgid ". This warning is only available for posts with media attached." -#~ msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:158 -msgid "{0, plural, one {# invite code available} other {# invite codes available}}" -msgstr "" - -#: src/view/com/modals/Repost.tsx:44 -msgid "{0}" -msgstr "" - -#: src/view/com/modals/CreateOrEditList.tsx:176 -msgid "{0} {purposeLabel} List" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:141 -msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}" -msgstr "" - -#: src/view/screens/Settings.tsx:407 -#: src/view/shell/Drawer.tsx:648 -msgid "{invitesAvailable} invite code available" -msgstr "" - -#: src/view/screens/Settings.tsx:409 -#: src/view/shell/Drawer.tsx:650 -msgid "{invitesAvailable} invite codes available" -msgstr "" - -#: src/view/screens/Search/Search.tsx:87 -msgid "{message}" -msgstr "" - -#: src/view/com/threadgate/WhoCanReply.tsx:130 -msgid "<0/> members" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:30 -msgid "<0>Choose your<1>Recommended<2>Feeds" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:37 -msgid "<0>Follow some<1>Recommended<2>Users" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:132 -#~ msgid "<0>Here is your app password. Use this to sign into the other app along with your handle." -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:212 -#~ msgid "<0>Note: This setting may not be respected by third-party apps that display Bluesky content." -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:212 -#~ msgid "<0>Note: Your profile and posts will remain publicly available. Third-party apps that display Bluesky content may not respect this setting." -#~ msgstr "" - -#: src/lib/hooks/useOTAUpdate.ts:16 -msgid "A new version of the app is available. Please update to continue using the app." -msgstr "" - -#: src/view/com/modals/EditImage.tsx:299 -#: src/view/screens/Settings.tsx:417 -msgid "Accessibility" -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:159 -#: src/view/screens/Settings.tsx:286 -msgid "Account" -msgstr "" - -#: src/view/com/util/AccountDropdownBtn.tsx:41 -msgid "Account options" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:264 -#: src/view/com/modals/UserAddRemoveLists.tsx:193 -#: src/view/screens/ProfileList.tsx:783 -msgid "Add" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:56 -msgid "Add a content warning" -msgstr "" - -#: src/view/screens/ProfileList.tsx:773 -msgid "Add a user to this list" -msgstr "" - -#: src/view/screens/Settings.tsx:355 -#: src/view/screens/Settings.tsx:364 -msgid "Add account" -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:119 -#: src/view/com/composer/photos/Gallery.tsx:180 -msgid "Add alt text" -msgstr "" - -#: src/view/com/modals/report/InputIssueDetails.tsx:41 -#: src/view/com/modals/report/Modal.tsx:191 -msgid "Add details" -msgstr "" - -#: src/view/com/modals/report/Modal.tsx:194 -msgid "Add details to report" -msgstr "" - -#: src/view/com/composer/Composer.tsx:425 -msgid "Add link card" -msgstr "" - -#: src/view/com/composer/Composer.tsx:428 -msgid "Add link card:" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:415 -msgid "Add the following DNS record to your domain:" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:329 -msgid "Add to Lists" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:280 -msgid "Add to my feeds" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:191 -#: src/view/com/modals/UserAddRemoveLists.tsx:128 -msgid "Added to list" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:164 -msgid "Adjust the number of likes a reply must have to be shown in your feed." -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:75 -msgid "Adult Content" -msgstr "" - -#: src/view/screens/Settings.tsx:569 -msgid "Advanced" -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:130 -msgid "ALT" -msgstr "" - -#: src/view/com/modals/EditImage.tsx:315 -msgid "Alt text" -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:209 -msgid "Alt text describes images for blind and low-vision users, and helps give context to everyone." -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:110 -msgid "An email has been sent to {0}. It includes a confirmation code which you can enter below." -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:119 -msgid "An email has been sent to your previous address, {0}. It includes a confirmation code which you can enter below." -msgstr "" - -#: src/view/com/notifications/FeedItem.tsx:236 -msgid "and" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:94 -msgid "App Language" -msgstr "" - -#: src/view/screens/Settings.tsx:589 -msgid "App passwords" -msgstr "" - -#: src/view/screens/AppPasswords.tsx:186 -msgid "App Passwords" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:65 -msgid "Appeal Decision" -msgstr "" - -#: src/view/com/util/moderation/LabelInfo.tsx:51 -msgid "Appeal this decision" -msgstr "" - -#: src/view/com/util/moderation/LabelInfo.tsx:55 -msgid "Appeal this decision." -msgstr "" - -#: src/view/screens/Settings.tsx:432 -msgid "Appearance" -msgstr "" - -#: src/view/screens/Moderation.tsx:206 -#~ msgid "Apps that respect this setting, including the official Bluesky app and bsky.app website, won't show your content to logged out users." -#~ msgstr "" - -#: src/view/screens/AppPasswords.tsx:223 -msgid "Are you sure you want to delete the app password \"{name}\"?" -msgstr "" - -#: src/view/com/composer/Composer.tsx:139 -msgid "Are you sure you'd like to discard this draft?" -msgstr "" - -#: src/view/screens/ProfileList.tsx:375 -msgid "Are you sure?" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:185 -msgid "Are you sure? This cannot be undone." -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:123 -msgid "Artistic or non-erotic nudity." -msgstr "" - -#: src/view/screens/Moderation.tsx:189 -#~ msgid "Ask apps to limit the visibility of my account" -#~ msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:145 -#: src/view/com/auth/login/ChooseAccountForm.tsx:151 -#: src/view/com/auth/login/ForgotPasswordForm.tsx:166 -#: src/view/com/auth/login/LoginForm.tsx:249 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:148 -#: src/view/com/modals/report/InputIssueDetails.tsx:45 -#: src/view/com/post-thread/PostThread.tsx:385 -#: src/view/com/post-thread/PostThread.tsx:435 -#: src/view/com/post-thread/PostThread.tsx:443 -#: src/view/com/profile/ProfileHeader.tsx:648 -msgid "Back" -msgstr "" - -#: src/view/screens/Settings.tsx:461 -msgid "Basics" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:131 -#: src/view/com/modals/BirthDateSettings.tsx:72 -msgid "Birthday" -msgstr "" - -#: src/view/screens/Settings.tsx:312 -msgid "Birthday:" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:258 -#: src/view/com/profile/ProfileHeader.tsx:365 -msgid "Block Account" -msgstr "" - -#: src/view/screens/ProfileList.tsx:545 -msgid "Block accounts" -msgstr "" - -#: src/view/screens/ProfileList.tsx:495 -msgid "Block list" -msgstr "" - -#: src/view/screens/ProfileList.tsx:330 -msgid "Block these accounts?" -msgstr "" - -#: src/view/screens/Moderation.tsx:121 -msgid "Blocked accounts" -msgstr "" - -#: src/view/screens/ModerationBlockedAccounts.tsx:106 -msgid "Blocked Accounts" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:260 -msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you." -msgstr "" - -#: src/view/screens/ModerationBlockedAccounts.tsx:114 -msgid "Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you. You will not see their content and they will be prevented from seeing yours." -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:241 -msgid "Blocked post." -msgstr "" - -#: src/view/screens/ProfileList.tsx:332 -msgid "Blocking is public. Blocked accounts cannot reply in your threads, mention you, or otherwise interact with you." -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:26 -msgid "Bluesky" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:80 -msgid "Bluesky is flexible." -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:69 -msgid "Bluesky is open." -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:56 -msgid "Bluesky is public." -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:70 -msgid "Bluesky uses invites to build a healthier community. If you don't know anybody with an invite, you can sign up for the waitlist and we'll send one soon." -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:78 -msgid "Bluesky.Social" -msgstr "" - -#: src/view/screens/Settings.tsx:718 -msgid "Build version {0} {1}" -msgstr "" - -#: src/view/com/composer/photos/OpenCameraBtn.tsx:60 -#: src/view/com/util/UserAvatar.tsx:217 -#: src/view/com/util/UserBanner.tsx:38 -msgid "Camera" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:214 -msgid "Can only contain letters, numbers, spaces, dashes, and underscores. Must be at least 4 characters long, but no more than 32 characters long." -msgstr "" - -#: src/view/com/composer/Composer.tsx:278 -#: src/view/com/composer/Composer.tsx:281 -#: src/view/com/modals/AltImage.tsx:127 -#: src/view/com/modals/ChangeEmail.tsx:218 -#: src/view/com/modals/ChangeEmail.tsx:220 -#: src/view/com/modals/Confirm.tsx:88 -#: src/view/com/modals/CreateOrEditList.tsx:267 -#: src/view/com/modals/CreateOrEditList.tsx:272 -#: src/view/com/modals/DeleteAccount.tsx:150 -#: src/view/com/modals/DeleteAccount.tsx:223 -#: src/view/com/modals/EditImage.tsx:323 -#: src/view/com/modals/EditProfile.tsx:248 -#: src/view/com/modals/LinkWarning.tsx:85 -#: src/view/com/modals/Repost.tsx:73 -#: src/view/com/modals/Waitlist.tsx:136 -#: src/view/screens/Search/Search.tsx:558 -#: src/view/shell/desktop/Search.tsx:182 -msgid "Cancel" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:146 -#: src/view/com/modals/DeleteAccount.tsx:219 -msgid "Cancel account deletion" -msgstr "" - -#: src/view/com/modals/AltImage.tsx:122 -msgid "Cancel add image alt text" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:149 -msgid "Cancel change handle" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:134 -msgid "Cancel image crop" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:243 -msgid "Cancel profile editing" -msgstr "" - -#: src/view/com/modals/Repost.tsx:64 -msgid "Cancel quote post" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:87 -#: src/view/shell/desktop/Search.tsx:178 -msgid "Cancel search" -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:132 -msgid "Cancel waitlist signup" -msgstr "" - -#: src/view/screens/Settings.tsx:306 -msgid "Change" -msgstr "" - -#: src/view/screens/Settings.tsx:601 -#: src/view/screens/Settings.tsx:610 -msgid "Change handle" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:161 -msgid "Change Handle" -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:133 -msgid "Change my email" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:109 -msgid "Change Your Email" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:121 -msgid "Check out some recommended feeds. Tap + to add them to your list of pinned feeds." -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:185 -msgid "Check out some recommended users. Follow them to see similar users." -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:163 -msgid "Check your inbox for an email with the confirmation code to enter below:" -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:38 -msgid "Choose Service" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:83 -msgid "Choose the algorithms that power your experience with custom feeds." -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:65 -#~ msgid "Choose your" -#~ msgstr "" - -#: src/view/com/auth/create/Step2.tsx:106 -msgid "Choose your password" -msgstr "" - -#: src/view/screens/Settings.tsx:694 -msgid "Clear all legacy storage data" -msgstr "" - -#: src/view/screens/Settings.tsx:696 -msgid "Clear all legacy storage data (restart after this)" -msgstr "" - -#: src/view/screens/Settings.tsx:706 -msgid "Clear all storage data" -msgstr "" - -#: src/view/screens/Settings.tsx:708 -msgid "Clear all storage data (restart after this)" -msgstr "" - -#: src/view/com/util/forms/SearchInput.tsx:73 -#: src/view/screens/Search/Search.tsx:543 -msgid "Clear search query" -msgstr "" - -#: src/view/com/auth/login/PasswordUpdatedForm.tsx:38 -msgid "Close alert" -msgstr "" - -#: src/view/com/util/BottomSheetCustomBackdrop.tsx:33 -msgid "Close bottom drawer" -msgstr "" - -#: src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx:26 -msgid "Close image" -msgstr "" - -#: src/view/com/lightbox/Lightbox.web.tsx:112 -msgid "Close image viewer" -msgstr "" - -#: src/view/shell/index.web.tsx:49 -msgid "Close navigation footer" -msgstr "" - -#: src/view/screens/CommunityGuidelines.tsx:32 -msgid "Community Guidelines" -msgstr "" - -#: src/view/com/composer/Prompt.tsx:24 -msgid "Compose reply" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:98 -#: src/view/com/modals/Confirm.tsx:75 -#: src/view/com/modals/SelfLabel.tsx:154 -#: src/view/com/modals/VerifyEmail.tsx:217 -#: src/view/screens/PreferencesHomeFeed.tsx:299 -#: src/view/screens/PreferencesThreads.tsx:153 -msgid "Confirm" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:193 -#: src/view/com/modals/ChangeEmail.tsx:195 -msgid "Confirm Change" -msgstr "" - -#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:34 -msgid "Confirm content language settings" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:209 -msgid "Confirm delete account" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:157 -#: src/view/com/modals/DeleteAccount.tsx:176 -#: src/view/com/modals/VerifyEmail.tsx:151 -msgid "Confirmation code" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:178 -#: src/view/com/auth/login/LoginForm.tsx:268 -msgid "Connecting..." -msgstr "" - -#: src/view/screens/Moderation.tsx:79 -msgid "Content filtering" -msgstr "" - -#: src/view/com/modals/ContentFilteringSettings.tsx:44 -msgid "Content Filtering" -msgstr "" - -#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:74 -#: src/view/screens/LanguageSettings.tsx:277 -msgid "Content Languages" -msgstr "" - -#: src/view/com/util/moderation/ScreenHider.tsx:69 -msgid "Content Warning" -msgstr "" - -#: src/view/com/composer/labels/LabelsBtn.tsx:31 -msgid "Content warnings" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:148 -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:209 -msgid "Continue" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:193 -#: src/view/com/modals/InviteCodes.tsx:179 -msgid "Copied" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:186 -msgid "Copy" -msgstr "" - -#: src/view/screens/ProfileList.tsx:407 -msgid "Copy link to list" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:126 -msgid "Copy link to post" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:314 -msgid "Copy link to profile" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:112 -msgid "Copy post text" -msgstr "" - -#: src/view/screens/CopyrightPolicy.tsx:29 -msgid "Copyright Policy" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:103 -msgid "Could not load feed" -msgstr "" - -#: src/view/screens/ProfileList.tsx:860 -msgid "Could not load list" -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:41 -msgid "Create a new account" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:124 -msgid "Create Account" -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:38 -msgid "Create new account" -msgstr "" - -#: src/view/screens/AppPasswords.tsx:248 -msgid "Created {0}" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:387 -#: src/view/com/modals/ServerInput.tsx:102 -msgid "Custom domain" -msgstr "" - -#: src/view/screens/Settings.tsx:615 -msgid "Danger Zone" -msgstr "" - -#: src/view/screens/Settings.tsx:411 -#~ msgid "Dark" -#~ msgstr "" - -#: src/view/screens/Settings.tsx:622 -msgid "Delete account" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:83 -msgid "Delete Account" -msgstr "" - -#: src/view/screens/AppPasswords.tsx:221 -#: src/view/screens/AppPasswords.tsx:241 -msgid "Delete app password" -msgstr "" - -#: src/view/screens/ProfileList.tsx:374 -#: src/view/screens/ProfileList.tsx:434 -msgid "Delete List" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:212 -msgid "Delete my account" -msgstr "" - -#: src/view/screens/Settings.tsx:632 -msgid "Delete my account…" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:180 -msgid "Delete post" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:184 -msgid "Delete this post?" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:233 -msgid "Deleted post." -msgstr "" - -#: src/view/com/modals/CreateOrEditList.tsx:218 -#: src/view/com/modals/CreateOrEditList.tsx:234 -#: src/view/com/modals/EditProfile.tsx:197 -#: src/view/com/modals/EditProfile.tsx:209 -msgid "Description" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:96 -msgid "Dev Server" -msgstr "" - -#: src/view/screens/Settings.tsx:637 -msgid "Developer Tools" -msgstr "" - -#: src/view/com/composer/Composer.tsx:140 -msgid "Discard" -msgstr "" - -#: src/view/com/composer/Composer.tsx:134 -msgid "Discard draft" -msgstr "" - -#: src/view/screens/Feeds.tsx:405 -msgid "Discover new feeds" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:191 -msgid "Display name" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:179 -msgid "Display Name" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:485 -msgid "Domain verified!" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:86 -#: src/view/com/modals/ContentFilteringSettings.tsx:88 -#: src/view/com/modals/ContentFilteringSettings.tsx:96 -#: src/view/com/modals/crop-image/CropImage.web.tsx:152 -#: src/view/com/modals/EditImage.tsx:333 -#: src/view/com/modals/ListAddRemoveUsers.tsx:142 -#: src/view/com/modals/SelfLabel.tsx:157 -#: src/view/com/modals/UserAddRemoveLists.tsx:79 -#: src/view/screens/PreferencesHomeFeed.tsx:302 -#: src/view/screens/PreferencesThreads.tsx:156 -msgid "Done" -msgstr "" - -#: src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx:42 -msgid "Done{extraText}" -msgstr "" - -#: src/view/com/modals/InviteCodes.tsx:94 -msgid "Each code works once. You'll receive more invite codes periodically." -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:144 -#: src/view/com/modals/EditImage.tsx:207 -msgid "Edit image" -msgstr "" - -#: src/view/screens/ProfileList.tsx:422 -msgid "Edit list details" -msgstr "" - -#: src/view/screens/Feeds.tsx:367 -#: src/view/screens/SavedFeeds.tsx:85 -msgid "Edit My Feeds" -msgstr "" - -#: src/view/com/modals/EditProfile.tsx:151 -msgid "Edit my profile" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:429 -msgid "Edit profile" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:432 -msgid "Edit Profile" -msgstr "" - -#: src/view/screens/Feeds.tsx:330 -msgid "Edit Saved Feeds" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:90 -#: src/view/com/auth/login/ForgotPasswordForm.tsx:148 -#: src/view/com/modals/ChangeEmail.tsx:141 -#: src/view/com/modals/Waitlist.tsx:88 -msgid "Email" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:81 -msgid "Email address" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:111 -msgid "Email Updated" -msgstr "" - -#: src/view/screens/Settings.tsx:290 -msgid "Email:" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:138 -msgid "Enable this setting to only see replies between people you follow." -msgstr "" - -#: src/view/screens/Profile.tsx:472 -msgid "End of feed" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:71 -msgid "Enter the address of your provider:" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:369 -msgid "Enter the domain you want to use" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:101 -msgid "Enter the email you used to create your account. We'll send you a \"reset code\" so you can set a new password." -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:86 -msgid "Enter your email address" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:117 -msgid "Enter your new email address below." -msgstr "" - -#: src/view/com/auth/login/Login.tsx:99 -msgid "Enter your username and password" -msgstr "" - -#: src/view/screens/Search/Search.tsx:105 -msgid "Error:" -msgstr "" - -#: src/view/com/modals/Threadgate.tsx:76 -msgid "Everybody" -msgstr "" - -#: src/view/com/lightbox/Lightbox.web.tsx:156 -msgid "Expand alt text" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:109 -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:141 -msgid "Failed to load recommended feeds" -msgstr "" - -#: src/view/screens/Feeds.tsx:559 -msgid "Feed offline" -msgstr "" - -#: src/view/com/feeds/FeedPage.tsx:140 -msgid "Feed Preferences" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:64 -#: src/view/shell/Drawer.tsx:300 -msgid "Feedback" -msgstr "" - -#: src/view/screens/Feeds.tsx:475 -#: src/view/shell/bottom-bar/BottomBar.tsx:168 -#: src/view/shell/desktop/LeftNav.tsx:341 -#: src/view/shell/Drawer.tsx:463 -#: src/view/shell/Drawer.tsx:464 -msgid "Feeds" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:57 -msgid "Feeds are created by users to curate content. Choose some feeds that you find interesting." -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:156 -msgid "Feeds are custom algorithms that users build with a little coding expertise. <0/> for more information." -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollowsItem.tsx:150 -msgid "Finding similar accounts..." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:102 -msgid "Fine-tune the content you see on your home screen." -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:60 -msgid "Fine-tune the discussion threads." -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:514 -msgid "Follow" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:42 -#~ msgid "Follow some" -#~ msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:64 -msgid "Follow some users to get started. We can recommend you more users based on who you find interesting." -msgstr "" - -#: src/view/com/modals/Threadgate.tsx:98 -msgid "Followed users" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:145 -msgid "Followed users only" -msgstr "" - -#: src/view/screens/ProfileFollowers.tsx:25 -msgid "Followers" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:600 -msgid "following" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:498 -#: src/view/screens/ProfileFollows.tsx:25 -msgid "Following" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:547 -msgid "Follows you" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:107 -msgid "For security reasons, we'll need to send a confirmation code to your email address." -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:207 -msgid "For security reasons, you won't be able to view this again. If you lose this password, you'll need to generate a new one." -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:231 -msgid "Forgot" -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:228 -msgid "Forgot password" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:127 -#: src/view/com/auth/login/Login.tsx:143 -msgid "Forgot Password" -msgstr "" - -#: src/view/com/composer/photos/SelectPhotoBtn.tsx:43 -msgid "Gallery" -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:175 -msgid "Get Started" -msgstr "" - -#: src/view/com/auth/LoggedOut.tsx:68 -#: src/view/com/auth/LoggedOut.tsx:69 -#: src/view/com/util/moderation/ScreenHider.tsx:105 -#: src/view/shell/desktop/LeftNav.tsx:106 -msgid "Go back" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:112 -#: src/view/screens/ProfileFeed.tsx:117 -#: src/view/screens/ProfileList.tsx:869 -#: src/view/screens/ProfileList.tsx:874 -msgid "Go Back" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:181 -#: src/view/com/auth/login/LoginForm.tsx:278 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:163 -msgid "Go to next" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:265 -msgid "Handle" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:93 -#: src/view/shell/Drawer.tsx:310 -msgid "Help" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:148 -msgid "Here is your app password." -msgstr "" - -#: src/view/com/notifications/FeedItem.tsx:316 -msgid "Hide" -msgstr "" - -#: src/view/com/notifications/FeedItem.tsx:308 -msgid "Hide user list" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:102 -#~ msgid "Hmm, some kind of issue occured when contacting the feed server. Please let the feed owner know about this issue." -#~ msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:110 -msgid "Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:98 -msgid "Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:104 -msgid "Hmm, the feed server appears to be offline. Please let the feed owner know about this issue." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:101 -msgid "Hmm, the feed server gave a bad response. Please let the feed owner know about this issue." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:95 -msgid "Hmm, we're having trouble finding this feed. It may have been deleted." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:87 -#~ msgid "Hmmm, we're having trouble finding this feed. It may have been deleted." -#~ msgstr "" - -#: src/view/shell/bottom-bar/BottomBar.tsx:124 -#: src/view/shell/desktop/LeftNav.tsx:305 -#: src/view/shell/Drawer.tsx:387 -#: src/view/shell/Drawer.tsx:388 -msgid "Home" -msgstr "" - -#: src/view/com/pager/FeedsTabBarMobile.tsx:99 -#: src/view/screens/PreferencesHomeFeed.tsx:95 -#: src/view/screens/Settings.tsx:481 -msgid "Home Feed Preferences" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:114 -msgid "Hosting provider" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:76 -#: src/view/com/auth/create/Step1.tsx:81 -msgid "Hosting provider address" -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:200 -msgid "I have a code" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:281 -msgid "I have my own domain" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:127 -msgid "If none are selected, suitable for all ages." -msgstr "" - -#: src/view/com/modals/AltImage.tsx:96 -msgid "Image alt text" -msgstr "" - -#: src/view/com/util/UserAvatar.tsx:304 -#: src/view/com/util/UserBanner.tsx:116 -msgid "Image options" -msgstr "" - -#: src/view/com/search/Suggestions.tsx:104 -#: src/view/com/search/Suggestions.tsx:115 -#~ msgid "In Your Network" -#~ msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:113 -msgid "Invalid username or password" -msgstr "" - -#: src/view/screens/Settings.tsx:383 -msgid "Invite" -msgstr "" - -#: src/view/com/modals/InviteCodes.tsx:91 -#: src/view/screens/Settings.tsx:371 -msgid "Invite a Friend" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:57 -msgid "Invite code" -msgstr "" - -#: src/view/com/auth/create/state.ts:136 -msgid "Invite code not accepted. Check that you input it correctly and try again." -msgstr "" - -#: src/view/shell/Drawer.tsx:629 -msgid "Invite codes: {invitesAvailable} available" -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:67 -msgid "Join the waitlist" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:68 -#: src/view/com/auth/create/Step2.tsx:72 -msgid "Join the waitlist." -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:124 -msgid "Join Waitlist" -msgstr "" - -#: src/view/com/composer/select-language/SelectLangBtn.tsx:104 -msgid "Language selection" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:88 -msgid "Language Settings" -msgstr "" - -#: src/view/screens/Settings.tsx:541 -msgid "Languages" -msgstr "" - -#: src/view/com/util/moderation/PostAlerts.tsx:47 -#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:65 -#: src/view/com/util/moderation/ScreenHider.tsx:88 -msgid "Learn More" -msgstr "" - -#: src/view/com/util/moderation/ContentHider.tsx:83 -#: src/view/com/util/moderation/PostAlerts.tsx:40 -#: src/view/com/util/moderation/PostHider.tsx:76 -#: src/view/com/util/moderation/ProfileHeaderAlerts.tsx:49 -#: src/view/com/util/moderation/ScreenHider.tsx:85 -msgid "Learn more about this warning" -msgstr "" - -#: src/view/screens/Moderation.tsx:239 -msgid "Learn more about what is public on Bluesky." -msgstr "" - -#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:82 -msgid "Leave them all unchecked to see any language." -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:49 -msgid "Leaving Bluesky" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:128 -#: src/view/com/auth/login/Login.tsx:144 -msgid "Let's get your password reset!" -msgstr "" - -#: src/view/com/util/UserAvatar.tsx:241 -#: src/view/com/util/UserBanner.tsx:60 -msgid "Library" -msgstr "" - -#: src/view/screens/Settings.tsx:405 -#~ msgid "Light" -#~ msgstr "" - -#: src/view/screens/ProfileFeed.tsx:643 -msgid "Like this feed" -msgstr "" - -#: src/view/screens/PostLikedBy.tsx:27 -#: src/view/screens/ProfileFeedLikedBy.tsx:27 -msgid "Liked by" -msgstr "" - -#: src/view/screens/Moderation.tsx:203 -#~ msgid "Limit the visibility of my account" -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:203 -msgid "Limit the visibility of my account to logged-out users" -msgstr "" - -#: src/view/com/modals/CreateOrEditList.tsx:186 -msgid "List Avatar" -msgstr "" - -#: src/view/com/modals/CreateOrEditList.tsx:199 -msgid "List Name" -msgstr "" - -#: src/view/shell/desktop/LeftNav.tsx:381 -#: src/view/shell/Drawer.tsx:479 -#: src/view/shell/Drawer.tsx:480 -msgid "Lists" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:250 -#: src/view/com/post-thread/PostThread.tsx:258 -msgid "Load more posts" -msgstr "" - -#: src/view/screens/Notifications.tsx:130 -msgid "Load new notifications" -msgstr "" - -#: src/view/com/feeds/FeedPage.tsx:185 -msgid "Load new posts" -msgstr "" - -#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:95 -msgid "Loading..." -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:50 -msgid "Local dev server" -msgstr "" - -#: src/view/screens/Moderation.tsx:134 -msgid "Logged-out users" -msgstr "" - -#: src/view/com/auth/login/ChooseAccountForm.tsx:133 -msgid "Login to account that is not listed" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:482 -msgid "Looks like this feed is only available to users with a Bluesky account. Please sign up or sign in to view this feed!" -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:63 -msgid "Make sure this is where you intend to go!" -msgstr "" - -#: src/view/screens/Search/Search.tsx:503 -msgid "Menu" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:194 -#: src/view/screens/ProfileFeed.tsx:490 -msgid "Message from server" -msgstr "" - -#: src/view/screens/Moderation.tsx:63 -#: src/view/screens/Settings.tsx:563 -#: src/view/shell/desktop/LeftNav.tsx:399 -#: src/view/shell/Drawer.tsx:498 -#: src/view/shell/Drawer.tsx:499 -msgid "Moderation" -msgstr "" - -#: src/view/screens/Moderation.tsx:93 -msgid "Moderation lists" -msgstr "" - -#: src/view/screens/ModerationModlists.tsx:58 -msgid "Moderation Lists" -msgstr "" - -#: src/view/shell/desktop/Feeds.tsx:53 -msgid "More feeds" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:524 -#: src/view/screens/ProfileFeed.tsx:370 -#: src/view/screens/ProfileList.tsx:606 -msgid "More options" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:158 -#~ msgid "More post options" -#~ msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:346 -msgid "Mute Account" -msgstr "" - -#: src/view/screens/ProfileList.tsx:533 -msgid "Mute accounts" -msgstr "" - -#: src/view/screens/ProfileList.tsx:480 -msgid "Mute list" -msgstr "" - -#: src/view/screens/ProfileList.tsx:293 -msgid "Mute these accounts?" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:144 -msgid "Mute thread" -msgstr "" - -#: src/view/screens/Moderation.tsx:107 -msgid "Muted accounts" -msgstr "" - -#: src/view/screens/ModerationMutedAccounts.tsx:106 -msgid "Muted Accounts" -msgstr "" - -#: src/view/screens/ModerationMutedAccounts.tsx:114 -msgid "Muted accounts have their posts removed from your feed and from your notifications. Mutes are completely private." -msgstr "" - -#: src/view/screens/ProfileList.tsx:295 -msgid "Muting is private. Muted accounts can interact with you, but you will not see their posts or receive notifications from them." -msgstr "" - -#: src/view/screens/Moderation.tsx:134 -#~ msgid "My Account" -#~ msgstr "" - -#: src/view/com/modals/BirthDateSettings.tsx:56 -msgid "My Birthday" -msgstr "" - -#: src/view/screens/Feeds.tsx:363 -msgid "My Feeds" -msgstr "" - -#: src/view/shell/desktop/LeftNav.tsx:67 -msgid "My Profile" -msgstr "" - -#: src/view/screens/Settings.tsx:520 -msgid "My Saved Feeds" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:177 -#: src/view/com/modals/CreateOrEditList.tsx:211 -msgid "Name" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:72 -msgid "Never lose access to your followers and data." -msgstr "" - -#: src/view/screens/Lists.tsx:76 -#: src/view/screens/ModerationModlists.tsx:78 -msgid "New" -msgstr "" - -#: src/view/com/feeds/FeedPage.tsx:196 -#: src/view/screens/Feeds.tsx:510 -#: src/view/screens/Profile.tsx:389 -#: src/view/screens/ProfileFeed.tsx:451 -#: src/view/screens/ProfileList.tsx:212 -#: src/view/screens/ProfileList.tsx:244 -#: src/view/shell/desktop/LeftNav.tsx:254 -msgid "New post" -msgstr "" - -#: src/view/shell/desktop/LeftNav.tsx:264 -msgid "New Post" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:158 -#: src/view/com/auth/login/ForgotPasswordForm.tsx:174 -#: src/view/com/auth/login/ForgotPasswordForm.tsx:184 -#: src/view/com/auth/login/LoginForm.tsx:281 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:156 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:166 -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:79 -msgid "Next" -msgstr "" - -#: src/view/com/lightbox/Lightbox.web.tsx:142 -msgid "Next image" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:191 -#: src/view/screens/PreferencesHomeFeed.tsx:226 -#: src/view/screens/PreferencesHomeFeed.tsx:263 -msgid "No" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:636 -#: src/view/screens/ProfileList.tsx:740 -msgid "No description" -msgstr "" - -#: src/view/com/composer/text-input/mobile/Autocomplete.tsx:97 -msgid "No result" -msgstr "" - -#: src/view/screens/Feeds.tsx:452 -msgid "No results found for \"{query}\"" -msgstr "" - -#: src/view/com/modals/ListAddUser.tsx:142 -#: src/view/shell/desktop/Search.tsx:112 -#~ msgid "No results found for {0}" -#~ msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:127 -#: src/view/screens/Search/Search.tsx:270 -#: src/view/screens/Search/Search.tsx:298 -#: src/view/screens/Search/Search.tsx:581 -#: src/view/shell/desktop/Search.tsx:210 -msgid "No results found for {query}" -msgstr "" - -#: src/view/com/modals/Threadgate.tsx:82 -msgid "Nobody" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:136 -#~ msgid "Not Applicable" -#~ msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:135 -msgid "Not Applicable." -msgstr "" - -#: src/view/screens/Moderation.tsx:227 -msgid "Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users." -msgstr "" - -#: src/view/screens/Moderation.tsx:227 -#~ msgid "Note: Third-party apps that display Bluesky content may not respect this setting." -#~ msgstr "" - -#: src/view/screens/Notifications.tsx:97 -#: src/view/screens/Notifications.tsx:121 -#: src/view/shell/bottom-bar/BottomBar.tsx:195 -#: src/view/shell/desktop/LeftNav.tsx:363 -#: src/view/shell/Drawer.tsx:424 -#: src/view/shell/Drawer.tsx:425 -msgid "Notifications" -msgstr "" - -#: src/view/com/util/ErrorBoundary.tsx:34 -msgid "Oh no!" -msgstr "" - -#: src/view/com/auth/login/PasswordUpdatedForm.tsx:41 -msgid "Okay" -msgstr "" - -#: src/view/com/composer/Composer.tsx:341 -msgid "One or more images is missing alt text." -msgstr "" - -#: src/view/com/pager/FeedsTabBarMobile.tsx:79 -msgid "Open navigation" -msgstr "" - -#: src/view/screens/Settings.tsx:533 -msgid "Opens configurable language settings" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:146 -#: src/view/shell/Drawer.tsx:630 -msgid "Opens list of invite codes" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:279 -msgid "Opens modal for using custom domain" -msgstr "" - -#: src/view/screens/Settings.tsx:558 -msgid "Opens moderation settings" -msgstr "" - -#: src/view/screens/Settings.tsx:514 -msgid "Opens screen with all saved feeds" -msgstr "" - -#: src/view/screens/Settings.tsx:581 -msgid "Opens the app password settings page" -msgstr "" - -#: src/view/screens/Settings.tsx:473 -msgid "Opens the home feed preferences" -msgstr "" - -#: src/view/screens/Settings.tsx:664 -msgid "Opens the storybook page" -msgstr "" - -#: src/view/screens/Settings.tsx:644 -msgid "Opens the system log page" -msgstr "" - -#: src/view/screens/Settings.tsx:494 -msgid "Opens the threads preferences" -msgstr "" - -#: src/view/com/auth/login/ChooseAccountForm.tsx:138 -msgid "Other account" -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:88 -msgid "Other service" -msgstr "" - -#: src/view/com/composer/select-language/SelectLangBtn.tsx:91 -msgid "Other..." -msgstr "" - -#: src/view/screens/NotFound.tsx:42 -#: src/view/screens/NotFound.tsx:45 -msgid "Page not found" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:101 -#: src/view/com/auth/create/Step2.tsx:111 -#: src/view/com/auth/login/LoginForm.tsx:216 -#: src/view/com/auth/login/SetNewPasswordForm.tsx:130 -#: src/view/com/modals/DeleteAccount.tsx:191 -msgid "Password" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:157 -msgid "Password updated" -msgstr "" - -#: src/view/com/auth/login/PasswordUpdatedForm.tsx:28 -msgid "Password updated!" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:121 -msgid "Pictures meant for adults." -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:89 -msgid "Pinned Feeds" -msgstr "" - -#: src/view/com/auth/create/state.ts:116 -msgid "Please choose your handle." -msgstr "" - -#: src/view/com/auth/create/state.ts:109 -msgid "Please choose your password." -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:67 -msgid "Please confirm your email before changing it. This is a temporary requirement while email-updating tools are added, and it will soon be removed." -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:140 -msgid "Please enter a unique name for this App Password or use our randomly generated one." -msgstr "" - -#: src/view/com/auth/create/state.ts:95 -msgid "Please enter your email." -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:180 -msgid "Please enter your password as well:" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:72 -#: src/view/com/modals/AppealLabel.tsx:75 -msgid "Please tell us why you think this decision was incorrect." -msgstr "" - -#: src/view/com/composer/Composer.tsx:324 -#: src/view/com/post-thread/PostThread.tsx:216 -#: src/view/screens/PostThread.tsx:77 -msgid "Post" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:375 -msgid "Post hidden" -msgstr "" - -#: src/view/com/composer/select-language/SelectLangBtn.tsx:87 -msgid "Post language" -msgstr "" - -#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:75 -msgid "Post Languages" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:427 -msgid "Post not found" -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:44 -msgid "Potentially Misleading Link" -msgstr "" - -#: src/view/com/lightbox/Lightbox.web.tsx:128 -msgid "Previous image" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:186 -msgid "Primary Language" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:91 -msgid "Prioritize Your Follows" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:75 -msgid "Privacy" -msgstr "" - -#: src/view/screens/PrivacyPolicy.tsx:29 -msgid "Privacy Policy" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:190 -msgid "Processing..." -msgstr "" - -#: src/view/shell/bottom-bar/BottomBar.tsx:237 -#: src/view/shell/Drawer.tsx:72 -#: src/view/shell/Drawer.tsx:533 -#: src/view/shell/Drawer.tsx:534 -msgid "Profile" -msgstr "" - -#: src/view/screens/Settings.tsx:789 -msgid "Protect your account by verifying your email." -msgstr "" - -#: src/view/screens/ModerationModlists.tsx:61 -msgid "Public, shareable lists of users to mute or block in bulk." -msgstr "" - -#: src/view/screens/Lists.tsx:61 -msgid "Public, shareable lists which can drive feeds." -msgstr "" - -#: src/view/com/modals/Repost.tsx:52 -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:58 -msgid "Quote post" -msgstr "" - -#: src/view/com/modals/Repost.tsx:56 -msgid "Quote Post" -msgstr "" - -#: src/view/com/modals/EditImage.tsx:236 -msgid "Ratios" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:73 -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:50 -#~ msgid "Recommended" -#~ msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFeeds.tsx:116 -msgid "Recommended Feeds" -msgstr "" - -#: src/view/com/auth/onboarding/RecommendedFollows.tsx:180 -msgid "Recommended Users" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:264 -#: src/view/com/modals/SelfLabel.tsx:83 -#: src/view/com/modals/UserAddRemoveLists.tsx:193 -#: src/view/com/util/UserAvatar.tsx:278 -#: src/view/com/util/UserBanner.tsx:89 -msgid "Remove" -msgstr "" - -#: src/view/com/feeds/FeedSourceCard.tsx:108 -msgid "Remove {0} from my feeds?" -msgstr "" - -#: src/view/com/util/AccountDropdownBtn.tsx:22 -msgid "Remove account" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:130 -msgid "Remove feed" -msgstr "" - -#: src/view/com/feeds/FeedSourceCard.tsx:107 -#: src/view/screens/ProfileFeed.tsx:280 -msgid "Remove from my feeds" -msgstr "" - -#: src/view/com/composer/photos/Gallery.tsx:167 -msgid "Remove image" -msgstr "" - -#: src/view/com/composer/ExternalEmbed.tsx:70 -msgid "Remove image preview" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:131 -msgid "Remove this feed from your saved feeds?" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:199 -#: src/view/com/modals/UserAddRemoveLists.tsx:136 -msgid "Removed from list" -msgstr "" - -#: src/view/com/threadgate/WhoCanReply.tsx:74 -msgid "Replies to this thread are disabled" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:135 -msgid "Reply Filters" -msgstr "" - -#: src/view/com/modals/report/Modal.tsx:166 -msgid "Report {collectionName}" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:380 -msgid "Report Account" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:300 -msgid "Report feed" -msgstr "" - -#: src/view/screens/ProfileList.tsx:448 -msgid "Report List" -msgstr "" - -#: src/view/com/modals/report/SendReportButton.tsx:37 -#: src/view/com/util/forms/PostDropdownBtn.tsx:162 -msgid "Report post" -msgstr "" - -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48 -msgid "Repost" -msgstr "" - -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:94 -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:105 -msgid "Repost or quote post" -msgstr "" - -#: src/view/screens/PostRepostedBy.tsx:27 -msgid "Reposted by" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:181 -#: src/view/com/modals/ChangeEmail.tsx:183 -msgid "Request Change" -msgstr "" - -#: src/view/screens/Moderation.tsx:188 -#~ msgid "Request to limit the visibility of my account" -#~ msgstr "" - -#: src/view/screens/Settings.tsx:382 -#~ msgid "Require alt text before posting" -#~ msgstr "" - -#: src/view/com/auth/create/Step2.tsx:53 -msgid "Required for this provider" -msgstr "" - -#: src/view/com/auth/login/SetNewPasswordForm.tsx:108 -msgid "Reset code" -msgstr "" - -#: src/view/screens/Settings.tsx:686 -msgid "Reset onboarding state" -msgstr "" - -#: src/view/com/auth/login/ForgotPasswordForm.tsx:98 -msgid "Reset password" -msgstr "" - -#: src/view/screens/Settings.tsx:676 -msgid "Reset preferences state" -msgstr "" - -#: src/view/screens/Settings.tsx:684 -msgid "Resets the onboarding state" -msgstr "" - -#: src/view/screens/Settings.tsx:674 -msgid "Resets the preferences state" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:167 -#: src/view/com/auth/create/CreateAccount.tsx:171 -#: src/view/com/auth/login/LoginForm.tsx:258 -#: src/view/com/auth/login/LoginForm.tsx:261 -#: src/view/com/util/error/ErrorMessage.tsx:55 -#: src/view/com/util/error/ErrorScreen.tsx:65 -msgid "Retry" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:169 -#~ msgid "Retry change handle" -#~ msgstr "" - -#: src/view/com/modals/AltImage.tsx:114 -#: src/view/com/modals/BirthDateSettings.tsx:93 -#: src/view/com/modals/BirthDateSettings.tsx:96 -#: src/view/com/modals/ChangeHandle.tsx:173 -#: src/view/com/modals/CreateOrEditList.tsx:249 -#: src/view/com/modals/CreateOrEditList.tsx:257 -#: src/view/com/modals/EditProfile.tsx:223 -msgid "Save" -msgstr "" - -#: src/view/com/modals/AltImage.tsx:105 -msgid "Save alt text" -msgstr "" - -#: src/view/com/modals/UserAddRemoveLists.tsx:212 -#~ msgid "Save changes" -#~ msgstr "" - -#: src/view/com/modals/EditProfile.tsx:231 -msgid "Save Changes" -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:170 -msgid "Save handle change" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:144 -msgid "Save image crop" -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:122 -msgid "Saved Feeds" -msgstr "" - -#: src/view/com/modals/ListAddRemoveUsers.tsx:75 -#: src/view/com/util/forms/SearchInput.tsx:64 -#: src/view/screens/Search/Search.tsx:381 -#: src/view/screens/Search/Search.tsx:533 -#: src/view/shell/bottom-bar/BottomBar.tsx:146 -#: src/view/shell/desktop/LeftNav.tsx:323 -#: src/view/shell/desktop/Search.tsx:161 -#: src/view/shell/desktop/Search.tsx:170 -#: src/view/shell/Drawer.tsx:351 -#: src/view/shell/Drawer.tsx:352 -msgid "Search" -msgstr "" - -#: src/view/screens/Search/Search.tsx:390 -msgid "Search for posts and users." -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:110 -msgid "Security Step Required" -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:29 -msgid "See what's next" -msgstr "" - -#: src/view/com/modals/ServerInput.tsx:75 -msgid "Select Bluesky Social" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:117 -msgid "Select from an existing account" -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:143 -msgid "Select service" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:280 -msgid "Select which languages you want your subscribed feeds to include. If none are selected, all languages will be shown." -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:97 -msgid "Select your app language for the default text to display in the app" -msgstr "" - -#: src/view/screens/LanguageSettings.tsx:189 -msgid "Select your preferred language for translations in your feed." -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:188 -msgid "Send Confirmation Email" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:127 -msgid "Send email" -msgstr "" - -#: src/view/com/modals/DeleteAccount.tsx:138 -msgid "Send Email" -msgstr "" - -#: src/view/shell/Drawer.tsx:284 -#: src/view/shell/Drawer.tsx:305 -msgid "Send feedback" -msgstr "" - -#: src/view/com/modals/report/SendReportButton.tsx:45 -msgid "Send Report" -msgstr "" - -#: src/view/com/auth/login/SetNewPasswordForm.tsx:78 -msgid "Set new password" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:216 -msgid "Set this setting to \"No\" to hide all quote posts from your feed. Reposts will still be visible." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:113 -msgid "Set this setting to \"No\" to hide all replies from your feed." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:182 -msgid "Set this setting to \"No\" to hide all reposts from your feed." -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:116 -msgid "Set this setting to \"Yes\" to show replies in a threaded view. This is an experimental feature." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:252 -msgid "Set this setting to \"Yes\" to show samples of your saved feeds in your following feed. This is an experimental feature." -msgstr "" - -#: src/view/screens/Settings.tsx:277 -#: src/view/shell/desktop/LeftNav.tsx:435 -#: src/view/shell/Drawer.tsx:554 -#: src/view/shell/Drawer.tsx:555 -msgid "Settings" -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:125 -msgid "Sexual activity or erotic nudity." -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:314 -#: src/view/com/util/forms/PostDropdownBtn.tsx:126 -#: src/view/screens/ProfileList.tsx:407 -msgid "Share" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:312 -msgid "Share feed" -msgstr "" - -#: src/view/screens/ProfileFeed.tsx:276 -#~ msgid "Share link" -#~ msgstr "" - -#: src/view/screens/Settings.tsx:316 -msgid "Show" -msgstr "" - -#: src/view/com/util/moderation/ScreenHider.tsx:114 -msgid "Show anyway" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:249 -msgid "Show Posts from My Feeds" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:213 -msgid "Show Quote Posts" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:110 -msgid "Show Replies" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:94 -msgid "Show replies by people you follow before all other replies." -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:179 -msgid "Show Reposts" -msgstr "" - -#: src/view/com/notifications/FeedItem.tsx:337 -msgid "Show users" -msgstr "" - -#: src/view/com/auth/login/Login.tsx:98 -#: src/view/com/auth/SplashScreen.tsx:49 -#: src/view/shell/NavSignupCard.tsx:52 -#: src/view/shell/NavSignupCard.tsx:53 -msgid "Sign in" -msgstr "" - -#: src/view/com/auth/SplashScreen.tsx:52 -#: src/view/com/auth/SplashScreen.web.tsx:84 -msgid "Sign In" -msgstr "" - -#: src/view/com/auth/login/ChooseAccountForm.tsx:44 -msgid "Sign in as {0}" -msgstr "" - -#: src/view/com/auth/login/ChooseAccountForm.tsx:118 -#: src/view/com/auth/login/Login.tsx:116 -msgid "Sign in as..." -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:130 -msgid "Sign into" -msgstr "" - -#: src/view/com/modals/SwitchAccount.tsx:60 -#: src/view/com/modals/SwitchAccount.tsx:63 -msgid "Sign out" -msgstr "" - -#: src/view/shell/NavSignupCard.tsx:43 -#: src/view/shell/NavSignupCard.tsx:44 -#: src/view/shell/NavSignupCard.tsx:46 -msgid "Sign up" -msgstr "" - -#: src/view/shell/NavSignupCard.tsx:36 -msgid "Sign up or sign in to join the conversation" -msgstr "" - -#: src/view/screens/Settings.tsx:327 -msgid "Signed in as" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:33 -msgid "Skip" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:69 -msgid "Sort Replies" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:72 -msgid "Sort replies to the same post by:" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:122 -msgid "Square" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:90 -#: src/view/com/modals/ServerInput.tsx:62 -msgid "Staging" -msgstr "" - -#: src/view/screens/Settings.tsx:730 -msgid "Status page" -msgstr "" - -#: src/view/screens/Settings.tsx:666 -msgid "Storybook" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:101 -msgid "Submit" -msgstr ">>>>>>> cb8a33b6 (Fix translations)" - -#: src/view/screens/ProfileList.tsx:597 -msgid "Subscribe" -msgstr "" - -#: src/view/screens/ProfileList.tsx:593 -msgid "Subscribe to this list" -msgstr "" - -#: src/view/screens/Search/Search.tsx:354 -msgid "Suggested Follows" -msgstr "" - -#: src/view/screens/Support.tsx:30 -#: src/view/screens/Support.tsx:33 -msgid "Support" -msgstr "" - -#: src/view/com/modals/SwitchAccount.tsx:111 -msgid "Switch Account" -msgstr "" - -#: src/view/screens/Settings.tsx:398 -#~ msgid "System" -#~ msgstr "" - -#: src/view/screens/Settings.tsx:646 -msgid "System log" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:112 -msgid "Tall" -msgstr "" - -#: src/view/shell/desktop/RightNav.tsx:84 -msgid "Terms" -msgstr "" - -#: src/view/screens/TermsOfService.tsx:29 -msgid "Terms of Service" -msgstr "" - -#: src/view/com/modals/AppealLabel.tsx:70 -#: src/view/com/modals/report/InputIssueDetails.tsx:50 -msgid "Text input field" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:282 -msgid "The account will be able to interact with you after unblocking." -msgstr "" - -#: src/view/screens/CommunityGuidelines.tsx:36 -msgid "The Community Guidelines have been moved to <0/>" -msgstr "" - -#: src/view/screens/CopyrightPolicy.tsx:33 -msgid "The Copyright Policy has been moved to <0/>" -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:430 -msgid "The post may have been deleted." -msgstr "" - -#: src/view/screens/PrivacyPolicy.tsx:33 -msgid "The Privacy Policy has been moved to <0/>" -msgstr "" - -#: src/view/screens/Support.tsx:36 -msgid "The support form has been moved. If you need help, please<0/> or visit {HELP_DESK_URL} to get in touch with us." -msgstr "" - -#: src/view/screens/TermsOfService.tsx:33 -msgid "The Terms of Service have been moved to" -msgstr "" - -#: src/view/com/util/ErrorBoundary.tsx:35 -msgid "There was an unexpected issue in the application. Please let us know if this happened to you!" -msgstr "" - -#: src/view/com/util/moderation/LabelInfo.tsx:45 -msgid "This {0} has been labeled." -msgstr "" - -#: src/view/com/util/moderation/ScreenHider.tsx:72 -msgid "This {screenDescription} has been flagged:" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:107 -msgid "This content is not viewable without a Bluesky account." -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:113 -msgid "This feed is currently receiving high traffic and is temporarily unavailable. Please try again later." -msgstr "" - -#: src/view/com/modals/BirthDateSettings.tsx:61 -msgid "This information is not shared with other users." -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:105 -msgid "This is important in case you ever need to change your email or reset your password." -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:55 -msgid "This is the service that keeps you online." -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:56 -msgid "This link is taking you to the following website:" -msgstr "" - -#: src/view/com/post-thread/PostThreadItem.tsx:123 -msgid "This post has been deleted." -msgstr "" - -#: src/view/com/modals/SelfLabel.tsx:137 -msgid "This warning is only available for posts with media attached." -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:53 -#: src/view/screens/Settings.tsx:503 -msgid "Thread Preferences" -msgstr "" - -#: src/view/screens/PreferencesThreads.tsx:113 -msgid "Threaded Mode" -msgstr "" - -#: src/view/com/util/forms/DropdownButton.tsx:230 -msgid "Toggle dropdown" -msgstr "" - -#: src/view/com/modals/EditImage.tsx:271 -msgid "Transformations" -msgstr "" - -#: src/view/com/post-thread/PostThreadItem.tsx:692 -#: src/view/com/post-thread/PostThreadItem.tsx:694 -#: src/view/com/util/forms/PostDropdownBtn.tsx:98 -msgid "Translate" -msgstr "" - -#: src/view/com/util/error/ErrorScreen.tsx:73 -msgid "Try again" -msgstr "" - -#: src/view/screens/ProfileList.tsx:495 -msgid "Un-block list" -msgstr "" - -#: src/view/screens/ProfileList.tsx:480 -msgid "Un-mute list" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:64 -#: src/view/com/auth/login/Login.tsx:76 -#: src/view/com/auth/login/LoginForm.tsx:117 -msgid "Unable to contact your service. Please check your Internet connection." -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:442 -#: src/view/com/profile/ProfileHeader.tsx:445 -msgid "Unblock" -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:280 -#: src/view/com/profile/ProfileHeader.tsx:364 -msgid "Unblock Account" -msgstr "" - -#: src/view/com/util/post-ctrls/RepostButton.web.tsx:48 -msgid "Undo repost" -msgstr "" - -#: src/view/com/auth/create/state.ts:210 -msgid "Unfortunately, you do not meet the requirements to create an account." -msgstr "" - -#: src/view/com/profile/ProfileHeader.tsx:345 -msgid "Unmute Account" -msgstr "" - -#: src/view/com/util/forms/PostDropdownBtn.tsx:144 -msgid "Unmute thread" -msgstr "" - -#: src/view/screens/ProfileList.tsx:463 -msgid "Unpin moderation list" -msgstr "" - -#: src/view/com/modals/UserAddRemoveLists.tsx:54 -msgid "Update {displayName} in Lists" -msgstr "" - -#: src/lib/hooks/useOTAUpdate.ts:15 -msgid "Update Available" -msgstr "" - -#: src/view/com/auth/login/SetNewPasswordForm.tsx:172 -msgid "Updating..." -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:453 -msgid "Upload a text file to:" -msgstr "" - -#: src/view/screens/AppPasswords.tsx:194 -msgid "Use app passwords to login to other Bluesky clients without giving full access to your account or password." -msgstr "" - -#: src/view/com/modals/ChangeHandle.tsx:513 -msgid "Use default provider" -msgstr "" - -#: src/view/com/modals/AddAppPasswords.tsx:150 -msgid "Use this to sign into the other app along with your handle." -msgstr "" - -#: src/view/com/modals/InviteCodes.tsx:197 -msgid "Used by:" -msgstr "" - -#: src/view/com/auth/create/Step3.tsx:38 -msgid "User handle" -msgstr "" - -#: src/view/screens/Lists.tsx:58 -msgid "User Lists" -msgstr "" - -#: src/view/com/auth/login/LoginForm.tsx:170 -#: src/view/com/auth/login/LoginForm.tsx:187 -msgid "Username or email address" -msgstr "" - -#: src/view/screens/ProfileList.tsx:767 -msgid "Users" -msgstr "" - -#: src/view/com/threadgate/WhoCanReply.tsx:115 -msgid "Users followed by <0/>" -msgstr "" - -#: src/view/com/modals/Threadgate.tsx:106 -msgid "Users in \"{0}\"" -msgstr "" - -#: src/view/screens/Settings.tsx:750 -msgid "Verify email" -msgstr "" - -#: src/view/screens/Settings.tsx:775 -msgid "Verify my email" -msgstr "" - -#: src/view/screens/Settings.tsx:784 -msgid "Verify My Email" -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:205 -#: src/view/com/modals/ChangeEmail.tsx:207 -msgid "Verify New Email" -msgstr "" - -#: src/view/screens/Log.tsx:52 -msgid "View debug entry" -msgstr "" - -#: src/view/com/profile/ProfileSubpageHeader.tsx:128 -msgid "View the avatar" -msgstr "" - -#: src/view/com/modals/LinkWarning.tsx:73 -msgid "Visit Site" -msgstr "" - -#: src/view/com/auth/create/CreateAccount.tsx:125 -msgid "We're so excited to have you join us!" -msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:99 -#~ msgid "We're sorry, but this content is not viewable without a Bluesky account." -#~ msgstr "" - -#: src/view/com/posts/FeedErrorMessage.tsx:105 -#~ msgid "We're sorry, but this feed is currently receiving high traffic and is temporarily unavailable. Please try again later." -#~ msgstr "" - -#: src/view/screens/Search/Search.tsx:237 -msgid "We're sorry, but your search could not be completed. Please try again in a few minutes." -msgstr "" - -#: src/view/screens/NotFound.tsx:48 -msgid "We're sorry! We can't find the page you were looking for." -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:46 -msgid "Welcome to <0>Bluesky" -msgstr "" - -#: src/view/com/modals/report/Modal.tsx:169 -msgid "What is the issue with this {collectionName}?" -msgstr "" - -#: src/view/com/modals/lang-settings/PostLanguagesSettings.tsx:78 -msgid "Which languages are used in this post?" -msgstr "" - -#: src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx:77 -msgid "Which languages would you like to see in your algorithmic feeds?" -msgstr "" - -#: src/view/com/composer/threadgate/ThreadgateBtn.tsx:43 -#: src/view/com/modals/Threadgate.tsx:66 -msgid "Who can reply" -msgstr "" - -#: src/view/com/threadgate/WhoCanReply.tsx:79 -msgid "Who can reply?" -msgstr "" - -#: src/view/com/modals/crop-image/CropImage.web.tsx:102 -msgid "Wide" -msgstr "" - -#: src/view/com/composer/Composer.tsx:396 -msgid "Write post" -msgstr "" - -#: src/view/com/composer/Prompt.tsx:33 -msgid "Write your reply" -msgstr "" - -#: src/view/screens/PreferencesHomeFeed.tsx:192 -#: src/view/screens/PreferencesHomeFeed.tsx:227 -#: src/view/screens/PreferencesHomeFeed.tsx:262 -msgid "Yes" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:106 -msgid "You can change hosting providers at any time." -msgstr "" - -#: src/view/com/auth/login/Login.tsx:158 -#: src/view/com/auth/login/PasswordUpdatedForm.tsx:31 -msgid "You can now sign in with your new password." -msgstr "" - -#: src/view/com/modals/InviteCodes.tsx:64 -msgid "You don't have any invite codes yet! We'll send you some when you've been on Bluesky for a little longer." -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:102 -msgid "You don't have any pinned feeds." -msgstr "" - -#: src/view/screens/Feeds.tsx:383 -msgid "You don't have any saved feeds!" -msgstr "" - -#: src/view/screens/SavedFeeds.tsx:135 -msgid "You don't have any saved feeds." -msgstr "" - -#: src/view/com/post-thread/PostThread.tsx:378 -msgid "You have blocked the author or you have been blocked by the author." -msgstr "" - -#: src/view/com/feeds/ProfileFeedgens.tsx:154 -msgid "You have no feeds." -msgstr "" - -#: src/view/com/lists/MyLists.tsx:89 -#: src/view/com/lists/ProfileLists.tsx:158 -msgid "You have no lists." -msgstr "" - -#: src/view/screens/ModerationBlockedAccounts.tsx:131 -msgid "You have not blocked any accounts yet. To block an account, go to their profile and selected \"Block account\" from the menu on their account." -msgstr "" - -#: src/view/screens/AppPasswords.tsx:86 -msgid "You have not created any app passwords yet. You can create one by pressing the button below." -msgstr "" - -#: src/view/screens/ModerationMutedAccounts.tsx:130 -msgid "You have not muted any accounts yet. To mute an account, go to their profile and selected \"Mute account\" from the menu on their account." -msgstr "" - -#: src/view/com/auth/login/SetNewPasswordForm.tsx:81 -msgid "You will receive an email with a \"reset code.\" Enter that code here, then enter your new password." -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:43 -msgid "Your account" -msgstr "" - -#: src/view/com/auth/create/Step2.tsx:122 -msgid "Your birth date" -msgstr "" - -#: src/view/com/auth/create/state.ts:102 -msgid "Your email appears to be invalid." -msgstr "" - -#: src/view/com/modals/Waitlist.tsx:107 -msgid "Your email has been saved! We'll be in touch soon." -msgstr "" - -#: src/view/com/modals/ChangeEmail.tsx:125 -msgid "Your email has been updated but not verified. As a next step, please verify your new email." -msgstr "" - -#: src/view/com/modals/VerifyEmail.tsx:100 -msgid "Your email has not yet been verified. This is an important security step which we recommend." -msgstr "" - -#: src/view/com/auth/create/Step3.tsx:42 -#: src/view/com/modals/ChangeHandle.tsx:270 -msgid "Your full handle will be" -msgstr "" - -#: src/view/com/auth/create/Step1.tsx:53 -msgid "Your hosting provider" -msgstr "" - -#: src/view/screens/Settings.tsx:402 -#: src/view/shell/desktop/RightNav.tsx:127 -#: src/view/shell/Drawer.tsx:644 -msgid "Your invite codes are hidden when logged in using an App Password" -msgstr "" - -#: src/view/com/auth/onboarding/WelcomeMobile.tsx:59 -msgid "Your posts, likes, and blocks are public. Mutes are private." -msgstr "" - -#: src/view/com/modals/SwitchAccount.tsx:78 -msgid "Your profile" -msgstr "" - -#: src/view/screens/Moderation.tsx:205 -#~ msgid "Your profile and account will not be visible to anyone visiting the Bluesky app without an account, or to account holders who are not logged in. Enabling this will not make your profile private." -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:220 -#~ msgid "Your profile and content will not be visible to anyone visiting the Bluesky app without an account. Enabling this will not make your profile private." -#~ msgstr "" - -#: src/view/screens/Moderation.tsx:220 -msgid "Your profile and posts will not be visible to people visiting the Bluesky app or website without having an account and being logged in." -msgstr "" - -#: src/view/com/auth/create/Step3.tsx:28 -msgid "Your user handle" -msgstr "" diff --git a/src/locale/locales/hi/messages.po b/src/locale/locales/hi/messages.po index 0f16e2fa8b..0ef89e2a08 100644 --- a/src/locale/locales/hi/messages.po +++ b/src/locale/locales/hi/messages.po @@ -21,7 +21,7 @@ msgstr "" #~ msgid ". This warning is only available for posts with media attached." #~ msgstr "यह चेतावनी केवल मीडिया वाले पोस्ट के लिए उपलब्ध है।" -#: src/view/shell/desktop/RightNav.tsx:158 +#: src/view/shell/desktop/RightNav.tsx:163 msgid "{0, plural, one {# invite code available} other {# invite codes available}}" msgstr "" @@ -33,7 +33,7 @@ msgstr "{0}" msgid "{0} {purposeLabel} List" msgstr "{0} {purposeLabel} सूची" -#: src/view/shell/desktop/RightNav.tsx:141 +#: src/view/shell/desktop/RightNav.tsx:146 msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}" msgstr "" @@ -175,7 +175,7 @@ msgstr "वैकल्पिक पाठ" msgid "Alt text describes images for blind and low-vision users, and helps give context to everyone." msgstr "ऑल्ट टेक्स्ट अंधा और कम दृश्य लोगों के लिए छवियों का वर्णन करता है, और हर किसी को संदर्भ देने में मदद करता है।।" -#: src/view/com/modals/VerifyEmail.tsx:110 +#: src/view/com/modals/VerifyEmail.tsx:118 msgid "An email has been sent to {0}. It includes a confirmation code which you can enter below." msgstr "{0} को ईमेल भेजा गया है। इसमें एक OTP कोड शामिल है जिसे आप नीचे दर्ज कर सकते हैं।।" @@ -232,7 +232,7 @@ msgstr "क्या आप वाकई इस ड्राफ्ट को ह msgid "Are you sure?" msgstr "क्या आप वास्तव में इसे करना चाहते हैं?" -#: src/view/com/util/forms/PostDropdownBtn.tsx:185 +#: src/view/com/util/forms/PostDropdownBtn.tsx:188 msgid "Are you sure? This cannot be undone." msgstr "क्या आप वास्तव में इसे करना चाहते हैं? इसे असंपादित नहीं किया जा सकता है।" @@ -287,7 +287,7 @@ msgstr "" msgid "Block these accounts?" msgstr "खाता ब्लॉक करें?" -#: src/view/screens/Moderation.tsx:121 +#: src/view/screens/Moderation.tsx:123 msgid "Blocked accounts" msgstr "ब्लॉक किए गए खाते" @@ -331,7 +331,7 @@ msgstr "Bluesky सार्वजनिक है।।" msgid "Bluesky uses invites to build a healthier community. If you don't know anybody with an invite, you can sign up for the waitlist and we'll send one soon." msgstr "ब्लूस्की एक स्वस्थ समुदाय बनाने के लिए आमंत्रित करता है। यदि आप किसी को आमंत्रित नहीं करते हैं, तो आप प्रतीक्षा सूची के लिए साइन अप कर सकते हैं और हम जल्द ही एक भेज देंगे।।" -#: src/view/screens/Moderation.tsx:222 +#: src/view/screens/Moderation.tsx:225 msgid "Bluesky will not show your profile and posts to logged-out users. Other apps may not honor this request. This does not make your account private." msgstr "" @@ -344,7 +344,7 @@ msgid "Build version {0} {1}" msgstr "Build version {0} {1}" #: src/view/com/composer/photos/OpenCameraBtn.tsx:60 -#: src/view/com/util/UserAvatar.tsx:217 +#: src/view/com/util/UserAvatar.tsx:221 #: src/view/com/util/UserBanner.tsx:38 msgid "Camera" msgstr "कैमरा" @@ -420,7 +420,7 @@ msgstr "हैंडल बदलें" msgid "Change Handle" msgstr "हैंडल बदलें" -#: src/view/com/modals/VerifyEmail.tsx:133 +#: src/view/com/modals/VerifyEmail.tsx:141 msgid "Change my email" msgstr "मेरा ईमेल बदलें" @@ -504,7 +504,7 @@ msgstr "जवाब लिखो" #: src/view/com/modals/AppealLabel.tsx:98 #: src/view/com/modals/Confirm.tsx:75 #: src/view/com/modals/SelfLabel.tsx:154 -#: src/view/com/modals/VerifyEmail.tsx:217 +#: src/view/com/modals/VerifyEmail.tsx:225 #: src/view/screens/PreferencesHomeFeed.tsx:299 #: src/view/screens/PreferencesThreads.tsx:153 msgid "Confirm" @@ -525,7 +525,7 @@ msgstr "खाते को हटा दें" #: src/view/com/modals/ChangeEmail.tsx:157 #: src/view/com/modals/DeleteAccount.tsx:176 -#: src/view/com/modals/VerifyEmail.tsx:151 +#: src/view/com/modals/VerifyEmail.tsx:159 msgid "Confirmation code" msgstr "OTP कोड" @@ -534,7 +534,7 @@ msgstr "OTP कोड" msgid "Connecting..." msgstr "कनेक्टिंग ..।" -#: src/view/screens/Moderation.tsx:79 +#: src/view/screens/Moderation.tsx:81 msgid "Content filtering" msgstr "सामग्री फ़िल्टरिंग" @@ -573,7 +573,7 @@ msgstr "कॉपी" msgid "Copy link to list" msgstr "" -#: src/view/com/util/forms/PostDropdownBtn.tsx:126 +#: src/view/com/util/forms/PostDropdownBtn.tsx:129 msgid "Copy link to post" msgstr "" @@ -581,7 +581,7 @@ msgstr "" msgid "Copy link to profile" msgstr "" -#: src/view/com/util/forms/PostDropdownBtn.tsx:112 +#: src/view/com/util/forms/PostDropdownBtn.tsx:115 msgid "Copy post text" msgstr "पोस्ट टेक्स्ट कॉपी करें" @@ -652,11 +652,11 @@ msgstr "मेरा खाता हटाएं" msgid "Delete my account…" msgstr "मेरा खाता हटाएं…" -#: src/view/com/util/forms/PostDropdownBtn.tsx:180 +#: src/view/com/util/forms/PostDropdownBtn.tsx:183 msgid "Delete post" msgstr "पोस्ट को हटाएं" -#: src/view/com/util/forms/PostDropdownBtn.tsx:184 +#: src/view/com/util/forms/PostDropdownBtn.tsx:187 msgid "Delete this post?" msgstr "इस पोस्ट को डीलीट करें?" @@ -687,7 +687,7 @@ msgstr "" msgid "Discard draft" msgstr "ड्राफ्ट हटाएं" -#: src/view/screens/Moderation.tsx:204 +#: src/view/screens/Moderation.tsx:207 msgid "Discourage apps from showing my account to logged-out users" msgstr "" @@ -836,7 +836,7 @@ msgstr "फ़ीड ऑफ़लाइन है" msgid "Feed Preferences" msgstr "फ़ीड प्राथमिकता" -#: src/view/shell/desktop/RightNav.tsx:64 +#: src/view/shell/desktop/RightNav.tsx:67 #: src/view/shell/Drawer.tsx:292 msgid "Feedback" msgstr "प्रतिक्रिया" @@ -928,7 +928,7 @@ msgstr "पासवर्ड भूल गए" msgid "Gallery" msgstr "गैलरी" -#: src/view/com/modals/VerifyEmail.tsx:175 +#: src/view/com/modals/VerifyEmail.tsx:183 msgid "Get Started" msgstr "प्रारंभ करें" @@ -956,7 +956,7 @@ msgstr "अगला" msgid "Handle" msgstr "हैंडल" -#: src/view/shell/desktop/RightNav.tsx:93 +#: src/view/shell/desktop/RightNav.tsx:96 #: src/view/shell/Drawer.tsx:302 msgid "Help" msgstr "सहायता" @@ -1023,7 +1023,7 @@ msgstr "होस्टिंग प्रदाता" msgid "Hosting provider address" msgstr "होस्टिंग प्रदाता पता" -#: src/view/com/modals/VerifyEmail.tsx:200 +#: src/view/com/modals/VerifyEmail.tsx:208 msgid "I have a code" msgstr "मेरे पास एक OTP कोड है" @@ -1039,7 +1039,7 @@ msgstr "यदि किसी को चुना जाता है, तो msgid "Image alt text" msgstr "छवि alt पाठ" -#: src/view/com/util/UserAvatar.tsx:304 +#: src/view/com/util/UserAvatar.tsx:308 #: src/view/com/util/UserBanner.tsx:116 msgid "Image options" msgstr "छवि विकल्प" @@ -1113,7 +1113,7 @@ msgstr "अधिक जानें" msgid "Learn more about this warning" msgstr "इस चेतावनी के बारे में अधिक जानें" -#: src/view/screens/Moderation.tsx:239 +#: src/view/screens/Moderation.tsx:242 msgid "Learn more about what is public on Bluesky." msgstr "" @@ -1130,7 +1130,7 @@ msgstr "लीविंग Bluesky" msgid "Let's get your password reset!" msgstr "चलो अपना पासवर्ड रीसेट करें!" -#: src/view/com/util/UserAvatar.tsx:241 +#: src/view/com/util/UserAvatar.tsx:245 #: src/view/com/util/UserBanner.tsx:60 msgid "Library" msgstr "चित्र पुस्तकालय" @@ -1200,7 +1200,7 @@ msgstr "स्थानीय देव सर्वर" #~ msgid "Logged-out users" #~ msgstr "" -#: src/view/screens/Moderation.tsx:134 +#: src/view/screens/Moderation.tsx:136 msgid "Logged-out visibility" msgstr "" @@ -1237,7 +1237,7 @@ msgstr "मेनू" msgid "Message from server" msgstr "" -#: src/view/screens/Moderation.tsx:63 +#: src/view/screens/Moderation.tsx:64 #: src/view/screens/Settings.tsx:563 #: src/view/shell/desktop/LeftNav.tsx:391 #: src/view/shell/Drawer.tsx:490 @@ -1245,7 +1245,7 @@ msgstr "" msgid "Moderation" msgstr "मॉडरेशन" -#: src/view/screens/Moderation.tsx:93 +#: src/view/screens/Moderation.tsx:95 msgid "Moderation lists" msgstr "मॉडरेशन सूचियाँ" @@ -1283,11 +1283,11 @@ msgstr "" msgid "Mute these accounts?" msgstr "इन खातों को म्यूट करें?" -#: src/view/com/util/forms/PostDropdownBtn.tsx:144 +#: src/view/com/util/forms/PostDropdownBtn.tsx:147 msgid "Mute thread" msgstr "थ्रेड म्यूट करें" -#: src/view/screens/Moderation.tsx:107 +#: src/view/screens/Moderation.tsx:109 msgid "Muted accounts" msgstr "म्यूट किए गए खाते" @@ -1413,7 +1413,7 @@ msgstr "लागू नहीं।" #~ msgid "Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users." #~ msgstr "" -#: src/view/screens/Moderation.tsx:229 +#: src/view/screens/Moderation.tsx:232 msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites." msgstr "" @@ -1454,7 +1454,7 @@ msgstr "ओपन नेविगेशन" msgid "Opens configurable language settings" msgstr "भाषा सेटिंग्स खोलें" -#: src/view/shell/desktop/RightNav.tsx:146 +#: src/view/shell/desktop/RightNav.tsx:151 #: src/view/shell/Drawer.tsx:622 msgid "Opens list of invite codes" msgstr "" @@ -1603,7 +1603,7 @@ msgstr "प्राथमिक भाषा" msgid "Prioritize Your Follows" msgstr "अपने फ़ॉलोअर्स को प्राथमिकता दें" -#: src/view/shell/desktop/RightNav.tsx:75 +#: src/view/shell/desktop/RightNav.tsx:78 msgid "Privacy" msgstr "गोपनीयता" @@ -1663,7 +1663,7 @@ msgstr "अनुशंसित लोग" #: src/view/com/modals/ListAddRemoveUsers.tsx:264 #: src/view/com/modals/SelfLabel.tsx:83 #: src/view/com/modals/UserAddRemoveLists.tsx:193 -#: src/view/com/util/UserAvatar.tsx:278 +#: src/view/com/util/UserAvatar.tsx:282 #: src/view/com/util/UserBanner.tsx:89 msgid "Remove" msgstr "निकालें" @@ -1736,7 +1736,7 @@ msgid "Report List" msgstr "रिपोर्ट सूची" #: src/view/com/modals/report/SendReportButton.tsx:37 -#: src/view/com/util/forms/PostDropdownBtn.tsx:162 +#: src/view/com/util/forms/PostDropdownBtn.tsx:165 msgid "Report post" msgstr "रिपोर्ट पोस्ट" @@ -1890,7 +1890,7 @@ msgstr "ऐप में प्रदर्शित होने वाले msgid "Select your preferred language for translations in your feed." msgstr "अपने फ़ीड में अनुवाद के लिए अपनी पसंदीदा भाषा चुनें।" -#: src/view/com/modals/VerifyEmail.tsx:188 +#: src/view/com/modals/VerifyEmail.tsx:196 msgid "Send Confirmation Email" msgstr "पुष्टिकरण ईमेल भेजें" @@ -1947,7 +1947,7 @@ msgid "Sexual activity or erotic nudity." msgstr "यौन गतिविधि या कामुक नग्नता।।" #: src/view/com/profile/ProfileHeader.tsx:338 -#: src/view/com/util/forms/PostDropdownBtn.tsx:126 +#: src/view/com/util/forms/PostDropdownBtn.tsx:129 #: src/view/screens/ProfileList.tsx:407 msgid "Share" msgstr "शेयर" @@ -2102,7 +2102,7 @@ msgstr "सिस्टम लॉग" msgid "Tall" msgstr "लंबा" -#: src/view/shell/desktop/RightNav.tsx:84 +#: src/view/shell/desktop/RightNav.tsx:87 msgid "Terms" msgstr "शर्तें" @@ -2167,7 +2167,7 @@ msgstr "" msgid "This information is not shared with other users." msgstr "यह जानकारी अन्य उपयोगकर्ताओं के साथ साझा नहीं की जाती है।।" -#: src/view/com/modals/VerifyEmail.tsx:105 +#: src/view/com/modals/VerifyEmail.tsx:113 msgid "This is important in case you ever need to change your email or reset your password." msgstr "अगर आपको कभी अपना ईमेल बदलने या पासवर्ड रीसेट करने की आवश्यकता है तो यह महत्वपूर्ण है।।" @@ -2204,9 +2204,9 @@ msgstr "ड्रॉपडाउन टॉगल करें" msgid "Transformations" msgstr "परिवर्तन" -#: src/view/com/post-thread/PostThreadItem.tsx:704 #: src/view/com/post-thread/PostThreadItem.tsx:706 -#: src/view/com/util/forms/PostDropdownBtn.tsx:98 +#: src/view/com/post-thread/PostThreadItem.tsx:708 +#: src/view/com/util/forms/PostDropdownBtn.tsx:101 msgid "Translate" msgstr "अनुवाद" @@ -2250,7 +2250,7 @@ msgstr "" msgid "Unmute Account" msgstr "अनम्यूट खाता" -#: src/view/com/util/forms/PostDropdownBtn.tsx:144 +#: src/view/com/util/forms/PostDropdownBtn.tsx:147 msgid "Unmute thread" msgstr "थ्रेड को अनम्यूट करें" @@ -2485,7 +2485,7 @@ msgstr "आपका ईमेल बचाया गया है! हम ज msgid "Your email has been updated but not verified. As a next step, please verify your new email." msgstr "आपका ईमेल अद्यतन किया गया है लेकिन सत्यापित नहीं किया गया है। अगले चरण के रूप में, कृपया अपना नया ईमेल सत्यापित करें।।" -#: src/view/com/modals/VerifyEmail.tsx:100 +#: src/view/com/modals/VerifyEmail.tsx:108 msgid "Your email has not yet been verified. This is an important security step which we recommend." msgstr "आपका ईमेल अभी तक सत्यापित नहीं हुआ है। यह एक महत्वपूर्ण सुरक्षा कदम है जिसे हम अनुशंसा करते हैं।।" @@ -2499,7 +2499,7 @@ msgid "Your hosting provider" msgstr "आपका होस्टिंग प्रदाता" #: src/view/screens/Settings.tsx:402 -#: src/view/shell/desktop/RightNav.tsx:127 +#: src/view/shell/desktop/RightNav.tsx:132 #: src/view/shell/Drawer.tsx:636 msgid "Your invite codes are hidden when logged in using an App Password" msgstr "" diff --git a/src/locale/locales/ja/messages.po b/src/locale/locales/ja/messages.po index 09a0be578d..5298b2ffb8 100644 --- a/src/locale/locales/ja/messages.po +++ b/src/locale/locales/ja/messages.po @@ -13,7 +13,7 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: src/view/shell/desktop/RightNav.tsx:158 +#: src/view/shell/desktop/RightNav.tsx:163 msgid "{0, plural, one {# invite code available} other {# invite codes available}}" msgstr "" @@ -25,7 +25,7 @@ msgstr "{0}" msgid "{0} {purposeLabel} List" msgstr "{0} {purposeLabel} リスト" -#: src/view/shell/desktop/RightNav.tsx:141 +#: src/view/shell/desktop/RightNav.tsx:146 msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}" msgstr "" @@ -155,7 +155,7 @@ msgstr "ALTテキスト" msgid "Alt text describes images for blind and low-vision users, and helps give context to everyone." msgstr "ALTテキストは、視覚障害者や低視力者のために画像を説明し、すべての人に文脈を与えるのに役立ちます。" -#: src/view/com/modals/VerifyEmail.tsx:110 +#: src/view/com/modals/VerifyEmail.tsx:118 msgid "An email has been sent to {0}. It includes a confirmation code which you can enter below." msgstr "Eメールが{0}に送信されました。以下に入力できる確認コードが含まれています。" @@ -208,7 +208,7 @@ msgstr "本当にこの下書きを破棄しますか?" msgid "Are you sure?" msgstr "本当ですか?" -#: src/view/com/util/forms/PostDropdownBtn.tsx:185 +#: src/view/com/util/forms/PostDropdownBtn.tsx:188 msgid "Are you sure? This cannot be undone." msgstr "本当ですか?これは元に戻せません。" @@ -259,7 +259,7 @@ msgstr "" msgid "Block these accounts?" msgstr "これらのアカウントをブロックしますか?" -#: src/view/screens/Moderation.tsx:121 +#: src/view/screens/Moderation.tsx:123 msgid "Blocked accounts" msgstr "ブロックされたブロック" @@ -303,7 +303,7 @@ msgstr "Blueskyはオープンです。" msgid "Bluesky uses invites to build a healthier community. If you don't know anybody with an invite, you can sign up for the waitlist and we'll send one soon." msgstr "Blueskyはより健全なコミュニティを構築するために招待状を使用します。招待状をお持ちでない方の場合、waitlistに申し込めば招待状をお送りします。" -#: src/view/screens/Moderation.tsx:222 +#: src/view/screens/Moderation.tsx:225 msgid "Bluesky will not show your profile and posts to logged-out users. Other apps may not honor this request. This does not make your account private." msgstr "" @@ -316,7 +316,7 @@ msgid "Build version {0} {1}" msgstr "ビルドバージョン {0} {1}" #: src/view/com/composer/photos/OpenCameraBtn.tsx:60 -#: src/view/com/util/UserAvatar.tsx:217 +#: src/view/com/util/UserAvatar.tsx:221 #: src/view/com/util/UserBanner.tsx:38 msgid "Camera" msgstr "カメラ" @@ -392,7 +392,7 @@ msgstr "ハンドルを変更" msgid "Change Handle" msgstr "ハンドルを変更" -#: src/view/com/modals/VerifyEmail.tsx:133 +#: src/view/com/modals/VerifyEmail.tsx:141 msgid "Change my email" msgstr "Eメールの変更" @@ -476,7 +476,7 @@ msgstr "返信を作成" #: src/view/com/modals/AppealLabel.tsx:98 #: src/view/com/modals/Confirm.tsx:75 #: src/view/com/modals/SelfLabel.tsx:154 -#: src/view/com/modals/VerifyEmail.tsx:217 +#: src/view/com/modals/VerifyEmail.tsx:225 #: src/view/screens/PreferencesHomeFeed.tsx:299 #: src/view/screens/PreferencesThreads.tsx:153 msgid "Confirm" @@ -497,7 +497,7 @@ msgstr "アカウントの削除を確認" #: src/view/com/modals/ChangeEmail.tsx:157 #: src/view/com/modals/DeleteAccount.tsx:176 -#: src/view/com/modals/VerifyEmail.tsx:151 +#: src/view/com/modals/VerifyEmail.tsx:159 msgid "Confirmation code" msgstr "確認コード" @@ -506,7 +506,7 @@ msgstr "確認コード" msgid "Connecting..." msgstr "接続中..." -#: src/view/screens/Moderation.tsx:79 +#: src/view/screens/Moderation.tsx:81 msgid "Content filtering" msgstr "コンテンツフィルタリング" @@ -545,7 +545,7 @@ msgstr "コピー" msgid "Copy link to list" msgstr "" -#: src/view/com/util/forms/PostDropdownBtn.tsx:126 +#: src/view/com/util/forms/PostDropdownBtn.tsx:129 msgid "Copy link to post" msgstr "" @@ -553,7 +553,7 @@ msgstr "" msgid "Copy link to profile" msgstr "" -#: src/view/com/util/forms/PostDropdownBtn.tsx:112 +#: src/view/com/util/forms/PostDropdownBtn.tsx:115 msgid "Copy post text" msgstr "投稿テキストをコピー" @@ -620,11 +620,11 @@ msgstr "マイアカウントを削除" msgid "Delete my account…" msgstr "マイアカウントを削除…" -#: src/view/com/util/forms/PostDropdownBtn.tsx:180 +#: src/view/com/util/forms/PostDropdownBtn.tsx:183 msgid "Delete post" msgstr "投稿を削除" -#: src/view/com/util/forms/PostDropdownBtn.tsx:184 +#: src/view/com/util/forms/PostDropdownBtn.tsx:187 msgid "Delete this post?" msgstr "この投稿を削除しますか?" @@ -655,7 +655,7 @@ msgstr "破棄" msgid "Discard draft" msgstr "ドラフトを破棄" -#: src/view/screens/Moderation.tsx:204 +#: src/view/screens/Moderation.tsx:207 msgid "Discourage apps from showing my account to logged-out users" msgstr "" @@ -804,7 +804,7 @@ msgstr "フィードはオフライン" msgid "Feed Preferences" msgstr "フィード設定" -#: src/view/shell/desktop/RightNav.tsx:64 +#: src/view/shell/desktop/RightNav.tsx:67 #: src/view/shell/Drawer.tsx:292 msgid "Feedback" msgstr "フィードバック" @@ -896,7 +896,7 @@ msgstr "パスワードを失念" msgid "Gallery" msgstr "ギャラリー" -#: src/view/com/modals/VerifyEmail.tsx:175 +#: src/view/com/modals/VerifyEmail.tsx:183 msgid "Get Started" msgstr "はじめに" @@ -924,7 +924,7 @@ msgstr "次へ" msgid "Handle" msgstr "ハンドル" -#: src/view/shell/desktop/RightNav.tsx:93 +#: src/view/shell/desktop/RightNav.tsx:96 #: src/view/shell/Drawer.tsx:302 msgid "Help" msgstr "ヘルプ" @@ -983,7 +983,7 @@ msgstr "ホスティングプロバイダー" msgid "Hosting provider address" msgstr "ホスティングプロバイダーアドレス" -#: src/view/com/modals/VerifyEmail.tsx:200 +#: src/view/com/modals/VerifyEmail.tsx:208 msgid "I have a code" msgstr "コードを持っている" @@ -999,7 +999,7 @@ msgstr "選択されていない場合は、すべての年齢に適していま msgid "Image alt text" msgstr "画像のALTテキスト" -#: src/view/com/util/UserAvatar.tsx:304 +#: src/view/com/util/UserAvatar.tsx:308 #: src/view/com/util/UserBanner.tsx:116 msgid "Image options" msgstr "イメージオプション" @@ -1068,7 +1068,7 @@ msgstr "詳細" msgid "Learn more about this warning" msgstr "この警告の詳細" -#: src/view/screens/Moderation.tsx:239 +#: src/view/screens/Moderation.tsx:242 msgid "Learn more about what is public on Bluesky." msgstr "" @@ -1085,7 +1085,7 @@ msgstr "Blueskyから離れる" msgid "Let's get your password reset!" msgstr "パスワードをリセットしましょう!" -#: src/view/com/util/UserAvatar.tsx:241 +#: src/view/com/util/UserAvatar.tsx:245 #: src/view/com/util/UserBanner.tsx:60 msgid "Library" msgstr "ライブラリー" @@ -1147,7 +1147,7 @@ msgstr "ローカル開発者サーバー" #~ msgid "Logged-out users" #~ msgstr "" -#: src/view/screens/Moderation.tsx:134 +#: src/view/screens/Moderation.tsx:136 msgid "Logged-out visibility" msgstr "" @@ -1184,7 +1184,7 @@ msgstr "メニュー" msgid "Message from server" msgstr "" -#: src/view/screens/Moderation.tsx:63 +#: src/view/screens/Moderation.tsx:64 #: src/view/screens/Settings.tsx:563 #: src/view/shell/desktop/LeftNav.tsx:391 #: src/view/shell/Drawer.tsx:490 @@ -1192,7 +1192,7 @@ msgstr "" msgid "Moderation" msgstr "モデレート" -#: src/view/screens/Moderation.tsx:93 +#: src/view/screens/Moderation.tsx:95 msgid "Moderation lists" msgstr "モデレートリスト" @@ -1226,11 +1226,11 @@ msgstr "" msgid "Mute these accounts?" msgstr "これらのアカウントをミュートしますか?" -#: src/view/com/util/forms/PostDropdownBtn.tsx:144 +#: src/view/com/util/forms/PostDropdownBtn.tsx:147 msgid "Mute thread" msgstr "スレッドをミュート" -#: src/view/screens/Moderation.tsx:107 +#: src/view/screens/Moderation.tsx:109 msgid "Muted accounts" msgstr "ミュート済みアカウント" @@ -1343,7 +1343,7 @@ msgstr "該当なし。" #~ msgid "Note: Bluesky is an open and public network, and enabling this will not make your profile private or limit the ability of logged in users to see your posts. This setting only limits the visibility of posts on the Bluesky app and website; third-party apps that display Bluesky content may not respect this setting, and could show your content to logged-out users." #~ msgstr "" -#: src/view/screens/Moderation.tsx:229 +#: src/view/screens/Moderation.tsx:232 msgid "Note: Bluesky is an open and public network. This setting only limits the visibility of your content on the Bluesky app and website, and other apps may not respect this setting. Your content may still be shown to logged-out users by other apps and websites." msgstr "" @@ -1380,7 +1380,7 @@ msgstr "ナビゲーションを開く" msgid "Opens configurable language settings" msgstr "構成可能な言語設定を開く" -#: src/view/shell/desktop/RightNav.tsx:146 +#: src/view/shell/desktop/RightNav.tsx:151 #: src/view/shell/Drawer.tsx:622 msgid "Opens list of invite codes" msgstr "" @@ -1529,7 +1529,7 @@ msgstr "第一言語" msgid "Prioritize Your Follows" msgstr "フォローの優先順位付け" -#: src/view/shell/desktop/RightNav.tsx:75 +#: src/view/shell/desktop/RightNav.tsx:78 msgid "Privacy" msgstr "プライバシー" @@ -1584,7 +1584,7 @@ msgstr "推奨ユーザー" #: src/view/com/modals/ListAddRemoveUsers.tsx:264 #: src/view/com/modals/SelfLabel.tsx:83 #: src/view/com/modals/UserAddRemoveLists.tsx:193 -#: src/view/com/util/UserAvatar.tsx:278 +#: src/view/com/util/UserAvatar.tsx:282 #: src/view/com/util/UserBanner.tsx:89 msgid "Remove" msgstr "削除" @@ -1657,7 +1657,7 @@ msgid "Report List" msgstr "レポートリスト" #: src/view/com/modals/report/SendReportButton.tsx:37 -#: src/view/com/util/forms/PostDropdownBtn.tsx:162 +#: src/view/com/util/forms/PostDropdownBtn.tsx:165 msgid "Report post" msgstr "レポート投稿" @@ -1795,7 +1795,7 @@ msgstr "アプリに表示するデフォルトのテキストのアプリ言語 msgid "Select your preferred language for translations in your feed." msgstr "フィード内の翻訳に使用する言語を選択します。" -#: src/view/com/modals/VerifyEmail.tsx:188 +#: src/view/com/modals/VerifyEmail.tsx:196 msgid "Send Confirmation Email" msgstr "確認Eメールを送信" @@ -1852,7 +1852,7 @@ msgid "Sexual activity or erotic nudity." msgstr "性行為またはエロティックなヌード。" #: src/view/com/profile/ProfileHeader.tsx:338 -#: src/view/com/util/forms/PostDropdownBtn.tsx:126 +#: src/view/com/util/forms/PostDropdownBtn.tsx:129 #: src/view/screens/ProfileList.tsx:407 msgid "Share" msgstr "共有" @@ -1999,7 +1999,7 @@ msgstr "システムログ" msgid "Tall" msgstr "トール" -#: src/view/shell/desktop/RightNav.tsx:84 +#: src/view/shell/desktop/RightNav.tsx:87 msgid "Terms" msgstr "条件" @@ -2064,7 +2064,7 @@ msgstr "" msgid "This information is not shared with other users." msgstr "この情報は他のユーザーと共有されません。" -#: src/view/com/modals/VerifyEmail.tsx:105 +#: src/view/com/modals/VerifyEmail.tsx:113 msgid "This is important in case you ever need to change your email or reset your password." msgstr "これは、Eメールの変更やパスワードのリセットが必要な場合に重要です。" @@ -2101,9 +2101,9 @@ msgstr "トグルドロップダウン" msgid "Transformations" msgstr "変換" -#: src/view/com/post-thread/PostThreadItem.tsx:704 #: src/view/com/post-thread/PostThreadItem.tsx:706 -#: src/view/com/util/forms/PostDropdownBtn.tsx:98 +#: src/view/com/post-thread/PostThreadItem.tsx:708 +#: src/view/com/util/forms/PostDropdownBtn.tsx:101 msgid "Translate" msgstr "翻訳" @@ -2147,7 +2147,7 @@ msgstr "残念ながら、アカウントを作成するための要件を満た msgid "Unmute Account" msgstr "アカウントのミュート解除" -#: src/view/com/util/forms/PostDropdownBtn.tsx:144 +#: src/view/com/util/forms/PostDropdownBtn.tsx:147 msgid "Unmute thread" msgstr "スレッドのミュート解除" @@ -2366,7 +2366,7 @@ msgstr "Eメールが保存されました!すぐにご連絡いたします msgid "Your email has been updated but not verified. As a next step, please verify your new email." msgstr "Eメールは更新されましたが、確認されていません。次のステップとして、新しいEメールを確認してください。" -#: src/view/com/modals/VerifyEmail.tsx:100 +#: src/view/com/modals/VerifyEmail.tsx:108 msgid "Your email has not yet been verified. This is an important security step which we recommend." msgstr "Eメールはまだ確認されていません。これは、当社が推奨する重要なセキュリティステップです。" @@ -2380,7 +2380,7 @@ msgid "Your hosting provider" msgstr "ホスティングプロバイダー" #: src/view/screens/Settings.tsx:402 -#: src/view/shell/desktop/RightNav.tsx:127 +#: src/view/shell/desktop/RightNav.tsx:132 #: src/view/shell/Drawer.tsx:636 msgid "Your invite codes are hidden when logged in using an App Password" msgstr "" From eecf04489f0c580a259a7977271bb35abcf4dbee Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Wed, 13 Dec 2023 09:59:27 -0800 Subject: [PATCH 05/23] Rework the rightnav overflow behavior to not obscure the scroll region (#2199) --- src/view/shell/desktop/RightNav.tsx | 136 ++++++++++++++-------------- 1 file changed, 67 insertions(+), 69 deletions(-) diff --git a/src/view/shell/desktop/RightNav.tsx b/src/view/shell/desktop/RightNav.tsx index 7e2f85718b..c126935d2b 100644 --- a/src/view/shell/desktop/RightNav.tsx +++ b/src/view/shell/desktop/RightNav.tsx @@ -15,7 +15,6 @@ import {useLingui} from '@lingui/react' import {Plural, Trans, msg, plural} from '@lingui/macro' import {useSession} from '#/state/session' import {useInviteCodesQuery} from '#/state/queries/invites' -import {ScrollView} from '#/view/com/util/Views' export function DesktopRightNav() { const pal = usePalette('default') @@ -30,77 +29,75 @@ export function DesktopRightNav() { return ( - - - + + - {hasSession && ( - - - - )} - - - {isSandbox ? ( - - - SANDBOX. Posts and accounts are not permanent. - - - ) : undefined} - - {hasSession && ( - <> - - -  ·  - - - )} - - -  ·  - - - -  ·  - - - + {hasSession && ( + + + )} - {hasSession && } + + {isSandbox ? ( + + + SANDBOX. Posts and accounts are not permanent. + + + ) : undefined} + + {hasSession && ( + <> + + +  ·  + + + )} + + +  ·  + + + +  ·  + + + - + + {hasSession && } + ) } @@ -176,7 +173,8 @@ const styles = StyleSheet.create({ // @ts-ignore web only left: 'calc(50vw + 320px)', width: 304, - height: '100%', + maxHeight: '100%', + overflowY: 'auto', }, message: { From e3ba014be00f545b3dbd39b5dcfc198a69c790d4 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Wed, 13 Dec 2023 12:16:55 -0800 Subject: [PATCH 06/23] More notifications improvements (#2198) * On mobile, never replace the notifs under the user due to focus events * Use the server's seenAt response to calculate isRead state locally --- package.json | 2 +- src/state/queries/notifications/feed.ts | 44 ++++++++++-------------- src/state/queries/notifications/types.ts | 1 + src/state/queries/notifications/util.ts | 6 ++++ src/view/screens/Notifications.tsx | 4 +-- yarn.lock | 14 ++++++++ 6 files changed, 42 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 2f380e807b..6cca2ae738 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "intl:compile": "lingui compile" }, "dependencies": { - "@atproto/api": "^0.7.2", + "@atproto/api": "^0.7.3", "@bam.tech/react-native-image-resizer": "^3.0.4", "@braintree/sanitize-url": "^6.0.2", "@emoji-mart/react": "^1.1.1", diff --git a/src/state/queries/notifications/feed.ts b/src/state/queries/notifications/feed.ts index 1610fc0bfb..82eda06eaf 100644 --- a/src/state/queries/notifications/feed.ts +++ b/src/state/queries/notifications/feed.ts @@ -16,7 +16,7 @@ * 3. Don't call this query's `refetch()` if you're trying to sync latest; call `checkUnread()` instead. */ -import {useEffect, useRef} from 'react' +import {useEffect} from 'react' import {AppBskyFeedDefs} from '@atproto/api' import { useInfiniteQuery, @@ -49,8 +49,6 @@ export function useNotificationFeedQuery(opts?: {enabled?: boolean}) { const threadMutes = useMutedThreads() const unreads = useUnreadNotificationsApi() const enabled = opts?.enabled !== false - // state tracked across page fetches - const pageState = useRef({pageNum: 0, hasMarkedRead: false}) const query = useInfiniteQuery< FeedPage, @@ -66,8 +64,6 @@ export function useNotificationFeedQuery(opts?: {enabled?: boolean}) { if (!pageParam) { // for the first page, we check the cached page held by the unread-checker first page = unreads.getCachedUnreadPage() - // reset the page state - pageState.current = {pageNum: 0, hasMarkedRead: false} } if (!page) { page = await fetchPage({ @@ -80,27 +76,9 @@ export function useNotificationFeedQuery(opts?: {enabled?: boolean}) { }) } - // NOTE - // this section checks to see if we need to mark notifs read - // we want to wait until we've seen a read notification because - // of a timing challenge; marking read on the first page would - // cause subsequent pages of unread notifs to incorrectly come - // back as "read". we use page 6 as an abort condition, which means - // after ~180 notifs we give up on tracking unread state correctly - // -prf - if (!pageState.current.hasMarkedRead) { - let hasMarkedRead = false - if ( - pageState.current.pageNum > 5 || - page.items.some(item => item.notification.isRead) - ) { - unreads.markAllRead() - hasMarkedRead = true - } - pageState.current = { - pageNum: pageState.current.pageNum + 1, - hasMarkedRead, - } + // if the first page has an unread, mark all read + if (!pageParam && page.items[0] && !page.items[0].notification.isRead) { + unreads.markAllRead() } return page @@ -108,6 +86,20 @@ export function useNotificationFeedQuery(opts?: {enabled?: boolean}) { initialPageParam: undefined, getNextPageParam: lastPage => lastPage.cursor, enabled, + select(data: InfiniteData) { + // override 'isRead' using the first page's returned seenAt + // we do this because the `markAllRead()` call above will + // mark subsequent pages as read prematurely + const seenAt = data.pages[0]?.seenAt || new Date() + for (const page of data.pages) { + for (const item of page.items) { + item.notification.isRead = + seenAt > new Date(item.notification.indexedAt) + } + } + + return data + }, }) useEffect(() => { diff --git a/src/state/queries/notifications/types.ts b/src/state/queries/notifications/types.ts index b523411150..86a9bb1399 100644 --- a/src/state/queries/notifications/types.ts +++ b/src/state/queries/notifications/types.ts @@ -24,6 +24,7 @@ export interface FeedNotification { export interface FeedPage { cursor: string | undefined + seenAt: Date items: FeedNotification[] } diff --git a/src/state/queries/notifications/util.ts b/src/state/queries/notifications/util.ts index 9fb25867aa..cc59431632 100644 --- a/src/state/queries/notifications/util.ts +++ b/src/state/queries/notifications/util.ts @@ -68,8 +68,14 @@ export async function fetchPage({ notif => !isThreadMuted(notif, threadMutes), ) + let seenAt = res.data.seenAt ? new Date(res.data.seenAt) : new Date() + if (Number.isNaN(seenAt.getTime())) { + seenAt = new Date() + } + return { cursor: res.data.cursor, + seenAt, items: notifsGrouped, } } diff --git a/src/view/screens/Notifications.tsx b/src/view/screens/Notifications.tsx index fceaa60c29..7ebacc9db1 100644 --- a/src/view/screens/Notifications.tsx +++ b/src/view/screens/Notifications.tsx @@ -67,8 +67,8 @@ export function NotificationsScreen({}: Props) { const onFocusCheckLatest = React.useCallback(() => { // on focus, check for latest, but only invalidate if the user // isnt scrolled down to avoid moving content underneath them - unreadApi.checkUnread({invalidate: !isScrolledDown}) - }, [unreadApi, isScrolledDown]) + unreadApi.checkUnread({invalidate: !isScrolledDown && isDesktop}) + }, [unreadApi, isScrolledDown, isDesktop]) checkLatestRef.current = onFocusCheckLatest // on-visible setup diff --git a/yarn.lock b/yarn.lock index c08c37a963..e58cba1641 100644 --- a/yarn.lock +++ b/yarn.lock @@ -48,6 +48,20 @@ typed-emitter "^2.1.0" zod "^3.21.4" +"@atproto/api@^0.7.3": + version "0.7.3" + resolved "https://registry.yarnpkg.com/@atproto/api/-/api-0.7.3.tgz#3224000353619970d5e397a157c6e189e195ef47" + integrity sha512-fKU+W+S4kKxClE6IcPBHPZAjcyBYxG28S0FW/bv3T/ZYDkNxGzDV4xuoHOyEDGtB30slltl5U83njuuRZs5xtw== + dependencies: + "@atproto/common-web" "^0.2.3" + "@atproto/lexicon" "^0.3.1" + "@atproto/syntax" "^0.1.5" + "@atproto/xrpc" "^0.4.1" + multiformats "^9.9.0" + tlds "^1.234.0" + typed-emitter "^2.1.0" + zod "^3.21.4" + "@atproto/aws@^0.1.6": version "0.1.6" resolved "https://registry.yarnpkg.com/@atproto/aws/-/aws-0.1.6.tgz#c6ecbfd92b325f3c5433688534d47f43358b415b" From 8245e567473601b76ef20545d748810074439458 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Wed, 13 Dec 2023 12:17:14 -0800 Subject: [PATCH 07/23] Feed bugfixes (#2204) * Dont show both an error and empty message in the feed * Add a sanity check when attempting to fill the first 30 --- src/state/queries/notifications/feed.ts | 8 +++++++- src/state/queries/post-feed.ts | 8 +++++++- src/view/com/posts/Feed.tsx | 3 +-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/state/queries/notifications/feed.ts b/src/state/queries/notifications/feed.ts index 82eda06eaf..dc206df79a 100644 --- a/src/state/queries/notifications/feed.ts +++ b/src/state/queries/notifications/feed.ts @@ -114,7 +114,13 @@ export function useNotificationFeedQuery(opts?: {enabled?: boolean}) { count += page.items.length } - if (!isFetching && hasNextPage && count < PAGE_SIZE && numEmpties < 3) { + if ( + !isFetching && + hasNextPage && + count < PAGE_SIZE && + numEmpties < 3 && + (data?.pages.length || 0) < 6 + ) { query.fetchNextPage() } }, [query]) diff --git a/src/state/queries/post-feed.ts b/src/state/queries/post-feed.ts index 7847c72021..efdb42dd2b 100644 --- a/src/state/queries/post-feed.ts +++ b/src/state/queries/post-feed.ts @@ -291,7 +291,13 @@ export function usePostFeedQuery( } } - if (!isFetching && hasNextPage && count < PAGE_SIZE && numEmpties < 3) { + if ( + !isFetching && + hasNextPage && + count < PAGE_SIZE && + numEmpties < 3 && + (data?.pages.length || 0) < 6 + ) { query.fetchNextPage() } }, [query]) diff --git a/src/view/com/posts/Feed.tsx b/src/view/com/posts/Feed.tsx index c4f859e041..24a7f5b42a 100644 --- a/src/view/com/posts/Feed.tsx +++ b/src/view/com/posts/Feed.tsx @@ -167,8 +167,7 @@ let Feed = ({ if (isFetched) { if (isError && isEmpty) { arr = arr.concat([ERROR_ITEM]) - } - if (isEmpty) { + } else if (isEmpty) { arr = arr.concat([EMPTY_FEED_ITEM]) } else if (data) { for (const page of data?.pages) { From a713f77e0357bfd9b7379de85e8a04ce104a9579 Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Wed, 13 Dec 2023 12:48:26 -0800 Subject: [PATCH 08/23] 1.59 --- app.config.js | 2 +- package.json | 2 +- src/locale/locales/en/messages.po | 16 ++++++++-------- src/locale/locales/hi/messages.po | 16 ++++++++-------- src/locale/locales/ja/messages.po | 16 ++++++++-------- 5 files changed, 26 insertions(+), 26 deletions(-) diff --git a/app.config.js b/app.config.js index e4606de6c4..e5ec435aba 100644 --- a/app.config.js +++ b/app.config.js @@ -14,7 +14,7 @@ module.exports = function () { /** * Android build number. Must be incremented for each release. */ - const ANDROID_VERSION_CODE = 48 + const ANDROID_VERSION_CODE = 49 /** * Uses built-in Expo env vars diff --git a/package.json b/package.json index 6cca2ae738..758b7fbea0 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bsky.app", - "version": "1.58.0", + "version": "1.59.0", "private": true, "scripts": { "prepare": "is-ci || husky install", diff --git a/src/locale/locales/en/messages.po b/src/locale/locales/en/messages.po index 65303d9df3..6cb186fe50 100644 --- a/src/locale/locales/en/messages.po +++ b/src/locale/locales/en/messages.po @@ -21,7 +21,7 @@ msgstr "" #~ msgid ". This warning is only available for posts with media attached." #~ msgstr "" -#: src/view/shell/desktop/RightNav.tsx:163 +#: src/view/shell/desktop/RightNav.tsx:160 msgid "{0, plural, one {# invite code available} other {# invite codes available}}" msgstr "" @@ -33,7 +33,7 @@ msgstr "" msgid "{0} {purposeLabel} List" msgstr "" -#: src/view/shell/desktop/RightNav.tsx:146 +#: src/view/shell/desktop/RightNav.tsx:143 msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}" msgstr "" @@ -840,7 +840,7 @@ msgstr "" msgid "Feed Preferences" msgstr "" -#: src/view/shell/desktop/RightNav.tsx:67 +#: src/view/shell/desktop/RightNav.tsx:65 #: src/view/shell/Drawer.tsx:292 msgid "Feedback" msgstr "" @@ -964,7 +964,7 @@ msgstr "" msgid "Handle" msgstr "" -#: src/view/shell/desktop/RightNav.tsx:96 +#: src/view/shell/desktop/RightNav.tsx:94 #: src/view/shell/Drawer.tsx:302 msgid "Help" msgstr "" @@ -1462,7 +1462,7 @@ msgstr "" msgid "Opens configurable language settings" msgstr "" -#: src/view/shell/desktop/RightNav.tsx:151 +#: src/view/shell/desktop/RightNav.tsx:148 #: src/view/shell/Drawer.tsx:622 msgid "Opens list of invite codes" msgstr "" @@ -1611,7 +1611,7 @@ msgstr "" msgid "Prioritize Your Follows" msgstr "" -#: src/view/shell/desktop/RightNav.tsx:78 +#: src/view/shell/desktop/RightNav.tsx:76 msgid "Privacy" msgstr "" @@ -2110,7 +2110,7 @@ msgstr "" msgid "Tall" msgstr "" -#: src/view/shell/desktop/RightNav.tsx:87 +#: src/view/shell/desktop/RightNav.tsx:85 msgid "Terms" msgstr "" @@ -2507,7 +2507,7 @@ msgid "Your hosting provider" msgstr "" #: src/view/screens/Settings.tsx:402 -#: src/view/shell/desktop/RightNav.tsx:132 +#: src/view/shell/desktop/RightNav.tsx:129 #: src/view/shell/Drawer.tsx:636 msgid "Your invite codes are hidden when logged in using an App Password" msgstr "" diff --git a/src/locale/locales/hi/messages.po b/src/locale/locales/hi/messages.po index 0ef89e2a08..cd7151d8d9 100644 --- a/src/locale/locales/hi/messages.po +++ b/src/locale/locales/hi/messages.po @@ -21,7 +21,7 @@ msgstr "" #~ msgid ". This warning is only available for posts with media attached." #~ msgstr "यह चेतावनी केवल मीडिया वाले पोस्ट के लिए उपलब्ध है।" -#: src/view/shell/desktop/RightNav.tsx:163 +#: src/view/shell/desktop/RightNav.tsx:160 msgid "{0, plural, one {# invite code available} other {# invite codes available}}" msgstr "" @@ -33,7 +33,7 @@ msgstr "{0}" msgid "{0} {purposeLabel} List" msgstr "{0} {purposeLabel} सूची" -#: src/view/shell/desktop/RightNav.tsx:146 +#: src/view/shell/desktop/RightNav.tsx:143 msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}" msgstr "" @@ -836,7 +836,7 @@ msgstr "फ़ीड ऑफ़लाइन है" msgid "Feed Preferences" msgstr "फ़ीड प्राथमिकता" -#: src/view/shell/desktop/RightNav.tsx:67 +#: src/view/shell/desktop/RightNav.tsx:65 #: src/view/shell/Drawer.tsx:292 msgid "Feedback" msgstr "प्रतिक्रिया" @@ -956,7 +956,7 @@ msgstr "अगला" msgid "Handle" msgstr "हैंडल" -#: src/view/shell/desktop/RightNav.tsx:96 +#: src/view/shell/desktop/RightNav.tsx:94 #: src/view/shell/Drawer.tsx:302 msgid "Help" msgstr "सहायता" @@ -1454,7 +1454,7 @@ msgstr "ओपन नेविगेशन" msgid "Opens configurable language settings" msgstr "भाषा सेटिंग्स खोलें" -#: src/view/shell/desktop/RightNav.tsx:151 +#: src/view/shell/desktop/RightNav.tsx:148 #: src/view/shell/Drawer.tsx:622 msgid "Opens list of invite codes" msgstr "" @@ -1603,7 +1603,7 @@ msgstr "प्राथमिक भाषा" msgid "Prioritize Your Follows" msgstr "अपने फ़ॉलोअर्स को प्राथमिकता दें" -#: src/view/shell/desktop/RightNav.tsx:78 +#: src/view/shell/desktop/RightNav.tsx:76 msgid "Privacy" msgstr "गोपनीयता" @@ -2102,7 +2102,7 @@ msgstr "सिस्टम लॉग" msgid "Tall" msgstr "लंबा" -#: src/view/shell/desktop/RightNav.tsx:87 +#: src/view/shell/desktop/RightNav.tsx:85 msgid "Terms" msgstr "शर्तें" @@ -2499,7 +2499,7 @@ msgid "Your hosting provider" msgstr "आपका होस्टिंग प्रदाता" #: src/view/screens/Settings.tsx:402 -#: src/view/shell/desktop/RightNav.tsx:132 +#: src/view/shell/desktop/RightNav.tsx:129 #: src/view/shell/Drawer.tsx:636 msgid "Your invite codes are hidden when logged in using an App Password" msgstr "" diff --git a/src/locale/locales/ja/messages.po b/src/locale/locales/ja/messages.po index 5298b2ffb8..b6877181c0 100644 --- a/src/locale/locales/ja/messages.po +++ b/src/locale/locales/ja/messages.po @@ -13,7 +13,7 @@ msgstr "" "Language-Team: \n" "Plural-Forms: \n" -#: src/view/shell/desktop/RightNav.tsx:163 +#: src/view/shell/desktop/RightNav.tsx:160 msgid "{0, plural, one {# invite code available} other {# invite codes available}}" msgstr "" @@ -25,7 +25,7 @@ msgstr "{0}" msgid "{0} {purposeLabel} List" msgstr "{0} {purposeLabel} リスト" -#: src/view/shell/desktop/RightNav.tsx:146 +#: src/view/shell/desktop/RightNav.tsx:143 msgid "{invitesAvailable, plural, one {Invite codes: # available} other {Invite codes: # available}}" msgstr "" @@ -804,7 +804,7 @@ msgstr "フィードはオフライン" msgid "Feed Preferences" msgstr "フィード設定" -#: src/view/shell/desktop/RightNav.tsx:67 +#: src/view/shell/desktop/RightNav.tsx:65 #: src/view/shell/Drawer.tsx:292 msgid "Feedback" msgstr "フィードバック" @@ -924,7 +924,7 @@ msgstr "次へ" msgid "Handle" msgstr "ハンドル" -#: src/view/shell/desktop/RightNav.tsx:96 +#: src/view/shell/desktop/RightNav.tsx:94 #: src/view/shell/Drawer.tsx:302 msgid "Help" msgstr "ヘルプ" @@ -1380,7 +1380,7 @@ msgstr "ナビゲーションを開く" msgid "Opens configurable language settings" msgstr "構成可能な言語設定を開く" -#: src/view/shell/desktop/RightNav.tsx:151 +#: src/view/shell/desktop/RightNav.tsx:148 #: src/view/shell/Drawer.tsx:622 msgid "Opens list of invite codes" msgstr "" @@ -1529,7 +1529,7 @@ msgstr "第一言語" msgid "Prioritize Your Follows" msgstr "フォローの優先順位付け" -#: src/view/shell/desktop/RightNav.tsx:78 +#: src/view/shell/desktop/RightNav.tsx:76 msgid "Privacy" msgstr "プライバシー" @@ -1999,7 +1999,7 @@ msgstr "システムログ" msgid "Tall" msgstr "トール" -#: src/view/shell/desktop/RightNav.tsx:87 +#: src/view/shell/desktop/RightNav.tsx:85 msgid "Terms" msgstr "条件" @@ -2380,7 +2380,7 @@ msgid "Your hosting provider" msgstr "ホスティングプロバイダー" #: src/view/screens/Settings.tsx:402 -#: src/view/shell/desktop/RightNav.tsx:132 +#: src/view/shell/desktop/RightNav.tsx:129 #: src/view/shell/Drawer.tsx:636 msgid "Your invite codes are hidden when logged in using an App Password" msgstr "" From 5fa43530f6e8a794ac5d6adf765aa0e2cec7e5ee Mon Sep 17 00:00:00 2001 From: Paul Frazee Date: Wed, 13 Dec 2023 13:48:49 -0800 Subject: [PATCH 09/23] Revert change to how notifications are loaded on mobile --- app.config.js | 2 +- src/view/screens/Notifications.tsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app.config.js b/app.config.js index e5ec435aba..096756b084 100644 --- a/app.config.js +++ b/app.config.js @@ -9,7 +9,7 @@ module.exports = function () { /** * iOS build number. Must be incremented for each TestFlight version. */ - const IOS_BUILD_NUMBER = '1' + const IOS_BUILD_NUMBER = '2' /** * Android build number. Must be incremented for each release. diff --git a/src/view/screens/Notifications.tsx b/src/view/screens/Notifications.tsx index 7ebacc9db1..fceaa60c29 100644 --- a/src/view/screens/Notifications.tsx +++ b/src/view/screens/Notifications.tsx @@ -67,8 +67,8 @@ export function NotificationsScreen({}: Props) { const onFocusCheckLatest = React.useCallback(() => { // on focus, check for latest, but only invalidate if the user // isnt scrolled down to avoid moving content underneath them - unreadApi.checkUnread({invalidate: !isScrolledDown && isDesktop}) - }, [unreadApi, isScrolledDown, isDesktop]) + unreadApi.checkUnread({invalidate: !isScrolledDown}) + }, [unreadApi, isScrolledDown]) checkLatestRef.current = onFocusCheckLatest // on-visible setup From 7eb4ad6c2956a1f2626fc121c15e3b75aa93d426 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 13 Dec 2023 00:42:35 +0000 Subject: [PATCH 10/23] Add an intermediate List component --- src/view/com/feeds/FeedPage.tsx | 5 ++-- src/view/com/feeds/ProfileFeedgens.tsx | 8 +++--- src/view/com/lists/ListMembers.tsx | 8 +++--- src/view/com/lists/MyLists.tsx | 4 +-- src/view/com/lists/ProfileLists.tsx | 8 +++--- src/view/com/notifications/Feed.tsx | 9 ++++--- src/view/com/pager/PagerWithHeader.tsx | 6 ++--- src/view/com/post-thread/PostLikedBy.tsx | 5 ++-- src/view/com/post-thread/PostRepostedBy.tsx | 5 ++-- src/view/com/post-thread/PostThread.tsx | 7 ++--- src/view/com/posts/Feed.tsx | 8 +++--- src/view/com/profile/ProfileFollowers.tsx | 5 ++-- src/view/com/profile/ProfileFollows.tsx | 5 ++-- src/view/com/util/List.tsx | 15 +++++++++++ src/view/com/util/ViewSelector.tsx | 4 +-- src/view/com/util/Views.d.ts | 2 +- src/view/com/util/Views.jsx | 2 +- src/view/com/util/Views.web.tsx | 2 +- src/view/screens/Feeds.tsx | 4 +-- src/view/screens/Notifications.tsx | 5 ++-- src/view/screens/Profile.tsx | 29 +++++++-------------- src/view/screens/ProfileFeed.tsx | 15 +++-------- src/view/screens/ProfileList.tsx | 25 +++++------------- src/view/screens/Search/Search.tsx | 9 ++++--- 24 files changed, 95 insertions(+), 100 deletions(-) create mode 100644 src/view/com/util/List.tsx diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx index 31ebc75a19..a64809ca70 100644 --- a/src/view/com/feeds/FeedPage.tsx +++ b/src/view/com/feeds/FeedPage.tsx @@ -13,7 +13,8 @@ import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {FeedDescriptor, FeedParams} from '#/state/queries/post-feed' import {ComposeIcon2} from 'lib/icons' import {colors, s} from 'lib/styles' -import {FlatList, View, useWindowDimensions} from 'react-native' +import {View, useWindowDimensions} from 'react-native' +import {ListMethods} from '../util/List' import {Feed} from '../posts/Feed' import {TextLink} from '../util/Link' import {FAB} from '../util/fab/FAB' @@ -54,7 +55,7 @@ export function FeedPage({ const [onMainScroll, isScrolledDown, resetMainScroll] = useOnMainScroll() const {screen, track} = useAnalytics() const headerOffset = useHeaderOffset() - const scrollElRef = React.useRef(null) + const scrollElRef = React.useRef(null) const [hasNew, setHasNew] = React.useState(false) const scrollToTop = React.useCallback(() => { diff --git a/src/view/com/feeds/ProfileFeedgens.tsx b/src/view/com/feeds/ProfileFeedgens.tsx index 43b170ced4..73e8ee3f85 100644 --- a/src/view/com/feeds/ProfileFeedgens.tsx +++ b/src/view/com/feeds/ProfileFeedgens.tsx @@ -1,4 +1,4 @@ -import React, {MutableRefObject} from 'react' +import React from 'react' import { Dimensions, RefreshControl, @@ -8,7 +8,7 @@ import { ViewStyle, } from 'react-native' import {useQueryClient} from '@tanstack/react-query' -import {FlatList} from '../util/Views' +import {List, ListRef} from '../util/List' import {FeedSourceCardLoaded} from './FeedSourceCard' import {ErrorMessage} from '../util/error/ErrorMessage' import {LoadMoreRetryBtn} from '../util/LoadMoreRetryBtn' @@ -37,7 +37,7 @@ interface SectionRef { interface ProfileFeedgensProps { did: string - scrollElRef: MutableRefObject | null> + scrollElRef: ListRef onScroll?: OnScrollHandler scrollEventThrottle?: number headerOffset: number @@ -188,7 +188,7 @@ export const ProfileFeedgens = React.forwardRef< const scrollHandler = useAnimatedScrollHandler(onScroll || {}) return ( - - scrollElRef?: MutableRefObject | null> + scrollElRef?: ListRef onScroll: OnScrollHandler onPressTryAgain?: () => void renderHeader: () => JSX.Element @@ -212,7 +212,7 @@ export function ListMembers({ const scrollHandler = useAnimatedScrollHandler(onScroll) return ( - {items.length > 0 && ( diff --git a/src/view/com/lists/ProfileLists.tsx b/src/view/com/lists/ProfileLists.tsx index 1bd9d188ff..d1ed91980a 100644 --- a/src/view/com/lists/ProfileLists.tsx +++ b/src/view/com/lists/ProfileLists.tsx @@ -1,4 +1,4 @@ -import React, {MutableRefObject} from 'react' +import React from 'react' import { Dimensions, RefreshControl, @@ -8,7 +8,7 @@ import { ViewStyle, } from 'react-native' import {useQueryClient} from '@tanstack/react-query' -import {FlatList} from '../util/Views' +import {List, ListRef} from '../util/List' import {ListCard} from './ListCard' import {ErrorMessage} from '../util/error/ErrorMessage' import {LoadMoreRetryBtn} from '../util/LoadMoreRetryBtn' @@ -36,7 +36,7 @@ interface SectionRef { interface ProfileListsProps { did: string - scrollElRef: MutableRefObject | null> + scrollElRef: ListRef onScroll?: OnScrollHandler scrollEventThrottle?: number headerOffset: number @@ -190,7 +190,7 @@ export const ProfileLists = React.forwardRef( const scrollHandler = useAnimatedScrollHandler(onScroll || {}) return ( - | null> + scrollElRef?: ListRef onPressTryAgain?: () => void onScroll?: OnScrollHandler ListHeaderComponent?: () => JSX.Element @@ -146,7 +147,7 @@ export function Feed({ /> )} - | ScrollView | null> + scrollElRef: React.MutableRefObject } export interface PagerWithHeaderProps { @@ -331,7 +331,7 @@ function PagerItem({ isScrolledDown, onScroll: scrollHandler, scrollElRef: scrollElRef as React.MutableRefObject< - FlatList | ScrollView | null + ListMethods | ScrollView | null >, }) } diff --git a/src/view/com/post-thread/PostLikedBy.tsx b/src/view/com/post-thread/PostLikedBy.tsx index 60afe1f9c6..245ba59e8c 100644 --- a/src/view/com/post-thread/PostLikedBy.tsx +++ b/src/view/com/post-thread/PostLikedBy.tsx @@ -1,7 +1,8 @@ import React, {useCallback, useMemo, useState} from 'react' import {ActivityIndicator, RefreshControl, StyleSheet, View} from 'react-native' import {AppBskyFeedGetLikes as GetLikes} from '@atproto/api' -import {CenteredView, FlatList} from '../util/Views' +import {CenteredView} from '../util/Views' +import {List} from '../util/List' import {ErrorMessage} from '../util/error/ErrorMessage' import {ProfileCardWithFollowBtn} from '../profile/ProfileCard' import {usePalette} from 'lib/hooks/usePalette' @@ -84,7 +85,7 @@ export function PostLikedBy({uri}: {uri: string}) { // loaded // = return ( - item.actor.did} refreshControl={ diff --git a/src/view/com/post-thread/PostRepostedBy.tsx b/src/view/com/post-thread/PostRepostedBy.tsx index 1162fec403..5cc0063885 100644 --- a/src/view/com/post-thread/PostRepostedBy.tsx +++ b/src/view/com/post-thread/PostRepostedBy.tsx @@ -1,7 +1,8 @@ import React, {useMemo, useCallback, useState} from 'react' import {ActivityIndicator, RefreshControl, StyleSheet, View} from 'react-native' import {AppBskyActorDefs as ActorDefs} from '@atproto/api' -import {CenteredView, FlatList} from '../util/Views' +import {CenteredView} from '../util/Views' +import {List} from '../util/List' import {ProfileCardWithFollowBtn} from '../profile/ProfileCard' import {ErrorMessage} from '../util/error/ErrorMessage' import {usePalette} from 'lib/hooks/usePalette' @@ -85,7 +86,7 @@ export function PostRepostedBy({uri}: {uri: string}) { // loaded // = return ( - item.did} refreshControl={ diff --git a/src/view/com/post-thread/PostThread.tsx b/src/view/com/post-thread/PostThread.tsx index 051bc7849f..f27da331f9 100644 --- a/src/view/com/post-thread/PostThread.tsx +++ b/src/view/com/post-thread/PostThread.tsx @@ -8,7 +8,8 @@ import { View, } from 'react-native' import {AppBskyFeedDefs} from '@atproto/api' -import {CenteredView, FlatList} from '../util/Views' +import {CenteredView} from '../util/Views' +import {List, ListMethods} from '../util/List' import { FontAwesomeIcon, FontAwesomeIconStyle, @@ -140,7 +141,7 @@ function PostThreadLoaded({ const {_} = useLingui() const pal = usePalette('default') const {isTablet, isDesktop} = useWebMediaQueries() - const ref = useRef(null) + const ref = useRef(null) const highlightedPostRef = useRef(null) const needsScrollAdjustment = useRef( !isNative || // web always uses scroll adjustment @@ -335,7 +336,7 @@ function PostThreadLoaded({ ) return ( - enabled?: boolean pollInterval?: number - scrollElRef?: MutableRefObject | null> + scrollElRef?: ListRef onHasNew?: (v: boolean) => void onScroll?: OnScrollHandler scrollEventThrottle?: number @@ -273,7 +273,7 @@ let Feed = ({ const scrollHandler = useAnimatedScrollHandler(onScroll || {}) return ( - item.did} refreshControl={ diff --git a/src/view/com/profile/ProfileFollows.tsx b/src/view/com/profile/ProfileFollows.tsx index 890c13eb23..5265ee07ea 100644 --- a/src/view/com/profile/ProfileFollows.tsx +++ b/src/view/com/profile/ProfileFollows.tsx @@ -1,7 +1,8 @@ import React from 'react' import {ActivityIndicator, RefreshControl, StyleSheet, View} from 'react-native' import {AppBskyActorDefs as ActorDefs} from '@atproto/api' -import {CenteredView, FlatList} from '../util/Views' +import {CenteredView} from '../util/Views' +import {List} from '../util/List' import {ErrorMessage} from '../util/error/ErrorMessage' import {ProfileCardWithFollowBtn} from './ProfileCard' import {usePalette} from 'lib/hooks/usePalette' @@ -86,7 +87,7 @@ export function ProfileFollows({name}: {name: string}) { // loaded // = return ( - item.did} refreshControl={ diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx new file mode 100644 index 0000000000..19b43d5455 --- /dev/null +++ b/src/view/com/util/List.tsx @@ -0,0 +1,15 @@ +import React from 'react' +import {FlatListProps} from 'react-native' +import {FlatList_INTERNAL} from './Views' + +export type ListMethods = FlatList_INTERNAL +export type ListProps = FlatListProps +export type ListRef = React.MutableRefObject + +function ListImpl(props: ListProps, ref: React.Ref) { + return +} + +export const List = React.forwardRef(ListImpl) as ( + props: ListProps & {ref?: React.Ref}, +) => React.ReactElement diff --git a/src/view/com/util/ViewSelector.tsx b/src/view/com/util/ViewSelector.tsx index 935d93033b..79f91be5ef 100644 --- a/src/view/com/util/ViewSelector.tsx +++ b/src/view/com/util/ViewSelector.tsx @@ -6,7 +6,7 @@ import { View, ScrollView, } from 'react-native' -import {FlatList} from './Views' +import {FlatList_INTERNAL} from './Views' import {OnScrollCb} from 'lib/hooks/useOnMainScroll' import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' import {Text} from './text/Text' @@ -110,7 +110,7 @@ export const ViewSelector = React.forwardRef< [items], ) return ( - diff --git a/src/view/com/util/Views.web.tsx b/src/view/com/util/Views.web.tsx index 5a4f266fd5..db3b9de0d8 100644 --- a/src/view/com/util/Views.web.tsx +++ b/src/view/com/util/Views.web.tsx @@ -49,7 +49,7 @@ export function CenteredView({ return } -export const FlatList = React.forwardRef(function FlatListImpl( +export const FlatList_INTERNAL = React.forwardRef(function FlatListImpl( { contentContainerStyle, style, diff --git a/src/view/screens/Feeds.tsx b/src/view/screens/Feeds.tsx index f319fbc390..d2d0aafb8f 100644 --- a/src/view/screens/Feeds.tsx +++ b/src/view/screens/Feeds.tsx @@ -19,7 +19,7 @@ import { import {ErrorMessage} from 'view/com/util/error/ErrorMessage' import debounce from 'lodash.debounce' import {Text} from 'view/com/util/text/Text' -import {FlatList} from 'view/com/util/Views' +import {List} from 'view/com/util/List' import {useFocusEffect} from '@react-navigation/native' import {FeedSourceCard} from 'view/com/feeds/FeedSourceCard' import {Trans, msg} from '@lingui/macro' @@ -481,7 +481,7 @@ export function FeedsScreen(_props: Props) { {preferences ? : } - item.key} diff --git a/src/view/screens/Notifications.tsx b/src/view/screens/Notifications.tsx index fceaa60c29..09cdfcd0aa 100644 --- a/src/view/screens/Notifications.tsx +++ b/src/view/screens/Notifications.tsx @@ -1,5 +1,5 @@ import React from 'react' -import {FlatList, View} from 'react-native' +import {View} from 'react-native' import {useFocusEffect} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' import { @@ -9,6 +9,7 @@ import { import {ViewHeader} from '../com/util/ViewHeader' import {Feed} from '../com/notifications/Feed' import {TextLink} from 'view/com/util/Link' +import {ListMethods} from 'view/com/util/List' import {LoadLatestBtn} from 'view/com/util/load-latest/LoadLatestBtn' import {useOnMainScroll} from 'lib/hooks/useOnMainScroll' import {usePalette} from 'lib/hooks/usePalette' @@ -36,7 +37,7 @@ export function NotificationsScreen({}: Props) { const {_} = useLingui() const setMinimalShellMode = useSetMinimalShellMode() const [onMainScroll, isScrolledDown, resetMainScroll] = useOnMainScroll() - const scrollElRef = React.useRef(null) + const scrollElRef = React.useRef(null) const checkLatestRef = React.useRef<() => void | null>() const {screen} = useAnalytics() const pal = usePalette('default') diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx index b7dac8c6de..fa15b8a149 100644 --- a/src/view/screens/Profile.tsx +++ b/src/view/screens/Profile.tsx @@ -5,7 +5,8 @@ import {AppBskyActorDefs, moderateProfile, ModerationOpts} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' import {NativeStackScreenProps, CommonNavigatorParams} from 'lib/routes/types' -import {CenteredView, FlatList} from '../com/util/Views' +import {CenteredView} from '../com/util/Views' +import {ListRef} from '../com/util/List' import {ScreenHider} from 'view/com/util/moderation/ScreenHider' import {Feed} from 'view/com/posts/Feed' import {ProfileLists} from '../com/lists/ProfileLists' @@ -285,9 +286,7 @@ function ProfileScreenLoaded({ headerHeight={headerHeight} isFocused={isFocused} isScrolledDown={isScrolledDown} - scrollElRef={ - scrollElRef as React.MutableRefObject | null> - } + scrollElRef={scrollElRef as ListRef} ignoreFilterFor={profile.did} /> )} @@ -306,9 +305,7 @@ function ProfileScreenLoaded({ headerHeight={headerHeight} isFocused={isFocused} isScrolledDown={isScrolledDown} - scrollElRef={ - scrollElRef as React.MutableRefObject | null> - } + scrollElRef={scrollElRef as ListRef} ignoreFilterFor={profile.did} /> ) @@ -321,9 +318,7 @@ function ProfileScreenLoaded({ headerHeight={headerHeight} isFocused={isFocused} isScrolledDown={isScrolledDown} - scrollElRef={ - scrollElRef as React.MutableRefObject | null> - } + scrollElRef={scrollElRef as ListRef} ignoreFilterFor={profile.did} /> )} @@ -342,9 +337,7 @@ function ProfileScreenLoaded({ headerHeight={headerHeight} isFocused={isFocused} isScrolledDown={isScrolledDown} - scrollElRef={ - scrollElRef as React.MutableRefObject | null> - } + scrollElRef={scrollElRef as ListRef} ignoreFilterFor={profile.did} /> ) @@ -354,9 +347,7 @@ function ProfileScreenLoaded({ | null> - } + scrollElRef={scrollElRef as ListRef} onScroll={onScroll} scrollEventThrottle={1} headerOffset={headerHeight} @@ -369,9 +360,7 @@ function ProfileScreenLoaded({ | null> - } + scrollElRef={scrollElRef as ListRef} onScroll={onScroll} scrollEventThrottle={1} headerOffset={headerHeight} @@ -400,7 +389,7 @@ interface FeedSectionProps { headerHeight: number isFocused: boolean isScrolledDown: boolean - scrollElRef: React.MutableRefObject | null> + scrollElRef: ListRef ignoreFilterFor?: string } const FeedSection = React.forwardRef( diff --git a/src/view/screens/ProfileFeed.tsx b/src/view/screens/ProfileFeed.tsx index 620b1814af..73e265410c 100644 --- a/src/view/screens/ProfileFeed.tsx +++ b/src/view/screens/ProfileFeed.tsx @@ -1,11 +1,5 @@ import React, {useMemo, useCallback} from 'react' -import { - Dimensions, - StyleSheet, - View, - ActivityIndicator, - FlatList, -} from 'react-native' +import {Dimensions, StyleSheet, View, ActivityIndicator} from 'react-native' import {NativeStackScreenProps} from '@react-navigation/native-stack' import {useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' @@ -20,6 +14,7 @@ import {PagerWithHeader} from 'view/com/pager/PagerWithHeader' import {ProfileSubpageHeader} from 'view/com/profile/ProfileSubpageHeader' import {Feed} from 'view/com/posts/Feed' import {TextLink} from 'view/com/util/Link' +import {ListRef} from 'view/com/util/List' import {Button} from 'view/com/util/forms/Button' import {Text} from 'view/com/util/text/Text' import {RichText} from 'view/com/util/text/RichText' @@ -411,9 +406,7 @@ export function ProfileFeedScreenInner({ onScroll={onScroll} headerHeight={headerHeight} isScrolledDown={isScrolledDown} - scrollElRef={ - scrollElRef as React.MutableRefObject | null> - } + scrollElRef={scrollElRef as ListRef} isFocused={isFocused} /> ) : ( @@ -500,7 +493,7 @@ interface FeedSectionProps { onScroll: OnScrollHandler headerHeight: number isScrolledDown: boolean - scrollElRef: React.MutableRefObject | null> + scrollElRef: ListRef isFocused: boolean } const FeedSection = React.forwardRef( diff --git a/src/view/screens/ProfileList.tsx b/src/view/screens/ProfileList.tsx index 3dcc7121fd..84f4137b5c 100644 --- a/src/view/screens/ProfileList.tsx +++ b/src/view/screens/ProfileList.tsx @@ -1,11 +1,5 @@ import React, {useCallback, useMemo} from 'react' -import { - ActivityIndicator, - FlatList, - Pressable, - StyleSheet, - View, -} from 'react-native' +import {ActivityIndicator, Pressable, StyleSheet, View} from 'react-native' import {useFocusEffect} from '@react-navigation/native' import {NativeStackScreenProps, CommonNavigatorParams} from 'lib/routes/types' import {useNavigation} from '@react-navigation/native' @@ -22,6 +16,7 @@ import {EmptyState} from 'view/com/util/EmptyState' import {RichText} from 'view/com/util/text/RichText' import {Button} from 'view/com/util/forms/Button' import {TextLink} from 'view/com/util/Link' +import {ListRef} from 'view/com/util/List' import * as Toast from 'view/com/util/Toast' import {LoadLatestBtn} from 'view/com/util/load-latest/LoadLatestBtn' import {FAB} from 'view/com/util/fab/FAB' @@ -175,9 +170,7 @@ function ProfileListScreenLoaded({ | null> - } + scrollElRef={scrollElRef as ListRef} onScroll={onScroll} headerHeight={headerHeight} isScrolledDown={isScrolledDown} @@ -187,9 +180,7 @@ function ProfileListScreenLoaded({ {({onScroll, headerHeight, isScrolledDown, scrollElRef}) => ( | null> - } + scrollElRef={scrollElRef as ListRef} list={list} onPressAddUser={onPressAddUser} onScroll={onScroll} @@ -224,9 +215,7 @@ function ProfileListScreenLoaded({ {({onScroll, headerHeight, isScrolledDown, scrollElRef}) => ( | null> - } + scrollElRef={scrollElRef as ListRef} onPressAddUser={onPressAddUser} onScroll={onScroll} headerHeight={headerHeight} @@ -618,7 +607,7 @@ interface FeedSectionProps { onScroll: OnScrollHandler headerHeight: number isScrolledDown: boolean - scrollElRef: React.MutableRefObject | null> + scrollElRef: ListRef isFocused: boolean } const FeedSection = React.forwardRef( @@ -677,7 +666,7 @@ interface AboutSectionProps { onScroll: OnScrollHandler headerHeight: number isScrolledDown: boolean - scrollElRef: React.MutableRefObject | null> + scrollElRef: ListRef } const AboutSection = React.forwardRef( function AboutSectionImpl( diff --git a/src/view/screens/Search/Search.tsx b/src/view/screens/Search/Search.tsx index b4db270b3c..7d7b4098f8 100644 --- a/src/view/screens/Search/Search.tsx +++ b/src/view/screens/Search/Search.tsx @@ -8,7 +8,8 @@ import { Pressable, Platform, } from 'react-native' -import {FlatList, ScrollView, CenteredView} from '#/view/com/util/Views' +import {ScrollView, CenteredView} from '#/view/com/util/Views' +import {List} from '#/view/com/util/List' import {AppBskyActorDefs, AppBskyFeedDefs, moderateProfile} from '@atproto/api' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' @@ -155,7 +156,7 @@ function SearchScreenSuggestedFollows() { }, [currentAccount, setSuggestions, getSuggestedFollowsByActor]) return suggestions.length ? ( - } keyExtractor={item => item.did} @@ -243,7 +244,7 @@ function SearchScreenPostResults({query}: {query: string}) { {isFetched ? ( <> {posts.length ? ( - { if (item.type === 'post') { @@ -284,7 +285,7 @@ function SearchScreenUserResults({query}: {query: string}) { return isFetched && results ? ( <> {results.length ? ( - ( From c0eaaf8360b2c8c1d8bc046b921bc785821b7f82 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 13 Dec 2023 01:14:35 +0000 Subject: [PATCH 11/23] Fix type --- src/view/com/util/ViewSelector.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/view/com/util/ViewSelector.tsx b/src/view/com/util/ViewSelector.tsx index 79f91be5ef..978099c48f 100644 --- a/src/view/com/util/ViewSelector.tsx +++ b/src/view/com/util/ViewSelector.tsx @@ -59,7 +59,7 @@ export const ViewSelector = React.forwardRef< ) { const pal = usePalette('default') const [selectedIndex, setSelectedIndex] = useState(0) - const flatListRef = React.useRef(null) + const flatListRef = React.useRef(null) // events // = From b4de3dda7d39ac02f5740edb9a37815ed498de84 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 13 Dec 2023 04:11:34 +0000 Subject: [PATCH 12/23] Add onScrolledDownChange --- src/lib/hooks/useOnMainScroll.ts | 18 +++--------------- src/view/com/feeds/FeedPage.tsx | 4 +++- src/view/com/notifications/Feed.tsx | 3 +++ src/view/com/posts/Feed.tsx | 3 +++ src/view/com/util/List.tsx | 29 +++++++++++++++++++++++++---- src/view/screens/Notifications.tsx | 4 +++- 6 files changed, 40 insertions(+), 21 deletions(-) diff --git a/src/lib/hooks/useOnMainScroll.ts b/src/lib/hooks/useOnMainScroll.ts index 2e7a799137..491a9a71ba 100644 --- a/src/lib/hooks/useOnMainScroll.ts +++ b/src/lib/hooks/useOnMainScroll.ts @@ -1,13 +1,11 @@ -import {useState, useCallback, useMemo} from 'react' +import {useCallback, useMemo} from 'react' import {NativeSyntheticEvent, NativeScrollEvent} from 'react-native' import {useSetMinimalShellMode, useMinimalShellMode} from '#/state/shell' import {useShellLayout} from '#/state/shell/shell-layout' -import {s} from 'lib/styles' import {isWeb} from 'platform/detection' import { useSharedValue, interpolate, - runOnJS, ScrollHandlers, } from 'react-native-reanimated' @@ -22,9 +20,8 @@ export type OnScrollCb = ( export type OnScrollHandler = ScrollHandlers export type ResetCb = () => void -export function useOnMainScroll(): [OnScrollHandler, boolean, ResetCb] { +export function useOnMainScroll(): [OnScrollHandler, ResetCb] { const {headerHeight} = useShellLayout() - const [isScrolledDown, setIsScrolledDown] = useState(false) const mode = useMinimalShellMode() const setMode = useSetMinimalShellMode() const startDragOffset = useSharedValue(null) @@ -58,13 +55,6 @@ export function useOnMainScroll(): [OnScrollHandler, boolean, ResetCb] { const onScroll = useCallback( (e: NativeScrollEvent) => { 'worklet' - // Keep track of whether we want to show "scroll to top". - if (!isScrolledDown && e.contentOffset.y > s.window.height) { - runOnJS(setIsScrolledDown)(true) - } else if (isScrolledDown && e.contentOffset.y < s.window.height) { - runOnJS(setIsScrolledDown)(false) - } - if (startDragOffset.value === null || startMode.value === null) { if (mode.value !== 0 && e.contentOffset.y < headerHeight.value) { // If we're close enough to the top, always show the shell. @@ -102,7 +92,7 @@ export function useOnMainScroll(): [OnScrollHandler, boolean, ResetCb] { startMode.value = mode.value } }, - [headerHeight, mode, setMode, isScrolledDown, startDragOffset, startMode], + [headerHeight, mode, setMode, startDragOffset, startMode], ) const scrollHandler: ScrollHandlers = useMemo( @@ -116,9 +106,7 @@ export function useOnMainScroll(): [OnScrollHandler, boolean, ResetCb] { return [ scrollHandler, - isScrolledDown, useCallback(() => { - setIsScrolledDown(false) setMode(false) }, [setMode]), ] diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx index a64809ca70..458c0c72de 100644 --- a/src/view/com/feeds/FeedPage.tsx +++ b/src/view/com/feeds/FeedPage.tsx @@ -52,7 +52,8 @@ export function FeedPage({ const {isDesktop} = useWebMediaQueries() const queryClient = useQueryClient() const {openComposer} = useComposerControls() - const [onMainScroll, isScrolledDown, resetMainScroll] = useOnMainScroll() + const [isScrolledDown, setIsScrolledDown] = React.useState(false) + const [onMainScroll, resetMainScroll] = useOnMainScroll() const {screen, track} = useAnalytics() const headerOffset = useHeaderOffset() const scrollElRef = React.useRef(null) @@ -173,6 +174,7 @@ export function FeedPage({ pollInterval={POLL_FREQ} scrollElRef={scrollElRef} onScroll={onMainScroll} + onScrolledDownChange={setIsScrolledDown} onHasNew={setHasNew} scrollEventThrottle={1} renderEmptyState={renderEmptyState} diff --git a/src/view/com/notifications/Feed.tsx b/src/view/com/notifications/Feed.tsx index 1701dde313..8dec5d5d12 100644 --- a/src/view/com/notifications/Feed.tsx +++ b/src/view/com/notifications/Feed.tsx @@ -25,11 +25,13 @@ export function Feed({ scrollElRef, onPressTryAgain, onScroll, + onScrolledDownChange, ListHeaderComponent, }: { scrollElRef?: ListRef onPressTryAgain?: () => void onScroll?: OnScrollHandler + onScrolledDownChange: (isScrolledDown: boolean) => void ListHeaderComponent?: () => JSX.Element }) { const pal = usePalette('default') @@ -166,6 +168,7 @@ export function Feed({ onEndReached={onEndReached} onEndReachedThreshold={0.6} onScroll={scrollHandler} + onScrolledDownChange={onScrolledDownChange} scrollEventThrottle={1} contentContainerStyle={s.contentContainer} // @ts-ignore our .web version only -prf diff --git a/src/view/com/posts/Feed.tsx b/src/view/com/posts/Feed.tsx index 14dbd7fed8..081ff10f78 100644 --- a/src/view/com/posts/Feed.tsx +++ b/src/view/com/posts/Feed.tsx @@ -46,6 +46,7 @@ let Feed = ({ pollInterval, scrollElRef, onScroll, + onScrolledDownChange, onHasNew, scrollEventThrottle, renderEmptyState, @@ -65,6 +66,7 @@ let Feed = ({ scrollElRef?: ListRef onHasNew?: (v: boolean) => void onScroll?: OnScrollHandler + onScrolledDownChange?: (isScrolledDown: boolean) => void scrollEventThrottle?: number renderEmptyState: () => JSX.Element renderEndOfFeed?: () => JSX.Element @@ -295,6 +297,7 @@ let Feed = ({ }} style={{paddingTop: headerOffset}} onScroll={onScroll != null ? scrollHandler : undefined} + onScrolledDownChange={onScrolledDownChange} scrollEventThrottle={scrollEventThrottle} indicatorStyle={theme.colorScheme === 'dark' ? 'white' : 'black'} onEndReached={onEndReached} diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index 19b43d5455..e5ff2892cf 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -1,13 +1,34 @@ -import React from 'react' +import React, {useState} from 'react' import {FlatListProps} from 'react-native' import {FlatList_INTERNAL} from './Views' +import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' export type ListMethods = FlatList_INTERNAL -export type ListProps = FlatListProps +export type ListProps = FlatListProps & { + onScrolledDownChange?: (isScrolledDown: boolean) => void +} export type ListRef = React.MutableRefObject -function ListImpl(props: ListProps, ref: React.Ref) { - return +const SCROLLED_DOWN_LIMIT = 200 + +function ListImpl( + {onScrolledDownChange, ...props}: ListProps, + ref: React.Ref, +) { + const [isScrolledDown, setIsScrolledDown] = useState(false) + + // TODO: This ignores the passed-in onScroll completely. + const scrollHandler = useAnimatedScrollHandler({ + onScroll(e) { + const didScrollDown = e.contentOffset.y > SCROLLED_DOWN_LIMIT + if (isScrolledDown !== didScrollDown) { + setIsScrolledDown(didScrollDown) + onScrolledDownChange?.(didScrollDown) + } + }, + }) + + return } export const List = React.forwardRef(ListImpl) as ( diff --git a/src/view/screens/Notifications.tsx b/src/view/screens/Notifications.tsx index 09cdfcd0aa..d707ae01dd 100644 --- a/src/view/screens/Notifications.tsx +++ b/src/view/screens/Notifications.tsx @@ -36,7 +36,8 @@ type Props = NativeStackScreenProps< export function NotificationsScreen({}: Props) { const {_} = useLingui() const setMinimalShellMode = useSetMinimalShellMode() - const [onMainScroll, isScrolledDown, resetMainScroll] = useOnMainScroll() + const [onMainScroll, resetMainScroll] = useOnMainScroll() + const [isScrolledDown, setIsScrolledDown] = React.useState(false) const scrollElRef = React.useRef(null) const checkLatestRef = React.useRef<() => void | null>() const {screen} = useAnalytics() @@ -133,6 +134,7 @@ export function NotificationsScreen({}: Props) { From b93ab428c3ccf58ca45c52c4e3621fe711cbe13d Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 13 Dec 2023 04:18:54 +0000 Subject: [PATCH 13/23] Port pager to use onScrolledDownChange --- src/view/com/lists/ListMembers.tsx | 3 +++ src/view/com/pager/PagerWithHeader.tsx | 16 ----------- src/view/screens/Profile.tsx | 37 +++++--------------------- src/view/screens/ProfileFeed.tsx | 8 +++--- src/view/screens/ProfileList.tsx | 25 +++++++---------- 5 files changed, 23 insertions(+), 66 deletions(-) diff --git a/src/view/com/lists/ListMembers.tsx b/src/view/com/lists/ListMembers.tsx index b496611d32..a783ee3450 100644 --- a/src/view/com/lists/ListMembers.tsx +++ b/src/view/com/lists/ListMembers.tsx @@ -35,6 +35,7 @@ export function ListMembers({ style, scrollElRef, onScroll, + onScrolledDownChange, onPressTryAgain, renderHeader, renderEmptyState, @@ -47,6 +48,7 @@ export function ListMembers({ style?: StyleProp scrollElRef?: ListRef onScroll: OnScrollHandler + onScrolledDownChange: (isScrolledDown: boolean) => void onPressTryAgain?: () => void renderHeader: () => JSX.Element renderEmptyState: () => JSX.Element @@ -234,6 +236,7 @@ export function ListMembers({ }} style={{paddingTop: headerOffset}} onScroll={scrollHandler} + onScrolledDownChange={onScrolledDownChange} onEndReached={onEndReached} onEndReachedThreshold={0.6} scrollEventThrottle={scrollEventThrottle} diff --git a/src/view/com/pager/PagerWithHeader.tsx b/src/view/com/pager/PagerWithHeader.tsx index 3054bf5f82..570163b3d3 100644 --- a/src/view/com/pager/PagerWithHeader.tsx +++ b/src/view/com/pager/PagerWithHeader.tsx @@ -23,13 +23,10 @@ import {OnScrollHandler} from 'lib/hooks/useOnMainScroll' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {ListMethods} from '../util/List' -const SCROLLED_DOWN_LIMIT = 200 - export interface PagerWithHeaderChildParams { headerHeight: number isFocused: boolean onScroll: OnScrollHandler - isScrolledDown: boolean scrollElRef: React.MutableRefObject } @@ -62,7 +59,6 @@ export const PagerWithHeader = React.forwardRef( const [currentPage, setCurrentPage] = React.useState(0) const [tabBarHeight, setTabBarHeight] = React.useState(0) const [headerOnlyHeight, setHeaderOnlyHeight] = React.useState(0) - const [isScrolledDown, setIsScrolledDown] = React.useState(false) const scrollY = useSharedValue(0) const headerHeight = headerOnlyHeight + tabBarHeight @@ -155,15 +151,7 @@ export const PagerWithHeader = React.forwardRef( if (!throttleTimeout.current) { throttleTimeout.current = setTimeout(() => { throttleTimeout.current = null - runOnUI(adjustScrollForOtherPages)() - - const nextIsScrolledDown = scrollY.value > SCROLLED_DOWN_LIMIT - if (isScrolledDown !== nextIsScrolledDown) { - React.startTransition(() => { - setIsScrolledDown(nextIsScrolledDown) - }) - } }, 80 /* Sync often enough you're unlikely to catch it unsynced */) } }) @@ -211,7 +199,6 @@ export const PagerWithHeader = React.forwardRef( index={i} isReady={isReady} isFocused={i === currentPage} - isScrolledDown={isScrolledDown} onScrollWorklet={i === currentPage ? onScrollWorklet : noop} registerRef={registerRef} renderTab={child} @@ -293,7 +280,6 @@ function PagerItem({ index, isReady, isFocused, - isScrolledDown, onScrollWorklet, renderTab, registerRef, @@ -302,7 +288,6 @@ function PagerItem({ index: number isFocused: boolean isReady: boolean - isScrolledDown: boolean registerRef: (scrollRef: AnimatedRef | null, atIndex: number) => void onScrollWorklet: (e: NativeScrollEvent) => void renderTab: ((props: PagerWithHeaderChildParams) => JSX.Element) | null @@ -328,7 +313,6 @@ function PagerItem({ return renderTab({ headerHeight, isFocused, - isScrolledDown, onScroll: scrollHandler, scrollElRef: scrollElRef as React.MutableRefObject< ListMethods | ScrollView | null diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx index fa15b8a149..31886afdb4 100644 --- a/src/view/screens/Profile.tsx +++ b/src/view/screens/Profile.tsx @@ -278,65 +278,49 @@ function ProfileScreenLoaded({ onPageSelected={onPageSelected} onCurrentPageSelected={onCurrentPageSelected} renderHeader={renderHeader}> - {({onScroll, headerHeight, isFocused, isScrolledDown, scrollElRef}) => ( + {({onScroll, headerHeight, isFocused, scrollElRef}) => ( )} {showRepliesTab - ? ({ - onScroll, - headerHeight, - isFocused, - isScrolledDown, - scrollElRef, - }) => ( + ? ({onScroll, headerHeight, isFocused, scrollElRef}) => ( ) : null} - {({onScroll, headerHeight, isFocused, isScrolledDown, scrollElRef}) => ( + {({onScroll, headerHeight, isFocused, scrollElRef}) => ( )} {showLikesTab - ? ({ - onScroll, - headerHeight, - isFocused, - isScrolledDown, - scrollElRef, - }) => ( + ? ({onScroll, headerHeight, isFocused, scrollElRef}) => ( @@ -388,25 +372,17 @@ interface FeedSectionProps { onScroll: OnScrollHandler headerHeight: number isFocused: boolean - isScrolledDown: boolean scrollElRef: ListRef ignoreFilterFor?: string } const FeedSection = React.forwardRef( function FeedSectionImpl( - { - feed, - onScroll, - headerHeight, - isFocused, - isScrolledDown, - scrollElRef, - ignoreFilterFor, - }, + {feed, onScroll, headerHeight, isFocused, scrollElRef, ignoreFilterFor}, ref, ) { const queryClient = useQueryClient() const [hasNew, setHasNew] = React.useState(false) + const [isScrolledDown, setIsScrolledDown] = React.useState(false) const onScrollToTop = React.useCallback(() => { scrollElRef.current?.scrollToOffset({ @@ -433,6 +409,7 @@ const FeedSection = React.forwardRef( scrollElRef={scrollElRef} onHasNew={setHasNew} onScroll={onScroll} + onScrolledDownChange={setIsScrolledDown} scrollEventThrottle={1} renderEmptyState={renderPostsEmpty} headerOffset={headerHeight} diff --git a/src/view/screens/ProfileFeed.tsx b/src/view/screens/ProfileFeed.tsx index 73e265410c..cfd6f564aa 100644 --- a/src/view/screens/ProfileFeed.tsx +++ b/src/view/screens/ProfileFeed.tsx @@ -398,14 +398,13 @@ export function ProfileFeedScreenInner({ isHeaderReady={true} renderHeader={renderHeader} onCurrentPageSelected={onCurrentPageSelected}> - {({onScroll, headerHeight, isScrolledDown, scrollElRef, isFocused}) => + {({onScroll, headerHeight, scrollElRef, isFocused}) => isPublicResponse?.isPublic ? ( @@ -492,16 +491,16 @@ interface FeedSectionProps { feed: FeedDescriptor onScroll: OnScrollHandler headerHeight: number - isScrolledDown: boolean scrollElRef: ListRef isFocused: boolean } const FeedSection = React.forwardRef( function FeedSectionImpl( - {feed, onScroll, headerHeight, isScrolledDown, scrollElRef, isFocused}, + {feed, onScroll, headerHeight, scrollElRef, isFocused}, ref, ) { const [hasNew, setHasNew] = React.useState(false) + const [isScrolledDown, setIsScrolledDown] = React.useState(false) const queryClient = useQueryClient() const onScrollToTop = useCallback(() => { @@ -530,6 +529,7 @@ const FeedSection = React.forwardRef( scrollElRef={scrollElRef} onHasNew={setHasNew} onScroll={onScroll} + onScrolledDownChange={setIsScrolledDown} scrollEventThrottle={5} renderEmptyState={renderPostsEmpty} headerOffset={headerHeight} diff --git a/src/view/screens/ProfileList.tsx b/src/view/screens/ProfileList.tsx index 84f4137b5c..9052ffd3ad 100644 --- a/src/view/screens/ProfileList.tsx +++ b/src/view/screens/ProfileList.tsx @@ -160,24 +160,17 @@ function ProfileListScreenLoaded({ isHeaderReady={true} renderHeader={renderHeader} onCurrentPageSelected={onCurrentPageSelected}> - {({ - onScroll, - headerHeight, - isScrolledDown, - scrollElRef, - isFocused, - }) => ( + {({onScroll, headerHeight, scrollElRef, isFocused}) => ( )} - {({onScroll, headerHeight, isScrolledDown, scrollElRef}) => ( + {({onScroll, headerHeight, scrollElRef}) => ( )} @@ -212,14 +204,13 @@ function ProfileListScreenLoaded({ items={SECTION_TITLES_MOD} isHeaderReady={true} renderHeader={renderHeader}> - {({onScroll, headerHeight, isScrolledDown, scrollElRef}) => ( + {({onScroll, headerHeight, scrollElRef}) => ( )} @@ -606,17 +597,17 @@ interface FeedSectionProps { feed: FeedDescriptor onScroll: OnScrollHandler headerHeight: number - isScrolledDown: boolean scrollElRef: ListRef isFocused: boolean } const FeedSection = React.forwardRef( function FeedSectionImpl( - {feed, scrollElRef, onScroll, headerHeight, isScrolledDown, isFocused}, + {feed, scrollElRef, onScroll, headerHeight, isFocused}, ref, ) { const queryClient = useQueryClient() const [hasNew, setHasNew] = React.useState(false) + const [isScrolledDown, setIsScrolledDown] = React.useState(false) const onScrollToTop = useCallback(() => { scrollElRef.current?.scrollToOffset({ @@ -644,6 +635,7 @@ const FeedSection = React.forwardRef( scrollElRef={scrollElRef} onHasNew={setHasNew} onScroll={onScroll} + onScrolledDownChange={setIsScrolledDown} scrollEventThrottle={1} renderEmptyState={renderPostsEmpty} headerOffset={headerHeight} @@ -665,18 +657,18 @@ interface AboutSectionProps { onPressAddUser: () => void onScroll: OnScrollHandler headerHeight: number - isScrolledDown: boolean scrollElRef: ListRef } const AboutSection = React.forwardRef( function AboutSectionImpl( - {list, onPressAddUser, onScroll, headerHeight, isScrolledDown, scrollElRef}, + {list, onPressAddUser, onScroll, headerHeight, scrollElRef}, ref, ) { const pal = usePalette('default') const {_} = useLingui() const {isMobile} = useWebMediaQueries() const {currentAccount} = useSession() + const [isScrolledDown, setIsScrolledDown] = React.useState(false) const isCurateList = list.purpose === 'app.bsky.graph.defs#curatelist' const isOwner = list.creator.did === currentAccount?.did @@ -807,6 +799,7 @@ const AboutSection = React.forwardRef( renderEmptyState={renderEmptyState} headerOffset={headerHeight} onScroll={onScroll} + onScrolledDownChange={setIsScrolledDown} scrollEventThrottle={1} /> {isScrolledDown && ( From b1cb4ef4de4095a589819bcf1e51b35f0460e3de Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 13 Dec 2023 04:21:33 +0000 Subject: [PATCH 14/23] Fix on mobile --- src/view/com/util/List.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index e5ff2892cf..0a61463e09 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -1,6 +1,7 @@ import React, {useState} from 'react' import {FlatListProps} from 'react-native' import {FlatList_INTERNAL} from './Views' +import {runOnJS} from 'react-native-reanimated' import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' export type ListMethods = FlatList_INTERNAL @@ -17,13 +18,17 @@ function ListImpl( ) { const [isScrolledDown, setIsScrolledDown] = useState(false) + function handleScrolledDownChange(didScrollDown: boolean) { + setIsScrolledDown(didScrollDown) + onScrolledDownChange?.(didScrollDown) + } + // TODO: This ignores the passed-in onScroll completely. const scrollHandler = useAnimatedScrollHandler({ onScroll(e) { const didScrollDown = e.contentOffset.y > SCROLLED_DOWN_LIMIT if (isScrolledDown !== didScrollDown) { - setIsScrolledDown(didScrollDown) - onScrolledDownChange?.(didScrollDown) + runOnJS(handleScrolledDownChange)(didScrollDown) } }, }) From 9e12ea51431dc3f28ce3ed1985d2fc59ac541835 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 13 Dec 2023 04:34:16 +0000 Subject: [PATCH 15/23] Don't pass down onScroll (replacement TBD) --- src/lib/hooks/useOnMainScroll.ts | 8 ++------ src/view/com/feeds/FeedPage.tsx | 2 -- src/view/com/feeds/ProfileFeedgens.tsx | 18 +----------------- src/view/com/lists/ListMembers.tsx | 9 --------- src/view/com/lists/ProfileLists.tsx | 18 +----------------- src/view/com/notifications/Feed.tsx | 7 ------- src/view/com/pager/PagerWithHeader.tsx | 2 -- src/view/com/posts/Feed.tsx | 9 --------- src/view/com/util/List.tsx | 9 ++++++++- src/view/com/util/ViewSelector.tsx | 5 +++-- src/view/screens/Notifications.tsx | 1 - src/view/screens/Profile.tsx | 26 +++++++------------------- src/view/screens/ProfileFeed.tsx | 24 ++++++------------------ src/view/screens/ProfileList.tsx | 23 +++++------------------ 14 files changed, 33 insertions(+), 128 deletions(-) diff --git a/src/lib/hooks/useOnMainScroll.ts b/src/lib/hooks/useOnMainScroll.ts index 491a9a71ba..d65c307fa2 100644 --- a/src/lib/hooks/useOnMainScroll.ts +++ b/src/lib/hooks/useOnMainScroll.ts @@ -1,5 +1,5 @@ import {useCallback, useMemo} from 'react' -import {NativeSyntheticEvent, NativeScrollEvent} from 'react-native' +import {NativeScrollEvent} from 'react-native' import {useSetMinimalShellMode, useMinimalShellMode} from '#/state/shell' import {useShellLayout} from '#/state/shell/shell-layout' import {isWeb} from 'platform/detection' @@ -14,13 +14,9 @@ function clamp(num: number, min: number, max: number) { return Math.min(Math.max(num, min), max) } -export type OnScrollCb = ( - event: NativeSyntheticEvent, -) => void -export type OnScrollHandler = ScrollHandlers export type ResetCb = () => void -export function useOnMainScroll(): [OnScrollHandler, ResetCb] { +export function useOnMainScroll(): [ScrollHandlers, ResetCb] { const {headerHeight} = useShellLayout() const mode = useMinimalShellMode() const setMode = useSetMinimalShellMode() diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx index 458c0c72de..606ffa4ab4 100644 --- a/src/view/com/feeds/FeedPage.tsx +++ b/src/view/com/feeds/FeedPage.tsx @@ -173,10 +173,8 @@ export function FeedPage({ feedParams={feedParams} pollInterval={POLL_FREQ} scrollElRef={scrollElRef} - onScroll={onMainScroll} onScrolledDownChange={setIsScrolledDown} onHasNew={setHasNew} - scrollEventThrottle={1} renderEmptyState={renderEmptyState} renderEndOfFeed={renderEndOfFeed} ListHeaderComponent={ListHeaderComponent} diff --git a/src/view/com/feeds/ProfileFeedgens.tsx b/src/view/com/feeds/ProfileFeedgens.tsx index 73e8ee3f85..ff65055011 100644 --- a/src/view/com/feeds/ProfileFeedgens.tsx +++ b/src/view/com/feeds/ProfileFeedgens.tsx @@ -15,11 +15,9 @@ import {LoadMoreRetryBtn} from '../util/LoadMoreRetryBtn' import {Text} from '../util/text/Text' import {usePalette} from 'lib/hooks/usePalette' import {useProfileFeedgensQuery, RQKEY} from '#/state/queries/profile-feedgens' -import {OnScrollHandler} from '#/lib/hooks/useOnMainScroll' import {logger} from '#/logger' import {Trans} from '@lingui/macro' import {cleanError} from '#/lib/strings/errors' -import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' import {useTheme} from '#/lib/ThemeContext' import {usePreferencesQuery} from '#/state/queries/preferences' import {hydrateFeedGenerator} from '#/state/queries/feed' @@ -38,8 +36,6 @@ interface SectionRef { interface ProfileFeedgensProps { did: string scrollElRef: ListRef - onScroll?: OnScrollHandler - scrollEventThrottle?: number headerOffset: number enabled?: boolean style?: StyleProp @@ -50,16 +46,7 @@ export const ProfileFeedgens = React.forwardRef< SectionRef, ProfileFeedgensProps >(function ProfileFeedgensImpl( - { - did, - scrollElRef, - onScroll, - scrollEventThrottle, - headerOffset, - enabled, - style, - testID, - }, + {did, scrollElRef, headerOffset, enabled, style, testID}, ref, ) { const pal = usePalette('default') @@ -185,7 +172,6 @@ export const ProfileFeedgens = React.forwardRef< [error, refetch, onPressRetryLoadMore, pal, preferences], ) - const scrollHandler = useAnimatedScrollHandler(onScroll || {}) return ( scrollElRef?: ListRef - onScroll: OnScrollHandler onScrolledDownChange: (isScrolledDown: boolean) => void onPressTryAgain?: () => void renderHeader: () => JSX.Element renderEmptyState: () => JSX.Element testID?: string - scrollEventThrottle?: number headerOffset?: number desktopFixedHeightOffset?: number }) { @@ -211,7 +205,6 @@ export function ListMembers({ [isFetching], ) - const scrollHandler = useAnimatedScrollHandler(onScroll) return ( @@ -47,16 +43,7 @@ interface ProfileListsProps { export const ProfileLists = React.forwardRef( function ProfileListsImpl( - { - did, - scrollElRef, - onScroll, - scrollEventThrottle, - headerOffset, - enabled, - style, - testID, - }, + {did, scrollElRef, headerOffset, enabled, style, testID}, ref, ) { const pal = usePalette('default') @@ -187,7 +174,6 @@ export const ProfileLists = React.forwardRef( [error, refetch, onPressRetryLoadMore, pal], ) - const scrollHandler = useAnimatedScrollHandler(onScroll || {}) return ( ( minHeight: Dimensions.get('window').height * 1.5, }} style={{paddingTop: headerOffset}} - onScroll={onScroll != null ? scrollHandler : undefined} - scrollEventThrottle={scrollEventThrottle} indicatorStyle={theme.colorScheme === 'dark' ? 'white' : 'black'} removeClippedSubviews={true} contentOffset={{x: 0, y: headerOffset * -1}} diff --git a/src/view/com/notifications/Feed.tsx b/src/view/com/notifications/Feed.tsx index 8dec5d5d12..52d534c4fd 100644 --- a/src/view/com/notifications/Feed.tsx +++ b/src/view/com/notifications/Feed.tsx @@ -6,8 +6,6 @@ import {NotificationFeedLoadingPlaceholder} from '../util/LoadingPlaceholder' import {ErrorMessage} from '../util/error/ErrorMessage' import {LoadMoreRetryBtn} from '../util/LoadMoreRetryBtn' import {EmptyState} from '../util/EmptyState' -import {OnScrollHandler} from 'lib/hooks/useOnMainScroll' -import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' import {s} from 'lib/styles' import {usePalette} from 'lib/hooks/usePalette' import {useNotificationFeedQuery} from '#/state/queries/notifications/feed' @@ -24,13 +22,11 @@ const LOADING_ITEM = {_reactKey: '__loading__'} export function Feed({ scrollElRef, onPressTryAgain, - onScroll, onScrolledDownChange, ListHeaderComponent, }: { scrollElRef?: ListRef onPressTryAgain?: () => void - onScroll?: OnScrollHandler onScrolledDownChange: (isScrolledDown: boolean) => void ListHeaderComponent?: () => JSX.Element }) { @@ -138,7 +134,6 @@ export function Feed({ [isFetchingNextPage], ) - const scrollHandler = useAnimatedScrollHandler(onScroll || {}) return ( {error && ( @@ -167,9 +162,7 @@ export function Feed({ } onEndReached={onEndReached} onEndReachedThreshold={0.6} - onScroll={scrollHandler} onScrolledDownChange={onScrolledDownChange} - scrollEventThrottle={1} contentContainerStyle={s.contentContainer} // @ts-ignore our .web version only -prf desktopFixedHeight diff --git a/src/view/com/pager/PagerWithHeader.tsx b/src/view/com/pager/PagerWithHeader.tsx index 570163b3d3..6feb80dbae 100644 --- a/src/view/com/pager/PagerWithHeader.tsx +++ b/src/view/com/pager/PagerWithHeader.tsx @@ -19,14 +19,12 @@ import Animated, { import {Pager, PagerRef, RenderTabBarFnProps} from 'view/com/pager/Pager' import {TabBar} from './TabBar' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {OnScrollHandler} from 'lib/hooks/useOnMainScroll' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {ListMethods} from '../util/List' export interface PagerWithHeaderChildParams { headerHeight: number isFocused: boolean - onScroll: OnScrollHandler scrollElRef: React.MutableRefObject } diff --git a/src/view/com/posts/Feed.tsx b/src/view/com/posts/Feed.tsx index 081ff10f78..9194bb163d 100644 --- a/src/view/com/posts/Feed.tsx +++ b/src/view/com/posts/Feed.tsx @@ -15,10 +15,8 @@ import {PostFeedLoadingPlaceholder} from '../util/LoadingPlaceholder' import {FeedErrorMessage} from './FeedErrorMessage' import {FeedSlice} from './FeedSlice' import {LoadMoreRetryBtn} from '../util/LoadMoreRetryBtn' -import {OnScrollHandler} from 'lib/hooks/useOnMainScroll' import {useAnalytics} from 'lib/analytics/analytics' import {usePalette} from 'lib/hooks/usePalette' -import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' import {useTheme} from 'lib/ThemeContext' import {logger} from '#/logger' import { @@ -45,10 +43,8 @@ let Feed = ({ enabled, pollInterval, scrollElRef, - onScroll, onScrolledDownChange, onHasNew, - scrollEventThrottle, renderEmptyState, renderEndOfFeed, testID, @@ -65,9 +61,7 @@ let Feed = ({ pollInterval?: number scrollElRef?: ListRef onHasNew?: (v: boolean) => void - onScroll?: OnScrollHandler onScrolledDownChange?: (isScrolledDown: boolean) => void - scrollEventThrottle?: number renderEmptyState: () => JSX.Element renderEndOfFeed?: () => JSX.Element testID?: string @@ -272,7 +266,6 @@ let Feed = ({ ) }, [isFetchingNextPage, shouldRenderEndOfFeed, renderEndOfFeed, headerOffset]) - const scrollHandler = useAnimatedScrollHandler(onScroll || {}) return ( ( }, }) - return + return ( + + ) } export const List = React.forwardRef(ListImpl) as ( diff --git a/src/view/com/util/ViewSelector.tsx b/src/view/com/util/ViewSelector.tsx index 978099c48f..ee993c564d 100644 --- a/src/view/com/util/ViewSelector.tsx +++ b/src/view/com/util/ViewSelector.tsx @@ -1,5 +1,7 @@ import React, {useEffect, useState} from 'react' import { + NativeSyntheticEvent, + NativeScrollEvent, Pressable, RefreshControl, StyleSheet, @@ -7,7 +9,6 @@ import { ScrollView, } from 'react-native' import {FlatList_INTERNAL} from './Views' -import {OnScrollCb} from 'lib/hooks/useOnMainScroll' import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' import {Text} from './text/Text' import {usePalette} from 'lib/hooks/usePalette' @@ -38,7 +39,7 @@ export const ViewSelector = React.forwardRef< | null | undefined onSelectView?: (viewIndex: number) => void - onScroll?: OnScrollCb + onScroll?: (event: NativeSyntheticEvent) => void onRefresh?: () => void onEndReached?: (info: {distanceFromEnd: number}) => void } diff --git a/src/view/screens/Notifications.tsx b/src/view/screens/Notifications.tsx index d707ae01dd..d13e6aa65a 100644 --- a/src/view/screens/Notifications.tsx +++ b/src/view/screens/Notifications.tsx @@ -133,7 +133,6 @@ export function NotificationsScreen({}: Props) { - {({onScroll, headerHeight, isFocused, scrollElRef}) => ( + {({headerHeight, isFocused, scrollElRef}) => ( )} {showRepliesTab - ? ({onScroll, headerHeight, isFocused, scrollElRef}) => ( + ? ({headerHeight, isFocused, scrollElRef}) => ( ) : null} - {({onScroll, headerHeight, isFocused, scrollElRef}) => ( + {({headerHeight, isFocused, scrollElRef}) => ( )} {showLikesTab - ? ({onScroll, headerHeight, isFocused, scrollElRef}) => ( + ? ({headerHeight, isFocused, scrollElRef}) => ( ( + ? ({headerHeight, isFocused, scrollElRef}) => ( ) : null} {showListsTab - ? ({onScroll, headerHeight, isFocused, scrollElRef}) => ( + ? ({headerHeight, isFocused, scrollElRef}) => ( @@ -369,7 +360,6 @@ function ProfileScreenLoaded({ interface FeedSectionProps { feed: FeedDescriptor - onScroll: OnScrollHandler headerHeight: number isFocused: boolean scrollElRef: ListRef @@ -377,7 +367,7 @@ interface FeedSectionProps { } const FeedSection = React.forwardRef( function FeedSectionImpl( - {feed, onScroll, headerHeight, isFocused, scrollElRef, ignoreFilterFor}, + {feed, headerHeight, isFocused, scrollElRef, ignoreFilterFor}, ref, ) { const queryClient = useQueryClient() @@ -408,9 +398,7 @@ const FeedSection = React.forwardRef( feed={feed} scrollElRef={scrollElRef} onHasNew={setHasNew} - onScroll={onScroll} onScrolledDownChange={setIsScrolledDown} - scrollEventThrottle={1} renderEmptyState={renderPostsEmpty} headerOffset={headerHeight} renderEndOfFeed={ProfileEndOfFeed} diff --git a/src/view/screens/ProfileFeed.tsx b/src/view/screens/ProfileFeed.tsx index cfd6f564aa..2886e23bb7 100644 --- a/src/view/screens/ProfileFeed.tsx +++ b/src/view/screens/ProfileFeed.tsx @@ -24,7 +24,6 @@ import {EmptyState} from 'view/com/util/EmptyState' import * as Toast from 'view/com/util/Toast' import {useSetTitle} from 'lib/hooks/useSetTitle' import {RQKEY as FEED_RQKEY} from '#/state/queries/post-feed' -import {OnScrollHandler} from 'lib/hooks/useOnMainScroll' import {shareUrl} from 'lib/sharing' import {toShareUrl} from 'lib/strings/url-helpers' import {Haptics} from 'lib/haptics' @@ -41,7 +40,6 @@ import {logger} from '#/logger' import {Trans, msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {useModalControls} from '#/state/modals' -import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' import { useFeedSourceInfoQuery, FeedSourceFeedInfo, @@ -398,12 +396,11 @@ export function ProfileFeedScreenInner({ isHeaderReady={true} renderHeader={renderHeader} onCurrentPageSelected={onCurrentPageSelected}> - {({onScroll, headerHeight, scrollElRef, isFocused}) => + {({headerHeight, scrollElRef, isFocused}) => isPublicResponse?.isPublic ? ( ) } - {({onScroll, headerHeight, scrollElRef}) => ( + {({headerHeight, scrollElRef}) => ( } @@ -489,16 +485,12 @@ function NonPublicFeedMessage({rawError}: {rawError?: Error}) { interface FeedSectionProps { feed: FeedDescriptor - onScroll: OnScrollHandler headerHeight: number scrollElRef: ListRef isFocused: boolean } const FeedSection = React.forwardRef( - function FeedSectionImpl( - {feed, onScroll, headerHeight, scrollElRef, isFocused}, - ref, - ) { + function FeedSectionImpl({feed, headerHeight, scrollElRef, isFocused}, ref) { const [hasNew, setHasNew] = React.useState(false) const [isScrolledDown, setIsScrolledDown] = React.useState(false) const queryClient = useQueryClient() @@ -528,9 +520,7 @@ const FeedSection = React.forwardRef( pollInterval={30e3} scrollElRef={scrollElRef} onHasNew={setHasNew} - onScroll={onScroll} onScrolledDownChange={setIsScrolledDown} - scrollEventThrottle={5} renderEmptyState={renderPostsEmpty} headerOffset={headerHeight} /> @@ -551,7 +541,6 @@ function AboutSection({ feedRkey, feedInfo, headerHeight, - onScroll, scrollElRef, isOwner, }: { @@ -559,13 +548,13 @@ function AboutSection({ feedRkey: string feedInfo: FeedSourceFeedInfo headerHeight: number - onScroll: OnScrollHandler scrollElRef: React.MutableRefObject isOwner: boolean }) { const pal = usePalette('default') const {_} = useLingui() - const scrollHandler = useAnimatedScrollHandler(onScroll) + // TODO! + const scrollHandler = useAnimatedScrollHandler(() => {}) const [likeUri, setLikeUri] = React.useState(feedInfo.likeUri) const {hasSession} = useSession() const {track} = useAnalytics() @@ -605,8 +594,7 @@ function AboutSection({ contentContainerStyle={{ paddingTop: headerHeight, minHeight: Dimensions.get('window').height * 1.5, - }} - onScroll={scrollHandler}> + }}> - {({onScroll, headerHeight, scrollElRef, isFocused}) => ( + {({headerHeight, scrollElRef, isFocused}) => ( )} - {({onScroll, headerHeight, scrollElRef}) => ( + {({headerHeight, scrollElRef}) => ( )} @@ -204,12 +201,11 @@ function ProfileListScreenLoaded({ items={SECTION_TITLES_MOD} isHeaderReady={true} renderHeader={renderHeader}> - {({onScroll, headerHeight, scrollElRef}) => ( + {({headerHeight, scrollElRef}) => ( )} @@ -595,16 +591,12 @@ function Header({rkey, list}: {rkey: string; list: AppBskyGraphDefs.ListView}) { interface FeedSectionProps { feed: FeedDescriptor - onScroll: OnScrollHandler headerHeight: number scrollElRef: ListRef isFocused: boolean } const FeedSection = React.forwardRef( - function FeedSectionImpl( - {feed, scrollElRef, onScroll, headerHeight, isFocused}, - ref, - ) { + function FeedSectionImpl({feed, scrollElRef, headerHeight, isFocused}, ref) { const queryClient = useQueryClient() const [hasNew, setHasNew] = React.useState(false) const [isScrolledDown, setIsScrolledDown] = React.useState(false) @@ -634,9 +626,7 @@ const FeedSection = React.forwardRef( pollInterval={30e3} scrollElRef={scrollElRef} onHasNew={setHasNew} - onScroll={onScroll} onScrolledDownChange={setIsScrolledDown} - scrollEventThrottle={1} renderEmptyState={renderPostsEmpty} headerOffset={headerHeight} /> @@ -655,13 +645,12 @@ const FeedSection = React.forwardRef( interface AboutSectionProps { list: AppBskyGraphDefs.ListView onPressAddUser: () => void - onScroll: OnScrollHandler headerHeight: number scrollElRef: ListRef } const AboutSection = React.forwardRef( function AboutSectionImpl( - {list, onPressAddUser, onScroll, headerHeight, scrollElRef}, + {list, onPressAddUser, headerHeight, scrollElRef}, ref, ) { const pal = usePalette('default') @@ -798,9 +787,7 @@ const AboutSection = React.forwardRef( renderHeader={renderHeader} renderEmptyState={renderEmptyState} headerOffset={headerHeight} - onScroll={onScroll} onScrolledDownChange={setIsScrolledDown} - scrollEventThrottle={1} /> {isScrolledDown && ( Date: Wed, 13 Dec 2023 04:52:25 +0000 Subject: [PATCH 16/23] Remove resetMainScroll --- src/lib/hooks/useOnMainScroll.ts | 11 ++--------- src/view/com/feeds/FeedPage.tsx | 8 +++++--- src/view/screens/Notifications.tsx | 6 +++--- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/lib/hooks/useOnMainScroll.ts b/src/lib/hooks/useOnMainScroll.ts index d65c307fa2..078e9d559b 100644 --- a/src/lib/hooks/useOnMainScroll.ts +++ b/src/lib/hooks/useOnMainScroll.ts @@ -14,9 +14,7 @@ function clamp(num: number, min: number, max: number) { return Math.min(Math.max(num, min), max) } -export type ResetCb = () => void - -export function useOnMainScroll(): [ScrollHandlers, ResetCb] { +export function useOnMainScroll(): ScrollHandlers { const {headerHeight} = useShellLayout() const mode = useMinimalShellMode() const setMode = useSetMinimalShellMode() @@ -100,10 +98,5 @@ export function useOnMainScroll(): [ScrollHandlers, ResetCb] { [onBeginDrag, onEndDrag, onScroll], ) - return [ - scrollHandler, - useCallback(() => { - setMode(false) - }, [setMode]), - ] + return scrollHandler } diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx index 606ffa4ab4..f4327829b8 100644 --- a/src/view/com/feeds/FeedPage.tsx +++ b/src/view/com/feeds/FeedPage.tsx @@ -10,6 +10,7 @@ import {RQKEY as FEED_RQKEY} from '#/state/queries/post-feed' import {useOnMainScroll} from 'lib/hooks/useOnMainScroll' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {useSetMinimalShellMode} from '#/state/shell' import {FeedDescriptor, FeedParams} from '#/state/queries/post-feed' import {ComposeIcon2} from 'lib/icons' import {colors, s} from 'lib/styles' @@ -53,7 +54,8 @@ export function FeedPage({ const queryClient = useQueryClient() const {openComposer} = useComposerControls() const [isScrolledDown, setIsScrolledDown] = React.useState(false) - const [onMainScroll, resetMainScroll] = useOnMainScroll() + const onMainScroll = useOnMainScroll() + const setMinimalShellMode = useSetMinimalShellMode() const {screen, track} = useAnalytics() const headerOffset = useHeaderOffset() const scrollElRef = React.useRef(null) @@ -64,8 +66,8 @@ export function FeedPage({ animated: isNative, offset: -headerOffset, }) - resetMainScroll() - }, [headerOffset, resetMainScroll]) + setMinimalShellMode(false) + }, [headerOffset, setMinimalShellMode]) const onSoftReset = React.useCallback(() => { const isScreenFocused = diff --git a/src/view/screens/Notifications.tsx b/src/view/screens/Notifications.tsx index d13e6aa65a..4b6838aea4 100644 --- a/src/view/screens/Notifications.tsx +++ b/src/view/screens/Notifications.tsx @@ -36,7 +36,7 @@ type Props = NativeStackScreenProps< export function NotificationsScreen({}: Props) { const {_} = useLingui() const setMinimalShellMode = useSetMinimalShellMode() - const [onMainScroll, resetMainScroll] = useOnMainScroll() + const onMainScroll = useOnMainScroll() const [isScrolledDown, setIsScrolledDown] = React.useState(false) const scrollElRef = React.useRef(null) const checkLatestRef = React.useRef<() => void | null>() @@ -52,8 +52,8 @@ export function NotificationsScreen({}: Props) { // = const scrollToTop = React.useCallback(() => { scrollElRef.current?.scrollToOffset({animated: isNative, offset: 0}) - resetMainScroll() - }, [scrollElRef, resetMainScroll]) + setMinimalShellMode(false) + }, [scrollElRef, setMinimalShellMode]) const onPressLoadLatest = React.useCallback(() => { scrollToTop() From 2970b1e5156f2c8958addd30091909aa4342fe23 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 13 Dec 2023 05:04:03 +0000 Subject: [PATCH 17/23] Replace onMainScroll with MainScrollProvider --- src/lib/ScrollContext.tsx | 35 +++++++++++++++++++ src/view/com/feeds/FeedPage.tsx | 33 ++++++++--------- src/view/com/util/List.tsx | 12 +++++-- .../com/util/MainScrollProvider.tsx} | 27 ++++++-------- src/view/screens/Notifications.tsx | 15 ++++---- 5 files changed, 81 insertions(+), 41 deletions(-) create mode 100644 src/lib/ScrollContext.tsx rename src/{lib/hooks/useOnMainScroll.ts => view/com/util/MainScrollProvider.tsx} (88%) diff --git a/src/lib/ScrollContext.tsx b/src/lib/ScrollContext.tsx new file mode 100644 index 0000000000..00b197bedc --- /dev/null +++ b/src/lib/ScrollContext.tsx @@ -0,0 +1,35 @@ +import React, {createContext, useContext, useMemo} from 'react' +import {ScrollHandlers} from 'react-native-reanimated' + +const ScrollContext = createContext>({ + onBeginDrag: undefined, + onEndDrag: undefined, + onScroll: undefined, +}) + +export function useScrollHandlers(): ScrollHandlers { + return useContext(ScrollContext) +} + +type ProviderProps = {children: React.ReactNode} & ScrollHandlers + +// Note: this completely *overrides* the parent handlers. +// It's up to you to compose them with the parent ones via useScrollHandlers() if needed. +export function ScrollProvider({ + children, + onBeginDrag, + onEndDrag, + onScroll, +}: ProviderProps) { + const handlers = useMemo( + () => ({ + onBeginDrag, + onEndDrag, + onScroll, + }), + [onBeginDrag, onEndDrag, onScroll], + ) + return ( + {children} + ) +} diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx index f4327829b8..9c92a0dd5f 100644 --- a/src/view/com/feeds/FeedPage.tsx +++ b/src/view/com/feeds/FeedPage.tsx @@ -7,7 +7,7 @@ import {useNavigation} from '@react-navigation/native' import {useAnalytics} from 'lib/analytics/analytics' import {useQueryClient} from '@tanstack/react-query' import {RQKEY as FEED_RQKEY} from '#/state/queries/post-feed' -import {useOnMainScroll} from 'lib/hooks/useOnMainScroll' +import {MainScrollProvider} from '../util/MainScrollProvider' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {useSetMinimalShellMode} from '#/state/shell' @@ -54,7 +54,6 @@ export function FeedPage({ const queryClient = useQueryClient() const {openComposer} = useComposerControls() const [isScrolledDown, setIsScrolledDown] = React.useState(false) - const onMainScroll = useOnMainScroll() const setMinimalShellMode = useSetMinimalShellMode() const {screen, track} = useAnalytics() const headerOffset = useHeaderOffset() @@ -168,20 +167,22 @@ export function FeedPage({ return ( - + + + {(isScrolledDown || hasNew) && ( ( ref: React.Ref, ) { const [isScrolledDown, setIsScrolledDown] = useState(false) + const scrollHandlers = useScrollHandlers() function handleScrolledDownChange(didScrollDown: boolean) { setIsScrolledDown(didScrollDown) onScrolledDownChange?.(didScrollDown) } - // TODO: This ignores the passed-in onScroll completely. const scrollHandler = useAnimatedScrollHandler({ - onScroll(e) { + onBeginDrag(e, ctx) { + scrollHandlers.onBeginDrag?.(e, ctx) + }, + onEndDrag(e, ctx) { + scrollHandlers.onEndDrag?.(e, ctx) + }, + onScroll(e, ctx) { const didScrollDown = e.contentOffset.y > SCROLLED_DOWN_LIMIT if (isScrolledDown !== didScrollDown) { runOnJS(handleScrolledDownChange)(didScrollDown) } + scrollHandlers.onScroll?.(e, ctx) }, }) diff --git a/src/lib/hooks/useOnMainScroll.ts b/src/view/com/util/MainScrollProvider.tsx similarity index 88% rename from src/lib/hooks/useOnMainScroll.ts rename to src/view/com/util/MainScrollProvider.tsx index 078e9d559b..31a4ef0c85 100644 --- a/src/lib/hooks/useOnMainScroll.ts +++ b/src/view/com/util/MainScrollProvider.tsx @@ -1,20 +1,17 @@ -import {useCallback, useMemo} from 'react' +import React, {useCallback} from 'react' +import {ScrollProvider} from '#/lib/ScrollContext' import {NativeScrollEvent} from 'react-native' import {useSetMinimalShellMode, useMinimalShellMode} from '#/state/shell' import {useShellLayout} from '#/state/shell/shell-layout' import {isWeb} from 'platform/detection' -import { - useSharedValue, - interpolate, - ScrollHandlers, -} from 'react-native-reanimated' +import {useSharedValue, interpolate} from 'react-native-reanimated' function clamp(num: number, min: number, max: number) { 'worklet' return Math.min(Math.max(num, min), max) } -export function useOnMainScroll(): ScrollHandlers { +export function MainScrollProvider({children}: {children: React.ReactNode}) { const {headerHeight} = useShellLayout() const mode = useMinimalShellMode() const setMode = useSetMinimalShellMode() @@ -89,14 +86,12 @@ export function useOnMainScroll(): ScrollHandlers { [headerHeight, mode, setMode, startDragOffset, startMode], ) - const scrollHandler: ScrollHandlers = useMemo( - () => ({ - onBeginDrag, - onEndDrag, - onScroll, - }), - [onBeginDrag, onEndDrag, onScroll], + return ( + + {children} + ) - - return scrollHandler } diff --git a/src/view/screens/Notifications.tsx b/src/view/screens/Notifications.tsx index 4b6838aea4..e28a67e370 100644 --- a/src/view/screens/Notifications.tsx +++ b/src/view/screens/Notifications.tsx @@ -11,7 +11,7 @@ import {Feed} from '../com/notifications/Feed' import {TextLink} from 'view/com/util/Link' import {ListMethods} from 'view/com/util/List' import {LoadLatestBtn} from 'view/com/util/load-latest/LoadLatestBtn' -import {useOnMainScroll} from 'lib/hooks/useOnMainScroll' +import {MainScrollProvider} from '../com/util/MainScrollProvider' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {s, colors} from 'lib/styles' @@ -36,7 +36,6 @@ type Props = NativeStackScreenProps< export function NotificationsScreen({}: Props) { const {_} = useLingui() const setMinimalShellMode = useSetMinimalShellMode() - const onMainScroll = useOnMainScroll() const [isScrolledDown, setIsScrolledDown] = React.useState(false) const scrollElRef = React.useRef(null) const checkLatestRef = React.useRef<() => void | null>() @@ -132,11 +131,13 @@ export function NotificationsScreen({}: Props) { return ( - + + + {(isScrolledDown || hasNew) && ( Date: Wed, 13 Dec 2023 05:09:13 +0000 Subject: [PATCH 18/23] Hook ScrollProvider to pager --- src/view/com/pager/PagerWithHeader.tsx | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/view/com/pager/PagerWithHeader.tsx b/src/view/com/pager/PagerWithHeader.tsx index 6feb80dbae..158940d67f 100644 --- a/src/view/com/pager/PagerWithHeader.tsx +++ b/src/view/com/pager/PagerWithHeader.tsx @@ -21,6 +21,7 @@ import {TabBar} from './TabBar' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {ListMethods} from '../util/List' +import {ScrollProvider} from '#/lib/ScrollContext' export interface PagerWithHeaderChildParams { headerHeight: number @@ -299,23 +300,21 @@ function PagerItem({ } }, [scrollElRef, registerRef, index]) - const scrollHandler = React.useMemo( - () => ({onScroll: onScrollWorklet}), - [onScrollWorklet], - ) - if (!isReady || renderTab == null) { return null } - return renderTab({ - headerHeight, - isFocused, - onScroll: scrollHandler, - scrollElRef: scrollElRef as React.MutableRefObject< - ListMethods | ScrollView | null - >, - }) + return ( + + {renderTab({ + headerHeight, + isFocused, + scrollElRef: scrollElRef as React.MutableRefObject< + ListMethods | ScrollView | null + >, + })} + + ) } const styles = StyleSheet.create({ From a4473c91b7226db74884f300b2c01a394d395f52 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 13 Dec 2023 05:13:42 +0000 Subject: [PATCH 19/23] Fix the remaining special case --- src/view/screens/ProfileFeed.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/view/screens/ProfileFeed.tsx b/src/view/screens/ProfileFeed.tsx index 2886e23bb7..ea92ebab16 100644 --- a/src/view/screens/ProfileFeed.tsx +++ b/src/view/screens/ProfileFeed.tsx @@ -29,6 +29,8 @@ import {toShareUrl} from 'lib/strings/url-helpers' import {Haptics} from 'lib/haptics' import {useAnalytics} from 'lib/analytics/analytics' import {NativeDropdown, DropdownItem} from 'view/com/util/forms/NativeDropdown' +import {useScrollHandlers} from '#/lib/ScrollContext' +import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' import {makeCustomFeedLink} from 'lib/routes/links' import {pluralize} from 'lib/strings/helpers' import {CenteredView, ScrollView} from 'view/com/util/Views' @@ -553,8 +555,8 @@ function AboutSection({ }) { const pal = usePalette('default') const {_} = useLingui() - // TODO! - const scrollHandler = useAnimatedScrollHandler(() => {}) + const scrollHandlers = useScrollHandlers() + const onScroll = useAnimatedScrollHandler(scrollHandlers) const [likeUri, setLikeUri] = React.useState(feedInfo.likeUri) const {hasSession} = useSession() const {track} = useAnalytics() @@ -590,6 +592,7 @@ function AboutSection({ return ( Date: Wed, 13 Dec 2023 05:20:40 +0000 Subject: [PATCH 20/23] Optimize a bit --- src/view/com/util/List.tsx | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index e903004c17..19ec9a8a27 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -1,8 +1,8 @@ -import React, {useState} from 'react' +import React, {startTransition} from 'react' import {FlatListProps} from 'react-native' import {FlatList_INTERNAL} from './Views' import {useScrollHandlers} from '#/lib/ScrollContext' -import {runOnJS} from 'react-native-reanimated' +import {runOnJS, useSharedValue} from 'react-native-reanimated' import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' export type ListMethods = FlatList_INTERNAL @@ -17,27 +17,33 @@ function ListImpl( {onScrolledDownChange, ...props}: ListProps, ref: React.Ref, ) { - const [isScrolledDown, setIsScrolledDown] = useState(false) - const scrollHandlers = useScrollHandlers() + const isScrolledDown = useSharedValue(false) + const contextScrollHandlers = useScrollHandlers() function handleScrolledDownChange(didScrollDown: boolean) { - setIsScrolledDown(didScrollDown) - onScrolledDownChange?.(didScrollDown) + startTransition(() => { + onScrolledDownChange?.(didScrollDown) + }) } const scrollHandler = useAnimatedScrollHandler({ onBeginDrag(e, ctx) { - scrollHandlers.onBeginDrag?.(e, ctx) + contextScrollHandlers.onBeginDrag?.(e, ctx) }, onEndDrag(e, ctx) { - scrollHandlers.onEndDrag?.(e, ctx) + contextScrollHandlers.onEndDrag?.(e, ctx) }, onScroll(e, ctx) { + contextScrollHandlers.onScroll?.(e, ctx) + const didScrollDown = e.contentOffset.y > SCROLLED_DOWN_LIMIT - if (isScrolledDown !== didScrollDown) { + if ( + isScrolledDown.value !== didScrollDown && + onScrolledDownChange != null + ) { + isScrolledDown.value = didScrollDown runOnJS(handleScrolledDownChange)(didScrollDown) } - scrollHandlers.onScroll?.(e, ctx) }, }) From 27565116004ab1aeb356aa240b2d9d17ad86f634 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 13 Dec 2023 05:26:28 +0000 Subject: [PATCH 21/23] Enforce that onScroll cannot be passed --- src/view/com/util/List.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index 19ec9a8a27..d2e5cf76a4 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -6,7 +6,10 @@ import {runOnJS, useSharedValue} from 'react-native-reanimated' import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' export type ListMethods = FlatList_INTERNAL -export type ListProps = FlatListProps & { +export type ListProps = Omit< + FlatListProps, + 'onScroll' // Use ScrollContext instead. +> & { onScrolledDownChange?: (isScrolledDown: boolean) => void } export type ListRef = React.MutableRefObject From f8b3740ed9e69dd60eff3cf452c04cc37eafe7f6 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 13 Dec 2023 05:42:05 +0000 Subject: [PATCH 22/23] Keep value updated even if no handler --- src/view/com/util/List.tsx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index d2e5cf76a4..559e0fa997 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -40,12 +40,11 @@ function ListImpl( contextScrollHandlers.onScroll?.(e, ctx) const didScrollDown = e.contentOffset.y > SCROLLED_DOWN_LIMIT - if ( - isScrolledDown.value !== didScrollDown && - onScrolledDownChange != null - ) { + if (isScrolledDown.value !== didScrollDown) { isScrolledDown.value = didScrollDown - runOnJS(handleScrolledDownChange)(didScrollDown) + if (onScrolledDownChange != null) { + runOnJS(handleScrolledDownChange)(didScrollDown) + } } }, }) From 659e574ea3eee9060e2c95d9eeb8462edcb1acb1 Mon Sep 17 00:00:00 2001 From: Dan Abramov Date: Wed, 13 Dec 2023 07:16:19 +0000 Subject: [PATCH 23/23] Also memo it --- src/view/com/util/List.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index 559e0fa997..5947fe87a1 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -1,4 +1,4 @@ -import React, {startTransition} from 'react' +import React, {memo, startTransition} from 'react' import {FlatListProps} from 'react-native' import {FlatList_INTERNAL} from './Views' import {useScrollHandlers} from '#/lib/ScrollContext' @@ -59,6 +59,6 @@ function ListImpl( ) } -export const List = React.forwardRef(ListImpl) as ( +export const List = memo(React.forwardRef(ListImpl)) as ( props: ListProps & {ref?: React.Ref}, ) => React.ReactElement