Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c10136083d |
+5
-5
@@ -85,10 +85,10 @@
|
||||
"@react-native-async-storage/async-storage": "1.23.1",
|
||||
"@react-native-menu/menu": "^1.1.7",
|
||||
"@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",
|
||||
"@react-navigation/bottom-tabs": "^7.2.0",
|
||||
"@react-navigation/drawer": "^7.1.1",
|
||||
"@react-navigation/native": "^7.0.14",
|
||||
"@react-navigation/native-stack": "^7.2.0",
|
||||
"@sentry/react-native": "5.24.3",
|
||||
"@tanstack/query-async-storage-persister": "^5.25.0",
|
||||
"@tanstack/react-query": "^5.8.1",
|
||||
@@ -189,7 +189,7 @@
|
||||
"react-native-reanimated": "3.17.0-nightly-20241211-17e89ca24",
|
||||
"react-native-root-siblings": "^4.1.1",
|
||||
"react-native-safe-area-context": "4.14.0",
|
||||
"react-native-screens": "~4.3.0",
|
||||
"react-native-screens": "~4.6.0",
|
||||
"react-native-svg": "^15.8.0",
|
||||
"react-native-uitextview": "^1.4.0",
|
||||
"react-native-url-polyfill": "^1.3.0",
|
||||
|
||||
@@ -349,7 +349,7 @@ export function ProfileGrid({
|
||||
<View style={[a.flex_row, a.justify_end, a.align_center, a.gap_md]}>
|
||||
<InlineLinkText
|
||||
label={_(msg`Browse more suggestions`)}
|
||||
to="/search"
|
||||
screen="Search"
|
||||
style={[t.atoms.text_contrast_medium]}>
|
||||
<Trans>Browse more suggestions</Trans>
|
||||
</InlineLinkText>
|
||||
@@ -486,7 +486,7 @@ export function SuggestedFeeds() {
|
||||
]}>
|
||||
<InlineLinkText
|
||||
label={_(msg`Browse more suggestions`)}
|
||||
to="/search"
|
||||
screen="Search"
|
||||
style={[t.atoms.text_contrast_medium]}>
|
||||
<Trans>Browse more suggestions</Trans>
|
||||
</InlineLinkText>
|
||||
|
||||
+65
-16
@@ -28,10 +28,29 @@ import {router} from '#/routes'
|
||||
*/
|
||||
export {useButtonContext as useLinkContext} from '#/components/Button'
|
||||
|
||||
type BaseLinkProps = Pick<
|
||||
Parameters<typeof useLinkProps<AllNavigatorParams>>[0],
|
||||
'to'
|
||||
> & {
|
||||
/**
|
||||
* Copied from react-nativgation's LinkProps, but with `action` removed. Removing action breaks
|
||||
* the type, causing screen and params to lose their 'connection'
|
||||
*/
|
||||
|
||||
export type CustomLinkProps<
|
||||
ParamList = AllNavigatorParams,
|
||||
RouteName extends keyof ParamList = keyof ParamList,
|
||||
> =
|
||||
| ({
|
||||
href?: string
|
||||
} & {
|
||||
[Screen in keyof ParamList]: undefined extends ParamList[Screen]
|
||||
? {screen: Screen; params?: ParamList[Screen]}
|
||||
: {screen: Screen; params: ParamList[Screen]}
|
||||
}[RouteName])
|
||||
| {
|
||||
href: string
|
||||
screen?: undefined
|
||||
params?: undefined
|
||||
}
|
||||
|
||||
type BaseLinkProps = CustomLinkProps & {
|
||||
testID?: string
|
||||
|
||||
/**
|
||||
@@ -71,8 +90,18 @@ type BaseLinkProps = Pick<
|
||||
shareOnLongPress?: boolean
|
||||
}
|
||||
|
||||
function test({screen, params}: CustomLinkProps) {
|
||||
if (screen === 'Search') {
|
||||
params.q
|
||||
// @ts-expect-error hiasuhdas
|
||||
params.did
|
||||
}
|
||||
}
|
||||
|
||||
export function useLink({
|
||||
to,
|
||||
screen,
|
||||
params,
|
||||
href: hrefProp,
|
||||
displayText,
|
||||
action = 'push',
|
||||
disableMismatchWarning,
|
||||
@@ -85,10 +114,22 @@ export function useLink({
|
||||
overridePresentation?: boolean
|
||||
}) {
|
||||
const navigation = useNavigationDeduped()
|
||||
const {href} = useLinkProps<AllNavigatorParams>({
|
||||
to:
|
||||
typeof to === 'string' ? convertBskyAppUrlIfNeeded(sanitizeUrl(to)) : to,
|
||||
const safeHrefProp = hrefProp
|
||||
? convertBskyAppUrlIfNeeded(sanitizeUrl(hrefProp))
|
||||
: undefined
|
||||
|
||||
let {href} = useLinkProps<AllNavigatorParams>({
|
||||
screen: screen!,
|
||||
params,
|
||||
href: safeHrefProp,
|
||||
})
|
||||
if (!href) {
|
||||
if (safeHrefProp) {
|
||||
href = safeHrefProp
|
||||
} else {
|
||||
throw new Error('No href provided')
|
||||
}
|
||||
}
|
||||
const isExternal = isExternalUrl(href)
|
||||
const {openModal, closeModal} = useModalControls()
|
||||
const openLink = useOpenLink()
|
||||
@@ -97,7 +138,7 @@ export function useLink({
|
||||
(e: GestureResponderEvent) => {
|
||||
const exitEarlyIfFalse = outerOnPress?.(e)
|
||||
|
||||
if (exitEarlyIfFalse === false) return
|
||||
if (exitEarlyIfFalse === false || e.defaultPrevented) return
|
||||
|
||||
const requiresWarning = Boolean(
|
||||
!disableMismatchWarning &&
|
||||
@@ -214,7 +255,9 @@ export type LinkProps = Omit<BaseLinkProps, 'disableMismatchWarning'> &
|
||||
*/
|
||||
export function Link({
|
||||
children,
|
||||
to,
|
||||
screen,
|
||||
params,
|
||||
href: hrefProp,
|
||||
action = 'push',
|
||||
onPress: outerOnPress,
|
||||
onLongPress: outerOnLongPress,
|
||||
@@ -222,7 +265,9 @@ export function Link({
|
||||
...rest
|
||||
}: LinkProps) {
|
||||
const {href, isExternal, onPress, onLongPress} = useLink({
|
||||
to,
|
||||
screen,
|
||||
params,
|
||||
href: hrefProp,
|
||||
displayText: typeof children === 'string' ? children : '',
|
||||
action,
|
||||
onPress: outerOnPress,
|
||||
@@ -267,7 +312,9 @@ export type InlineLinkProps = React.PropsWithChildren<
|
||||
|
||||
export function InlineLinkText({
|
||||
children,
|
||||
to,
|
||||
screen,
|
||||
params,
|
||||
href: hrefProp,
|
||||
action = 'push',
|
||||
disableMismatchWarning,
|
||||
style,
|
||||
@@ -284,7 +331,9 @@ export function InlineLinkText({
|
||||
const t = useTheme()
|
||||
const stringChildren = typeof children === 'string'
|
||||
const {href, isExternal, onPress, onLongPress} = useLink({
|
||||
to,
|
||||
screen,
|
||||
params,
|
||||
href: hrefProp,
|
||||
displayText: stringChildren ? children : '',
|
||||
action,
|
||||
disableMismatchWarning,
|
||||
@@ -344,12 +393,12 @@ export function InlineLinkText({
|
||||
|
||||
export function WebOnlyInlineLinkText({
|
||||
children,
|
||||
to,
|
||||
href,
|
||||
onPress,
|
||||
...props
|
||||
}: Omit<InlineLinkProps, 'onLongPress'>) {
|
||||
return isWeb ? (
|
||||
<InlineLinkText {...props} to={to} onPress={onPress}>
|
||||
<InlineLinkText {...props} href={href} onPress={onPress}>
|
||||
{children}
|
||||
</InlineLinkText>
|
||||
) : (
|
||||
@@ -366,7 +415,7 @@ export function WebOnlyInlineLinkText({
|
||||
export function createStaticClick(
|
||||
onPressHandler: Exclude<BaseLinkProps['onPress'], undefined>,
|
||||
): {
|
||||
to: BaseLinkProps['to']
|
||||
to: BaseLinkProps['href']
|
||||
onPress: Exclude<BaseLinkProps['onPress'], undefined>
|
||||
} {
|
||||
return {
|
||||
|
||||
@@ -158,7 +158,7 @@ export function Inner({
|
||||
</Text>
|
||||
?{' '}
|
||||
<InlineLinkText
|
||||
to="#"
|
||||
href="#"
|
||||
label={_(msg`Change email address`)}
|
||||
style={[a.text_md, a.leading_snug]}
|
||||
onPress={e => {
|
||||
@@ -183,7 +183,7 @@ export function Inner({
|
||||
to verify it's you.
|
||||
</Trans>{' '}
|
||||
<InlineLinkText
|
||||
to="#"
|
||||
href="#"
|
||||
label={_(msg`Change email address`)}
|
||||
style={[a.text_md, a.leading_snug]}
|
||||
onPress={e => {
|
||||
|
||||
@@ -239,7 +239,7 @@ let MessageItemMetadata = ({
|
||||
·{' '}
|
||||
<InlineLinkText
|
||||
label={_(msg`Click to retry failed message`)}
|
||||
to="#"
|
||||
href="#"
|
||||
onPress={handleRetry}
|
||||
style={[a.text_xs]}>
|
||||
{_(msg`Retry`)}
|
||||
|
||||
@@ -245,7 +245,7 @@ export function LabelerLabelPreference({
|
||||
Configured in{' '}
|
||||
<InlineLinkText
|
||||
label={_(msg`moderation settings`)}
|
||||
to="/moderation"
|
||||
screen="Moderation"
|
||||
style={a.text_sm}>
|
||||
moderation settings
|
||||
</InlineLinkText>
|
||||
|
||||
+25
-19
@@ -105,25 +105,27 @@ export type FlatNavigatorParams = CommonNavigatorParams & {
|
||||
Messages: {pushToConversation?: string; animation?: 'push' | 'pop'}
|
||||
}
|
||||
|
||||
export type AllNavigatorParams = CommonNavigatorParams & {
|
||||
HomeTab: undefined
|
||||
Home: undefined
|
||||
SearchTab: undefined
|
||||
Search: {q?: string}
|
||||
Feeds: undefined
|
||||
NotificationsTab: undefined
|
||||
Notifications: undefined
|
||||
MyProfileTab: undefined
|
||||
Hashtag: {tag: string; author?: string}
|
||||
Topic: {topic: string}
|
||||
MessagesTab: undefined
|
||||
Messages: {animation?: 'push' | 'pop'}
|
||||
Start: {name: string; rkey: string}
|
||||
StarterPack: {name: string; rkey: string; new?: boolean}
|
||||
StarterPackShort: {code: string}
|
||||
StarterPackWizard: undefined
|
||||
StarterPackEdit: {rkey?: string}
|
||||
}
|
||||
export type AllNavigatorParams = Prettify<
|
||||
CommonNavigatorParams & {
|
||||
HomeTab: undefined
|
||||
Home: undefined
|
||||
SearchTab: undefined
|
||||
Search: {q?: string}
|
||||
Feeds: undefined
|
||||
NotificationsTab: undefined
|
||||
Notifications: undefined
|
||||
MyProfileTab: undefined
|
||||
Hashtag: {tag: string; author?: string}
|
||||
Topic: {topic: string}
|
||||
MessagesTab: undefined
|
||||
Messages: {animation?: 'push' | 'pop'}
|
||||
Start: {name: string; rkey: string}
|
||||
StarterPack: {name: string; rkey: string; new?: boolean}
|
||||
StarterPackShort: {code: string}
|
||||
StarterPackWizard: undefined
|
||||
StarterPackEdit: {rkey?: string}
|
||||
}
|
||||
>
|
||||
|
||||
// NOTE
|
||||
// this isn't strictly correct but it should be close enough
|
||||
@@ -141,3 +143,7 @@ export type Route = {
|
||||
match: (path: string) => MatchResult | undefined
|
||||
build: (params: RouteParams) => string
|
||||
}
|
||||
|
||||
type Prettify<T> = {
|
||||
[K in keyof T]: T[K]
|
||||
} & {}
|
||||
|
||||
@@ -37,7 +37,7 @@ export function NoFollowingFeed() {
|
||||
<Trans>
|
||||
Looks like you're missing a following feed.{' '}
|
||||
<InlineLinkText
|
||||
to="/"
|
||||
href="#"
|
||||
label={_(msg`Add the default feed of only people you follow`)}
|
||||
onPress={addRecommendedFeeds}
|
||||
style={[a.leading_snug]}>
|
||||
|
||||
@@ -101,7 +101,7 @@ export function NoFeedsPinned({
|
||||
|
||||
<Link
|
||||
label={_(msg`Browse other feeds`)}
|
||||
to="/feeds"
|
||||
screen="Feeds"
|
||||
size="large"
|
||||
variant="solid"
|
||||
color="secondary">
|
||||
|
||||
@@ -44,7 +44,7 @@ export function MessageListError({item}: {item: ConvoItem & {type: 'error'}}) {
|
||||
{description} ·{' '}
|
||||
{item.retry && (
|
||||
<InlineLinkText
|
||||
to="#"
|
||||
href="#"
|
||||
label={help}
|
||||
onPress={e => {
|
||||
e.preventDefault()
|
||||
|
||||
@@ -203,7 +203,7 @@ export function ModerationScreenInner({
|
||||
<Link
|
||||
label={_(msg`View your default post interaction settings`)}
|
||||
testID="interactionSettingsBtn"
|
||||
to="/moderation/interaction-settings">
|
||||
screen="ModerationInteractionSettings">
|
||||
{state => (
|
||||
<SubItem
|
||||
title={_(msg`Interaction settings`)}
|
||||
@@ -233,7 +233,7 @@ export function ModerationScreenInner({
|
||||
<Link
|
||||
label={_(msg`View your moderation lists`)}
|
||||
testID="moderationlistsBtn"
|
||||
to="/moderation/modlists">
|
||||
screen="ModerationModlists">
|
||||
{state => (
|
||||
<SubItem
|
||||
title={_(msg`Moderation lists`)}
|
||||
@@ -248,7 +248,7 @@ export function ModerationScreenInner({
|
||||
<Link
|
||||
label={_(msg`View your muted accounts`)}
|
||||
testID="mutedAccountsBtn"
|
||||
to="/moderation/muted-accounts">
|
||||
screen="ModerationMutedAccounts">
|
||||
{state => (
|
||||
<SubItem
|
||||
title={_(msg`Muted accounts`)}
|
||||
@@ -263,7 +263,7 @@ export function ModerationScreenInner({
|
||||
<Link
|
||||
label={_(msg`View your blocked accounts`)}
|
||||
testID="blockedAccountsBtn"
|
||||
to="/moderation/blocked-accounts">
|
||||
screen="ModerationBlockedAccounts">
|
||||
{state => (
|
||||
<SubItem
|
||||
title={_(msg`Blocked accounts`)}
|
||||
@@ -356,7 +356,7 @@ export function ModerationScreenInner({
|
||||
Adult content can only be enabled via the Web at{' '}
|
||||
<InlineLinkText
|
||||
label={_(msg`The Bluesky web application`)}
|
||||
to=""
|
||||
href="#"
|
||||
onPress={evt => {
|
||||
evt.preventDefault()
|
||||
Linking.openURL('https://bsky.app/')
|
||||
|
||||
@@ -33,7 +33,7 @@ export function AboutSettingsScreen({}: Props) {
|
||||
<Layout.Content>
|
||||
<SettingsList.Container>
|
||||
<SettingsList.LinkItem
|
||||
to="https://bsky.social/about/support/tos"
|
||||
href="https://bsky.social/about/support/tos"
|
||||
label={_(msg`Terms of Service`)}>
|
||||
<SettingsList.ItemIcon icon={NewspaperIcon} />
|
||||
<SettingsList.ItemText>
|
||||
@@ -41,7 +41,7 @@ export function AboutSettingsScreen({}: Props) {
|
||||
</SettingsList.ItemText>
|
||||
</SettingsList.LinkItem>
|
||||
<SettingsList.LinkItem
|
||||
to="https://bsky.social/about/support/privacy-policy"
|
||||
href="https://bsky.social/about/support/privacy-policy"
|
||||
label={_(msg`Privacy Policy`)}>
|
||||
<SettingsList.ItemIcon icon={NewspaperIcon} />
|
||||
<SettingsList.ItemText>
|
||||
@@ -49,7 +49,7 @@ export function AboutSettingsScreen({}: Props) {
|
||||
</SettingsList.ItemText>
|
||||
</SettingsList.LinkItem>
|
||||
<SettingsList.LinkItem
|
||||
to={STATUS_PAGE_URL}
|
||||
href={STATUS_PAGE_URL}
|
||||
label={_(msg`Status Page`)}>
|
||||
<SettingsList.ItemIcon icon={GlobeIcon} />
|
||||
<SettingsList.ItemText>
|
||||
@@ -57,7 +57,7 @@ export function AboutSettingsScreen({}: Props) {
|
||||
</SettingsList.ItemText>
|
||||
</SettingsList.LinkItem>
|
||||
<SettingsList.Divider />
|
||||
<SettingsList.LinkItem to="/sys/log" label={_(msg`System log`)}>
|
||||
<SettingsList.LinkItem screen="Log" label={_(msg`System log`)}>
|
||||
<SettingsList.ItemIcon icon={CodeLinesIcon} />
|
||||
<SettingsList.ItemText>
|
||||
<Trans>System log</Trans>
|
||||
|
||||
@@ -105,7 +105,7 @@ export function AccessibilitySettingsScreen({}: Props) {
|
||||
<Trans>
|
||||
Autoplay options have moved to the{' '}
|
||||
<InlineLinkText
|
||||
to="/settings/content-and-media"
|
||||
screen="ContentAndMediaSettings"
|
||||
label={_(msg`Content and media`)}>
|
||||
Content and Media settings
|
||||
</InlineLinkText>
|
||||
|
||||
@@ -14,7 +14,7 @@ export function SettingsListItem() {
|
||||
|
||||
return (
|
||||
<SettingsList.LinkItem
|
||||
to="/settings/app-icon"
|
||||
screen="AppIconSettings"
|
||||
label={_(msg`App Icon`)}
|
||||
contentContainerStyle={[a.align_start]}>
|
||||
<SettingsList.ItemIcon icon={Shapes} />
|
||||
|
||||
@@ -55,7 +55,7 @@ export function ContentAndMediaSettingsScreen({}: Props) {
|
||||
<Layout.Content>
|
||||
<SettingsList.Container>
|
||||
<SettingsList.LinkItem
|
||||
to="/settings/saved-feeds"
|
||||
screen="SavedFeeds"
|
||||
label={_(msg`Manage saved feeds`)}>
|
||||
<SettingsList.ItemIcon icon={HashtagIcon} />
|
||||
<SettingsList.ItemText>
|
||||
@@ -63,7 +63,7 @@ export function ContentAndMediaSettingsScreen({}: Props) {
|
||||
</SettingsList.ItemText>
|
||||
</SettingsList.LinkItem>
|
||||
<SettingsList.LinkItem
|
||||
to="/settings/threads"
|
||||
screen="PreferencesThreads"
|
||||
label={_(msg`Thread preferences`)}>
|
||||
<SettingsList.ItemIcon icon={BubblesIcon} />
|
||||
<SettingsList.ItemText>
|
||||
@@ -71,7 +71,7 @@ export function ContentAndMediaSettingsScreen({}: Props) {
|
||||
</SettingsList.ItemText>
|
||||
</SettingsList.LinkItem>
|
||||
<SettingsList.LinkItem
|
||||
to="/settings/following-feed"
|
||||
screen="PreferencesFollowingFeed"
|
||||
label={_(msg`Following feed preferences`)}>
|
||||
<SettingsList.ItemIcon icon={HomeIcon} />
|
||||
<SettingsList.ItemText>
|
||||
@@ -79,7 +79,7 @@ export function ContentAndMediaSettingsScreen({}: Props) {
|
||||
</SettingsList.ItemText>
|
||||
</SettingsList.LinkItem>
|
||||
<SettingsList.LinkItem
|
||||
to="/settings/external-embeds"
|
||||
screen="PreferencesExternalEmbeds"
|
||||
label={_(msg`External media`)}>
|
||||
<SettingsList.ItemIcon icon={MacintoshIcon} />
|
||||
<SettingsList.ItemText>
|
||||
|
||||
@@ -59,7 +59,7 @@ export function PrivacyAndSecuritySettingsScreen({}: Props) {
|
||||
<Email2FAToggle />
|
||||
</SettingsList.Item>
|
||||
<SettingsList.LinkItem
|
||||
to="/settings/app-passwords"
|
||||
screen="AppPasswords"
|
||||
label={_(msg`App passwords`)}>
|
||||
<SettingsList.ItemIcon icon={KeyIcon} />
|
||||
<SettingsList.ItemText>
|
||||
@@ -98,7 +98,7 @@ export function PrivacyAndSecuritySettingsScreen({}: Props) {
|
||||
label={_(
|
||||
msg`Learn more about what is public on Bluesky.`,
|
||||
)}
|
||||
to="https://blueskyweb.zendesk.com/hc/en-us/articles/15835264007693-Data-Privacy">
|
||||
href="https://blueskyweb.zendesk.com/hc/en-us/articles/15835264007693-Data-Privacy">
|
||||
<Trans>Learn more about what is public on Bluesky.</Trans>
|
||||
</InlineLinkText>
|
||||
</Admonition.Text>
|
||||
|
||||
@@ -150,28 +150,30 @@ export function SettingsScreen({}: Props) {
|
||||
<AddAccountRow />
|
||||
)}
|
||||
<SettingsList.Divider />
|
||||
<SettingsList.LinkItem to="/settings/account" label={_(msg`Account`)}>
|
||||
<SettingsList.LinkItem
|
||||
screen="AccountSettings"
|
||||
label={_(msg`Account`)}>
|
||||
<SettingsList.ItemIcon icon={PersonIcon} />
|
||||
<SettingsList.ItemText>
|
||||
<Trans>Account</Trans>
|
||||
</SettingsList.ItemText>
|
||||
</SettingsList.LinkItem>
|
||||
<SettingsList.LinkItem
|
||||
to="/settings/privacy-and-security"
|
||||
screen="PrivacyAndSecuritySettings"
|
||||
label={_(msg`Privacy and security`)}>
|
||||
<SettingsList.ItemIcon icon={LockIcon} />
|
||||
<SettingsList.ItemText>
|
||||
<Trans>Privacy and security</Trans>
|
||||
</SettingsList.ItemText>
|
||||
</SettingsList.LinkItem>
|
||||
<SettingsList.LinkItem to="/moderation" label={_(msg`Moderation`)}>
|
||||
<SettingsList.LinkItem screen="Moderation" label={_(msg`Moderation`)}>
|
||||
<SettingsList.ItemIcon icon={HandIcon} />
|
||||
<SettingsList.ItemText>
|
||||
<Trans>Moderation</Trans>
|
||||
</SettingsList.ItemText>
|
||||
</SettingsList.LinkItem>
|
||||
<SettingsList.LinkItem
|
||||
to="/settings/content-and-media"
|
||||
screen="ContentAndMediaSettings"
|
||||
label={_(msg`Content and media`)}>
|
||||
<SettingsList.ItemIcon icon={WindowIcon} />
|
||||
<SettingsList.ItemText>
|
||||
@@ -179,7 +181,7 @@ export function SettingsScreen({}: Props) {
|
||||
</SettingsList.ItemText>
|
||||
</SettingsList.LinkItem>
|
||||
<SettingsList.LinkItem
|
||||
to="/settings/appearance"
|
||||
screen="AppearanceSettings"
|
||||
label={_(msg`Appearance`)}>
|
||||
<SettingsList.ItemIcon icon={PaintRollerIcon} />
|
||||
<SettingsList.ItemText>
|
||||
@@ -187,7 +189,7 @@ export function SettingsScreen({}: Props) {
|
||||
</SettingsList.ItemText>
|
||||
</SettingsList.LinkItem>
|
||||
<SettingsList.LinkItem
|
||||
to="/settings/accessibility"
|
||||
screen="AccessibilitySettings"
|
||||
label={_(msg`Accessibility`)}>
|
||||
<SettingsList.ItemIcon icon={AccessibilityIcon} />
|
||||
<SettingsList.ItemText>
|
||||
@@ -195,7 +197,7 @@ export function SettingsScreen({}: Props) {
|
||||
</SettingsList.ItemText>
|
||||
</SettingsList.LinkItem>
|
||||
<SettingsList.LinkItem
|
||||
to="/settings/language"
|
||||
screen="LanguageSettings"
|
||||
label={_(msg`Languages`)}>
|
||||
<SettingsList.ItemIcon icon={EarthIcon} />
|
||||
<SettingsList.ItemText>
|
||||
@@ -212,7 +214,7 @@ export function SettingsScreen({}: Props) {
|
||||
</SettingsList.ItemText>
|
||||
<SettingsList.Chevron />
|
||||
</SettingsList.PressableItem>
|
||||
<SettingsList.LinkItem to="/settings/about" label={_(msg`About`)}>
|
||||
<SettingsList.LinkItem screen="AboutSettings" label={_(msg`About`)}>
|
||||
<SettingsList.ItemIcon icon={BubbleInfoIcon} />
|
||||
<SettingsList.ItemText>
|
||||
<Trans>About</Trans>
|
||||
|
||||
@@ -250,7 +250,7 @@ function ProvidedHandlePage({
|
||||
lets you self-verify your identity.{' '}
|
||||
<InlineLinkText
|
||||
label={_(msg`learn more`)}
|
||||
to="https://bsky.social/about/blog/4-28-2023-domain-handle-tutorial"
|
||||
href="https://bsky.social/about/blog/4-28-2023-domain-handle-tutorial"
|
||||
style={[a.font_bold]}
|
||||
disableMismatchWarning>
|
||||
Learn more here.
|
||||
|
||||
@@ -96,7 +96,7 @@ export function ExportCarDialog({
|
||||
exports in{' '}
|
||||
<InlineLinkText
|
||||
label={_(msg`View blogpost for more details`)}
|
||||
to="https://docs.bsky.app/blog/repo-export"
|
||||
href="https://docs.bsky.app/blog/repo-export"
|
||||
style={[a.text_sm]}>
|
||||
this blogpost
|
||||
</InlineLinkText>
|
||||
|
||||
@@ -215,7 +215,7 @@ export function Takendown() {
|
||||
Your account was found to be in violation of the{' '}
|
||||
<InlineLinkText
|
||||
label={_(msg`Bluesky Social Terms of Service`)}
|
||||
to="https://bsky.social/about/support/tos"
|
||||
href="https://bsky.social/about/support/tos"
|
||||
style={[a.text_md, a.leading_normal]}
|
||||
overridePresentation>
|
||||
Bluesky Social Terms of Service
|
||||
|
||||
@@ -164,12 +164,12 @@ function Footer() {
|
||||
]}>
|
||||
<InlineLinkText
|
||||
label={_(msg`Learn more about Bluesky`)}
|
||||
to="https://bsky.social">
|
||||
href="https://bsky.social/about">
|
||||
<Trans>Business</Trans>
|
||||
</InlineLinkText>
|
||||
<InlineLinkText
|
||||
label={_(msg`Read the Bluesky blog`)}
|
||||
to="https://bsky.social/about/blog">
|
||||
href="https://bsky.social/about/blog">
|
||||
<Trans>Blog</Trans>
|
||||
</InlineLinkText>
|
||||
<InlineLinkText
|
||||
|
||||
@@ -51,7 +51,7 @@ function HomeHeaderLayoutDesktopAndTablet({
|
||||
<Logo width={kawaii ? 60 : 28} />
|
||||
</View>
|
||||
<Link
|
||||
to="/feeds"
|
||||
screen="Feeds"
|
||||
hitSlop={10}
|
||||
label={_(msg`View your feeds and explore more`)}
|
||||
size="small"
|
||||
|
||||
@@ -72,7 +72,7 @@ export function HomeHeaderLayoutMobile({
|
||||
{hasSession && (
|
||||
<Link
|
||||
testID="viewHeaderHomeFeedPrefsBtn"
|
||||
to="/feeds"
|
||||
screen="Feeds"
|
||||
hitSlop={HITSLOP_10}
|
||||
label={_(msg`View your feeds and explore more`)}
|
||||
size="small"
|
||||
|
||||
@@ -101,6 +101,8 @@ export function FeedShutdownMsg({feedUri}: {feedUri: string}) {
|
||||
<InlineLinkText
|
||||
label={_(msg`The Discover feed`)}
|
||||
to="/profile/bsky.app/feed/whats-hot"
|
||||
screen="ProfileFeed"
|
||||
params={{}}
|
||||
style={[a.text_md]}>
|
||||
Discover
|
||||
</InlineLinkText>{' '}
|
||||
|
||||
@@ -5886,65 +5886,69 @@
|
||||
invariant "^2.2.4"
|
||||
nullthrows "^1.1.1"
|
||||
|
||||
"@react-navigation/bottom-tabs@^6.5.20":
|
||||
version "6.5.20"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.20.tgz#5335e75b02c527ef0569bd97d4f9185d65616e49"
|
||||
integrity sha512-ow6Z06iS4VqBO8d7FP+HsGjJLWt2xTWIvuWjpoCvsM/uQXzCRDIjBv9HaKcXbF0yTW7IMir0oDAbU5PFzEDdgA==
|
||||
"@react-navigation/bottom-tabs@^7.2.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-7.2.0.tgz#5b336b823226647a263b4fe743655462796b6aaf"
|
||||
integrity sha512-1LxjgnbPyFINyf9Qr5d1YE0pYhuJayg5TCIIFQmbcX4PRhX7FKUXV7cX8OzrKXEdZi/UE/VNXugtozPAR9zgvA==
|
||||
dependencies:
|
||||
"@react-navigation/elements" "^1.3.30"
|
||||
"@react-navigation/elements" "^2.2.5"
|
||||
color "^4.2.3"
|
||||
warn-once "^0.1.0"
|
||||
|
||||
"@react-navigation/core@^6.4.16":
|
||||
version "6.4.16"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.16.tgz#f9369a134805174536b9aa0f0f483b930511caf9"
|
||||
integrity sha512-UDTJBsHxnzgFETR3ZxhctP+RWr4SkyeZpbhpkQoIGOuwSCkt1SE0qjU48/u6r6w6XlX8OqVudn1Ab0QFXTHxuQ==
|
||||
"@react-navigation/core@^7.3.1":
|
||||
version "7.3.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-7.3.1.tgz#c6d4857fa2dd321d12ca87e200478c38c420f157"
|
||||
integrity sha512-S3KCGvNsoqVk8ErAtQI2EAhg9185lahF5OY01ofrrD4Ij/uk3QEHHjoGQhR5l5DXSCSKr1JbMQA7MEKMsBiWZA==
|
||||
dependencies:
|
||||
"@react-navigation/routers" "^6.1.9"
|
||||
"@react-navigation/routers" "^7.1.2"
|
||||
escape-string-regexp "^4.0.0"
|
||||
nanoid "^3.1.23"
|
||||
nanoid "3.3.8"
|
||||
query-string "^7.1.3"
|
||||
react-is "^16.13.0"
|
||||
use-latest-callback "^0.1.9"
|
||||
react-is "^18.2.0"
|
||||
use-latest-callback "^0.2.1"
|
||||
use-sync-external-store "^1.2.2"
|
||||
|
||||
"@react-navigation/drawer@^6.6.15":
|
||||
version "6.6.15"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/drawer/-/drawer-6.6.15.tgz#fcedba68f735103dbc035911f5959ce926081d62"
|
||||
integrity sha512-GLkFQNxjtmxB/qXSHmu1DfoB89jCzW64tmX68iPndth+9U+0IP27GcCCaMZxQfwj+nI8Kn2zlTlXAZDIIHE+DQ==
|
||||
"@react-navigation/drawer@^7.1.1":
|
||||
version "7.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/drawer/-/drawer-7.1.1.tgz#4e0235ada1a9dac35e97f1492f7cf4cda98d19b0"
|
||||
integrity sha512-34UqRS5OLFaNXPs5ocz3Du9c7em0P7fFMPYCZn/MxadDzQ4Mn/74pmJczmiyvyvz8vcWsNRbZ3Qswm0Dv6z60w==
|
||||
dependencies:
|
||||
"@react-navigation/elements" "^1.3.30"
|
||||
"@react-navigation/elements" "^2.2.5"
|
||||
color "^4.2.3"
|
||||
warn-once "^0.1.0"
|
||||
react-native-drawer-layout "^4.1.1"
|
||||
use-latest-callback "^0.2.1"
|
||||
|
||||
"@react-navigation/elements@^1.3.30":
|
||||
version "1.3.30"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.30.tgz#a81371f599af1070b12014f05d6c09b1a611fd9a"
|
||||
integrity sha512-plhc8UvCZs0UkV+sI+3bisIyn78wz9O/BiWZXpounu72k/R/Sj5PuZYFJ1fi6psvriUveMCGh4LeZckAZu2qiQ==
|
||||
|
||||
"@react-navigation/native-stack@^6.9.26":
|
||||
version "6.9.26"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.26.tgz#90facf7783c9927f094bc9f01c613af75b6c241e"
|
||||
integrity sha512-++dueQ+FDj2XkZ902DVrK79ub1vp19nSdAZWxKRgd6+Bc0Niiesua6rMCqymYOVaYh+dagwkA9r00bpt/U5WLw==
|
||||
"@react-navigation/elements@^2.2.5":
|
||||
version "2.2.5"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-2.2.5.tgz#0e2ca76e2003e96b417a3d7c2829bf1afd69193f"
|
||||
integrity sha512-sDhE+W14P7MNWLMxXg1MEVXwkLUpMZJGflE6nQNzLmolJQIHgcia0Mrm8uRa3bQovhxYu1UzEojLZ+caoZt7Fg==
|
||||
dependencies:
|
||||
"@react-navigation/elements" "^1.3.30"
|
||||
warn-once "^0.1.0"
|
||||
color "^4.2.3"
|
||||
|
||||
"@react-navigation/native@^6.1.17":
|
||||
version "6.1.17"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.17.tgz#439f15a99809d26ea4682d2a3766081cf2ca31cf"
|
||||
integrity sha512-mer3OvfwWOHoUSMJyLa4vnBH3zpFmCwuzrBPlw7feXklurr/ZDiLjLxUScOot6jLRMz/67GyilEYMmP99LL0RQ==
|
||||
"@react-navigation/native-stack@^7.2.0":
|
||||
version "7.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-7.2.0.tgz#8aa489f88d662b3543a931b9cb934bb2e09a4893"
|
||||
integrity sha512-mw7Nq9qQrGsmJmCTwIIWB7yY/3tWYXvQswx+HJScGAadIjemvytJXm1fcl3+YZ9T9Ym0aERcVe5kDs+ny3X4vA==
|
||||
dependencies:
|
||||
"@react-navigation/core" "^6.4.16"
|
||||
"@react-navigation/elements" "^2.2.5"
|
||||
warn-once "^0.1.1"
|
||||
|
||||
"@react-navigation/native@^7.0.14":
|
||||
version "7.0.14"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-7.0.14.tgz#b3ee2879038dcf0523d26516af88d3adc549ce5e"
|
||||
integrity sha512-Gi6lLw4VOGSWAhmUdJOMauOKGK51/YA1CprjXm91sNfgERWvznqEMw8QmUQx9SEqYfi0LfZhbzpMst09SJ00lw==
|
||||
dependencies:
|
||||
"@react-navigation/core" "^7.3.1"
|
||||
escape-string-regexp "^4.0.0"
|
||||
fast-deep-equal "^3.1.3"
|
||||
nanoid "^3.1.23"
|
||||
nanoid "3.3.8"
|
||||
use-latest-callback "^0.2.1"
|
||||
|
||||
"@react-navigation/routers@^6.1.9":
|
||||
version "6.1.9"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-6.1.9.tgz#73f5481a15a38e36592a0afa13c3c064b9f90bed"
|
||||
integrity sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA==
|
||||
"@react-navigation/routers@^7.1.2":
|
||||
version "7.1.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-7.1.2.tgz#647a63e383673de0c4fc10c64a17f551d5da0a17"
|
||||
integrity sha512-emdEjpVDK8zbiu2GChC8oYIAub9i/OpNuQJekVsbyFCBz4/TzaBzms38Q53YaNhdIFNmiYLfHv/Y1Ub7KYfm3w==
|
||||
dependencies:
|
||||
nanoid "^3.1.23"
|
||||
nanoid "3.3.8"
|
||||
|
||||
"@remirror/core-constants@3.0.0":
|
||||
version "3.0.0"
|
||||
@@ -14370,7 +14374,12 @@ mz@^2.7.0:
|
||||
object-assign "^4.0.1"
|
||||
thenify-all "^1.0.0"
|
||||
|
||||
nanoid@^3.1.23, nanoid@^3.3.1, nanoid@^3.3.6:
|
||||
nanoid@3.3.8:
|
||||
version "3.3.8"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.8.tgz#b1be3030bee36aaff18bacb375e5cce521684baf"
|
||||
integrity sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==
|
||||
|
||||
nanoid@^3.3.1, nanoid@^3.3.6:
|
||||
version "3.3.6"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c"
|
||||
integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==
|
||||
@@ -16068,7 +16077,7 @@ react-image-crop@^11.0.7:
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
|
||||
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
|
||||
|
||||
react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0:
|
||||
react-is@^16.13.1, react-is@^16.7.0:
|
||||
version "16.13.1"
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
|
||||
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
||||
@@ -16216,10 +16225,10 @@ react-native-safe-area-context@4.14.0:
|
||||
resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.14.0.tgz#138f4b2e180cb7517c78bd5f4d4cf91325ba0b1a"
|
||||
integrity sha512-/SyYpCulWQOnnXhRq6wepkhoyQMowHm1ptDyRz20s+YS/R9mbd+mK+jFyFCyXFJn8jp7vFl43VUCgspuOiEbwA==
|
||||
|
||||
react-native-screens@~4.3.0:
|
||||
version "4.3.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-4.3.0.tgz#c4fef7583535c963e9257cdd1d91a9889961ab61"
|
||||
integrity sha512-G0u8BPgu2vcRZoQTlRpBXKa0ElQSDvDBlRe6ncWwCeBmd5Uqa2I3tQ6Vn6trIE6+yneW/nD4p5wihEHlAWZPEw==
|
||||
react-native-screens@~4.6.0:
|
||||
version "4.6.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-4.6.0.tgz#2b60ab6f4cd5010c6f9cb01b034f2aa0e17ccf4b"
|
||||
integrity sha512-PqGtR/moJLiTMSavhfo5spKXNHZrlxffq3g5UUVPmyuu7MmazFlPvYqiAYnR2iB9tkJYgvZO6sbjYAE7619M0A==
|
||||
dependencies:
|
||||
react-freeze "^1.0.0"
|
||||
warn-once "^0.1.0"
|
||||
@@ -18603,11 +18612,6 @@ use-isomorphic-layout-effect@^1.1.1:
|
||||
resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb"
|
||||
integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==
|
||||
|
||||
use-latest-callback@^0.1.9:
|
||||
version "0.1.9"
|
||||
resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.9.tgz#10191dc54257e65a8e52322127643a8940271e2a"
|
||||
integrity sha512-CL/29uS74AwreI/f2oz2hLTW7ZqVeV5+gxFeGudzQrgkCytrHw33G4KbnQOrRlAEzzAFXi7dDLMC9zhWcVpzmw==
|
||||
|
||||
use-latest-callback@^0.2.1:
|
||||
version "0.2.1"
|
||||
resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.2.1.tgz#4d4e6a9e4817b13142834850dcfa8d24ca4569cf"
|
||||
@@ -18736,7 +18740,7 @@ walker@^1.0.7, walker@^1.0.8:
|
||||
dependencies:
|
||||
makeerror "1.0.12"
|
||||
|
||||
warn-once@0.1.1, warn-once@^0.1.0:
|
||||
warn-once@0.1.1, warn-once@^0.1.0, warn-once@^0.1.1:
|
||||
version "0.1.1"
|
||||
resolved "https://registry.yarnpkg.com/warn-once/-/warn-once-0.1.1.tgz#952088f4fb56896e73fd4e6a3767272a3fccce43"
|
||||
integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==
|
||||
|
||||
Reference in New Issue
Block a user