Merge remote-tracking branch 'origin/main' into hailey/79fab

This commit is contained in:
Hailey
2025-05-05 12:34:49 -07:00
11 changed files with 416 additions and 100 deletions
+2 -2
View File
@@ -90,7 +90,7 @@
"@lingui/react": "^4.14.1", "@lingui/react": "^4.14.1",
"@mattermost/react-native-paste-input": "^0.7.1", "@mattermost/react-native-paste-input": "^0.7.1",
"@miblanchard/react-native-slider": "^2.6.0", "@miblanchard/react-native-slider": "^2.6.0",
"@mozzius/expo-dynamic-app-icon": "1.5.0", "@mozzius/expo-dynamic-app-icon": "^1.5.0",
"@react-native-async-storage/async-storage": "2.1.2", "@react-native-async-storage/async-storage": "2.1.2",
"@react-native-menu/menu": "^1.2.3", "@react-native-menu/menu": "^1.2.3",
"@react-native-picker/picker": "2.11.0", "@react-native-picker/picker": "2.11.0",
@@ -223,7 +223,7 @@
"@babel/core": "^7.26.0", "@babel/core": "^7.26.0",
"@babel/preset-env": "^7.26.0", "@babel/preset-env": "^7.26.0",
"@babel/runtime": "^7.26.0", "@babel/runtime": "^7.26.0",
"@expo/config-plugins": "~10.0.0", "@expo/config-plugins": "~10.0.2",
"@lingui/cli": "^4.14.1", "@lingui/cli": "^4.14.1",
"@lingui/macro": "^4.14.1", "@lingui/macro": "^4.14.1",
"@pmmmwh/react-refresh-webpack-plugin": "^0.5.15", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.15",
+20
View File
@@ -0,0 +1,20 @@
import {type AppBskyFeedDefs, type BskyAgent} from '@atproto/api'
import {DEMO_FEED} from '#/lib/demo'
import {type FeedAPI, type FeedAPIResponse} from './types'
export class DemoFeedAPI implements FeedAPI {
agent: BskyAgent
constructor({agent}: {agent: BskyAgent}) {
this.agent = agent
}
async peekLatest(): Promise<AppBskyFeedDefs.FeedViewPost> {
return DEMO_FEED.feed[0]
}
async fetch(): Promise<FeedAPIResponse> {
return DEMO_FEED
}
}
+202
View File
@@ -0,0 +1,202 @@
import {type AppBskyFeedGetFeed} from '@atproto/api'
import {subDays, subMinutes} from 'date-fns'
const DID = `did:plc:z72i7hdynmk6r22z27h6tvur`
const NOW = new Date()
const POST_1_DATE = subMinutes(NOW, 2).toISOString()
const POST_2_DATE = subMinutes(NOW, 4).toISOString()
const POST_3_DATE = subMinutes(NOW, 5).toISOString()
export const DEMO_FEED = {
feed: [
{
post: {
uri: 'at://did:plc:pvooorihapc2lf2pijehgrdf/app.bsky.feed.post/3lniysofyll2d',
cid: 'bafyreihwh3wxxme732ylbylhhdyz7ex6t4jtu6s3gjxxvnnh4feddhg3ku',
author: {
did: 'did:plc:pvooorihapc2lf2pijehgrdf',
handle: 'forkedriverband.bsky.social',
displayName: 'Forked River Band',
avatar: 'https://bsky.social/about/adi/post_1_avi.jpg',
viewer: {
muted: false,
blockedBy: false,
following: `at://${DID}/app.bsky.graph.follow/post1`,
},
labels: [],
createdAt: POST_1_DATE,
verification: {
verifications: [
{
issuer: DID,
uri: `at://${DID}/app.bsky.graph.verification/post1`,
isValid: true,
createdAt: subDays(NOW, 11).toISOString(),
},
],
verifiedStatus: 'valid',
trustedVerifierStatus: 'none',
},
},
record: {
$type: 'app.bsky.feed.post',
createdAt: POST_1_DATE,
// embed: {
// $type: 'app.bsky.embed.images',
// images: [
// {
// alt: 'Fake flier for Sebastapol Bluegrass Fest',
// aspectRatio: {
// height: 1350,
// width: 900,
// },
// image: {
// $type: 'blob',
// ref: {
// $link:
// 'bafkreig7gnirmz5guhhjutf3mqbjjzxzi3w4wvs5qy2gnxma5g3brbaidi',
// },
// mimeType: 'image/jpeg',
// size: 562871,
// },
// },
// ],
// },
langs: ['en'],
text: 'Sonoma County folks: Come tip your hats our way and see us play new and old bluegrass tunes at Sebastopol Solstice Fest on June 20th.',
},
embed: {
$type: 'app.bsky.embed.images#view',
images: [
{
thumb: 'https://bsky.social/about/adi/post_1_image.jpg',
fullsize: 'https://bsky.social/about/adi/post_1_image.jpg',
alt: 'Fake flier for Sebastapol Bluegrass Fest',
aspectRatio: {
height: 1350,
width: 900,
},
},
],
},
replyCount: 1,
repostCount: 4,
likeCount: 18,
quoteCount: 0,
indexedAt: POST_1_DATE,
viewer: {
threadMuted: false,
embeddingDisabled: false,
},
labels: [],
},
},
{
post: {
uri: 'at://did:plc:fhhqii56ppgyh5qcm2b3mokf/app.bsky.feed.post/3lnizc7fug52c',
cid: 'bafyreienuabsr55rycirdf4ewue5tjcseg5lzqompcsh2brqzag6hvxllm',
author: {
did: 'did:plc:fhhqii56ppgyh5qcm2b3mokf',
handle: 'dinh-designs.bsky.social',
displayName: 'Rich Dinh Designs',
avatar: 'https://bsky.social/about/adi/post_2_avi.jpg',
viewer: {
muted: false,
blockedBy: false,
following: `at://${DID}/app.bsky.graph.follow/post2`,
},
labels: [],
createdAt: POST_2_DATE,
},
record: {
$type: 'app.bsky.feed.post',
createdAt: POST_2_DATE,
// embed: {
// $type: 'app.bsky.embed.images',
// images: [
// {
// alt: 'Placeholder image of interior design',
// aspectRatio: {
// height: 872,
// width: 598,
// },
// image: {
// $type: 'blob',
// ref: {
// $link:
// 'bafkreidcjc6bjb4jjjejruin5cldhj5zovsuu4tydulenyprneziq5rfeu',
// },
// mimeType: 'image/jpeg',
// size: 296003,
// },
// },
// ],
// },
langs: ['en'],
text: 'Details from our install at the Lucas residence in Joshua Tree. We populated the space with rich, earthy tones and locally-sourced materials to suit the landscape.',
},
embed: {
$type: 'app.bsky.embed.images#view',
images: [
{
thumb: 'https://bsky.social/about/adi/post_2_image.jpg',
fullsize: 'https://bsky.social/about/adi/post_2_image.jpg',
alt: 'Placeholder image of interior design',
aspectRatio: {
height: 872,
width: 598,
},
},
],
},
replyCount: 3,
repostCount: 1,
likeCount: 4,
quoteCount: 0,
indexedAt: POST_2_DATE,
viewer: {
threadMuted: false,
embeddingDisabled: false,
},
labels: [],
},
},
{
post: {
uri: 'at://did:plc:h7fwnfejmmifveeea5eyxgkc/app.bsky.feed.post/3lnizna3g4f2t',
cid: 'bafyreiepn7obmlshliori4j34texpaukrqkyyu7cq6nmpzk4lkis7nqeae',
author: {
did: 'did:plc:h7fwnfejmmifveeea5eyxgkc',
handle: 'rodyalbuerne.bsky.social',
displayName: 'Rody Albuerne',
avatar: 'https://bsky.social/about/adi/post_3_avi.jpg',
viewer: {
muted: false,
blockedBy: false,
following: `at://${DID}/app.bsky.graph.follow/post3`,
},
labels: [],
createdAt: POST_3_DATE,
},
record: {
$type: 'app.bsky.feed.post',
createdAt: POST_3_DATE,
langs: ['en'],
text: 'Tinkering with the basics of traditional wooden joinery in my shop lately. Starting small with this ox, made using simple mortise and tenon joints.',
},
replyCount: 11,
repostCount: 97,
likeCount: 399,
quoteCount: 0,
indexedAt: POST_3_DATE,
viewer: {
threadMuted: false,
embeddingDisabled: false,
},
labels: [],
},
},
],
} satisfies AppBskyFeedGetFeed.OutputSchema
export const BOTTOM_BAR_AVI = 'https://bsky.social/about/adi/user_avi.jpg'
+59 -59
View File
@@ -74,8 +74,8 @@ msgstr ""
msgid "{0, plural, one {# second} other {# seconds}}" msgid "{0, plural, one {# second} other {# seconds}}"
msgstr "" msgstr ""
#: src/view/shell/bottom-bar/BottomBar.tsx:209 #: src/view/shell/bottom-bar/BottomBar.tsx:213
#: src/view/shell/bottom-bar/BottomBar.tsx:241 #: src/view/shell/bottom-bar/BottomBar.tsx:245
#: src/view/shell/Drawer.tsx:470 #: src/view/shell/Drawer.tsx:470
msgid "{0, plural, one {# unread item} other {# unread items}}" msgid "{0, plural, one {# unread item} other {# unread items}}"
msgstr "" msgstr ""
@@ -446,7 +446,7 @@ msgid "A new form of verification"
msgstr "" msgstr ""
#: src/Navigation.tsx:401 #: src/Navigation.tsx:401
#: src/screens/Settings/AboutSettings.tsx:72 #: src/screens/Settings/AboutSettings.tsx:75
#: src/screens/Settings/Settings.tsx:224 #: src/screens/Settings/Settings.tsx:224
#: src/screens/Settings/Settings.tsx:227 #: src/screens/Settings/Settings.tsx:227
msgid "About" msgid "About"
@@ -621,7 +621,7 @@ msgstr ""
msgid "Add muted words and tags" msgid "Add muted words and tags"
msgstr "" msgstr ""
#: src/view/com/composer/Composer.tsx:1306 #: src/view/com/composer/Composer.tsx:1308
msgid "Add new post" msgid "Add new post"
msgstr "" msgstr ""
@@ -822,7 +822,7 @@ msgstr ""
msgid "An error occurred while fetching the feed." msgid "An error occurred while fetching the feed."
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:336 #: src/components/StarterPack/ProfileStarterPacks.tsx:337
msgid "An error occurred while generating your starter pack. Want to try again?" msgid "An error occurred while generating your starter pack. Want to try again?"
msgstr "" msgstr ""
@@ -1119,7 +1119,7 @@ msgstr ""
msgid "Before creating a post, you must first verify your email." msgid "Before creating a post, you must first verify your email."
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:343 #: src/components/StarterPack/ProfileStarterPacks.tsx:344
msgid "Before creating a starter pack, you must first verify your email." msgid "Before creating a starter pack, you must first verify your email."
msgstr "" msgstr ""
@@ -1262,7 +1262,7 @@ msgstr ""
msgid "Bluesky Social Terms of Service" msgid "Bluesky Social Terms of Service"
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:303 #: src/components/StarterPack/ProfileStarterPacks.tsx:304
msgid "Bluesky will choose a set of recommended accounts from people in your network." msgid "Bluesky will choose a set of recommended accounts from people in your network."
msgstr "" msgstr ""
@@ -1519,7 +1519,7 @@ msgid "Changes hosting provider"
msgstr "" msgstr ""
#: src/Navigation.tsx:426 #: src/Navigation.tsx:426
#: src/view/shell/bottom-bar/BottomBar.tsx:205 #: src/view/shell/bottom-bar/BottomBar.tsx:209
#: src/view/shell/desktop/LeftNav.tsx:535 #: src/view/shell/desktop/LeftNav.tsx:535
#: src/view/shell/Drawer.tsx:438 #: src/view/shell/Drawer.tsx:438
msgid "Chat" msgid "Chat"
@@ -1587,7 +1587,7 @@ msgstr ""
msgid "Choose Feeds" msgid "Choose Feeds"
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:311 #: src/components/StarterPack/ProfileStarterPacks.tsx:312
msgid "Choose for me" msgid "Choose for me"
msgstr "" msgstr ""
@@ -1627,8 +1627,8 @@ msgstr ""
msgid "Clear all storage data (restart after this)" msgid "Clear all storage data (restart after this)"
msgstr "" msgstr ""
#: src/screens/Settings/AboutSettings.tsx:113 #: src/screens/Settings/AboutSettings.tsx:116
#: src/screens/Settings/AboutSettings.tsx:117 #: src/screens/Settings/AboutSettings.tsx:120
msgid "Clear image cache" msgid "Clear image cache"
msgstr "" msgstr ""
@@ -1807,7 +1807,7 @@ msgstr ""
msgid "Compose reply" msgid "Compose reply"
msgstr "" msgstr ""
#: src/view/com/composer/Composer.tsx:1688 #: src/view/com/composer/Composer.tsx:1690
msgid "Compressing video..." msgid "Compressing video..."
msgstr "" msgstr ""
@@ -1958,7 +1958,7 @@ msgstr ""
msgid "Copied" msgid "Copied"
msgstr "" msgstr ""
#: src/screens/Settings/AboutSettings.tsx:148 #: src/screens/Settings/AboutSettings.tsx:151
msgid "Copied build version to clipboard" msgid "Copied build version to clipboard"
msgstr "" msgstr ""
@@ -1976,7 +1976,7 @@ msgstr ""
msgid "Copied!" msgid "Copied!"
msgstr "" msgstr ""
#: src/screens/Settings/AboutSettings.tsx:124 #: src/screens/Settings/AboutSettings.tsx:127
msgid "Copies build version to clipboard" msgid "Copies build version to clipboard"
msgstr "" msgstr ""
@@ -2079,7 +2079,7 @@ msgstr ""
msgid "Could not process your video" msgid "Could not process your video"
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:293 #: src/components/StarterPack/ProfileStarterPacks.tsx:294
msgid "Create" msgid "Create"
msgstr "" msgstr ""
@@ -2087,20 +2087,20 @@ msgstr ""
msgid "Create a QR code for a starter pack" msgid "Create a QR code for a starter pack"
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:178 #: src/components/StarterPack/ProfileStarterPacks.tsx:179
#: src/components/StarterPack/ProfileStarterPacks.tsx:274 #: src/components/StarterPack/ProfileStarterPacks.tsx:275
#: src/Navigation.tsx:461 #: src/Navigation.tsx:461
msgid "Create a starter pack" msgid "Create a starter pack"
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:255 #: src/components/StarterPack/ProfileStarterPacks.tsx:256
msgid "Create a starter pack for me" msgid "Create a starter pack for me"
msgstr "" msgstr ""
#: src/view/com/auth/SplashScreen.tsx:55 #: src/view/com/auth/SplashScreen.tsx:55
#: src/view/com/auth/SplashScreen.web.tsx:117 #: src/view/com/auth/SplashScreen.web.tsx:117
#: src/view/shell/bottom-bar/BottomBar.tsx:315 #: src/view/shell/bottom-bar/BottomBar.tsx:319
#: src/view/shell/bottom-bar/BottomBar.tsx:320 #: src/view/shell/bottom-bar/BottomBar.tsx:324
#: src/view/shell/bottom-bar/BottomBarWeb.tsx:199 #: src/view/shell/bottom-bar/BottomBarWeb.tsx:199
#: src/view/shell/bottom-bar/BottomBarWeb.tsx:204 #: src/view/shell/bottom-bar/BottomBarWeb.tsx:204
#: src/view/shell/NavSignupCard.tsx:47 #: src/view/shell/NavSignupCard.tsx:47
@@ -2126,7 +2126,7 @@ msgstr ""
msgid "Create an avatar instead" msgid "Create an avatar instead"
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:185 #: src/components/StarterPack/ProfileStarterPacks.tsx:186
msgid "Create another" msgid "Create another"
msgstr "" msgstr ""
@@ -2350,12 +2350,12 @@ msgstr ""
msgid "Detach quote post?" msgid "Detach quote post?"
msgstr "" msgstr ""
#: src/screens/Settings/AboutSettings.tsx:137 #: src/screens/Settings/AboutSettings.tsx:140
msgctxt "toast" msgctxt "toast"
msgid "Developer mode disabled" msgid "Developer mode disabled"
msgstr "" msgstr ""
#: src/screens/Settings/AboutSettings.tsx:131 #: src/screens/Settings/AboutSettings.tsx:134
msgctxt "toast" msgctxt "toast"
msgid "Developer mode enabled" msgid "Developer mode enabled"
msgstr "" msgstr ""
@@ -2435,7 +2435,7 @@ msgstr ""
msgid "Dismiss" msgid "Dismiss"
msgstr "" msgstr ""
#: src/view/com/composer/Composer.tsx:1612 #: src/view/com/composer/Composer.tsx:1614
msgid "Dismiss error" msgid "Dismiss error"
msgstr "" msgstr ""
@@ -2886,7 +2886,7 @@ msgstr ""
msgid "Entertainment" msgid "Entertainment"
msgstr "" msgstr ""
#: src/view/com/composer/Composer.tsx:1697 #: src/view/com/composer/Composer.tsx:1699
#: src/view/com/util/error/ErrorScreen.tsx:42 #: src/view/com/util/error/ErrorScreen.tsx:42
msgid "Error" msgid "Error"
msgstr "" msgstr ""
@@ -3494,7 +3494,7 @@ msgstr ""
msgid "Gallery" msgid "Gallery"
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:300 #: src/components/StarterPack/ProfileStarterPacks.tsx:301
msgid "Generate a starter pack" msgid "Generate a starter pack"
msgstr "" msgstr ""
@@ -3780,7 +3780,7 @@ msgstr ""
#: src/Navigation.tsx:645 #: src/Navigation.tsx:645
#: src/Navigation.tsx:665 #: src/Navigation.tsx:665
#: src/view/shell/bottom-bar/BottomBar.tsx:162 #: src/view/shell/bottom-bar/BottomBar.tsx:166
#: src/view/shell/desktop/LeftNav.tsx:599 #: src/view/shell/desktop/LeftNav.tsx:599
#: src/view/shell/Drawer.tsx:412 #: src/view/shell/Drawer.tsx:412
msgid "Home" msgid "Home"
@@ -3871,12 +3871,12 @@ msgstr ""
msgid "Image" msgid "Image"
msgstr "" msgstr ""
#: src/screens/Settings/AboutSettings.tsx:61 #: src/screens/Settings/AboutSettings.tsx:64
msgid "Image cache cleared" msgid "Image cache cleared"
msgstr "" msgstr ""
#. Android-only toast message which includes amount of space freed using localized number formatting #. Android-only toast message which includes amount of space freed using localized number formatting
#: src/screens/Settings/AboutSettings.tsx:47 #: src/screens/Settings/AboutSettings.tsx:50
msgid "Image cache cleared, freed {0}" msgid "Image cache cleared, freed {0}"
msgstr "" msgstr ""
@@ -3997,7 +3997,7 @@ msgstr ""
msgid "It's just you right now! Add more people to your starter pack by searching above." msgid "It's just you right now! Add more people to your starter pack by searching above."
msgstr "" msgstr ""
#: src/view/com/composer/Composer.tsx:1631 #: src/view/com/composer/Composer.tsx:1633
msgid "Job ID: {0}" msgid "Job ID: {0}"
msgstr "" msgstr ""
@@ -4158,7 +4158,7 @@ msgstr ""
msgid "left to go." msgid "left to go."
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:316 #: src/components/StarterPack/ProfileStarterPacks.tsx:317
msgid "Let me choose" msgid "Let me choose"
msgstr "" msgstr ""
@@ -4374,7 +4374,7 @@ msgstr ""
msgid "Looks like you're missing a following feed. <0>Click here to add one.</0>" msgid "Looks like you're missing a following feed. <0>Click here to add one.</0>"
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:269 #: src/components/StarterPack/ProfileStarterPacks.tsx:270
msgid "Make one for me" msgid "Make one for me"
msgstr "" msgstr ""
@@ -5039,7 +5039,7 @@ msgstr ""
#: src/Navigation.tsx:655 #: src/Navigation.tsx:655
#: src/view/screens/Notifications.tsx:128 #: src/view/screens/Notifications.tsx:128
#: src/view/shell/bottom-bar/BottomBar.tsx:236 #: src/view/shell/bottom-bar/BottomBar.tsx:240
#: src/view/shell/desktop/LeftNav.tsx:636 #: src/view/shell/desktop/LeftNav.tsx:636
#: src/view/shell/Drawer.tsx:465 #: src/view/shell/Drawer.tsx:465
msgid "Notifications" msgid "Notifications"
@@ -5141,8 +5141,8 @@ msgid "Oops, something went wrong!"
msgstr "" msgstr ""
#: src/components/Lists.tsx:173 #: src/components/Lists.tsx:173
#: src/components/StarterPack/ProfileStarterPacks.tsx:325 #: src/components/StarterPack/ProfileStarterPacks.tsx:326
#: src/components/StarterPack/ProfileStarterPacks.tsx:334 #: src/components/StarterPack/ProfileStarterPacks.tsx:335
#: src/screens/Settings/AppPasswords.tsx:59 #: src/screens/Settings/AppPasswords.tsx:59
#: src/screens/Settings/components/ChangeHandleDialog.tsx:106 #: src/screens/Settings/components/ChangeHandleDialog.tsx:106
#: src/screens/Settings/NotificationSettings.tsx:54 #: src/screens/Settings/NotificationSettings.tsx:54
@@ -5172,7 +5172,7 @@ msgid "Open drawer menu"
msgstr "" msgstr ""
#: src/screens/Messages/components/MessageInput.web.tsx:181 #: src/screens/Messages/components/MessageInput.web.tsx:181
#: src/view/com/composer/Composer.tsx:1292 #: src/view/com/composer/Composer.tsx:1293
msgid "Open emoji picker" msgid "Open emoji picker"
msgstr "" msgstr ""
@@ -5185,7 +5185,7 @@ msgstr ""
msgid "Open feed options menu" msgid "Open feed options menu"
msgstr "" msgstr ""
#: src/components/dms/EmojiPopup.android.tsx:28 #: src/components/dms/EmojiPopup.android.tsx:27
msgid "Open full emoji list" msgid "Open full emoji list"
msgstr "" msgstr ""
@@ -5266,7 +5266,7 @@ msgstr ""
msgid "Opens device photo gallery" msgid "Opens device photo gallery"
msgstr "" msgstr ""
#: src/view/com/composer/Composer.tsx:1293 #: src/view/com/composer/Composer.tsx:1294
msgid "Opens emoji picker" msgid "Opens emoji picker"
msgstr "" msgstr ""
@@ -5774,15 +5774,15 @@ msgid "Privacy and Security"
msgstr "" msgstr ""
#: src/Navigation.tsx:301 #: src/Navigation.tsx:301
#: src/screens/Settings/AboutSettings.tsx:89
#: src/screens/Settings/AboutSettings.tsx:92 #: src/screens/Settings/AboutSettings.tsx:92
#: src/screens/Settings/AboutSettings.tsx:95
#: src/view/screens/PrivacyPolicy.tsx:31 #: src/view/screens/PrivacyPolicy.tsx:31
#: src/view/shell/Drawer.tsx:650 #: src/view/shell/Drawer.tsx:650
#: src/view/shell/Drawer.tsx:651 #: src/view/shell/Drawer.tsx:651
msgid "Privacy Policy" msgid "Privacy Policy"
msgstr "" msgstr ""
#: src/view/com/composer/Composer.tsx:1694 #: src/view/com/composer/Composer.tsx:1696
msgid "Processing video..." msgid "Processing video..."
msgstr "" msgstr ""
@@ -5796,7 +5796,7 @@ msgstr ""
msgid "profile" msgid "profile"
msgstr "" msgstr ""
#: src/view/shell/bottom-bar/BottomBar.tsx:286 #: src/view/shell/bottom-bar/BottomBar.tsx:290
#: src/view/shell/desktop/LeftNav.tsx:691 #: src/view/shell/desktop/LeftNav.tsx:691
#: src/view/shell/Drawer.tsx:74 #: src/view/shell/Drawer.tsx:74
#: src/view/shell/Drawer.tsx:542 #: src/view/shell/Drawer.tsx:542
@@ -6412,7 +6412,7 @@ msgstr ""
#: src/components/Error.tsx:65 #: src/components/Error.tsx:65
#: src/components/Lists.tsx:110 #: src/components/Lists.tsx:110
#: src/components/moderation/ReportDialog/index.tsx:221 #: src/components/moderation/ReportDialog/index.tsx:221
#: src/components/StarterPack/ProfileStarterPacks.tsx:339 #: src/components/StarterPack/ProfileStarterPacks.tsx:340
#: src/screens/Login/LoginForm.tsx:323 #: src/screens/Login/LoginForm.tsx:323
#: src/screens/Login/LoginForm.tsx:330 #: src/screens/Login/LoginForm.tsx:330
#: src/screens/Messages/ChatList.tsx:253 #: src/screens/Messages/ChatList.tsx:253
@@ -6473,7 +6473,7 @@ msgstr ""
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: src/view/com/lightbox/ImageViewing/index.tsx:608 #: src/view/com/lightbox/ImageViewing/index.tsx:610
#: src/view/com/modals/CreateOrEditList.tsx:325 #: src/view/com/modals/CreateOrEditList.tsx:325
msgctxt "action" msgctxt "action"
msgid "Save" msgid "Save"
@@ -6556,7 +6556,7 @@ msgstr ""
#: src/components/forms/SearchInput.tsx:36 #: src/components/forms/SearchInput.tsx:36
#: src/screens/Search/Shell.tsx:307 #: src/screens/Search/Shell.tsx:307
#: src/screens/Search/Shell.tsx:464 #: src/screens/Search/Shell.tsx:464
#: src/view/shell/bottom-bar/BottomBar.tsx:182 #: src/view/shell/bottom-bar/BottomBar.tsx:186
msgid "Search" msgid "Search"
msgstr "" msgstr ""
@@ -6884,7 +6884,7 @@ msgstr ""
msgid "Share" msgid "Share"
msgstr "" msgstr ""
#: src/view/com/lightbox/ImageViewing/index.tsx:617 #: src/view/com/lightbox/ImageViewing/index.tsx:619
msgctxt "action" msgctxt "action"
msgid "Share" msgid "Share"
msgstr "" msgstr ""
@@ -7073,8 +7073,8 @@ msgstr ""
#: src/view/com/auth/SplashScreen.tsx:69 #: src/view/com/auth/SplashScreen.tsx:69
#: src/view/com/auth/SplashScreen.web.tsx:123 #: src/view/com/auth/SplashScreen.web.tsx:123
#: src/view/com/auth/SplashScreen.web.tsx:131 #: src/view/com/auth/SplashScreen.web.tsx:131
#: src/view/shell/bottom-bar/BottomBar.tsx:325 #: src/view/shell/bottom-bar/BottomBar.tsx:329
#: src/view/shell/bottom-bar/BottomBar.tsx:330 #: src/view/shell/bottom-bar/BottomBar.tsx:334
#: src/view/shell/bottom-bar/BottomBarWeb.tsx:209 #: src/view/shell/bottom-bar/BottomBarWeb.tsx:209
#: src/view/shell/bottom-bar/BottomBarWeb.tsx:214 #: src/view/shell/bottom-bar/BottomBarWeb.tsx:214
#: src/view/shell/NavSignupCard.tsx:57 #: src/view/shell/NavSignupCard.tsx:57
@@ -7217,7 +7217,7 @@ msgstr ""
msgid "Something wrong? Let us know." msgid "Something wrong? Let us know."
msgstr "" msgstr ""
#: src/App.native.tsx:122 #: src/App.native.tsx:121
#: src/App.web.tsx:98 #: src/App.web.tsx:98
msgid "Sorry! Your session expired. Please sign in again." msgid "Sorry! Your session expired. Please sign in again."
msgstr "" msgstr ""
@@ -7303,12 +7303,12 @@ msgstr ""
msgid "Starter Packs" msgid "Starter Packs"
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:247 #: src/components/StarterPack/ProfileStarterPacks.tsx:248
msgid "Starter packs let you easily share your favorite feeds and people with your friends." msgid "Starter packs let you easily share your favorite feeds and people with your friends."
msgstr "" msgstr ""
#: src/screens/Settings/AboutSettings.tsx:97
#: src/screens/Settings/AboutSettings.tsx:100 #: src/screens/Settings/AboutSettings.tsx:100
#: src/screens/Settings/AboutSettings.tsx:103
msgid "Status Page" msgid "Status Page"
msgstr "" msgstr ""
@@ -7430,8 +7430,8 @@ msgstr ""
msgid "System" msgid "System"
msgstr "" msgstr ""
#: src/screens/Settings/AboutSettings.tsx:104
#: src/screens/Settings/AboutSettings.tsx:107 #: src/screens/Settings/AboutSettings.tsx:107
#: src/screens/Settings/AboutSettings.tsx:110
#: src/screens/Settings/Settings.tsx:380 #: src/screens/Settings/Settings.tsx:380
msgid "System log" msgid "System log"
msgstr "" msgstr ""
@@ -7485,8 +7485,8 @@ msgid "Terms"
msgstr "" msgstr ""
#: src/Navigation.tsx:306 #: src/Navigation.tsx:306
#: src/screens/Settings/AboutSettings.tsx:81
#: src/screens/Settings/AboutSettings.tsx:84 #: src/screens/Settings/AboutSettings.tsx:84
#: src/screens/Settings/AboutSettings.tsx:87
#: src/view/screens/TermsOfService.tsx:31 #: src/view/screens/TermsOfService.tsx:31
#: src/view/shell/Drawer.tsx:643 #: src/view/shell/Drawer.tsx:643
#: src/view/shell/Drawer.tsx:645 #: src/view/shell/Drawer.tsx:645
@@ -8369,7 +8369,7 @@ msgstr ""
msgid "Uploading link thumbnail..." msgid "Uploading link thumbnail..."
msgstr "" msgstr ""
#: src/view/com/composer/Composer.tsx:1691 #: src/view/com/composer/Composer.tsx:1693
msgid "Uploading video..." msgid "Uploading video..."
msgstr "" msgstr ""
@@ -8555,8 +8555,8 @@ msgstr ""
msgid "Verify Your Email" msgid "Verify Your Email"
msgstr "" msgstr ""
#: src/screens/Settings/AboutSettings.tsx:123 #: src/screens/Settings/AboutSettings.tsx:126
#: src/screens/Settings/AboutSettings.tsx:152 #: src/screens/Settings/AboutSettings.tsx:155
msgid "Version {appVersion}" msgid "Version {appVersion}"
msgstr "" msgstr ""
@@ -8599,7 +8599,7 @@ msgstr ""
msgid "Video settings" msgid "Video settings"
msgstr "" msgstr ""
#: src/view/com/composer/Composer.tsx:1701 #: src/view/com/composer/Composer.tsx:1703
msgid "Video uploaded" msgid "Video uploaded"
msgstr "" msgstr ""
@@ -8655,7 +8655,7 @@ msgstr ""
msgid "View details for reporting a copyright violation" msgid "View details for reporting a copyright violation"
msgstr "" msgstr ""
#: src/view/com/posts/ViewFullThread.tsx:56 #: src/view/com/posts/ViewFullThread.tsx:59
msgid "View full thread" msgid "View full thread"
msgstr "" msgstr ""
@@ -9162,7 +9162,7 @@ msgstr ""
msgid "You have temporarily reached the limit for video uploads. Please try again later." msgid "You have temporarily reached the limit for video uploads. Please try again later."
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:244 #: src/components/StarterPack/ProfileStarterPacks.tsx:245
msgid "You haven't created a starter pack yet!" msgid "You haven't created a starter pack yet!"
msgstr "" msgstr ""
@@ -9199,7 +9199,7 @@ msgstr ""
msgid "You must be 13 years of age or older to create an account." msgid "You must be 13 years of age or older to create an account."
msgstr "" msgstr ""
#: src/components/StarterPack/ProfileStarterPacks.tsx:327 #: src/components/StarterPack/ProfileStarterPacks.tsx:328
msgid "You must be following at least seven other people to generate a starter pack." msgid "You must be following at least seven other people to generate a starter pack."
msgstr "" msgstr ""
+29 -2
View File
@@ -12,9 +12,10 @@ import {Statsig} from 'statsig-react-native-expo'
import {appVersion, BUNDLE_DATE, bundleInfo} from '#/lib/app-info' import {appVersion, BUNDLE_DATE, bundleInfo} from '#/lib/app-info'
import {STATUS_PAGE_URL} from '#/lib/constants' import {STATUS_PAGE_URL} from '#/lib/constants'
import {type CommonNavigatorParams} from '#/lib/routes/types' import {type CommonNavigatorParams} from '#/lib/routes/types'
import {isAndroid, isNative} from '#/platform/detection' import {isAndroid, isIOS, isNative} from '#/platform/detection'
import * as Toast from '#/view/com/util/Toast' import * as Toast from '#/view/com/util/Toast'
import * as SettingsList from '#/screens/Settings/components/SettingsList' import * as SettingsList from '#/screens/Settings/components/SettingsList'
import {Atom_Stroke2_Corner0_Rounded as AtomIcon} from '#/components/icons/Atom'
import {BroomSparkle_Stroke2_Corner2_Rounded as BroomSparkleIcon} from '#/components/icons/BroomSparkle' import {BroomSparkle_Stroke2_Corner2_Rounded as BroomSparkleIcon} from '#/components/icons/BroomSparkle'
import {CodeLines_Stroke2_Corner2_Rounded as CodeLinesIcon} from '#/components/icons/CodeLines' import {CodeLines_Stroke2_Corner2_Rounded as CodeLinesIcon} from '#/components/icons/CodeLines'
import {Globe_Stroke2_Corner0_Rounded as GlobeIcon} from '#/components/icons/Globe' import {Globe_Stroke2_Corner0_Rounded as GlobeIcon} from '#/components/icons/Globe'
@@ -22,6 +23,7 @@ import {Newspaper_Stroke2_Corner2_Rounded as NewspaperIcon} from '#/components/i
import {Wrench_Stroke2_Corner2_Rounded as WrenchIcon} from '#/components/icons/Wrench' import {Wrench_Stroke2_Corner2_Rounded as WrenchIcon} from '#/components/icons/Wrench'
import * as Layout from '#/components/Layout' import * as Layout from '#/components/Layout'
import {Loader} from '#/components/Loader' import {Loader} from '#/components/Loader'
import {useDemoMode} from '#/storage/hooks/demo-mode'
import {useDevMode} from '#/storage/hooks/dev-mode' import {useDevMode} from '#/storage/hooks/dev-mode'
import {OTAInfo} from './components/OTAInfo' import {OTAInfo} from './components/OTAInfo'
@@ -29,6 +31,7 @@ type Props = NativeStackScreenProps<CommonNavigatorParams, 'AboutSettings'>
export function AboutSettingsScreen({}: Props) { export function AboutSettingsScreen({}: Props) {
const {_, i18n} = useLingui() const {_, i18n} = useLingui()
const [devModeEnabled, setDevModeEnabled] = useDevMode() const [devModeEnabled, setDevModeEnabled] = useDevMode()
const [demoModeEnabled, setDemoModeEnabled] = useDemoMode()
const stableID = useMemo(() => Statsig.getStableID(), []) const stableID = useMemo(() => Statsig.getStableID(), [])
const {mutate: onClearImageCache, isPending: isClearingImageCache} = const {mutate: onClearImageCache, isPending: isClearingImageCache} =
@@ -153,7 +156,31 @@ export function AboutSettingsScreen({}: Props) {
</SettingsList.ItemText> </SettingsList.ItemText>
<SettingsList.BadgeText>{bundleInfo}</SettingsList.BadgeText> <SettingsList.BadgeText>{bundleInfo}</SettingsList.BadgeText>
</SettingsList.PressableItem> </SettingsList.PressableItem>
{devModeEnabled && <OTAInfo />} {devModeEnabled && (
<>
<OTAInfo />
{isIOS && (
<SettingsList.PressableItem
onPress={() => {
const newDemoModeEnabled = !demoModeEnabled
setDemoModeEnabled(newDemoModeEnabled)
Toast.show(
'Demo mode ' +
(newDemoModeEnabled ? 'enabled' : 'disabled'),
)
}}
label={
demoModeEnabled ? 'Disable demo mode' : 'Enable demo mode'
}
disabled={isClearingImageCache}>
<SettingsList.ItemIcon icon={AtomIcon} />
<SettingsList.ItemText>
{demoModeEnabled ? 'Disable demo mode' : 'Enable demo mode'}
</SettingsList.ItemText>
</SettingsList.PressableItem>
)}
</>
)}
</SettingsList.Container> </SettingsList.Container>
</Layout.Content> </Layout.Content>
</Layout.Screen> </Layout.Screen>
+13 -9
View File
@@ -1,31 +1,32 @@
import React, {useCallback, useEffect, useRef} from 'react' import React, {useCallback, useEffect, useRef} from 'react'
import {AppState} from 'react-native' import {AppState} from 'react-native'
import { import {
AppBskyActorDefs, type AppBskyActorDefs,
AppBskyFeedDefs, AppBskyFeedDefs,
AppBskyFeedPost, type AppBskyFeedPost,
AtUri, AtUri,
BskyAgent, type BskyAgent,
moderatePost, moderatePost,
ModerationDecision, type ModerationDecision,
} from '@atproto/api' } from '@atproto/api'
import { import {
InfiniteData, type InfiniteData,
QueryClient, type QueryClient,
QueryKey, type QueryKey,
useInfiniteQuery, useInfiniteQuery,
} from '@tanstack/react-query' } from '@tanstack/react-query'
import {AuthorFeedAPI} from '#/lib/api/feed/author' import {AuthorFeedAPI} from '#/lib/api/feed/author'
import {CustomFeedAPI} from '#/lib/api/feed/custom' import {CustomFeedAPI} from '#/lib/api/feed/custom'
import {DemoFeedAPI} from '#/lib/api/feed/demo'
import {FollowingFeedAPI} from '#/lib/api/feed/following' import {FollowingFeedAPI} from '#/lib/api/feed/following'
import {HomeFeedAPI} from '#/lib/api/feed/home' import {HomeFeedAPI} from '#/lib/api/feed/home'
import {LikesFeedAPI} from '#/lib/api/feed/likes' import {LikesFeedAPI} from '#/lib/api/feed/likes'
import {ListFeedAPI} from '#/lib/api/feed/list' import {ListFeedAPI} from '#/lib/api/feed/list'
import {MergeFeedAPI} from '#/lib/api/feed/merge' import {MergeFeedAPI} from '#/lib/api/feed/merge'
import {FeedAPI, ReasonFeedSource} from '#/lib/api/feed/types' import {type FeedAPI, type ReasonFeedSource} from '#/lib/api/feed/types'
import {aggregateUserInterests} from '#/lib/api/feed/utils' import {aggregateUserInterests} from '#/lib/api/feed/utils'
import {FeedTuner, FeedTunerFn} from '#/lib/api/feed-manip' import {FeedTuner, type FeedTunerFn} from '#/lib/api/feed-manip'
import {DISCOVER_FEED_URI} from '#/lib/constants' import {DISCOVER_FEED_URI} from '#/lib/constants'
import {BSKY_FEED_OWNER_DIDS} from '#/lib/constants' import {BSKY_FEED_OWNER_DIDS} from '#/lib/constants'
import {logger} from '#/logger' import {logger} from '#/logger'
@@ -59,6 +60,7 @@ export type FeedDescriptor =
| `feedgen|${FeedUri}` | `feedgen|${FeedUri}`
| `likes|${ActorDid}` | `likes|${ActorDid}`
| `list|${ListUri}` | `list|${ListUri}`
| 'demo'
export interface FeedParams { export interface FeedParams {
mergeFeedEnabled?: boolean mergeFeedEnabled?: boolean
mergeFeedSources?: string[] mergeFeedSources?: string[]
@@ -483,6 +485,8 @@ function createApi({
} else if (feedDesc.startsWith('list')) { } else if (feedDesc.startsWith('list')) {
const [_, list] = feedDesc.split('|') const [_, list] = feedDesc.split('|')
return new ListFeedAPI({agent, feedParams: {list}}) return new ListFeedAPI({agent, feedParams: {list}})
} else if (feedDesc === 'demo') {
return new DemoFeedAPI({agent})
} else { } else {
// shouldnt happen // shouldnt happen
return new FollowingFeedAPI({agent}) return new FollowingFeedAPI({agent})
+7
View File
@@ -0,0 +1,7 @@
import {device, useStorage} from '#/storage'
export function useDemoMode() {
const [demoMode = false, setDemoMode] = useStorage(device, ['demoMode'])
return [demoMode, setDemoMode] as const
}
+1
View File
@@ -10,6 +10,7 @@ export type Device = {
} }
trendingBetaEnabled: boolean trendingBetaEnabled: boolean
devMode: boolean devMode: boolean
demoMode: boolean
} }
export type Account = { export type Account = {
+58 -7
View File
@@ -8,28 +8,36 @@ import {useOTAUpdates} from '#/lib/hooks/useOTAUpdates'
import {useSetTitle} from '#/lib/hooks/useSetTitle' import {useSetTitle} from '#/lib/hooks/useSetTitle'
import {useRequestNotificationsPermission} from '#/lib/notifications/notifications' import {useRequestNotificationsPermission} from '#/lib/notifications/notifications'
import { import {
HomeTabNavigatorParams, type HomeTabNavigatorParams,
NativeStackScreenProps, type NativeStackScreenProps,
} from '#/lib/routes/types' } from '#/lib/routes/types'
import {logEvent} from '#/lib/statsig/statsig' import {logEvent} from '#/lib/statsig/statsig'
import {isWeb} from '#/platform/detection' import {isWeb} from '#/platform/detection'
import {emitSoftReset} from '#/state/events' import {emitSoftReset} from '#/state/events'
import {SavedFeedSourceInfo, usePinnedFeedsInfos} from '#/state/queries/feed' import {
import {FeedDescriptor, FeedParams} from '#/state/queries/post-feed' type SavedFeedSourceInfo,
usePinnedFeedsInfos,
} from '#/state/queries/feed'
import {type FeedDescriptor, type FeedParams} from '#/state/queries/post-feed'
import {usePreferencesQuery} from '#/state/queries/preferences' import {usePreferencesQuery} from '#/state/queries/preferences'
import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types' import {type UsePreferencesQueryResponse} from '#/state/queries/preferences/types'
import {useSession} from '#/state/session' import {useSession} from '#/state/session'
import {useSetMinimalShellMode} from '#/state/shell' import {useSetMinimalShellMode} from '#/state/shell'
import {useLoggedOutViewControls} from '#/state/shell/logged-out' import {useLoggedOutViewControls} from '#/state/shell/logged-out'
import {useSelectedFeed, useSetSelectedFeed} from '#/state/shell/selected-feed' import {useSelectedFeed, useSetSelectedFeed} from '#/state/shell/selected-feed'
import {FeedPage} from '#/view/com/feeds/FeedPage' import {FeedPage} from '#/view/com/feeds/FeedPage'
import {HomeHeader} from '#/view/com/home/HomeHeader' import {HomeHeader} from '#/view/com/home/HomeHeader'
import {Pager, PagerRef, RenderTabBarFnProps} from '#/view/com/pager/Pager' import {
Pager,
type PagerRef,
type RenderTabBarFnProps,
} from '#/view/com/pager/Pager'
import {CustomFeedEmptyState} from '#/view/com/posts/CustomFeedEmptyState' import {CustomFeedEmptyState} from '#/view/com/posts/CustomFeedEmptyState'
import {FollowingEmptyState} from '#/view/com/posts/FollowingEmptyState' import {FollowingEmptyState} from '#/view/com/posts/FollowingEmptyState'
import {FollowingEndOfFeed} from '#/view/com/posts/FollowingEndOfFeed' import {FollowingEndOfFeed} from '#/view/com/posts/FollowingEndOfFeed'
import {NoFeedsPinned} from '#/screens/Home/NoFeedsPinned' import {NoFeedsPinned} from '#/screens/Home/NoFeedsPinned'
import * as Layout from '#/components/Layout' import * as Layout from '#/components/Layout'
import {useDemoMode} from '#/storage/hooks/demo-mode'
type Props = NativeStackScreenProps<HomeTabNavigatorParams, 'Home' | 'Start'> type Props = NativeStackScreenProps<HomeTabNavigatorParams, 'Home' | 'Start'>
export function HomeScreen(props: Props) { export function HomeScreen(props: Props) {
@@ -184,8 +192,22 @@ function HomeScreenReady({
[setMinimalShellMode], [setMinimalShellMode],
) )
const [demoMode] = useDemoMode()
const renderTabBar = React.useCallback( const renderTabBar = React.useCallback(
(props: RenderTabBarFnProps) => { (props: RenderTabBarFnProps) => {
if (demoMode) {
return (
<HomeHeader
key="FEEDS_TAB_BAR"
{...props}
testID="homeScreenFeedTabs"
onPressSelected={onPressSelected}
// @ts-ignore
feeds={[{displayName: 'Following'}, {displayName: 'Discover'}]}
/>
)
}
return ( return (
<HomeHeader <HomeHeader
key="FEEDS_TAB_BAR" key="FEEDS_TAB_BAR"
@@ -196,7 +218,7 @@ function HomeScreenReady({
/> />
) )
}, },
[onPressSelected, pinnedFeedInfos], [onPressSelected, pinnedFeedInfos, demoMode],
) )
const renderFollowingEmptyState = React.useCallback(() => { const renderFollowingEmptyState = React.useCallback(() => {
@@ -218,6 +240,35 @@ function HomeScreenReady({
} }
}, [preferences]) }, [preferences])
if (demoMode) {
return (
<Pager
ref={pagerRef}
testID="homeScreen"
onPageSelected={onPageSelected}
onPageScrollStateChanged={onPageScrollStateChanged}
renderTabBar={renderTabBar}
initialPage={selectedIndex}>
<FeedPage
testID="demoFeedPage"
isPageFocused
isPageAdjacent={false}
feed="demo"
renderEmptyState={renderCustomFeedEmptyState}
feedInfo={pinnedFeedInfos[0]}
/>
<FeedPage
testID="customFeedPage"
isPageFocused
isPageAdjacent={false}
feed={`feedgen|${PROD_DEFAULT_FEED('whats-hot')}`}
renderEmptyState={renderCustomFeedEmptyState}
feedInfo={pinnedFeedInfos[0]}
/>
</Pager>
)
}
return hasSession ? ( return hasSession ? (
<Pager <Pager
key={allFeeds.join(',')} key={allFeeds.join(',')}
+9 -5
View File
@@ -1,13 +1,14 @@
import React, {ComponentProps} from 'react' import React, {type ComponentProps} from 'react'
import {GestureResponderEvent, View} from 'react-native' import {type GestureResponderEvent, View} from 'react-native'
import Animated from 'react-native-reanimated' import Animated from 'react-native-reanimated'
import {useSafeAreaInsets} from 'react-native-safe-area-context' import {useSafeAreaInsets} from 'react-native-safe-area-context'
import {msg, plural, Trans} from '@lingui/macro' import {msg, plural, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {BottomTabBarProps} from '@react-navigation/bottom-tabs' import {type BottomTabBarProps} from '@react-navigation/bottom-tabs'
import {StackActions} from '@react-navigation/native' import {StackActions} from '@react-navigation/native'
import {PressableScale} from '#/lib/custom-animations/PressableScale' import {PressableScale} from '#/lib/custom-animations/PressableScale'
import {BOTTOM_BAR_AVI} from '#/lib/demo'
import {useHaptics} from '#/lib/haptics' import {useHaptics} from '#/lib/haptics'
import {useDedupe} from '#/lib/hooks/useDedupe' import {useDedupe} from '#/lib/hooks/useDedupe'
import {useMinimalShellFooterTransform} from '#/lib/hooks/useMinimalShellTransform' import {useMinimalShellFooterTransform} from '#/lib/hooks/useMinimalShellTransform'
@@ -47,6 +48,7 @@ import {
Message_Stroke2_Corner0_Rounded as Message, Message_Stroke2_Corner0_Rounded as Message,
Message_Stroke2_Corner0_Rounded_Filled as MessageFilled, Message_Stroke2_Corner0_Rounded_Filled as MessageFilled,
} from '#/components/icons/Message' } from '#/components/icons/Message'
import {useDemoMode} from '#/storage/hooks/demo-mode'
import {styles} from './BottomBarStyles' import {styles} from './BottomBarStyles'
type TabOptions = type TabOptions =
@@ -124,6 +126,8 @@ export function BottomBar({navigation}: BottomTabBarProps) {
accountSwitchControl.open() accountSwitchControl.open()
}, [accountSwitchControl, playHaptic]) }, [accountSwitchControl, playHaptic])
const [demoMode] = useDemoMode()
return ( return (
<> <>
<SwitchAccountDialog control={accountSwitchControl} /> <SwitchAccountDialog control={accountSwitchControl} />
@@ -259,7 +263,7 @@ export function BottomBar({navigation}: BottomTabBarProps) {
{borderColor: pal.text.color}, {borderColor: pal.text.color},
]}> ]}>
<UserAvatar <UserAvatar
avatar={profile?.avatar} avatar={demoMode ? BOTTOM_BAR_AVI : profile?.avatar}
size={iconWidth - 3} size={iconWidth - 3}
// See https://github.com/bluesky-social/social-app/pull/1801: // See https://github.com/bluesky-social/social-app/pull/1801:
usePlainRNImage={true} usePlainRNImage={true}
@@ -270,7 +274,7 @@ export function BottomBar({navigation}: BottomTabBarProps) {
<View <View
style={[styles.ctrlIcon, pal.text, styles.profileIcon]}> style={[styles.ctrlIcon, pal.text, styles.profileIcon]}>
<UserAvatar <UserAvatar
avatar={profile?.avatar} avatar={demoMode ? BOTTOM_BAR_AVI : profile?.avatar}
size={iconWidth - 3} size={iconWidth - 3}
// See https://github.com/bluesky-social/social-app/pull/1801: // See https://github.com/bluesky-social/social-app/pull/1801:
usePlainRNImage={true} usePlainRNImage={true}
+16 -16
View File
@@ -3859,7 +3859,7 @@
xcode "^3.0.1" xcode "^3.0.1"
xml2js "0.6.0" xml2js "0.6.0"
"@expo/config-plugins@~10.0.0", "@expo/config-plugins@~10.0.1", "@expo/config-plugins@~10.0.2": "@expo/config-plugins@~10.0.1", "@expo/config-plugins@~10.0.2":
version "10.0.2" version "10.0.2"
resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-10.0.2.tgz#040867991e9c8c527b4f5c13a47bcf040a7479fe" resolved "https://registry.yarnpkg.com/@expo/config-plugins/-/config-plugins-10.0.2.tgz#040867991e9c8c527b4f5c13a47bcf040a7479fe"
integrity sha512-TzUn3pPdpwCS0yYaSlZOClgDmCX8N4I2lfgitX5oStqmvpPtB+vqtdyqsVM02fQ2tlJIAqwBW+NHaHqqy8Jv7g== integrity sha512-TzUn3pPdpwCS0yYaSlZOClgDmCX8N4I2lfgitX5oStqmvpPtB+vqtdyqsVM02fQ2tlJIAqwBW+NHaHqqy8Jv7g==
@@ -5126,10 +5126,10 @@
resolved "https://registry.yarnpkg.com/@miblanchard/react-native-slider/-/react-native-slider-2.6.0.tgz#9f78c805d637ffaff0e3e7429932d2995a67edc9" resolved "https://registry.yarnpkg.com/@miblanchard/react-native-slider/-/react-native-slider-2.6.0.tgz#9f78c805d637ffaff0e3e7429932d2995a67edc9"
integrity sha512-o7hk/f/8vkqh6QNR5L52m+ws846fQeD/qNCC9CCSRdBqjq66KiCgbxzlhRzKM/gbtxcvMYMIEEJ1yes5cr6I3A== integrity sha512-o7hk/f/8vkqh6QNR5L52m+ws846fQeD/qNCC9CCSRdBqjq66KiCgbxzlhRzKM/gbtxcvMYMIEEJ1yes5cr6I3A==
"@mozzius/expo-dynamic-app-icon@1.5.0": "@mozzius/expo-dynamic-app-icon@^1.5.0":
version "1.5.0" version "1.6.0"
resolved "https://registry.yarnpkg.com/@mozzius/expo-dynamic-app-icon/-/expo-dynamic-app-icon-1.5.0.tgz#c5f88c309965b6d6b89cfd5e2c00faa7bda736af" resolved "https://registry.yarnpkg.com/@mozzius/expo-dynamic-app-icon/-/expo-dynamic-app-icon-1.6.0.tgz#baed590c733a1c5d09b244c115abc7248f6e1a86"
integrity sha512-yE2yEPO+HQmOqsX7cECh7/vu/LXnqhHGsVm3UiVi/3gaK8u5hAkPTNzZ0Qu6vnMwjPnY+uFbN6X+6Aj9c9yjMQ== integrity sha512-lPvEKEdMlZ1iC8qLjDM8DQGXyAUbJdYxFTvIv4YuyBRdmamIgesoeRLRubAoRNLKBm0pqPpxVomZwjnnZfobyg==
dependencies: dependencies:
"@expo/image-utils" "^0.6.3" "@expo/image-utils" "^0.6.3"
expo-modules-core "^2.1.1" expo-modules-core "^2.1.1"
@@ -14024,9 +14024,9 @@ kysely@^0.23.4:
integrity sha512-TH+b56pVXQq0tsyooYLeNfV11j6ih7D50dyN8tkM0e7ndiUH28Nziojiog3qRFlmEj9XePYdZUrNJ2079Qjdow== integrity sha512-TH+b56pVXQq0tsyooYLeNfV11j6ih7D50dyN8tkM0e7ndiUH28Nziojiog3qRFlmEj9XePYdZUrNJ2079Qjdow==
lan-network@^0.1.4: lan-network@^0.1.4:
version "0.1.4" version "0.1.5"
resolved "https://registry.yarnpkg.com/lan-network/-/lan-network-0.1.4.tgz#e55742ec279f1c622911b9f61f9ace869344c750" resolved "https://registry.yarnpkg.com/lan-network/-/lan-network-0.1.5.tgz#e781889b7bd4dbedd9126fff3ceddd809a83c3ff"
integrity sha512-9EzcRaFzlj3nSwcn2VOdxm30uHBBCgkX8/xzhSIlZXvQ1N1QV2cSwSrL+4bJC/WI+3k1f9SNJuPt4/F/9Au6hQ== integrity sha512-CV3k7l8jW0Z1b+G41tB7JInVyJEKQzh/YPl2v9uXpZMusp0aa+rh3OqG77xWuX7+eVBa8PsdTuMznTAssF4qwg==
lande@^1.0.10: lande@^1.0.10:
version "1.0.10" version "1.0.10"
@@ -16750,11 +16750,11 @@ react-native-dotenv@^3.4.11:
dotenv "^16.4.5" dotenv "^16.4.5"
react-native-drawer-layout@^4.1.6: react-native-drawer-layout@^4.1.6:
version "4.1.6" version "4.1.7"
resolved "https://registry.yarnpkg.com/react-native-drawer-layout/-/react-native-drawer-layout-4.1.6.tgz#4a806a83a812a366d042543fa66a3a345a217843" resolved "https://registry.yarnpkg.com/react-native-drawer-layout/-/react-native-drawer-layout-4.1.7.tgz#1c741c9bf9c739d6672201692e4ba4839ca0c8ff"
integrity sha512-gfEFQ7jxIz/2dbLI/HvEOSXRIM0UAUVakwZ7PmgtV98kSXEl7SOGr1J2E5Gv37OIsvYA1Om3k+7Xr/DzX+zmmg== integrity sha512-KeTGZsNEDbOmgo8ICwr1vBmvWjRrRsvbLc2IAfQnW5h5UtxVZVRxY4QaN84BSBQPXm6tQ6AXfII8TCXCv3c0Ew==
dependencies: dependencies:
use-latest-callback "^0.2.1" use-latest-callback "^0.2.3"
react-native-edge-to-edge@1.6.0, react-native-edge-to-edge@^1.6.0: react-native-edge-to-edge@1.6.0, react-native-edge-to-edge@^1.6.0:
version "1.6.0" version "1.6.0"
@@ -19383,10 +19383,10 @@ use-latest-callback@^0.1.9:
resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.9.tgz#10191dc54257e65a8e52322127643a8940271e2a" resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.9.tgz#10191dc54257e65a8e52322127643a8940271e2a"
integrity sha512-CL/29uS74AwreI/f2oz2hLTW7ZqVeV5+gxFeGudzQrgkCytrHw33G4KbnQOrRlAEzzAFXi7dDLMC9zhWcVpzmw== integrity sha512-CL/29uS74AwreI/f2oz2hLTW7ZqVeV5+gxFeGudzQrgkCytrHw33G4KbnQOrRlAEzzAFXi7dDLMC9zhWcVpzmw==
use-latest-callback@^0.2.1: use-latest-callback@^0.2.3:
version "0.2.1" version "0.2.3"
resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.2.1.tgz#4d4e6a9e4817b13142834850dcfa8d24ca4569cf" resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.2.3.tgz#2d644d3063040b9bc2d4c55bb525a13ae3de9e16"
integrity sha512-QWlq8Is8BGWBf883QOEQP5HWYX/kMI+JTbJ5rdtvJLmXTIh9XoHIO3PQcmQl8BU44VKxow1kbQUHa6mQSMALDQ== integrity sha512-7vI3fBuyRcP91pazVboc4qu+6ZqM8izPWX9k7cRnT8hbD5svslcknsh3S9BUhaK11OmgTV4oWZZVSeQAiV53SQ==
use-latest@^1.2.1: use-latest@^1.2.1:
version "1.2.1" version "1.2.1"