Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3b90ec079b | |||
| f5a888acd5 | |||
| 9760d3c1da |
+40
-40
@@ -86,12 +86,12 @@
|
||||
"@radix-ui/react-focus-scope": "^1.1.2",
|
||||
"@react-native-async-storage/async-storage": "1.23.1",
|
||||
"@react-native-menu/menu": "^1.1.7",
|
||||
"@react-native-picker/picker": "2.9.0",
|
||||
"@react-native-picker/picker": "2.10.2",
|
||||
"@react-navigation/bottom-tabs": "^6.5.20",
|
||||
"@react-navigation/drawer": "^6.6.15",
|
||||
"@react-navigation/native": "^6.1.17",
|
||||
"@react-navigation/native-stack": "^6.9.26",
|
||||
"@sentry/react-native": "~6.10.0",
|
||||
"@sentry/react-native": "6.9.1",
|
||||
"@tanstack/query-async-storage-persister": "^5.25.0",
|
||||
"@tanstack/react-query": "^5.8.1",
|
||||
"@tanstack/react-query-persist-client": "^5.25.0",
|
||||
@@ -123,35 +123,35 @@
|
||||
"emoji-mart": "^5.5.2",
|
||||
"emoji-regex": "^10.4.0",
|
||||
"eventemitter3": "^5.0.1",
|
||||
"expo": "~52.0.42",
|
||||
"expo-application": "~6.0.2",
|
||||
"expo": "~52.0.19",
|
||||
"expo-application": "^6.0.1",
|
||||
"expo-blur": "^14.0.3",
|
||||
"expo-build-properties": "~0.13.2",
|
||||
"expo-camera": "~16.0.18",
|
||||
"expo-clipboard": "~7.0.1",
|
||||
"expo-dev-client": "~5.0.19",
|
||||
"expo-device": "~7.0.3",
|
||||
"expo-file-system": "~18.0.12",
|
||||
"expo-font": "~13.0.4",
|
||||
"expo-haptics": "~14.0.1",
|
||||
"expo-image": "~2.0.7",
|
||||
"expo-image-manipulator": "~13.0.6",
|
||||
"expo-image-picker": "~16.0.6",
|
||||
"expo-linear-gradient": "~14.0.2",
|
||||
"expo-linking": "~7.0.5",
|
||||
"expo-localization": "~16.0.1",
|
||||
"expo-media-library": "~17.0.6",
|
||||
"expo-navigation-bar": "~4.0.9",
|
||||
"expo-notifications": "~0.29.14",
|
||||
"expo-screen-orientation": "~8.0.4",
|
||||
"expo-sharing": "~13.0.1",
|
||||
"expo-splash-screen": "~0.29.22",
|
||||
"expo-status-bar": "~2.0.1",
|
||||
"expo-system-ui": "~4.0.9",
|
||||
"expo-task-manager": "~12.0.6",
|
||||
"expo-updates": "~0.27.4",
|
||||
"expo-video": "~2.0.6",
|
||||
"expo-web-browser": "~14.0.2",
|
||||
"expo-build-properties": "^0.13.1",
|
||||
"expo-camera": "~16.0.7",
|
||||
"expo-clipboard": "^7.0.0",
|
||||
"expo-dev-client": "^5.0.4",
|
||||
"expo-device": "~7.0.1",
|
||||
"expo-file-system": "^18.0.6",
|
||||
"expo-font": "~13.0.1",
|
||||
"expo-haptics": "^14.0.0",
|
||||
"expo-image": "~2.0.3",
|
||||
"expo-image-manipulator": "^13.0.5",
|
||||
"expo-image-picker": "~16.0.3",
|
||||
"expo-linear-gradient": "^14.0.1",
|
||||
"expo-linking": "^7.0.3",
|
||||
"expo-localization": "~16.0.0",
|
||||
"expo-media-library": "~17.0.3",
|
||||
"expo-navigation-bar": "~4.0.4",
|
||||
"expo-notifications": "~0.29.11",
|
||||
"expo-screen-orientation": "^8.0.2",
|
||||
"expo-sharing": "^13.0.0",
|
||||
"expo-splash-screen": "~0.29.18",
|
||||
"expo-status-bar": "~2.0.0",
|
||||
"expo-system-ui": "^4.0.4",
|
||||
"expo-task-manager": "~12.0.3",
|
||||
"expo-updates": "~0.26.10",
|
||||
"expo-video": "^2.0.5",
|
||||
"expo-web-browser": "~14.0.1",
|
||||
"fast-text-encoding": "^1.0.6",
|
||||
"history": "^5.3.0",
|
||||
"hls.js": "^1.5.11",
|
||||
@@ -169,12 +169,12 @@
|
||||
"patch-package": "^6.5.1",
|
||||
"postinstall-postinstall": "^2.1.0",
|
||||
"psl": "^1.9.0",
|
||||
"react": "18.3.1",
|
||||
"react": "18.2.0",
|
||||
"react-compiler-runtime": "19.0.0-beta-a7bf2bd-20241110",
|
||||
"react-dom": "18.3.1",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-image-crop": "^11.0.7",
|
||||
"react-keyed-flatten-children": "^3.0.0",
|
||||
"react-native": "0.76.9",
|
||||
"react-native": "0.76.6",
|
||||
"react-native-compressor": "1.10.3",
|
||||
"react-native-date-picker": "^5.0.7",
|
||||
"react-native-drawer-layout": "^4.1.1",
|
||||
@@ -185,15 +185,15 @@
|
||||
"react-native-ios-context-menu": "^1.15.3",
|
||||
"react-native-keyboard-controller": "^1.14.5",
|
||||
"react-native-mmkv": "^2.12.2",
|
||||
"react-native-pager-view": "6.5.1",
|
||||
"react-native-pager-view": "6.7.0",
|
||||
"react-native-picker-select": "^9.3.1",
|
||||
"react-native-progress": "bluesky-social/react-native-progress",
|
||||
"react-native-qrcode-styled": "^0.3.3",
|
||||
"react-native-reanimated": "~3.16.1",
|
||||
"react-native-reanimated": "3.17.0-nightly-20241211-17e89ca24",
|
||||
"react-native-root-siblings": "^4.1.1",
|
||||
"react-native-safe-area-context": "4.12.0",
|
||||
"react-native-screens": "~4.4.0",
|
||||
"react-native-svg": "15.8.0",
|
||||
"react-native-safe-area-context": "4.14.0",
|
||||
"react-native-screens": "~4.3.0",
|
||||
"react-native-svg": "^15.8.0",
|
||||
"react-native-uitextview": "^1.4.0",
|
||||
"react-native-url-polyfill": "^1.3.0",
|
||||
"react-native-uuid": "^2.0.2",
|
||||
@@ -201,7 +201,7 @@
|
||||
"react-native-vision-camera": "^4.6.3",
|
||||
"react-native-web": "~0.19.13",
|
||||
"react-native-web-webview": "^1.0.2",
|
||||
"react-native-webview": "13.12.5",
|
||||
"react-native-webview": "13.12.3",
|
||||
"react-remove-scroll-bar": "^2.3.6",
|
||||
"react-responsive": "^9.0.2",
|
||||
"react-textarea-autosize": "^8.5.3",
|
||||
@@ -257,7 +257,7 @@
|
||||
"husky": "^8.0.3",
|
||||
"is-ci": "^3.0.1",
|
||||
"jest": "^29.7.0",
|
||||
"jest-expo": "~52.0.6",
|
||||
"jest-expo": "^52.0.2",
|
||||
"jest-junit": "^16.0.0",
|
||||
"lint-staged": "^13.2.3",
|
||||
"lockfile-lint": "^4.14.0",
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
import {View} from 'react-native'
|
||||
|
||||
import {atoms as a, useTheme, type ViewStyleProp} from '#/alf'
|
||||
|
||||
export function SubtleHover({style, hover}: ViewStyleProp & {hover: boolean}) {
|
||||
const t = useTheme()
|
||||
|
||||
let opacity: number
|
||||
switch (t.name) {
|
||||
case 'dark':
|
||||
opacity = 0.4
|
||||
break
|
||||
case 'dim':
|
||||
opacity = 0.45
|
||||
break
|
||||
case 'light':
|
||||
opacity = 0.5
|
||||
break
|
||||
}
|
||||
|
||||
return (
|
||||
<View
|
||||
style={[
|
||||
a.absolute,
|
||||
a.inset_0,
|
||||
a.pointer_events_none,
|
||||
a.transition_opacity,
|
||||
t.atoms.bg_contrast_25,
|
||||
style,
|
||||
{opacity: hover ? opacity : 0},
|
||||
]}
|
||||
/>
|
||||
)
|
||||
}
|
||||
+128
-181
@@ -13,8 +13,8 @@ msgstr ""
|
||||
"Language-Team: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:579
|
||||
#: src/screens/Search/modules/ExploreSuggestedAccounts.tsx:118
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:570
|
||||
#: src/screens/Search/modules/ExploreSuggestedAccounts.tsx:112
|
||||
msgid "(active)"
|
||||
msgstr ""
|
||||
|
||||
@@ -112,7 +112,7 @@ msgstr ""
|
||||
msgid "{0, plural, one {repost} other {reposts}}"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:77
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:75
|
||||
msgid "{0, plural, other {{1} posts}}"
|
||||
msgstr ""
|
||||
|
||||
@@ -316,12 +316,12 @@ msgid "{profileName} joined Bluesky using a starter pack {0} ago"
|
||||
msgstr ""
|
||||
|
||||
#. The trending topic rank, i.e. "1. March Madness", "2. The Bachelor"
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:108
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:104
|
||||
msgid "{rank}."
|
||||
msgstr ""
|
||||
|
||||
#. trending topic time spent trending. should be as short as possible to fit in a pill
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:203
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:199
|
||||
msgid "{type}h ago"
|
||||
msgstr ""
|
||||
|
||||
@@ -397,7 +397,7 @@ msgstr ""
|
||||
msgid "a message"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:391
|
||||
#: src/Navigation.tsx:382
|
||||
#: src/screens/Settings/AboutSettings.tsx:34
|
||||
#: src/screens/Settings/Settings.tsx:215
|
||||
#: src/screens/Settings/Settings.tsx:218
|
||||
@@ -424,11 +424,11 @@ msgstr ""
|
||||
msgid "Accessibility"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:343
|
||||
#: src/Navigation.tsx:342
|
||||
msgid "Accessibility Settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:359
|
||||
#: src/Navigation.tsx:358
|
||||
#: src/screens/Login/LoginForm.tsx:194
|
||||
#: src/screens/Settings/AccountSettings.tsx:45
|
||||
#: src/screens/Settings/Settings.tsx:153
|
||||
@@ -652,6 +652,7 @@ msgstr ""
|
||||
msgid "Advanced"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/modules/ExploreSuggestedAccounts.tsx:86
|
||||
#: src/view/screens/Notifications.tsx:86
|
||||
msgid "All"
|
||||
msgstr ""
|
||||
@@ -755,7 +756,7 @@ msgstr ""
|
||||
msgid "An error occurred while compressing the video."
|
||||
msgstr ""
|
||||
|
||||
#: src/state/queries/explore-feed-previews.tsx:148
|
||||
#: src/screens/Search/modules/ExploreFeedPreviews.tsx:118
|
||||
msgid "An error occurred while fetching the feed."
|
||||
msgstr ""
|
||||
|
||||
@@ -842,7 +843,7 @@ msgstr ""
|
||||
msgid "Anybody can interact"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:399
|
||||
#: src/Navigation.tsx:390
|
||||
#: src/screens/Settings/AppIconSettings/index.tsx:67
|
||||
#: src/screens/Settings/AppIconSettings/SettingsListItem.tsx:18
|
||||
#: src/screens/Settings/AppIconSettings/SettingsListItem.tsx:23
|
||||
@@ -879,7 +880,7 @@ msgstr ""
|
||||
msgid "App passwords"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:311
|
||||
#: src/Navigation.tsx:310
|
||||
#: src/screens/Settings/AppPasswords.tsx:51
|
||||
msgid "App Passwords"
|
||||
msgstr ""
|
||||
@@ -915,7 +916,7 @@ msgstr ""
|
||||
msgid "Appeal this decision"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:351
|
||||
#: src/Navigation.tsx:350
|
||||
#: src/screens/Settings/AppearanceSettings.tsx:85
|
||||
#: src/screens/Settings/Settings.tsx:183
|
||||
#: src/screens/Settings/Settings.tsx:186
|
||||
@@ -1006,8 +1007,8 @@ msgstr ""
|
||||
msgid "Autoplay options have moved to the <0>Content and Media settings</0>."
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:116
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:122
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:107
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:113
|
||||
msgid "Autoplay videos and GIFs"
|
||||
msgstr ""
|
||||
|
||||
@@ -1121,7 +1122,7 @@ msgstr ""
|
||||
msgid "Blocked accounts"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:160
|
||||
#: src/Navigation.tsx:159
|
||||
#: src/view/screens/ModerationBlockedAccounts.tsx:101
|
||||
msgid "Blocked Accounts"
|
||||
msgstr ""
|
||||
@@ -1252,7 +1253,7 @@ msgstr ""
|
||||
msgid "Browse starter pack {displayName}"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:88
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:84
|
||||
msgid "Browse topic {0}"
|
||||
msgstr ""
|
||||
|
||||
@@ -1267,7 +1268,7 @@ msgstr ""
|
||||
#: src/components/LabelingServiceCard/index.tsx:62
|
||||
#: src/components/moderation/ReportDialog/index.tsx:672
|
||||
#: src/screens/Search/components/StarterPackCard.tsx:102
|
||||
#: src/screens/Search/Explore.tsx:749
|
||||
#: src/screens/Search/Explore.tsx:791
|
||||
msgid "By {0}"
|
||||
msgstr ""
|
||||
|
||||
@@ -1301,7 +1302,7 @@ msgstr ""
|
||||
#: src/screens/Deactivated.tsx:158
|
||||
#: src/screens/Profile/Header/EditProfileDialog.tsx:220
|
||||
#: src/screens/Profile/Header/EditProfileDialog.tsx:228
|
||||
#: src/screens/Search/Shell.tsx:349
|
||||
#: src/screens/Search/Shell.tsx:347
|
||||
#: src/screens/Settings/AppIconSettings/index.tsx:44
|
||||
#: src/screens/Settings/AppIconSettings/index.tsx:225
|
||||
#: src/screens/Settings/components/ChangeHandleDialog.tsx:76
|
||||
@@ -1357,7 +1358,7 @@ msgstr ""
|
||||
msgid "Cancel reactivation and sign out"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Shell.tsx:341
|
||||
#: src/screens/Search/Shell.tsx:339
|
||||
#: src/view/com/modals/ListAddRemoveUsers.tsx:88
|
||||
msgid "Cancel search"
|
||||
msgstr ""
|
||||
@@ -1448,7 +1449,7 @@ msgstr ""
|
||||
msgid "Changes hosting provider"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:416
|
||||
#: src/Navigation.tsx:407
|
||||
#: src/view/shell/bottom-bar/BottomBar.tsx:205
|
||||
#: src/view/shell/desktop/LeftNav.tsx:535
|
||||
#: src/view/shell/Drawer.tsx:422
|
||||
@@ -1466,7 +1467,7 @@ msgctxt "toast"
|
||||
msgid "Chat muted"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:426
|
||||
#: src/Navigation.tsx:417
|
||||
#: src/screens/Messages/components/InboxPreview.tsx:24
|
||||
msgid "Chat request inbox"
|
||||
msgstr ""
|
||||
@@ -1477,7 +1478,7 @@ msgid "Chat requests"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/dms/ConvoMenu.tsx:75
|
||||
#: src/Navigation.tsx:421
|
||||
#: src/Navigation.tsx:412
|
||||
#: src/screens/Messages/ChatList.tsx:328
|
||||
msgid "Chat settings"
|
||||
msgstr ""
|
||||
@@ -1597,7 +1598,7 @@ msgstr ""
|
||||
#: src/components/dms/ReportDialog.tsx:390
|
||||
#: src/components/NewskieDialog.tsx:146
|
||||
#: src/components/NewskieDialog.tsx:153
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:436
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:429
|
||||
#: src/components/StarterPack/Wizard/WizardEditListDialog.tsx:117
|
||||
#: src/components/StarterPack/Wizard/WizardEditListDialog.tsx:123
|
||||
#: src/view/com/modals/ChangePassword.tsx:279
|
||||
@@ -1698,7 +1699,7 @@ msgstr ""
|
||||
msgid "Comics"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:301
|
||||
#: src/Navigation.tsx:300
|
||||
#: src/view/screens/CommunityGuidelines.tsx:34
|
||||
msgid "Community Guidelines"
|
||||
msgstr ""
|
||||
@@ -1792,7 +1793,7 @@ msgstr ""
|
||||
msgid "Contact support"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:51
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:50
|
||||
msgid "Content & Media"
|
||||
msgstr ""
|
||||
|
||||
@@ -1802,7 +1803,7 @@ msgstr ""
|
||||
msgid "Content and media"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:375
|
||||
#: src/Navigation.tsx:374
|
||||
msgid "Content and Media"
|
||||
msgstr ""
|
||||
|
||||
@@ -1828,11 +1829,6 @@ msgstr ""
|
||||
msgid "Content Not Available"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/SettingsInterests.tsx:123
|
||||
msgctxt "toast"
|
||||
msgid "Content preferences updated!"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/moderation/ModerationDetailsDialog.tsx:50
|
||||
#: src/components/moderation/ScreenHider.tsx:93
|
||||
#: src/lib/moderation/useGlobalLabelStrings.ts:22
|
||||
@@ -1976,16 +1972,11 @@ msgstr ""
|
||||
msgid "Copy QR code"
|
||||
msgstr ""
|
||||
|
||||
#. Confirm button text. Can be a short cheeky phrase that means "OK" e.g. "Copy that!"
|
||||
#: src/screens/Search/modules/ExploreInterestsCard.tsx:48
|
||||
msgid "Copy that!"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/components/ChangeHandleDialog.tsx:426
|
||||
msgid "Copy TXT record value"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:306
|
||||
#: src/Navigation.tsx:305
|
||||
#: src/view/screens/CopyrightPolicy.tsx:31
|
||||
msgid "Copyright Policy"
|
||||
msgstr ""
|
||||
@@ -2021,7 +2012,7 @@ msgstr ""
|
||||
|
||||
#: src/components/StarterPack/ProfileStarterPacks.tsx:178
|
||||
#: src/components/StarterPack/ProfileStarterPacks.tsx:274
|
||||
#: src/Navigation.tsx:451
|
||||
#: src/Navigation.tsx:442
|
||||
msgid "Create a starter pack"
|
||||
msgstr ""
|
||||
|
||||
@@ -2350,7 +2341,7 @@ msgstr ""
|
||||
msgid "Discourage apps from showing my account to logged-out users"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Explore.tsx:362
|
||||
#: src/screens/Search/Explore.tsx:420
|
||||
msgid "Discover Feeds"
|
||||
msgstr ""
|
||||
|
||||
@@ -2562,11 +2553,6 @@ msgstr ""
|
||||
msgid "Edit interaction settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/modules/ExploreInterestsCard.tsx:98
|
||||
#: src/screens/Search/modules/ExploreInterestsCard.tsx:105
|
||||
msgid "Edit interests"
|
||||
msgstr ""
|
||||
|
||||
#: src/view/screens/ProfileList.tsx:536
|
||||
msgid "Edit list details"
|
||||
msgstr ""
|
||||
@@ -2575,7 +2561,7 @@ msgstr ""
|
||||
msgid "Edit Moderation List"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:316
|
||||
#: src/Navigation.tsx:315
|
||||
#: src/view/screens/Feeds.tsx:515
|
||||
msgid "Edit My Feeds"
|
||||
msgstr ""
|
||||
@@ -2625,7 +2611,7 @@ msgstr ""
|
||||
msgid "Edit your profile description"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:456
|
||||
#: src/Navigation.tsx:447
|
||||
msgid "Edit your starter pack"
|
||||
msgstr ""
|
||||
|
||||
@@ -2738,16 +2724,16 @@ msgstr ""
|
||||
msgid "Enable this source only"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:132
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:146
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:123
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:137
|
||||
msgid "Enable trending topics"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:167
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:158
|
||||
msgid "Enable trending videos in your Discover feed"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:153
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:144
|
||||
msgid "Enable trending videos in your Discover feed."
|
||||
msgstr ""
|
||||
|
||||
@@ -2831,7 +2817,7 @@ msgstr ""
|
||||
msgid "Enters full screen"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:236
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:232
|
||||
msgid "Entertainment"
|
||||
msgstr ""
|
||||
|
||||
@@ -2962,13 +2948,6 @@ msgstr ""
|
||||
msgid "Explicit sexual images."
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:640
|
||||
#: src/screens/Search/Shell.tsx:307
|
||||
#: src/view/shell/desktop/LeftNav.tsx:617
|
||||
#: src/view/shell/Drawer.tsx:370
|
||||
msgid "Explore"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/AccountSettings.tsx:137
|
||||
#: src/screens/Settings/AccountSettings.tsx:141
|
||||
msgid "Export my data"
|
||||
@@ -2978,8 +2957,8 @@ msgstr ""
|
||||
msgid "Export My Data"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:84
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:87
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:83
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:86
|
||||
msgid "External media"
|
||||
msgstr ""
|
||||
|
||||
@@ -2993,7 +2972,7 @@ msgstr ""
|
||||
msgid "External media may allow websites to collect information about you and your device. No information is sent or requested until you press the \"play\" button."
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:335
|
||||
#: src/Navigation.tsx:334
|
||||
#: src/screens/Settings/ExternalMediaPreferences.tsx:31
|
||||
msgid "External Media Preferences"
|
||||
msgstr ""
|
||||
@@ -3052,8 +3031,8 @@ msgstr ""
|
||||
msgid "Failed to load conversations"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Explore.tsx:401
|
||||
#: src/screens/Search/Explore.tsx:440
|
||||
#: src/screens/Search/Explore.tsx:459
|
||||
#: src/screens/Search/Explore.tsx:498
|
||||
msgid "Failed to load feeds preferences"
|
||||
msgstr ""
|
||||
|
||||
@@ -3065,12 +3044,12 @@ msgstr ""
|
||||
msgid "Failed to load past messages"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Explore.tsx:394
|
||||
#: src/screens/Search/Explore.tsx:433
|
||||
#: src/screens/Search/Explore.tsx:452
|
||||
#: src/screens/Search/Explore.tsx:491
|
||||
msgid "Failed to load suggested feeds"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Explore.tsx:314
|
||||
#: src/screens/Search/Explore.tsx:356
|
||||
msgid "Failed to load suggested follows"
|
||||
msgstr ""
|
||||
|
||||
@@ -3088,11 +3067,6 @@ msgstr ""
|
||||
msgid "Failed to remove emoji reaction"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/SettingsInterests.tsx:128
|
||||
msgctxt "toast"
|
||||
msgid "Failed to save content prefefences."
|
||||
msgstr ""
|
||||
|
||||
#: src/view/com/lightbox/Lightbox.tsx:46
|
||||
msgid "Failed to save image: {0}"
|
||||
msgstr ""
|
||||
@@ -3137,7 +3111,7 @@ msgstr ""
|
||||
msgid "Failed to verify handle. Please try again."
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:251
|
||||
#: src/Navigation.tsx:250
|
||||
msgid "Feed"
|
||||
msgstr ""
|
||||
|
||||
@@ -3166,7 +3140,7 @@ msgctxt "toast"
|
||||
msgid "Feedback sent!"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:436
|
||||
#: src/Navigation.tsx:427
|
||||
#: src/screens/Search/SearchResults.tsx:68
|
||||
#: src/screens/StarterPack/StarterPackScreen.tsx:185
|
||||
#: src/view/screens/Feeds.tsx:508
|
||||
@@ -3221,13 +3195,13 @@ msgstr ""
|
||||
msgid "Find accounts to follow"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:85
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:95
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:424
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:78
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:88
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:417
|
||||
msgid "Find people to follow"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Shell.tsx:476
|
||||
#: src/screens/Search/Shell.tsx:474
|
||||
msgid "Find posts, users, and feeds on Bluesky"
|
||||
msgstr ""
|
||||
|
||||
@@ -3331,7 +3305,7 @@ msgstr ""
|
||||
msgid "Followed by <0>{0}</0>, <1>{1}</1>, and {2, plural, one {# other} other {# others}}"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:205
|
||||
#: src/Navigation.tsx:204
|
||||
msgid "Followers of @{0} that you know"
|
||||
msgstr ""
|
||||
|
||||
@@ -3365,12 +3339,12 @@ msgstr ""
|
||||
msgid "Following {name}"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:76
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:79
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:75
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:78
|
||||
msgid "Following feed preferences"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:322
|
||||
#: src/Navigation.tsx:321
|
||||
#: src/screens/Settings/FollowingFeedPreferences.tsx:53
|
||||
msgid "Following Feed Preferences"
|
||||
msgstr ""
|
||||
@@ -3408,10 +3382,6 @@ msgstr ""
|
||||
msgid "For the best experience, we recommend using the theme font."
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/modules/ExploreSuggestedAccounts.tsx:86
|
||||
msgid "For You"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/dialogs/MutedWords.tsx:178
|
||||
msgid "Forever"
|
||||
msgstr ""
|
||||
@@ -3575,7 +3545,7 @@ msgstr ""
|
||||
msgid "Harassment, trolling, or intolerance"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:406
|
||||
#: src/Navigation.tsx:397
|
||||
msgid "Hashtag"
|
||||
msgstr ""
|
||||
|
||||
@@ -3654,10 +3624,6 @@ msgstr ""
|
||||
msgid "Hide reply for me"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/modules/ExploreInterestsCard.tsx:110
|
||||
msgid "Hide this card"
|
||||
msgstr ""
|
||||
|
||||
#: src/view/com/util/forms/PostDropdownBtnMenuItems.tsx:756
|
||||
msgid "Hide this post?"
|
||||
msgstr ""
|
||||
@@ -3722,8 +3688,8 @@ msgstr ""
|
||||
msgid "Hold up! We’re gradually giving access to video, and you’re still waiting in line. Check back soon!"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:635
|
||||
#: src/Navigation.tsx:655
|
||||
#: src/Navigation.tsx:626
|
||||
#: src/Navigation.tsx:646
|
||||
#: src/view/shell/bottom-bar/BottomBar.tsx:162
|
||||
#: src/view/shell/desktop/LeftNav.tsx:599
|
||||
#: src/view/shell/Drawer.tsx:396
|
||||
@@ -3739,7 +3705,7 @@ msgstr ""
|
||||
msgid "Hosting provider"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:191
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:187
|
||||
msgid "Hot"
|
||||
msgstr ""
|
||||
|
||||
@@ -3996,7 +3962,7 @@ msgstr ""
|
||||
msgid "Language selection"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:178
|
||||
#: src/Navigation.tsx:177
|
||||
msgid "Language Settings"
|
||||
msgstr ""
|
||||
|
||||
@@ -4134,8 +4100,8 @@ msgid "Like this labeler"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/LikesDialog.tsx:85
|
||||
#: src/Navigation.tsx:256
|
||||
#: src/Navigation.tsx:261
|
||||
#: src/Navigation.tsx:255
|
||||
#: src/Navigation.tsx:260
|
||||
msgid "Liked by"
|
||||
msgstr ""
|
||||
|
||||
@@ -4170,7 +4136,7 @@ msgstr ""
|
||||
msgid "Linear"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:211
|
||||
#: src/Navigation.tsx:210
|
||||
msgid "List"
|
||||
msgstr ""
|
||||
|
||||
@@ -4228,7 +4194,7 @@ msgctxt "toast"
|
||||
msgid "List unmuted"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:140
|
||||
#: src/Navigation.tsx:139
|
||||
#: src/view/screens/Lists.tsx:62
|
||||
#: src/view/screens/Profile.tsx:221
|
||||
#: src/view/screens/Profile.tsx:229
|
||||
@@ -4241,11 +4207,15 @@ msgstr ""
|
||||
msgid "Lists blocking this user:"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Explore.tsx:68
|
||||
#: src/screens/Search/Explore.tsx:66
|
||||
msgid "Load more"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Explore.tsx:422
|
||||
#: src/screens/Search/Explore.tsx:392
|
||||
msgid "Load more suggested accounts"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Explore.tsx:480
|
||||
msgid "Load more suggested feeds"
|
||||
msgstr ""
|
||||
|
||||
@@ -4264,7 +4234,7 @@ msgstr ""
|
||||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:281
|
||||
#: src/Navigation.tsx:280
|
||||
msgid "Log"
|
||||
msgstr ""
|
||||
|
||||
@@ -4309,8 +4279,8 @@ msgstr ""
|
||||
msgid "Make sure this is where you intend to go!"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:60
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:63
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:59
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:62
|
||||
msgid "Manage saved feeds"
|
||||
msgstr ""
|
||||
|
||||
@@ -4392,7 +4362,7 @@ msgstr ""
|
||||
msgid "Message options"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:650
|
||||
#: src/Navigation.tsx:641
|
||||
msgid "Messages"
|
||||
msgstr ""
|
||||
|
||||
@@ -4411,7 +4381,7 @@ msgstr ""
|
||||
msgid "Misleading Post"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:145
|
||||
#: src/Navigation.tsx:144
|
||||
#: src/screens/Moderation/index.tsx:89
|
||||
#: src/screens/Settings/Settings.tsx:167
|
||||
#: src/screens/Settings/Settings.tsx:170
|
||||
@@ -4450,7 +4420,7 @@ msgstr ""
|
||||
msgid "Moderation lists"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:150
|
||||
#: src/Navigation.tsx:149
|
||||
#: src/view/screens/ModerationModlists.tsx:62
|
||||
msgid "Moderation Lists"
|
||||
msgstr ""
|
||||
@@ -4459,7 +4429,7 @@ msgstr ""
|
||||
msgid "moderation settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:271
|
||||
#: src/Navigation.tsx:270
|
||||
msgid "Moderation states"
|
||||
msgstr ""
|
||||
|
||||
@@ -4582,7 +4552,7 @@ msgstr ""
|
||||
msgid "Muted accounts"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:155
|
||||
#: src/Navigation.tsx:154
|
||||
#: src/view/screens/ModerationMutedAccounts.tsx:100
|
||||
msgid "Muted Accounts"
|
||||
msgstr ""
|
||||
@@ -4672,7 +4642,7 @@ msgstr ""
|
||||
msgid "Nevermind, create a handle for me"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:196
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:192
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
@@ -4751,7 +4721,7 @@ msgstr ""
|
||||
|
||||
#: src/screens/Onboarding/index.tsx:20
|
||||
#: src/screens/Onboarding/state.ts:108
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:238
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:234
|
||||
msgid "News"
|
||||
msgstr ""
|
||||
|
||||
@@ -4843,7 +4813,7 @@ msgid "No result"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/dms/dialogs/SearchablePeopleList.tsx:204
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:242
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:235
|
||||
msgid "No results"
|
||||
msgstr ""
|
||||
|
||||
@@ -4901,7 +4871,7 @@ msgstr ""
|
||||
msgid "Not followed by anyone you're following"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:135
|
||||
#: src/Navigation.tsx:134
|
||||
#: src/view/screens/Profile.tsx:122
|
||||
msgid "Not Found"
|
||||
msgstr ""
|
||||
@@ -4929,7 +4899,7 @@ msgstr ""
|
||||
msgid "Notification filters"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:431
|
||||
#: src/Navigation.tsx:422
|
||||
#: src/view/screens/Notifications.tsx:134
|
||||
msgid "Notification settings"
|
||||
msgstr ""
|
||||
@@ -4946,7 +4916,7 @@ msgstr ""
|
||||
msgid "Notification Sounds"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:645
|
||||
#: src/Navigation.tsx:636
|
||||
#: src/view/screens/Notifications.tsx:128
|
||||
#: src/view/shell/bottom-bar/BottomBar.tsx:236
|
||||
#: src/view/shell/desktop/LeftNav.tsx:636
|
||||
@@ -5325,11 +5295,11 @@ msgstr ""
|
||||
msgid "People"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:198
|
||||
#: src/Navigation.tsx:197
|
||||
msgid "People followed by @{0}"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:191
|
||||
#: src/Navigation.tsx:190
|
||||
msgid "People following @{0}"
|
||||
msgstr ""
|
||||
|
||||
@@ -5521,7 +5491,7 @@ msgstr ""
|
||||
|
||||
#: src/screens/Onboarding/index.tsx:34
|
||||
#: src/screens/Onboarding/state.ts:111
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:232
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:228
|
||||
msgid "Politics"
|
||||
msgstr ""
|
||||
|
||||
@@ -5548,10 +5518,10 @@ msgstr ""
|
||||
msgid "Post by {0}"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:224
|
||||
#: src/Navigation.tsx:231
|
||||
#: src/Navigation.tsx:238
|
||||
#: src/Navigation.tsx:245
|
||||
#: src/Navigation.tsx:223
|
||||
#: src/Navigation.tsx:230
|
||||
#: src/Navigation.tsx:237
|
||||
#: src/Navigation.tsx:244
|
||||
msgid "Post by @{0}"
|
||||
msgstr ""
|
||||
|
||||
@@ -5586,7 +5556,7 @@ msgstr ""
|
||||
msgid "Post interaction settings"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:166
|
||||
#: src/Navigation.tsx:165
|
||||
#: src/screens/ModerationInteractionSettings/index.tsx:34
|
||||
msgid "Post Interaction Settings"
|
||||
msgstr ""
|
||||
@@ -5679,12 +5649,12 @@ msgstr ""
|
||||
msgid "Privacy and security"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:367
|
||||
#: src/Navigation.tsx:366
|
||||
#: src/screens/Settings/PrivacyAndSecuritySettings.tsx:36
|
||||
msgid "Privacy and Security"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:291
|
||||
#: src/Navigation.tsx:290
|
||||
#: src/screens/Settings/AboutSettings.tsx:51
|
||||
#: src/screens/Settings/AboutSettings.tsx:54
|
||||
#: src/view/screens/PrivacyPolicy.tsx:31
|
||||
@@ -6443,19 +6413,22 @@ msgstr ""
|
||||
#: src/components/dms/dialogs/SearchablePeopleList.tsx:491
|
||||
#: src/components/forms/SearchInput.tsx:34
|
||||
#: src/components/forms/SearchInput.tsx:36
|
||||
#: src/screens/Search/Shell.tsx:307
|
||||
#: src/screens/Search/Shell.tsx:464
|
||||
#: src/Navigation.tsx:631
|
||||
#: src/screens/Search/Shell.tsx:305
|
||||
#: src/screens/Search/Shell.tsx:462
|
||||
#: src/view/com/modals/ListAddRemoveUsers.tsx:76
|
||||
#: src/view/shell/bottom-bar/BottomBar.tsx:182
|
||||
#: src/view/shell/desktop/LeftNav.tsx:617
|
||||
#: src/view/shell/Drawer.tsx:370
|
||||
msgid "Search"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:217
|
||||
#: src/Navigation.tsx:216
|
||||
#: src/screens/Profile/ProfileSearch.tsx:37
|
||||
msgid "Search @{0}'s posts"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:757
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:748
|
||||
msgid "Search by name or interest"
|
||||
msgstr ""
|
||||
|
||||
@@ -6463,8 +6436,8 @@ msgstr ""
|
||||
msgid "Search feeds"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:587
|
||||
#: src/screens/Search/modules/ExploreSuggestedAccounts.tsx:126
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:578
|
||||
#: src/screens/Search/modules/ExploreSuggestedAccounts.tsx:120
|
||||
msgid "Search for \"{interestsDisplayName}\"{activeText}"
|
||||
msgstr ""
|
||||
|
||||
@@ -6480,15 +6453,15 @@ msgstr ""
|
||||
msgid "Search for feeds that you want to suggest to others."
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Explore.tsx:302
|
||||
#: src/screens/Search/Explore.tsx:344
|
||||
msgid "Search for more accounts"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Explore.tsx:365
|
||||
#: src/screens/Search/Explore.tsx:423
|
||||
msgid "Search for more feeds"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Shell.tsx:334
|
||||
#: src/screens/Search/Shell.tsx:332
|
||||
msgid "Search for posts, users, or feeds"
|
||||
msgstr ""
|
||||
|
||||
@@ -6510,7 +6483,7 @@ msgid "Search posts"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/dms/dialogs/SearchablePeopleList.tsx:511
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:776
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:767
|
||||
msgid "Search profiles"
|
||||
msgstr ""
|
||||
|
||||
@@ -6523,7 +6496,7 @@ msgid "Search..."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/dms/dialogs/SearchablePeopleList.tsx:512
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:777
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:768
|
||||
msgid "Searches for profiles"
|
||||
msgstr ""
|
||||
|
||||
@@ -6645,7 +6618,6 @@ msgid "Select your date of birth"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Onboarding/StepInterests/index.tsx:192
|
||||
#: src/screens/Settings/SettingsInterests.tsx:157
|
||||
msgid "Select your interests from the options below"
|
||||
msgstr ""
|
||||
|
||||
@@ -6749,7 +6721,7 @@ msgstr ""
|
||||
msgid "Sets email for password reset"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:173
|
||||
#: src/Navigation.tsx:172
|
||||
#: src/screens/Settings/Settings.tsx:80
|
||||
#: src/view/shell/desktop/LeftNav.tsx:709
|
||||
#: src/view/shell/Drawer.tsx:539
|
||||
@@ -6838,7 +6810,7 @@ msgstr ""
|
||||
msgid "Share your favorite feed!"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:276
|
||||
#: src/Navigation.tsx:275
|
||||
msgid "Shared Preferences Tester"
|
||||
msgstr ""
|
||||
|
||||
@@ -7144,7 +7116,7 @@ msgstr ""
|
||||
|
||||
#: src/screens/Onboarding/index.tsx:27
|
||||
#: src/screens/Onboarding/state.ts:113
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:230
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:226
|
||||
msgid "Sports"
|
||||
msgstr ""
|
||||
|
||||
@@ -7166,8 +7138,8 @@ msgstr ""
|
||||
msgid "Start chat with {displayName}"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:441
|
||||
#: src/Navigation.tsx:446
|
||||
#: src/Navigation.tsx:432
|
||||
#: src/Navigation.tsx:437
|
||||
#: src/screens/StarterPack/Wizard/index.tsx:186
|
||||
msgid "Starter Pack"
|
||||
msgstr ""
|
||||
@@ -7189,7 +7161,7 @@ msgstr ""
|
||||
msgid "Starter pack is invalid"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Explore.tsx:464
|
||||
#: src/screens/Search/Explore.tsx:522
|
||||
#: src/view/screens/Profile.tsx:228
|
||||
msgid "Starter Packs"
|
||||
msgstr ""
|
||||
@@ -7211,7 +7183,7 @@ msgstr ""
|
||||
msgid "Storage cleared, you need to restart the app now."
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:266
|
||||
#: src/Navigation.tsx:265
|
||||
#: src/screens/Settings/Settings.tsx:325
|
||||
msgid "Storybook"
|
||||
msgstr ""
|
||||
@@ -7261,7 +7233,7 @@ msgstr ""
|
||||
msgid "Success!"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Explore.tsx:299
|
||||
#: src/screens/Search/Explore.tsx:341
|
||||
msgid "Suggested Accounts"
|
||||
msgstr ""
|
||||
|
||||
@@ -7284,7 +7256,7 @@ msgctxt "Name of app icon variant"
|
||||
msgid "Sunset"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:286
|
||||
#: src/Navigation.tsx:285
|
||||
#: src/view/screens/Support.tsx:31
|
||||
#: src/view/screens/Support.tsx:34
|
||||
msgid "Support"
|
||||
@@ -7371,7 +7343,7 @@ msgstr ""
|
||||
msgid "Terms"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:296
|
||||
#: src/Navigation.tsx:295
|
||||
#: src/screens/Settings/AboutSettings.tsx:43
|
||||
#: src/screens/Settings/AboutSettings.tsx:46
|
||||
#: src/view/screens/TermsOfService.tsx:31
|
||||
@@ -7566,7 +7538,7 @@ msgstr ""
|
||||
msgid "There was an issue fetching notifications. Tap here to try again."
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/Explore.tsx:804
|
||||
#: src/screens/Search/Explore.tsx:837
|
||||
#: src/view/com/posts/PostFeed.tsx:607
|
||||
msgid "There was an issue fetching posts. Tap here to try again."
|
||||
msgstr ""
|
||||
@@ -7854,8 +7826,8 @@ msgstr ""
|
||||
msgid "Thread options"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:68
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:71
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:67
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:70
|
||||
msgid "Thread preferences"
|
||||
msgstr ""
|
||||
|
||||
@@ -7872,7 +7844,7 @@ msgstr ""
|
||||
msgid "Threaded mode"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:329
|
||||
#: src/Navigation.tsx:328
|
||||
msgid "Threads Preferences"
|
||||
msgstr ""
|
||||
|
||||
@@ -7918,7 +7890,7 @@ msgstr ""
|
||||
msgid "Top"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:411
|
||||
#: src/Navigation.tsx:402
|
||||
msgid "Topic"
|
||||
msgstr ""
|
||||
|
||||
@@ -8240,8 +8212,8 @@ msgstr ""
|
||||
msgid "Use in-app browser"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:102
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:108
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:93
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:99
|
||||
msgid "Use in-app browser to open links"
|
||||
msgstr ""
|
||||
|
||||
@@ -8395,7 +8367,7 @@ msgstr ""
|
||||
msgid "Video failed to process"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:462
|
||||
#: src/Navigation.tsx:453
|
||||
msgid "Video Feed"
|
||||
msgstr ""
|
||||
|
||||
@@ -8405,7 +8377,7 @@ msgstr ""
|
||||
|
||||
#: src/screens/Onboarding/index.tsx:39
|
||||
#: src/screens/Onboarding/state.ts:103
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:234
|
||||
#: src/screens/Search/modules/ExploreTrendingTopics.tsx:230
|
||||
msgid "Video Games"
|
||||
msgstr ""
|
||||
|
||||
@@ -8602,10 +8574,6 @@ msgstr ""
|
||||
msgid "We ran out of posts from your follows. Here's the latest from <0/>."
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/SettingsInterests.tsx:150
|
||||
msgid "We recommend selecting at least two interests."
|
||||
msgstr ""
|
||||
|
||||
#: src/view/com/composer/state/video.ts:417
|
||||
msgid "We were unable to determine if you are allowed to upload videos. Please try again."
|
||||
msgstr ""
|
||||
@@ -8631,7 +8599,7 @@ msgid "We'll use this to help customize your experience."
|
||||
msgstr ""
|
||||
|
||||
#: src/components/dms/dialogs/SearchablePeopleList.tsx:92
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:164
|
||||
#: src/components/ProgressGuide/FollowDialog.tsx:157
|
||||
msgid "We're having network issues, try again"
|
||||
msgstr ""
|
||||
|
||||
@@ -8823,10 +8791,6 @@ msgstr ""
|
||||
msgid "You are not following anyone."
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/modules/ExploreInterestsCard.tsx:45
|
||||
msgid "You can adjust your interests at any time from your \"Content and media\" settings."
|
||||
msgstr ""
|
||||
|
||||
#: src/view/com/posts/FollowingEmptyState.tsx:63
|
||||
#: src/view/com/posts/FollowingEndOfFeed.tsx:64
|
||||
msgid "You can also discover new Custom Feeds to follow."
|
||||
@@ -9189,19 +9153,6 @@ msgstr ""
|
||||
msgid "Your full username will be <0>@{0}</0>"
|
||||
msgstr ""
|
||||
|
||||
#: src/Navigation.tsx:383
|
||||
#: src/screens/Search/modules/ExploreInterestsCard.tsx:43
|
||||
#: src/screens/Search/modules/ExploreInterestsCard.tsx:67
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:92
|
||||
#: src/screens/Settings/ContentAndMediaSettings.tsx:95
|
||||
#: src/screens/Settings/SettingsInterests.tsx:39
|
||||
msgid "Your interests"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Search/modules/ExploreInterestsCard.tsx:94
|
||||
msgid "Your interests help us find what you like!"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/dialogs/MutedWords.tsx:369
|
||||
msgid "Your muted words"
|
||||
msgstr ""
|
||||
@@ -9241,7 +9192,3 @@ msgstr ""
|
||||
#: src/components/dms/ReportDialog.tsx:200
|
||||
msgid "Your report will be sent to the Bluesky Moderation Service"
|
||||
msgstr ""
|
||||
|
||||
#: src/screens/Settings/SettingsInterests.tsx:53
|
||||
msgid "Your selected interests help us serve you content you care about."
|
||||
msgstr ""
|
||||
|
||||
+70
-131
@@ -1,5 +1,5 @@
|
||||
import {useCallback, useMemo, useRef, useState} from 'react'
|
||||
import {View, type ViewabilityConfig} from 'react-native'
|
||||
import {View, type ViewabilityConfig, type ViewToken} from 'react-native'
|
||||
import {
|
||||
type AppBskyActorDefs,
|
||||
type AppBskyFeedDefs,
|
||||
@@ -7,7 +7,6 @@ import {
|
||||
} from '@atproto/api'
|
||||
import {msg, Trans} from '@lingui/macro'
|
||||
import {useLingui} from '@lingui/react'
|
||||
import {useQueryClient} from '@tanstack/react-query'
|
||||
|
||||
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
|
||||
import {useGate} from '#/lib/statsig/statsig'
|
||||
@@ -23,19 +22,9 @@ import {
|
||||
import {useGetPopularFeedsQuery} from '#/state/queries/feed'
|
||||
import {Nux, useNux} from '#/state/queries/nuxs'
|
||||
import {usePreferencesQuery} from '#/state/queries/preferences'
|
||||
import {
|
||||
createGetSuggestedFeedsQueryKey,
|
||||
useGetSuggestedFeedsQuery,
|
||||
} from '#/state/queries/trending/useGetSuggestedFeedsQuery'
|
||||
import {
|
||||
getSuggestedUsersQueryKeyRoot,
|
||||
useGetSuggestedUsersQuery,
|
||||
} from '#/state/queries/trending/useGetSuggestedUsersQuery'
|
||||
import {createGetTrendsQueryKey} from '#/state/queries/trending/useGetTrendsQuery'
|
||||
import {
|
||||
createSuggestedStarterPacksQueryKey,
|
||||
useSuggestedStarterPacksQuery,
|
||||
} from '#/state/queries/useSuggestedStarterPacksQuery'
|
||||
import {useGetSuggestedFeedsQuery} from '#/state/queries/trending/useGetSuggestedFeedsQuery'
|
||||
import {useGetSuggestedUsersQuery} from '#/state/queries/trending/useGetSuggestedUsersQuery'
|
||||
import {useSuggestedStarterPacksQuery} from '#/state/queries/useSuggestedStarterPacksQuery'
|
||||
import {useProgressGuide} from '#/state/shell/progress-guide'
|
||||
import {isThreadChildAt, isThreadParentAt} from '#/view/com/posts/PostFeed'
|
||||
import {PostFeedItem} from '#/view/com/posts/PostFeedItem'
|
||||
@@ -52,7 +41,6 @@ import {ExploreRecommendations} from '#/screens/Search/modules/ExploreRecommenda
|
||||
import {ExploreTrendingTopics} from '#/screens/Search/modules/ExploreTrendingTopics'
|
||||
import {ExploreTrendingVideos} from '#/screens/Search/modules/ExploreTrendingVideos'
|
||||
import {atoms as a, native, platform, useTheme, web} from '#/alf'
|
||||
import {Admonition} from '#/components/Admonition'
|
||||
import {Button} from '#/components/Button'
|
||||
import * as FeedCard from '#/components/FeedCard'
|
||||
import {ChevronBottom_Stroke2_Corner0_Rounded as ChevronDownIcon} from '#/components/icons/Chevron'
|
||||
@@ -61,11 +49,9 @@ import {type Props as IcoProps} from '#/components/icons/common'
|
||||
import {type Props as SVGIconProps} from '#/components/icons/common'
|
||||
import {ListSparkle_Stroke2_Corner0_Rounded as ListSparkle} from '#/components/icons/ListSparkle'
|
||||
import {StarterPack} from '#/components/icons/StarterPack'
|
||||
import {Trending2_Stroke2_Corner2_Rounded as Graph} from '#/components/icons/Trending'
|
||||
import {UserCircle_Stroke2_Corner0_Rounded as Person} from '#/components/icons/UserCircle'
|
||||
import {Loader} from '#/components/Loader'
|
||||
import * as ProfileCard from '#/components/ProfileCard'
|
||||
import {SubtleHover} from '#/components/SubtleHover'
|
||||
import {Text} from '#/components/Typography'
|
||||
import * as ModuleHeader from './components/ModuleHeader'
|
||||
import {
|
||||
@@ -83,26 +69,33 @@ function LoadMore({item}: {item: ExploreScreenItems & {type: 'loadMore'}}) {
|
||||
onPress={item.onLoadMore}
|
||||
style={[a.relative, a.w_full]}>
|
||||
{({hovered, pressed}) => (
|
||||
<>
|
||||
<SubtleHover hover={hovered || pressed} />
|
||||
<View
|
||||
<View
|
||||
style={[
|
||||
a.flex_1,
|
||||
a.flex_row,
|
||||
a.align_center,
|
||||
a.justify_center,
|
||||
a.px_lg,
|
||||
a.py_md,
|
||||
a.gap_sm,
|
||||
(hovered || pressed) && t.atoms.bg_contrast_25,
|
||||
]}>
|
||||
<Text
|
||||
style={[
|
||||
a.flex_1,
|
||||
a.flex_row,
|
||||
a.align_center,
|
||||
a.justify_center,
|
||||
a.px_lg,
|
||||
a.py_md,
|
||||
a.gap_sm,
|
||||
a.leading_snug,
|
||||
hovered ? t.atoms.text : t.atoms.text_contrast_medium,
|
||||
]}>
|
||||
<Text style={[a.leading_snug]}>{item.message}</Text>
|
||||
{item.isLoadingMore ? (
|
||||
<Loader size="sm" />
|
||||
) : (
|
||||
<ChevronDownIcon size="sm" style={t.atoms.text_contrast_medium} />
|
||||
)}
|
||||
</View>
|
||||
</>
|
||||
{item.message}
|
||||
</Text>
|
||||
{item.isLoadingMore ? (
|
||||
<Loader size="sm" />
|
||||
) : (
|
||||
<ChevronDownIcon
|
||||
size="sm"
|
||||
style={hovered ? t.atoms.text : t.atoms.text_contrast_medium}
|
||||
/>
|
||||
)}
|
||||
</View>
|
||||
)}
|
||||
</Button>
|
||||
)
|
||||
@@ -119,7 +112,6 @@ type ExploreScreenItems =
|
||||
title: string
|
||||
icon: React.ComponentType<SVGIconProps>
|
||||
iconSize?: IcoProps['size']
|
||||
bottomBorder?: boolean
|
||||
searchButton?: {
|
||||
label: string
|
||||
metricsTag: MetricEvents['explore:module:searchButtonPress']['module']
|
||||
@@ -155,10 +147,6 @@ type ExploreScreenItems =
|
||||
profile: AppBskyActorDefs.ProfileViewBasic
|
||||
recId?: number
|
||||
}
|
||||
| {
|
||||
type: 'profileEmpty'
|
||||
key: 'profileEmpty'
|
||||
}
|
||||
| {
|
||||
type: 'feed'
|
||||
key: string
|
||||
@@ -215,12 +203,11 @@ export function Explore({
|
||||
const gate = useGate()
|
||||
const guide = useProgressGuide('follow-10')
|
||||
const [selectedInterest, setSelectedInterest] = useState<string | null>(null)
|
||||
// TODO always get at least 10 back TODO still
|
||||
// TODO always get at least 10 back
|
||||
const {
|
||||
data: suggestedUsers,
|
||||
isLoading: suggestedUsersIsLoading,
|
||||
error: suggestedUsersError,
|
||||
isRefetching: suggestedUsersIsRefetching,
|
||||
} = useGetSuggestedUsersQuery({
|
||||
category: selectedInterest,
|
||||
})
|
||||
@@ -240,7 +227,6 @@ export function Explore({
|
||||
data: suggestedSPs,
|
||||
isLoading: isLoadingSuggestedSPs,
|
||||
error: suggestedSPsError,
|
||||
isRefetching: isRefetchingSuggestedSPs,
|
||||
} = useSuggestedStarterPacksQuery()
|
||||
|
||||
const isLoadingMoreFeeds = isFetchingNextFeedsPage && !isLoadingFeeds
|
||||
@@ -276,27 +262,6 @@ export function Explore({
|
||||
},
|
||||
} = useFeedPreviews(suggestedFeeds?.feeds ?? [])
|
||||
|
||||
const qc = useQueryClient()
|
||||
const [isPTR, setIsPTR] = useState(false)
|
||||
const onPTR = useCallback(async () => {
|
||||
setIsPTR(true)
|
||||
await Promise.all([
|
||||
await qc.resetQueries({
|
||||
queryKey: createGetTrendsQueryKey(),
|
||||
}),
|
||||
await qc.resetQueries({
|
||||
queryKey: createSuggestedStarterPacksQueryKey(),
|
||||
}),
|
||||
await qc.resetQueries({
|
||||
queryKey: [getSuggestedUsersQueryKeyRoot],
|
||||
}),
|
||||
await qc.resetQueries({
|
||||
queryKey: createGetSuggestedFeedsQueryKey(),
|
||||
}),
|
||||
])
|
||||
setIsPTR(false)
|
||||
}, [qc, setIsPTR])
|
||||
|
||||
const onLoadMoreFeedPreviews = useCallback(async () => {
|
||||
if (
|
||||
isPendingFeedPreviews ||
|
||||
@@ -340,7 +305,7 @@ export function Explore({
|
||||
},
|
||||
})
|
||||
|
||||
if (suggestedUsersIsLoading || suggestedUsersIsRefetching) {
|
||||
if (suggestedUsersIsLoading) {
|
||||
i.push({type: 'profilePlaceholder', key: 'profilePlaceholder'})
|
||||
} else if (suggestedUsersError) {
|
||||
i.push({
|
||||
@@ -368,18 +333,14 @@ export function Explore({
|
||||
}
|
||||
|
||||
if (profileItems.length === 0) {
|
||||
i.push({
|
||||
type: 'profileEmpty',
|
||||
key: 'profileEmpty',
|
||||
})
|
||||
// no items! remove the header
|
||||
i.pop()
|
||||
} else {
|
||||
i.push(...profileItems)
|
||||
}
|
||||
} else {
|
||||
i.push({
|
||||
type: 'profileEmpty',
|
||||
key: 'profileEmpty',
|
||||
})
|
||||
// no items! remove the header
|
||||
i.pop()
|
||||
}
|
||||
} else {
|
||||
i.push({type: 'profilePlaceholder', key: 'profilePlaceholder'})
|
||||
@@ -391,7 +352,6 @@ export function Explore({
|
||||
moderationOpts,
|
||||
suggestedUsers,
|
||||
suggestedUsersIsLoading,
|
||||
suggestedUsersIsRefetching,
|
||||
suggestedUsersError,
|
||||
])
|
||||
const suggestedFeedsModule = useMemo(() => {
|
||||
@@ -506,7 +466,7 @@ export function Explore({
|
||||
iconSize: 'xl',
|
||||
})
|
||||
|
||||
if (isLoadingSuggestedSPs || isRefetchingSuggestedSPs) {
|
||||
if (isLoadingSuggestedSPs) {
|
||||
Array.from({length: 3}).forEach((__, index) =>
|
||||
i.push({
|
||||
type: 'starterPackSkeleton',
|
||||
@@ -526,13 +486,7 @@ export function Explore({
|
||||
})
|
||||
}
|
||||
return i
|
||||
}, [
|
||||
suggestedSPs,
|
||||
_,
|
||||
isLoadingSuggestedSPs,
|
||||
suggestedSPsError,
|
||||
isRefetchingSuggestedSPs,
|
||||
])
|
||||
}, [suggestedSPs, _, isLoadingSuggestedSPs, suggestedSPsError])
|
||||
const feedPreviewsModule = useMemo(() => {
|
||||
const i: ExploreScreenItems[] = []
|
||||
i.push(...feedPreviewSlices)
|
||||
@@ -566,13 +520,6 @@ export function Explore({
|
||||
if (isNewUser) {
|
||||
i.push(...suggestedFollowsModule)
|
||||
i.push(...suggestedStarterPacksModule)
|
||||
i.push({
|
||||
type: 'header',
|
||||
key: 'trending-topics-header',
|
||||
title: _(msg`Trending topics`),
|
||||
icon: Graph,
|
||||
bottomBorder: true,
|
||||
})
|
||||
i.push(trendingTopicsModule)
|
||||
} else {
|
||||
i.push(trendingTopicsModule)
|
||||
@@ -586,7 +533,6 @@ export function Explore({
|
||||
|
||||
return i
|
||||
}, [
|
||||
_,
|
||||
topBorder,
|
||||
isNewUser,
|
||||
suggestedFollowsModule,
|
||||
@@ -618,7 +564,7 @@ export function Explore({
|
||||
)
|
||||
case 'header': {
|
||||
return (
|
||||
<ModuleHeader.Container bottomBorder={item.bottomBorder}>
|
||||
<ModuleHeader.Container>
|
||||
<ModuleHeader.Icon icon={item.icon} size={item.iconSize} />
|
||||
<ModuleHeader.TitleText>{item.title}</ModuleHeader.TitleText>
|
||||
{item.searchButton && (
|
||||
@@ -677,15 +623,6 @@ export function Explore({
|
||||
/>
|
||||
)
|
||||
}
|
||||
case 'profileEmpty': {
|
||||
return (
|
||||
<View style={[a.px_lg, a.pb_lg]}>
|
||||
<Admonition>
|
||||
<Trans>No results for "{selectedInterest}".</Trans>
|
||||
</Admonition>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
case 'feed': {
|
||||
return (
|
||||
<View
|
||||
@@ -801,13 +738,7 @@ export function Explore({
|
||||
return (
|
||||
<ModuleHeader.Container
|
||||
headerHeight={headerHeight}
|
||||
style={[
|
||||
a.pt_xs,
|
||||
t.atoms.border_contrast_low,
|
||||
native(a.border_b),
|
||||
]}>
|
||||
{/* Very non-scientific way to avoid small gap on scroll */}
|
||||
<View style={[a.absolute, a.inset_0, t.atoms.bg, {top: -2}]} />
|
||||
style={[a.pt_xs, a.border_b, t.atoms.border_contrast_low]}>
|
||||
<ModuleHeader.FeedLink feed={item.feed}>
|
||||
<ModuleHeader.FeedAvatar feed={item.feed} />
|
||||
<View style={[a.flex_1, a.gap_xs]}>
|
||||
@@ -906,26 +837,36 @@ export function Explore({
|
||||
|
||||
// track headers and report module viewability
|
||||
const alreadyReportedRef = useRef<Map<string, string>>(new Map())
|
||||
const onItemSeen = useCallback((item: ExploreScreenItems) => {
|
||||
let module: MetricEvents['explore:module:seen']['module']
|
||||
if (item.type === 'trendingTopics' || item.type === 'trendingVideos') {
|
||||
module = item.type
|
||||
} else if (item.type === 'profile') {
|
||||
module = 'suggestedAccounts'
|
||||
} else if (item.type === 'feed') {
|
||||
module = 'suggestedFeeds'
|
||||
} else if (item.type === 'starterPack') {
|
||||
module = 'suggestedStarterPacks'
|
||||
} else if (item.type === 'preview:sliceItem') {
|
||||
module = `feed:feedgen|${item.feed.uri}`
|
||||
} else {
|
||||
return
|
||||
}
|
||||
if (!alreadyReportedRef.current.has(module)) {
|
||||
alreadyReportedRef.current.set(module, module)
|
||||
logger.metric('explore:module:seen', {module}) //, index: index ?? -1})
|
||||
}
|
||||
}, [])
|
||||
const onViewableItemsChanged = useCallback(
|
||||
({
|
||||
viewableItems,
|
||||
}: {
|
||||
viewableItems: ViewToken<ExploreScreenItems>[]
|
||||
changed: ViewToken<ExploreScreenItems>[]
|
||||
}) => {
|
||||
for (const {item, index} of viewableItems.filter(vi => vi.isViewable)) {
|
||||
let module: MetricEvents['explore:module:seen']['module']
|
||||
if (item.type === 'trendingTopics' || item.type === 'trendingVideos') {
|
||||
module = item.type
|
||||
} else if (item.type === 'profile') {
|
||||
module = 'suggestedAccounts'
|
||||
} else if (item.type === 'feed') {
|
||||
module = 'suggestedFeeds'
|
||||
} else if (item.type === 'starterPack') {
|
||||
module = 'suggestedStarterPacks'
|
||||
} else if (item.type === 'preview:header') {
|
||||
module = `feed:feedgen|${item.feed.uri}`
|
||||
} else {
|
||||
continue
|
||||
}
|
||||
if (!alreadyReportedRef.current.has(module)) {
|
||||
alreadyReportedRef.current.set(module, module)
|
||||
logger.metric('explore:module:seen', {module, index: index ?? -1})
|
||||
}
|
||||
}
|
||||
},
|
||||
[],
|
||||
)
|
||||
|
||||
return (
|
||||
<List
|
||||
@@ -938,15 +879,13 @@ export function Explore({
|
||||
keyboardDismissMode="on-drag"
|
||||
stickyHeaderIndices={native(stickyHeaderIndices)}
|
||||
viewabilityConfig={viewabilityConfig}
|
||||
onItemSeen={onItemSeen}
|
||||
onViewableItemsChanged={onViewableItemsChanged}
|
||||
onEndReached={onLoadMoreFeedPreviews}
|
||||
onEndReachedThreshold={3}
|
||||
initialNumToRender={initialNumToRender}
|
||||
windowSize={9}
|
||||
maxToRenderPerBatch={platform({ios: 5, default: 1})}
|
||||
updateCellsBatchingPeriod={40}
|
||||
refreshing={isPTR}
|
||||
onRefresh={onPTR}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -18,12 +18,7 @@ export function Container({
|
||||
style,
|
||||
children,
|
||||
headerHeight,
|
||||
bottomBorder,
|
||||
}: {
|
||||
children: React.ReactNode
|
||||
headerHeight?: number
|
||||
bottomBorder?: boolean
|
||||
} & ViewStyleProp) {
|
||||
}: {children: React.ReactNode; headerHeight?: number} & ViewStyleProp) {
|
||||
const t = useTheme()
|
||||
return (
|
||||
<View
|
||||
@@ -36,9 +31,10 @@ export function Container({
|
||||
a.gap_sm,
|
||||
t.atoms.bg,
|
||||
headerHeight && web({position: 'sticky', top: headerHeight}),
|
||||
bottomBorder && [a.border_b, t.atoms.border_contrast_low],
|
||||
style,
|
||||
]}>
|
||||
{/* Very non-scientific way to avoid small gap on scroll */}
|
||||
<View style={[a.absolute, a.inset_0, t.atoms.bg, {top: -2}]} />
|
||||
{children}
|
||||
</View>
|
||||
)
|
||||
|
||||
@@ -19,7 +19,6 @@ import {PlusSmall_Stroke2_Corner0_Rounded as Plus} from '#/components/icons/Plus
|
||||
import {Link} from '#/components/Link'
|
||||
import {MediaInsetBorder} from '#/components/MediaInsetBorder'
|
||||
import {useStarterPackLink} from '#/components/StarterPack/StarterPackCard'
|
||||
import {SubtleHover} from '#/components/SubtleHover'
|
||||
import {Text} from '#/components/Typography'
|
||||
import * as bsky from '#/types/bsky'
|
||||
|
||||
@@ -49,80 +48,75 @@ export function StarterPackCard({
|
||||
.map(item => item.subject)
|
||||
|
||||
return (
|
||||
<Link
|
||||
to={link.to}
|
||||
label={link.label}
|
||||
onHoverIn={link.precache}
|
||||
onPress={link.precache}>
|
||||
{s => (
|
||||
<>
|
||||
<SubtleHover hover={s.hovered || s.pressed} />
|
||||
<View
|
||||
style={[
|
||||
a.w_full,
|
||||
a.p_lg,
|
||||
a.gap_md,
|
||||
a.border,
|
||||
a.rounded_sm,
|
||||
a.overflow_hidden,
|
||||
t.atoms.border_contrast_low,
|
||||
]}>
|
||||
<View aria-hidden style={[a.absolute, a.inset_0, a.z_40]}>
|
||||
<Link
|
||||
to={link.to}
|
||||
label={link.label}
|
||||
style={[a.absolute, a.inset_0]}
|
||||
onHoverIn={link.precache}
|
||||
onPress={link.precache}>
|
||||
<View />
|
||||
</Link>
|
||||
</View>
|
||||
|
||||
<View
|
||||
style={[
|
||||
a.w_full,
|
||||
a.p_lg,
|
||||
a.gap_md,
|
||||
a.border,
|
||||
a.rounded_sm,
|
||||
a.overflow_hidden,
|
||||
t.atoms.border_contrast_low,
|
||||
]}>
|
||||
<AvatarStack
|
||||
profiles={profiles ?? []}
|
||||
numPending={profileCount}
|
||||
total={view.list?.listItemCount}
|
||||
/>
|
||||
<AvatarStack
|
||||
profiles={profiles ?? []}
|
||||
numPending={profileCount}
|
||||
total={view.list?.listItemCount}
|
||||
/>
|
||||
|
||||
<View
|
||||
style={[
|
||||
a.w_full,
|
||||
a.flex_row,
|
||||
a.align_start,
|
||||
a.gap_lg,
|
||||
web({
|
||||
position: 'static',
|
||||
zIndex: 'unset',
|
||||
}),
|
||||
]}>
|
||||
<View style={[a.flex_1]}>
|
||||
<Text
|
||||
emoji
|
||||
style={[a.text_md, a.font_bold, a.leading_snug]}
|
||||
numberOfLines={1}>
|
||||
{view.record.name}
|
||||
</Text>
|
||||
<Text
|
||||
emoji
|
||||
style={[
|
||||
a.text_sm,
|
||||
a.leading_snug,
|
||||
t.atoms.text_contrast_medium,
|
||||
]}
|
||||
numberOfLines={1}>
|
||||
{view.creator?.did === currentAccount?.did
|
||||
? _(msg`By you`)
|
||||
: _(msg`By ${sanitizeHandle(view.creator.handle, '@')}`)}
|
||||
</Text>
|
||||
</View>
|
||||
<Link
|
||||
to={link.to}
|
||||
label={link.label}
|
||||
onHoverIn={link.precache}
|
||||
onPress={link.precache}
|
||||
variant="solid"
|
||||
color="secondary"
|
||||
size="small"
|
||||
style={[a.z_50]}>
|
||||
<ButtonText>
|
||||
<Trans>Open pack</Trans>
|
||||
</ButtonText>
|
||||
</Link>
|
||||
</View>
|
||||
</View>
|
||||
</>
|
||||
)}
|
||||
</Link>
|
||||
<View
|
||||
style={[
|
||||
a.w_full,
|
||||
a.flex_row,
|
||||
a.align_start,
|
||||
a.gap_lg,
|
||||
web({
|
||||
position: 'static',
|
||||
zIndex: 'unset',
|
||||
}),
|
||||
]}>
|
||||
<View style={[a.flex_1]}>
|
||||
<Text
|
||||
emoji
|
||||
style={[a.text_md, a.font_bold, a.leading_snug]}
|
||||
numberOfLines={1}>
|
||||
{view.record.name}
|
||||
</Text>
|
||||
<Text
|
||||
emoji
|
||||
style={[a.text_sm, a.leading_snug, t.atoms.text_contrast_medium]}
|
||||
numberOfLines={1}>
|
||||
{view.creator?.did === currentAccount?.did
|
||||
? _(msg`By you`)
|
||||
: _(msg`By ${sanitizeHandle(view.creator.handle, '@')}`)}
|
||||
</Text>
|
||||
</View>
|
||||
<Link
|
||||
to={link.to}
|
||||
label={link.label}
|
||||
onHoverIn={link.precache}
|
||||
onPress={link.precache}
|
||||
variant="solid"
|
||||
color="secondary"
|
||||
size="small"
|
||||
style={[a.z_50]}>
|
||||
<ButtonText>
|
||||
<Trans>Open pack</Trans>
|
||||
</ButtonText>
|
||||
</Link>
|
||||
</View>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,6 @@ import {usePreferencesQuery} from '#/state/queries/preferences'
|
||||
import {useInterestsDisplayNames} from '#/screens/Onboarding/state'
|
||||
import {atoms as a, useTheme} from '#/alf'
|
||||
import {Button, ButtonIcon, ButtonText} from '#/components/Button'
|
||||
import {Shapes_Stroke2_Corner0_Rounded as Shapes} from '#/components/icons/Shapes'
|
||||
import {TimesLarge_Stroke2_Corner0_Rounded as X} from '#/components/icons/Times'
|
||||
import {Link} from '#/components/Link'
|
||||
import * as Prompt from '#/components/Prompt'
|
||||
@@ -40,33 +39,32 @@ export function ExploreInterestsCard() {
|
||||
<>
|
||||
<Prompt.Basic
|
||||
control={trendingPrompt}
|
||||
title={_(msg`Dismiss interests`)}
|
||||
title={_(msg`Your interests`)}
|
||||
description={_(
|
||||
msg`You can adjust your interests at any time from "Content and media" settings.`,
|
||||
msg`You can adjust your interests at any time from your "Content and media" settings.`,
|
||||
)}
|
||||
confirmButtonCta={_(
|
||||
msg({
|
||||
message: `OK`,
|
||||
comment: `Confirm button text.`,
|
||||
message: `Copy that!`,
|
||||
comment: `Confirm button text. Can be a short cheeky phrase that means "OK" e.g. "Copy that!"`,
|
||||
}),
|
||||
)}
|
||||
onConfirm={onConfirmClose}
|
||||
/>
|
||||
|
||||
<View style={[a.pb_2xs]}>
|
||||
<View style={[a.p_lg, a.pb_2xs]}>
|
||||
<View
|
||||
style={[
|
||||
a.p_lg,
|
||||
a.border_b,
|
||||
a.gap_md,
|
||||
a.rounded_md,
|
||||
a.border,
|
||||
a.gap_sm,
|
||||
t.atoms.border_contrast_medium,
|
||||
t.atoms.bg_contrast_25,
|
||||
]}>
|
||||
<View style={[a.flex_row, a.gap_sm, a.align_center]}>
|
||||
<Shapes />
|
||||
<Text style={[a.text_xl, a.font_bold, a.leading_tight]}>
|
||||
<Trans>Your interests</Trans>
|
||||
</Text>
|
||||
</View>
|
||||
<Text style={[a.text_md, a.font_bold, a.leading_tight]}>
|
||||
<Trans>Your interests</Trans>
|
||||
</Text>
|
||||
|
||||
{preferences?.interests?.tags &&
|
||||
preferences.interests.tags.length > 0 ? (
|
||||
@@ -78,11 +76,12 @@ export function ExploreInterestsCard() {
|
||||
a.justify_center,
|
||||
a.align_center,
|
||||
a.rounded_full,
|
||||
t.atoms.bg_contrast_25,
|
||||
a.border,
|
||||
t.atoms.border_contrast_medium,
|
||||
a.px_lg,
|
||||
{height: 32},
|
||||
]}>
|
||||
<Text style={[a.text_sm, t.atoms.text_contrast_high]}>
|
||||
<Text style={[a.text_sm, t.atoms.text_contrast_medium]}>
|
||||
{interestsDisplayNames[tag]}
|
||||
</Text>
|
||||
</View>
|
||||
@@ -90,8 +89,10 @@ export function ExploreInterestsCard() {
|
||||
</View>
|
||||
) : null}
|
||||
|
||||
<Text style={[a.text_sm, a.leading_snug]}>
|
||||
<Trans>Your interests help us find what you like!</Trans>
|
||||
<Text style={[a.text_sm, a.leading_snug, a.pb_xs]}>
|
||||
<Trans>
|
||||
Your selected interests help us serve you content you care about.
|
||||
</Trans>
|
||||
</Text>
|
||||
|
||||
<Link
|
||||
@@ -109,15 +110,15 @@ export function ExploreInterestsCard() {
|
||||
<Button
|
||||
label={_(msg`Hide this card`)}
|
||||
size="small"
|
||||
variant="ghost"
|
||||
variant="solid"
|
||||
color="secondary"
|
||||
shape="round"
|
||||
onPress={onClose}
|
||||
style={[
|
||||
a.absolute,
|
||||
{top: a.pt_sm.paddingTop, right: a.pr_sm.paddingRight},
|
||||
{top: a.pt_xs.paddingTop, right: a.pr_xs.paddingRight},
|
||||
]}>
|
||||
<ButtonIcon icon={X} size="md" />
|
||||
<ButtonIcon icon={X} />
|
||||
</Button>
|
||||
</View>
|
||||
</View>
|
||||
|
||||
@@ -17,7 +17,6 @@ import {atoms as a} from '#/alf'
|
||||
import {Button} from '#/components/Button'
|
||||
import * as ProfileCard from '#/components/ProfileCard'
|
||||
import {boostInterests, Tabs} from '#/components/ProgressGuide/FollowDialog'
|
||||
import {SubtleHover} from '#/components/SubtleHover'
|
||||
import {Text} from '#/components/Typography'
|
||||
import type * as bsky from '#/types/bsky'
|
||||
|
||||
@@ -134,7 +133,10 @@ let Tab = ({
|
||||
a.py_sm,
|
||||
a.border,
|
||||
active || hovered || pressed || focused
|
||||
? [t.atoms.bg_contrast_25, t.atoms.border_contrast_medium]
|
||||
? [
|
||||
t.atoms.bg_contrast_25,
|
||||
{borderColor: t.atoms.bg_contrast_25.backgroundColor},
|
||||
]
|
||||
: [t.atoms.bg, t.atoms.border_contrast_low],
|
||||
]}>
|
||||
<Text
|
||||
@@ -184,52 +186,47 @@ let SuggestedProfileCard = ({
|
||||
{statsig: true},
|
||||
)
|
||||
}}>
|
||||
{s => (
|
||||
<>
|
||||
<SubtleHover hover={s.hovered || s.pressed} />
|
||||
<View
|
||||
style={[
|
||||
a.flex_1,
|
||||
a.w_full,
|
||||
a.py_lg,
|
||||
a.px_lg,
|
||||
a.border_t,
|
||||
t.atoms.border_contrast_low,
|
||||
]}>
|
||||
<ProfileCard.Outer>
|
||||
<ProfileCard.Header>
|
||||
<ProfileCard.Avatar
|
||||
profile={profile}
|
||||
moderationOpts={moderationOpts}
|
||||
/>
|
||||
<ProfileCard.NameAndHandle
|
||||
profile={profile}
|
||||
moderationOpts={moderationOpts}
|
||||
/>
|
||||
<ProfileCard.FollowButton
|
||||
profile={profile}
|
||||
moderationOpts={moderationOpts}
|
||||
withIcon={false}
|
||||
logContext="ExploreSuggestedAccounts"
|
||||
onFollow={() => {
|
||||
logger.metric(
|
||||
'suggestedUser:follow',
|
||||
{
|
||||
logContext: 'Explore',
|
||||
location: 'Card',
|
||||
recId,
|
||||
position,
|
||||
},
|
||||
{statsig: true},
|
||||
)
|
||||
}}
|
||||
/>
|
||||
</ProfileCard.Header>
|
||||
<ProfileCard.Description profile={profile} numberOfLines={2} />
|
||||
</ProfileCard.Outer>
|
||||
</View>
|
||||
</>
|
||||
)}
|
||||
<View
|
||||
style={[
|
||||
a.w_full,
|
||||
a.py_lg,
|
||||
a.px_lg,
|
||||
a.border_t,
|
||||
t.atoms.border_contrast_low,
|
||||
a.flex_1,
|
||||
]}>
|
||||
<ProfileCard.Outer>
|
||||
<ProfileCard.Header>
|
||||
<ProfileCard.Avatar
|
||||
profile={profile}
|
||||
moderationOpts={moderationOpts}
|
||||
/>
|
||||
<ProfileCard.NameAndHandle
|
||||
profile={profile}
|
||||
moderationOpts={moderationOpts}
|
||||
/>
|
||||
<ProfileCard.FollowButton
|
||||
profile={profile}
|
||||
moderationOpts={moderationOpts}
|
||||
withIcon={false}
|
||||
logContext="ExploreSuggestedAccounts"
|
||||
onFollow={() => {
|
||||
logger.metric(
|
||||
'suggestedUser:follow',
|
||||
{
|
||||
logContext: 'Explore',
|
||||
location: 'Card',
|
||||
recId,
|
||||
position,
|
||||
},
|
||||
{statsig: true},
|
||||
)
|
||||
}}
|
||||
/>
|
||||
</ProfileCard.Header>
|
||||
<ProfileCard.Description profile={profile} numberOfLines={2} />
|
||||
</ProfileCard.Outer>
|
||||
</View>
|
||||
</ProfileCard.Link>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -17,7 +17,6 @@ import {type Props as SVGIconProps} from '#/components/icons/common'
|
||||
import {Flame_Stroke2_Corner1_Rounded as FlameIcon} from '#/components/icons/Flame'
|
||||
import {Trending3_Stroke2_Corner1_Rounded as TrendingIcon} from '#/components/icons/Trending'
|
||||
import {Link} from '#/components/Link'
|
||||
import {SubtleHover} from '#/components/SubtleHover'
|
||||
import {Text} from '#/components/Typography'
|
||||
|
||||
const TOPIC_COUNT = 5
|
||||
@@ -29,10 +28,10 @@ export function ExploreTrendingTopics() {
|
||||
}
|
||||
|
||||
function Inner() {
|
||||
const {data: trending, error, isLoading, isRefetching} = useGetTrendsQuery()
|
||||
const {data: trending, error, isLoading} = useGetTrendsQuery()
|
||||
const noTopics = !isLoading && !error && !trending?.trends?.length
|
||||
|
||||
return isLoading || isRefetching ? (
|
||||
return isLoading ? (
|
||||
Array.from({length: TOPIC_COUNT}).map((__, i) => (
|
||||
<TrendingTopicRowSkeleton key={i} withPosts={i === 0} />
|
||||
))
|
||||
@@ -93,23 +92,25 @@ export function TrendRow({
|
||||
PressableComponent={Pressable}>
|
||||
{({hovered, pressed}) => (
|
||||
<>
|
||||
<SubtleHover hover={hovered || pressed} />
|
||||
<View style={[gutters, a.w_full, a.py_lg, a.flex_row, a.gap_2xs]}>
|
||||
<View
|
||||
style={[
|
||||
gutters,
|
||||
a.w_full,
|
||||
a.py_lg,
|
||||
a.flex_row,
|
||||
a.gap_2xs,
|
||||
(hovered || pressed) && t.atoms.bg_contrast_25,
|
||||
]}>
|
||||
<View style={[a.flex_1, a.gap_xs]}>
|
||||
<View style={[a.flex_row]}>
|
||||
<Text
|
||||
style={[
|
||||
a.text_md,
|
||||
a.font_bold,
|
||||
a.leading_tight,
|
||||
{width: 20},
|
||||
]}>
|
||||
style={[a.text_md, a.font_bold, a.leading_snug, {width: 20}]}>
|
||||
<Trans comment='The trending topic rank, i.e. "1. March Madness", "2. The Bachelor"'>
|
||||
{rank}.
|
||||
</Trans>
|
||||
</Text>
|
||||
<Text
|
||||
style={[a.text_md, a.font_bold, a.leading_tight]}
|
||||
style={[a.text_md, a.font_bold, a.leading_snug]}
|
||||
numberOfLines={1}>
|
||||
{trend.displayName}
|
||||
</Text>
|
||||
|
||||
@@ -34,41 +34,6 @@ const RQKEY_ROOT = 'feed-previews'
|
||||
const RQKEY = (feeds: string[]) => [RQKEY_ROOT, feeds]
|
||||
|
||||
const LIMIT = 8 // sliced to 6, overfetch to account for moderation
|
||||
const PINNED_POST_URIS: Record<string, boolean> = {
|
||||
// 📰 News
|
||||
'at://did:plc:kkf4naxqmweop7dv4l2iqqf5/app.bsky.feed.post/3lgh27w2ngc2b':
|
||||
true,
|
||||
// Gardening
|
||||
'at://did:plc:5rw2on4i56btlcajojaxwcat/app.bsky.feed.post/3kjorckgcwc27':
|
||||
true,
|
||||
// Web Development Trending
|
||||
'at://did:plc:m2sjv3wncvsasdapla35hzwj/app.bsky.feed.post/3lfaw445axs22':
|
||||
true,
|
||||
// Anime & Manga EN
|
||||
'at://did:plc:tazrmeme4dzahimsykusrwrk/app.bsky.feed.post/3knxx2gmkns2y':
|
||||
true,
|
||||
// 📽️ Film
|
||||
'at://did:plc:2hwwem55ce6djnk6bn62cstr/app.bsky.feed.post/3llhpzhbq7c2g':
|
||||
true,
|
||||
// PopSky
|
||||
'at://did:plc:lfdf4srj43iwdng7jn35tjsp/app.bsky.feed.post/3lbblgly65c2g':
|
||||
true,
|
||||
// Science
|
||||
'at://did:plc:hu2obebw3nhfj667522dahfg/app.bsky.feed.post/3kl33otd6ob2s':
|
||||
true,
|
||||
// Birds! 🦉
|
||||
'at://did:plc:ffkgesg3jsv2j7aagkzrtcvt/app.bsky.feed.post/3lbg4r57yk22d':
|
||||
true,
|
||||
// Astronomy
|
||||
'at://did:plc:xy2zorw2ys47poflotxthlzg/app.bsky.feed.post/3kyzye4lujs2w':
|
||||
true,
|
||||
// What's Cooking 🍽️
|
||||
'at://did:plc:geoqe3qls5mwezckxxsewys2/app.bsky.feed.post/3lfqhgvxbqc2q':
|
||||
true,
|
||||
// BookSky 💙📚 #booksky
|
||||
'at://did:plc:geoqe3qls5mwezckxxsewys2/app.bsky.feed.post/3kgrm2rw5ww2e':
|
||||
true,
|
||||
}
|
||||
|
||||
export type FeedPreviewItem =
|
||||
| {
|
||||
@@ -108,7 +73,6 @@ export type FeedPreviewItem =
|
||||
key: string
|
||||
slice: FeedPostSlice
|
||||
indexInSlice: number
|
||||
feed: AppBskyFeedDefs.GeneratorView
|
||||
showReplyTo: boolean
|
||||
hideTopBorder: boolean
|
||||
}
|
||||
@@ -216,24 +180,19 @@ export function useFeedPreviews(
|
||||
feedContext: item.feedContext,
|
||||
reason: item.reason,
|
||||
feedPostUri: item.feedPostUri,
|
||||
items: item.items
|
||||
.slice(0, 6)
|
||||
.filter(subItem => {
|
||||
return !PINNED_POST_URIS[subItem.post.uri]
|
||||
})
|
||||
.map((subItem, i) => {
|
||||
const feedPostSliceItem: FeedPostSliceItem = {
|
||||
_reactKey: `${item._reactKey}-${i}-${subItem.post.uri}`,
|
||||
uri: subItem.post.uri,
|
||||
post: subItem.post,
|
||||
record: subItem.record,
|
||||
moderation: moderations[i],
|
||||
parentAuthor: subItem.parentAuthor,
|
||||
isParentBlocked: subItem.isParentBlocked,
|
||||
isParentNotFound: subItem.isParentNotFound,
|
||||
}
|
||||
return feedPostSliceItem
|
||||
}),
|
||||
items: item.items.slice(0, 6).map((subItem, i) => {
|
||||
const feedPostSliceItem: FeedPostSliceItem = {
|
||||
_reactKey: `${item._reactKey}-${i}-${subItem.post.uri}`,
|
||||
uri: subItem.post.uri,
|
||||
post: subItem.post,
|
||||
record: subItem.record,
|
||||
moderation: moderations[i],
|
||||
parentAuthor: subItem.parentAuthor,
|
||||
isParentBlocked: subItem.isParentBlocked,
|
||||
isParentNotFound: subItem.isParentNotFound,
|
||||
}
|
||||
return feedPostSliceItem
|
||||
}),
|
||||
}
|
||||
if (slice.isIncompleteThread && slice.items.length >= 3) {
|
||||
const beforeLast = slice.items.length - 2
|
||||
@@ -243,7 +202,6 @@ export function useFeedPreviews(
|
||||
key: slice.items[0]._reactKey,
|
||||
slice: slice,
|
||||
indexInSlice: 0,
|
||||
feed: page.feed,
|
||||
showReplyTo: false,
|
||||
hideTopBorder: rowIndex === 0,
|
||||
})
|
||||
@@ -257,7 +215,6 @@ export function useFeedPreviews(
|
||||
key: slice.items[beforeLast]._reactKey,
|
||||
slice: slice,
|
||||
indexInSlice: beforeLast,
|
||||
feed: page.feed,
|
||||
showReplyTo:
|
||||
slice.items[beforeLast].parentAuthor?.did !==
|
||||
slice.items[beforeLast].post.author.did,
|
||||
@@ -268,7 +225,6 @@ export function useFeedPreviews(
|
||||
key: slice.items[last]._reactKey,
|
||||
slice: slice,
|
||||
indexInSlice: last,
|
||||
feed: page.feed,
|
||||
showReplyTo: false,
|
||||
hideTopBorder: false,
|
||||
})
|
||||
@@ -279,7 +235,6 @@ export function useFeedPreviews(
|
||||
key: slice.items[i]._reactKey,
|
||||
slice: slice,
|
||||
indexInSlice: i,
|
||||
feed: page.feed,
|
||||
showReplyTo: i === 0,
|
||||
hideTopBorder: i === 0 && rowIndex === 0,
|
||||
})
|
||||
|
||||
@@ -20,7 +20,8 @@ export function useGetSuggestedFeedsQuery() {
|
||||
|
||||
return useQuery({
|
||||
enabled: !!preferences,
|
||||
staleTime: STALE.MINUTES.THREE,
|
||||
refetchOnWindowFocus: true,
|
||||
staleTime: STALE.MINUTES.ONE,
|
||||
queryKey: createGetSuggestedFeedsQueryKey(),
|
||||
queryFn: async () => {
|
||||
const contentLangs = getContentLanguages().join(',')
|
||||
|
||||
@@ -27,14 +27,14 @@ export function useGetSuggestedUsersQuery(props: QueryProps) {
|
||||
|
||||
return useQuery({
|
||||
enabled: !!preferences,
|
||||
staleTime: STALE.MINUTES.THREE,
|
||||
refetchOnWindowFocus: true,
|
||||
staleTime: STALE.MINUTES.ONE,
|
||||
queryKey: createGetSuggestedUsersQueryKey(props),
|
||||
queryFn: async () => {
|
||||
const contentLangs = getContentLanguages().join(',')
|
||||
const {data} = await agent.app.bsky.unspecced.getSuggestedUsers(
|
||||
{
|
||||
category: props.category ?? undefined,
|
||||
limit: 10,
|
||||
},
|
||||
{
|
||||
headers: {
|
||||
|
||||
@@ -25,6 +25,7 @@ export function useGetTrendsQuery() {
|
||||
|
||||
return useQuery({
|
||||
enabled: !!preferences,
|
||||
refetchOnWindowFocus: true,
|
||||
staleTime: STALE.MINUTES.THREE,
|
||||
queryKey: createGetTrendsQueryKey(),
|
||||
queryFn: async () => {
|
||||
|
||||
@@ -20,7 +20,8 @@ export function useSuggestedStarterPacksQuery() {
|
||||
|
||||
return useQuery({
|
||||
enabled: !!preferences,
|
||||
staleTime: STALE.MINUTES.THREE,
|
||||
refetchOnWindowFocus: true,
|
||||
staleTime: STALE.MINUTES.ONE,
|
||||
queryKey: createSuggestedStarterPacksQueryKey(),
|
||||
async queryFn() {
|
||||
const {data} = await agent.app.bsky.unspecced.getSuggestedStarterPacks(
|
||||
|
||||
Reference in New Issue
Block a user