drop the casts the dual-world layer needed

With every producer on the generated lexicons, the branded-string assertions at
these 30 sites are no-ops, and oxlint flags them. Also sorts the imports the
type flip disturbed and prunes the suppressions that no longer occur.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Samuel Newman
2026-08-04 05:05:53 +03:00
parent 02173556ab
commit 8da13e7511
282 changed files with 398 additions and 408 deletions
+1 -1
View File
@@ -1645,7 +1645,7 @@
"count": 8 "count": 8
}, },
"typescript/no-unsafe-member-access": { "typescript/no-unsafe-member-access": {
"count": 9 "count": 8
} }
}, },
"src/view/com/util/EmptyState.tsx": { "src/view/com/util/EmptyState.tsx": {
+2 -4
View File
@@ -32,7 +32,7 @@ import {
} from '#/ageAssurance/util' } from '#/ageAssurance/util'
import {IS_DEV} from '#/env' import {IS_DEV} from '#/env'
import {useGeolocation} from '#/geolocation' import {useGeolocation} from '#/geolocation'
import {app, chat} from '#/lexicons' import {app, type chat} from '#/lexicons'
import {device} from '#/storage' import {device} from '#/storage'
/** /**
@@ -96,9 +96,7 @@ export async function getConfig() {
* before there is any session (and while logged out), so it goes through the * before there is any session (and while logged out), so it goes through the
* process-wide public client rather than a bundle one. * process-wide public client rather than a bundle one.
*/ */
return (await getPublicAppviewClient().call( return await getPublicAppviewClient().call(app.bsky.ageassurance.getConfig)
app.bsky.ageassurance.getConfig,
)) as app.bsky.ageassurance.getConfig.$OutputBody
} }
export function getConfigFromCache(): export function getConfigFromCache():
| app.bsky.ageassurance.getConfig.$OutputBody | app.bsky.ageassurance.getConfig.$OutputBody
+1 -1
View File
@@ -1,10 +1,10 @@
import type * as AgeRange from 'expo-age-range' import type * as AgeRange from 'expo-age-range'
import {toDatetimeString} from '@atproto/syntax' import {toDatetimeString} from '@atproto/syntax'
import {app} from '#/lexicons'
import {type OtherRequiredData} from '#/ageAssurance/data' import {type OtherRequiredData} from '#/ageAssurance/data'
import {IS_DEV, IS_E2E} from '#/env' import {IS_DEV, IS_E2E} from '#/env'
import {type Geolocation} from '#/geolocation' import {type Geolocation} from '#/geolocation'
import {app} from '#/lexicons'
export const enabled = (IS_DEV && false) || IS_E2E export const enabled = (IS_DEV && false) || IS_E2E
+1 -1
View File
@@ -2,7 +2,6 @@ import {useEffect, useMemo, useState} from 'react'
import type * as AgeRange from 'expo-age-range' import type * as AgeRange from 'expo-age-range'
import {computeAgeAssuranceRegionAccess} from '@bsky.app/sdk/utils' import {computeAgeAssuranceRegionAccess} from '@bsky.app/sdk/utils'
import {type app} from '#/lexicons'
import {getAge} from '#/lib/strings/time' import {getAge} from '#/lib/strings/time'
import {useSession} from '#/state/session' import {useSession} from '#/state/session'
import { import {
@@ -28,6 +27,7 @@ import {
getAgeAssuranceRegionConfigWithFallback, getAgeAssuranceRegionConfigWithFallback,
} from '#/ageAssurance/util' } from '#/ageAssurance/util'
import {type Geolocation, useGeolocation} from '#/geolocation' import {type Geolocation, useGeolocation} from '#/geolocation'
import {type app} from '#/lexicons'
import {device} from '#/storage' import {device} from '#/storage'
/** /**
+3 -3
View File
@@ -1,13 +1,11 @@
import {useMemo} from 'react' import {useMemo} from 'react'
import type * as AgeRange from 'expo-age-range' import type * as AgeRange from 'expo-age-range'
import {type ModerationPrefs} from '@bsky.app/sdk/moderation'
import { import {
computeAgeAssuranceRegionAccess, computeAgeAssuranceRegionAccess,
getAgeAssuranceRegionConfig, getAgeAssuranceRegionConfig,
} from '@bsky.app/sdk/utils' } from '@bsky.app/sdk/utils'
import {type ModerationPrefs} from '@bsky.app/sdk/moderation'
import * as bsky from '#/types/bsky'
import {app} from '#/lexicons'
import {getAge} from '#/lib/strings/time' import {getAge} from '#/lib/strings/time'
import {regionName} from '#/locale/helpers' import {regionName} from '#/locale/helpers'
import {DEFAULT_LOGGED_OUT_LABEL_PREFERENCES} from '#/state/queries/preferences/const' import {DEFAULT_LOGGED_OUT_LABEL_PREFERENCES} from '#/state/queries/preferences/const'
@@ -26,6 +24,8 @@ import {
} from '#/ageAssurance/types' } from '#/ageAssurance/types'
import {type Geolocation, useGeolocation} from '#/geolocation' import {type Geolocation, useGeolocation} from '#/geolocation'
import {USRegionNameToRegionCode} from '#/geolocation/util' import {USRegionNameToRegionCode} from '#/geolocation/util'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky'
/** /**
* Resolves a geolocation to its matched age assurance region config, or * Resolves a geolocation to its matched age assurance region config, or
+1 -1
View File
@@ -4,7 +4,6 @@ import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {isJwtExpired} from '#/lib/jwt' import {isJwtExpired} from '#/lib/jwt'
import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeDisplayName} from '#/lib/strings/display-names'
import {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
@@ -19,6 +18,7 @@ import {PlusLarge_Stroke2_Corner0_Rounded as PlusIcon} from '#/components/icons/
import {ProfileBadges} from '#/components/ProfileBadges' import {ProfileBadges} from '#/components/ProfileBadges'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useActorStatus} from '#/features/liveNow' import {useActorStatus} from '#/features/liveNow'
import {app} from '#/lexicons'
export function AccountList({ export function AccountList({
onSelectAccount, onSelectAccount,
+1 -1
View File
@@ -8,8 +8,8 @@ import Animated, {
withDelay, withDelay,
withTiming, withTiming,
} from 'react-native-reanimated' } from 'react-native-reanimated'
import {moderateProfile} from '@bsky.app/sdk/moderation' import {moderateProfile} from '@bsky.app/sdk/moderation'
import {useMaybeProfileShadow} from '#/state/cache/profile-shadow' import {useMaybeProfileShadow} from '#/state/cache/profile-shadow'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {useSession} from '#/state/session' import {useSession} from '#/state/session'
+1 -1
View File
@@ -1,6 +1,6 @@
import {View} from 'react-native' import {View} from 'react-native'
import {moderateProfile} from '@bsky.app/sdk/moderation' import {moderateProfile} from '@bsky.app/sdk/moderation'
import {logger} from '#/logger' import {logger} from '#/logger'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {useProfilesQuery} from '#/state/queries/profile' import {useProfilesQuery} from '#/state/queries/profile'
+1 -1
View File
@@ -1,13 +1,13 @@
import {type Insets, View} from 'react-native' import {type Insets, View} from 'react-native'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {com} from '#/lexicons'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {BotAccountAlert} from '#/components/BotAccountAlert' import {BotAccountAlert} from '#/components/BotAccountAlert'
import {Button} from '#/components/Button' import {Button} from '#/components/Button'
import {useDialogControl} from '#/components/Dialog' import {useDialogControl} from '#/components/Dialog'
import {Bot_Filled as RobotIcon} from '#/components/icons/Bot' import {Bot_Filled as RobotIcon} from '#/components/icons/Bot'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {com} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
export function isBotAccount(profile: { export function isBotAccount(profile: {
+2 -2
View File
@@ -1,11 +1,10 @@
import {useCallback, useEffect, useMemo} from 'react' import {useCallback, useEffect, useMemo} from 'react'
import {type GestureResponderEvent, View} from 'react-native' import {type GestureResponderEvent, View} from 'react-native'
import {AtUri} from '@atproto/syntax'
import {RichText as RichTextApi} from '@bsky.app/sdk/richtext' import {RichText as RichTextApi} from '@bsky.app/sdk/richtext'
import {Plural, Trans, useLingui} from '@lingui/react/macro' import {Plural, Trans, useLingui} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
import {AtUri} from '@atproto/syntax'
import {app} from '#/lexicons'
import {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
import {logger} from '#/logger' import {logger} from '#/logger'
import {precacheFeedFromGeneratorView} from '#/state/queries/feed' import {precacheFeedFromGeneratorView} from '#/state/queries/feed'
@@ -32,6 +31,7 @@ import {RichText, type RichTextProps} from '#/components/RichText'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useActiveLiveEventFeedUris} from '#/features/liveEvents/context' import {useActiveLiveEventFeedUris} from '#/features/liveEvents/context'
import {app} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
import {Trash_Stroke2_Corner0_Rounded as TrashIcon} from './icons/Trash' import {Trash_Stroke2_Corner0_Rounded as TrashIcon} from './icons/Trash'
+1 -1
View File
@@ -10,7 +10,6 @@ import Animated, {
import {Trans, useLingui} from '@lingui/react/macro' import {Trans, useLingui} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {app} from '#/lexicons'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {useGetPopularFeedsQuery} from '#/state/queries/feed' import {useGetPopularFeedsQuery} from '#/state/queries/feed'
@@ -40,6 +39,7 @@ import {ProgressGuideList} from '#/components/ProgressGuide/List'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {type Metrics, useAnalytics} from '#/analytics' import {type Metrics, useAnalytics} from '#/analytics'
import {IS_IOS} from '#/env' import {IS_IOS} from '#/env'
import {app} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
import {FollowDialogWithoutGuide} from './ProgressGuide/FollowDialog' import {FollowDialogWithoutGuide} from './ProgressGuide/FollowDialog'
+1 -1
View File
@@ -3,13 +3,13 @@ import {View} from 'react-native'
import {moderateProfile, type ModerationOpts} from '@bsky.app/sdk/moderation' import {moderateProfile, type ModerationOpts} from '@bsky.app/sdk/moderation'
import {Plural, Trans, useLingui} from '@lingui/react/macro' import {Plural, Trans, useLingui} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {makeProfileLink} from '#/lib/routes/links' import {makeProfileLink} from '#/lib/routes/links'
import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeDisplayName} from '#/lib/strings/display-names'
import {UserAvatar} from '#/view/com/util/UserAvatar' import {UserAvatar} from '#/view/com/util/UserAvatar'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {Link, type LinkProps} from '#/components/Link' import {Link, type LinkProps} from '#/components/Link'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {app} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
const AVI_SIZE = 30 const AVI_SIZE = 30
+1 -1
View File
@@ -2,7 +2,6 @@ import {useCallback, useMemo, useState} from 'react'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {app} from '#/lexicons'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
import {cleanError} from '#/lib/strings/errors' import {cleanError} from '#/lib/strings/errors'
import {logger} from '#/logger' import {logger} from '#/logger'
@@ -11,6 +10,7 @@ import {useResolveUriQuery} from '#/state/queries/resolve-uri'
import {ProfileCardWithFollowBtn} from '#/view/com/profile/ProfileCard' import {ProfileCardWithFollowBtn} from '#/view/com/profile/ProfileCard'
import {List} from '#/view/com/util/List' import {List} from '#/view/com/util/List'
import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
import {app} from '#/lexicons'
function renderItem({ function renderItem({
item, item,
+2 -2
View File
@@ -1,13 +1,12 @@
import {useEffect, useMemo} from 'react' import {useEffect, useMemo} from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import {AtUri} from '@atproto/syntax'
import {moderateUserList, type ModerationUI} from '@bsky.app/sdk/moderation' import {moderateUserList, type ModerationUI} from '@bsky.app/sdk/moderation'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
import {AtUri} from '@atproto/syntax'
import {app} from '#/lexicons'
import {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {precacheList} from '#/state/queries/feed' import {precacheList} from '#/state/queries/feed'
@@ -23,6 +22,7 @@ import {
import {Link as InternalLink, type LinkProps} from '#/components/Link' import {Link as InternalLink, type LinkProps} from '#/components/Link'
import * as Hider from '#/components/moderation/Hider' import * as Hider from '#/components/moderation/Hider'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {app} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
/* /*
+1 -1
View File
@@ -2,7 +2,6 @@ import {type StyleProp, StyleSheet, View, type ViewStyle} from 'react-native'
import {Image} from 'expo-image' import {Image} from 'expo-image'
import {Trans, useLingui} from '@lingui/react/macro' import {Trans, useLingui} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {shareImageModal} from '#/lib/media/manip' import {shareImageModal} from '#/lib/media/manip'
import {useSaveImageToMediaLibrary} from '#/lib/media/save-image' import {useSaveImageToMediaLibrary} from '#/lib/media/save-image'
import {isGifEmbed} from '#/lib/strings/embed-player' import {isGifEmbed} from '#/lib/strings/embed-player'
@@ -13,6 +12,7 @@ import {MediaInsetBorder} from '#/components/MediaInsetBorder'
import * as PeekMenu from '#/components/PeekMenu' import * as PeekMenu from '#/components/PeekMenu'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' import {PlayButtonIcon} from '#/components/video/PlayButtonIcon'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
/** /**
+1 -1
View File
@@ -6,7 +6,6 @@ import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {differenceInSeconds} from 'date-fns' import {differenceInSeconds} from 'date-fns'
import {app} from '#/lexicons'
import {HITSLOP_10} from '#/lib/constants' import {HITSLOP_10} from '#/lib/constants'
import {useGetTimeAgo} from '#/lib/hooks/useTimeAgo' import {useGetTimeAgo} from '#/lib/hooks/useTimeAgo'
import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeDisplayName} from '#/lib/strings/display-names'
@@ -20,6 +19,7 @@ import {Newskie} from '#/components/icons/Newskie'
import * as StarterPackCard from '#/components/StarterPack/StarterPackCard' import * as StarterPackCard from '#/components/StarterPack/StarterPackCard'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {IS_NATIVE} from '#/env' import {IS_NATIVE} from '#/env'
import {app} from '#/lexicons'
export function NewskieDialog({ export function NewskieDialog({
profile, profile,
@@ -1,10 +1,10 @@
import {type StyleProp, type ViewStyle} from 'react-native' import {type StyleProp, type ViewStyle} from 'react-native'
import {app} from '#/lexicons'
import {atoms as a} from '#/alf' import {atoms as a} from '#/alf'
import * as ChatInvite from '#/components/dms/ChatInvite' import * as ChatInvite from '#/components/dms/ChatInvite'
import {ExternalEmbed} from '#/components/Post/Embed/ExternalEmbed' import {ExternalEmbed} from '#/components/Post/Embed/ExternalEmbed'
import {JoinRequestEmbedBody} from '#/components/Post/Embed/JoinRequestEmbed' import {JoinRequestEmbedBody} from '#/components/Post/Embed/JoinRequestEmbed'
import {app} from '#/lexicons'
/** /**
* Renders a chat invite link found in an `app.bsky.embed.external` embed (e.g. * Renders a chat invite link found in an `app.bsky.embed.external` embed (e.g.
@@ -8,7 +8,6 @@ import {Image} from 'expo-image'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {app} from '#/lexicons'
import {type EmbedPlayerParams} from '#/lib/strings/embed-player' import {type EmbedPlayerParams} from '#/lib/strings/embed-player'
import {useExternalEmbedsPrefs} from '#/state/preferences' import {useExternalEmbedsPrefs} from '#/state/preferences'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
@@ -17,6 +16,7 @@ import {EmbedConsentDialog} from '#/components/dialogs/EmbedConsent'
import {Fill} from '#/components/Fill' import {Fill} from '#/components/Fill'
import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' import {PlayButtonIcon} from '#/components/video/PlayButtonIcon'
import {IS_IOS, IS_NATIVE, IS_WEB} from '#/env' import {IS_IOS, IS_NATIVE, IS_WEB} from '#/env'
import {app} from '#/lexicons'
export function ExternalGif({ export function ExternalGif({
link, link,
@@ -19,7 +19,6 @@ import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {app} from '#/lexicons'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
import { import {
type EmbedPlayerParams, type EmbedPlayerParams,
@@ -34,6 +33,7 @@ import {Fill} from '#/components/Fill'
import {KeepAwake} from '#/components/KeepAwake' import {KeepAwake} from '#/components/KeepAwake'
import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' import {PlayButtonIcon} from '#/components/video/PlayButtonIcon'
import {IS_NATIVE} from '#/env' import {IS_NATIVE} from '#/env'
import {app} from '#/lexicons'
interface ShouldStartLoadRequest { interface ShouldStartLoadRequest {
url: string url: string
@@ -4,7 +4,6 @@ import {Image} from 'expo-image'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {app} from '#/lexicons'
import {parseAltFromGIFDescription} from '#/lib/gif-alt-text' import {parseAltFromGIFDescription} from '#/lib/gif-alt-text'
import {useHaptics} from '#/lib/haptics' import {useHaptics} from '#/lib/haptics'
import {shareUrl} from '#/lib/sharing' import {shareUrl} from '#/lib/sharing'
@@ -20,6 +19,7 @@ import {Earth_Stroke2_Corner0_Rounded as Globe} from '#/components/icons/Globe'
import {Link} from '#/components/Link' import {Link} from '#/components/Link'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {IS_NATIVE} from '#/env' import {IS_NATIVE} from '#/env'
import {app} from '#/lexicons'
import {ExternalGif} from './ExternalGif' import {ExternalGif} from './ExternalGif'
import {ExternalPlayer} from './ExternalPlayer' import {ExternalPlayer} from './ExternalPlayer'
import {GifEmbed} from './Gif' import {GifEmbed} from './Gif'
+1 -1
View File
@@ -1,6 +1,6 @@
import {useMemo} from 'react' import {useMemo} from 'react'
import {moderateFeedGenerator} from '@bsky.app/sdk/moderation' import {moderateFeedGenerator} from '@bsky.app/sdk/moderation'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import * as FeedCard from '#/components/FeedCard' import * as FeedCard from '#/components/FeedCard'
+2 -2
View File
@@ -3,8 +3,6 @@ import {InteractionManager, View} from 'react-native'
import {type AnimatedRef} from 'react-native-reanimated' import {type AnimatedRef} from 'react-native-reanimated'
import {Image} from 'expo-image' import {Image} from 'expo-image'
import * as bsky from '#/types/bsky'
import {app} from '#/lexicons'
import {atoms as a, tokens} from '#/alf' import {atoms as a, tokens} from '#/alf'
import {AutoSizedImage} from '#/components/images/AutoSizedImage' import {AutoSizedImage} from '#/components/images/AutoSizedImage'
import {Gallery} from '#/components/images/Gallery' import {Gallery} from '#/components/images/Gallery'
@@ -17,6 +15,8 @@ import {type Dimensions} from '#/components/Lightbox/types'
import {ImageContextMenu} from '#/components/Post/Embed/ImageContextMenu' import {ImageContextMenu} from '#/components/Post/Embed/ImageContextMenu'
import {PostEmbedViewContext} from '#/components/Post/Embed/types' import {PostEmbedViewContext} from '#/components/Post/Embed/types'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky'
import {type EmbedType} from '#/types/bsky/post' import {type EmbedType} from '#/types/bsky/post'
import {type CommonProps} from './types' import {type CommonProps} from './types'
+1 -1
View File
@@ -1,6 +1,6 @@
import {useMemo} from 'react' import {useMemo} from 'react'
import {moderateUserList} from '@bsky.app/sdk/moderation' import {moderateUserList} from '@bsky.app/sdk/moderation'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import * as ListCard from '#/components/ListCard' import * as ListCard from '#/components/ListCard'
@@ -1,8 +1,8 @@
import {Fragment, type ReactNode} from 'react' import {Fragment, type ReactNode} from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import {AtUri} from '@atproto/syntax'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {AtUri} from '@atproto/syntax'
import {toNiceDomain} from '#/lib/strings/url-helpers' import {toNiceDomain} from '#/lib/strings/url-helpers'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import { import {
@@ -1,5 +1,5 @@
import {app} from '#/lexicons'
import {Context, useAlf, utils} from '#/alf' import {Context, useAlf, utils} from '#/alf'
import {app} from '#/lexicons'
/** /**
* Overrides only the values needed for `secondary_inverted` buttons atm. * Overrides only the values needed for `secondary_inverted` buttons atm.
@@ -1,9 +1,9 @@
import {type StyleProp, View, type ViewStyle} from 'react-native' import {type StyleProp, View, type ViewStyle} from 'react-native'
import {Image} from 'expo-image' import {Image} from 'expo-image'
import {AtUri} from '@atproto/syntax'
import {plural} from '@lingui/core/macro' import {plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {AtUri} from '@atproto/syntax'
import {useHaptics} from '#/lib/haptics' import {useHaptics} from '#/lib/haptics'
import {shareUrl} from '#/lib/sharing' import {shareUrl} from '#/lib/sharing'
import {niceDate} from '#/lib/strings/time' import {niceDate} from '#/lib/strings/time'
@@ -1,7 +1,7 @@
import {app} from '#/lexicons'
import {Leaflet} from '#/components/icons/community/Leaflet' import {Leaflet} from '#/components/icons/community/Leaflet'
import {Offprint} from '#/components/icons/community/Offprint' import {Offprint} from '#/components/icons/community/Offprint'
import {Pckt} from '#/components/icons/community/Pckt' import {Pckt} from '#/components/icons/community/Pckt'
import {app} from '#/lexicons'
export type StandardSitePublisher = { export type StandardSitePublisher = {
host: string host: string
@@ -1,4 +1,4 @@
import {app} from '#/lexicons' import {type app} from '#/lexicons'
export type CommonProps = { export type CommonProps = {
view: app.bsky.embed.external.ViewExternal view: app.bsky.embed.external.ViewExternal
@@ -1,5 +1,5 @@
import {isStandardSiteEmbed, isStandardSitePublicationEmbed} from './utils'
import {app} from '#/lexicons' import {app} from '#/lexicons'
import {isStandardSiteEmbed, isStandardSitePublicationEmbed} from './utils'
function makeView( function makeView(
partial: Record<string, unknown>, partial: Record<string, unknown>,
@@ -1,4 +1,5 @@
import {AtUri} from '@atproto/syntax' import {AtUri} from '@atproto/syntax'
import {app, com} from '#/lexicons' import {app, com} from '#/lexicons'
export function isStandardSiteDocumentUri( export function isStandardSiteDocumentUri(
@@ -3,7 +3,6 @@ import {Pressable, type StyleProp, View, type ViewStyle} from 'react-native'
import {BlueskyVideoView} from '@bsky.app/video' import {BlueskyVideoView} from '@bsky.app/video'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {HITSLOP_30} from '#/lib/constants' import {HITSLOP_30} from '#/lib/constants'
import {useAutoplayDisabled} from '#/state/preferences' import {useAutoplayDisabled} from '#/state/preferences'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
@@ -17,6 +16,7 @@ import {KeepAwake} from '#/components/KeepAwake'
import {MediaInsetBorder} from '#/components/MediaInsetBorder' import {MediaInsetBorder} from '#/components/MediaInsetBorder'
import {useReportDialogMetadataContext} from '#/components/moderation/ReportDialog/ReportDialogMetadataContext' import {useReportDialogMetadataContext} from '#/components/moderation/ReportDialog/ReportDialogMetadataContext'
import {useVideoMuteState} from '#/components/Post/Embed/VideoEmbed/VideoVolumeContext' import {useVideoMuteState} from '#/components/Post/Embed/VideoEmbed/VideoVolumeContext'
import {app} from '#/lexicons'
import {GifPresentationControls} from '../GifPresentationControls' import {GifPresentationControls} from '../GifPresentationControls'
import {TimeIndicator} from './TimeIndicator' import {TimeIndicator} from './TimeIndicator'
@@ -1,4 +1,4 @@
import {app} from '#/lexicons' import {type app} from '#/lexicons'
export type VideoEmbedInnerWebProps = { export type VideoEmbedInnerWebProps = {
embed: app.bsky.embed.video.View embed: app.bsky.embed.video.View
@@ -9,7 +9,6 @@ import {
createPlaybackTelemetry, createPlaybackTelemetry,
type PlaybackTelemetry, type PlaybackTelemetry,
} from '#/lib/media/video/playbackTelemetry' } from '#/lib/media/video/playbackTelemetry'
import {app} from '#/lexicons'
import {ErrorBoundary} from '#/view/com/util/ErrorBoundary' import {ErrorBoundary} from '#/view/com/util/ErrorBoundary'
import {atoms as a, platform} from '#/alf' import {atoms as a, platform} from '#/alf'
import {Button} from '#/components/Button' import {Button} from '#/components/Button'
@@ -17,6 +16,7 @@ import {useThrottledValue} from '#/components/hooks/useThrottledValue'
import {ConstrainedImage} from '#/components/images/AutoSizedImage' import {ConstrainedImage} from '#/components/images/AutoSizedImage'
import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' import {PlayButtonIcon} from '#/components/video/PlayButtonIcon'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
import {GifPresentationControls} from './GifPresentationControls' import {GifPresentationControls} from './GifPresentationControls'
import {VideoEmbedInnerNative} from './VideoEmbedInner/VideoEmbedInnerNative' import {VideoEmbedInnerNative} from './VideoEmbedInner/VideoEmbedInnerNative'
import * as VideoFallback from './VideoEmbedInner/VideoFallback' import * as VideoFallback from './VideoEmbedInner/VideoFallback'
@@ -10,7 +10,6 @@ import {View} from 'react-native'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {app} from '#/lexicons'
import {ErrorBoundary} from '#/view/com/util/ErrorBoundary' import {ErrorBoundary} from '#/view/com/util/ErrorBoundary'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {useIsWithinMessage} from '#/components/dms/MessageContext' import {useIsWithinMessage} from '#/components/dms/MessageContext'
@@ -25,6 +24,7 @@ import {
} from '#/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerWeb' } from '#/components/Post/Embed/VideoEmbed/VideoEmbedInner/VideoEmbedInnerWeb'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {IS_WEB_FIREFOX} from '#/env' import {IS_WEB_FIREFOX} from '#/env'
import {app} from '#/lexicons'
import {useActiveVideoWeb} from './ActiveVideoWebContext' import {useActiveVideoWeb} from './ActiveVideoWebContext'
import * as VideoFallback from './VideoEmbedInner/VideoFallback' import * as VideoFallback from './VideoEmbedInner/VideoFallback'
+4 -4
View File
@@ -1,13 +1,12 @@
import {useCallback, useMemo} from 'react' import {useCallback, useMemo} from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {type $Typed} from '@atproto/lex'
import {AtUri} from '@atproto/syntax'
import {moderatePost} from '@bsky.app/sdk/moderation' import {moderatePost} from '@bsky.app/sdk/moderation'
import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
import {type $Typed} from '@atproto/lex'
import {AtUri} from '@atproto/syntax'
import {app} from '#/lexicons'
import {makeProfileLink} from '#/lib/routes/links' import {makeProfileLink} from '#/lib/routes/links'
import {getChatInviteCodeFromUrl} from '#/lib/strings/url-helpers' import {getChatInviteCodeFromUrl} from '#/lib/strings/url-helpers'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
@@ -26,6 +25,7 @@ import {isStandardSiteEmbed} from '#/components/Post/Embed/StandardSiteEmbed/uti
import {RichText} from '#/components/RichText' import {RichText} from '#/components/RichText'
import {Embed as StarterPackCard} from '#/components/StarterPack/StarterPackCard' import {Embed as StarterPackCard} from '#/components/StarterPack/StarterPackCard'
import {SubtleHover} from '#/components/SubtleHover' import {SubtleHover} from '#/components/SubtleHover'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
import { import {
type Embed as TEmbed, type Embed as TEmbed,
+1
View File
@@ -1,5 +1,6 @@
import {type StyleProp, type ViewStyle} from 'react-native' import {type StyleProp, type ViewStyle} from 'react-native'
import {type ModerationDecision} from '@bsky.app/sdk/moderation' import {type ModerationDecision} from '@bsky.app/sdk/moderation'
import {app} from '#/lexicons' import {app} from '#/lexicons'
export enum PostEmbedViewContext { export enum PostEmbedViewContext {
+1 -1
View File
@@ -2,7 +2,6 @@ import {useCallback, useMemo} from 'react'
import {Platform, type StyleProp, type TextStyle, View} from 'react-native' import {Platform, type StyleProp, type TextStyle, View} from 'react-native'
import {Trans, useLingui} from '@lingui/react/macro' import {Trans, useLingui} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {HITSLOP_30} from '#/lib/constants' import {HITSLOP_30} from '#/lib/constants'
import {useTranslate} from '#/lib/translation' import {useTranslate} from '#/lib/translation'
import { import {
@@ -28,6 +27,7 @@ import * as Select from '#/components/Select'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {IS_WEB} from '#/env' import {IS_WEB} from '#/env'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
const X_ICON_OFFSET = 16 const X_ICON_OFFSET = 16
@@ -4,7 +4,6 @@ import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {useCleanError} from '#/lib/hooks/useCleanError' import {useCleanError} from '#/lib/hooks/useCleanError'
import {type Shadow} from '#/state/cache/post-shadow' import {type Shadow} from '#/state/cache/post-shadow'
import {useFeedFeedbackContext} from '#/state/feed-feedback' import {useFeedFeedbackContext} from '#/state/feed-feedback'
@@ -15,6 +14,7 @@ import {Bookmark, BookmarkFilled} from '#/components/icons/Bookmark'
import {Trash_Stroke2_Corner0_Rounded as TrashIcon} from '#/components/icons/Trash' import {Trash_Stroke2_Corner0_Rounded as TrashIcon} from '#/components/icons/Trash'
import * as toast from '#/components/Toast' import * as toast from '#/components/Toast'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
import {PostControlButton, PostControlButtonIcon} from './PostControlButton' import {PostControlButton, PostControlButtonIcon} from './PostControlButton'
export const BookmarkButton = memo(function BookmarkButton({ export const BookmarkButton = memo(function BookmarkButton({
@@ -6,13 +6,12 @@ import {
type ViewStyle, type ViewStyle,
} from 'react-native' } from 'react-native'
import * as Clipboard from 'expo-clipboard' import * as Clipboard from 'expo-clipboard'
import {AtUri} from '@atproto/syntax'
import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext'
import {plural} from '@lingui/core/macro' import {plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {AtUri} from '@atproto/syntax'
import {app} from '#/lexicons'
import {DISCOVER_DEBUG_DIDS} from '#/lib/constants' import {DISCOVER_DEBUG_DIDS} from '#/lib/constants'
import {useOpenLink} from '#/lib/hooks/useOpenLink' import {useOpenLink} from '#/lib/hooks/useOpenLink'
import {getCurrentRoute} from '#/lib/routes/helpers' import {getCurrentRoute} from '#/lib/routes/helpers'
@@ -93,6 +92,7 @@ import * as Prompt from '#/components/Prompt'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {IS_INTERNAL} from '#/env' import {IS_INTERNAL} from '#/env'
import {app} from '#/lexicons'
let PostMenuItems = ({ let PostMenuItems = ({
post, post,
@@ -3,12 +3,12 @@ import {type Insets} from 'react-native'
import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {type Shadow} from '#/state/cache/post-shadow' import {type Shadow} from '#/state/cache/post-shadow'
import {EventStopper} from '#/view/com/util/EventStopper' import {EventStopper} from '#/view/com/util/EventStopper'
import {DotGrid3x1_Stroke2_Corner0_Rounded as DotsHorizontal} from '#/components/icons/DotGrid' import {DotGrid3x1_Stroke2_Corner0_Rounded as DotsHorizontal} from '#/components/icons/DotGrid'
import * as Menu from '#/components/Menu' import * as Menu from '#/components/Menu'
import {useMenuControl} from '#/components/Menu' import {useMenuControl} from '#/components/Menu'
import {app} from '#/lexicons'
import {PostControlButton, PostControlButtonIcon} from '../PostControlButton' import {PostControlButton, PostControlButtonIcon} from '../PostControlButton'
import {PostMenuItems} from './PostMenuItems' import {PostMenuItems} from './PostMenuItems'
@@ -5,7 +5,6 @@ import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {chat} from '#/lexicons'
import {isBlockedOrBlocking, isMuted} from '#/lib/moderation/blocked-and-muted' import {isBlockedOrBlocking, isMuted} from '#/lib/moderation/blocked-and-muted'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
@@ -22,6 +21,7 @@ import {type ConvoWithDetails, parseConvoView} from '#/components/dms/util'
import {ProfileBadges} from '#/components/ProfileBadges' import {ProfileBadges} from '#/components/ProfileBadges'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {chat} from '#/lexicons'
export function RecentChats({ export function RecentChats({
postUri, postUri,
@@ -1,10 +1,10 @@
import {memo, useMemo} from 'react' import {memo, useMemo} from 'react'
import * as ExpoClipboard from 'expo-clipboard' import * as ExpoClipboard from 'expo-clipboard'
import {AtUri} from '@atproto/syntax'
import {Trans, useLingui} from '@lingui/react/macro' import {Trans, useLingui} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
import {AtUri} from '@atproto/syntax'
import {makeProfileLink} from '#/lib/routes/links' import {makeProfileLink} from '#/lib/routes/links'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
import {shareText, shareUrl} from '#/lib/sharing' import {shareText, shareUrl} from '#/lib/sharing'
@@ -1,8 +1,8 @@
import {type PressableProps, type StyleProp, type ViewStyle} from 'react-native' import {type PressableProps, type StyleProp, type ViewStyle} from 'react-native'
import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext'
import {app} from '#/lexicons'
import {type Shadow} from '#/state/cache/post-shadow' import {type Shadow} from '#/state/cache/post-shadow'
import {app} from '#/lexicons'
export interface ShareMenuItemsProps { export interface ShareMenuItemsProps {
testID: string testID: string
@@ -1,8 +1,8 @@
import {memo, useMemo} from 'react' import {memo, useMemo} from 'react'
import {AtUri} from '@atproto/syntax'
import {Trans, useLingui} from '@lingui/react/macro' import {Trans, useLingui} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {AtUri} from '@atproto/syntax'
import {makeProfileLink} from '#/lib/routes/links' import {makeProfileLink} from '#/lib/routes/links'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
import {shareText, shareUrl} from '#/lib/sharing' import {shareText, shareUrl} from '#/lib/sharing'
@@ -1,11 +1,10 @@
import {memo, useMemo, useState} from 'react' import {memo, useMemo, useState} from 'react'
import {type Insets} from 'react-native' import {type Insets} from 'react-native'
import {AtUri} from '@atproto/syntax'
import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext' import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {AtUri} from '@atproto/syntax'
import {app} from '#/lexicons'
import {makeProfileLink} from '#/lib/routes/links' import {makeProfileLink} from '#/lib/routes/links'
import {shareUrl} from '#/lib/sharing' import {shareUrl} from '#/lib/sharing'
import {toShareUrl} from '#/lib/strings/url-helpers' import {toShareUrl} from '#/lib/strings/url-helpers'
@@ -17,6 +16,7 @@ import {ArrowShareRight_Stroke2_Corner2_Rounded as ArrowShareRightIcon} from '#/
import * as Menu from '#/components/Menu' import * as Menu from '#/components/Menu'
import {useMenuControl} from '#/components/Menu' import {useMenuControl} from '#/components/Menu'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
import {PostControlButton, PostControlButtonIcon} from '../PostControlButton' import {PostControlButton, PostControlButtonIcon} from '../PostControlButton'
import {ShareMenuItems} from './ShareMenuItems' import {ShareMenuItems} from './ShareMenuItems'
+1 -1
View File
@@ -4,7 +4,6 @@ import {type RichText as RichTextAPI} from '@bsky.app/sdk/richtext'
import {plural} from '@lingui/core/macro' import {plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {CountWheel} from '#/lib/custom-animations/CountWheel' import {CountWheel} from '#/lib/custom-animations/CountWheel'
import {AnimatedLikeIcon} from '#/lib/custom-animations/LikeIcon' import {AnimatedLikeIcon} from '#/lib/custom-animations/LikeIcon'
import {useOpenComposer} from '#/lib/hooks/useOpenComposer' import {useOpenComposer} from '#/lib/hooks/useOpenComposer'
@@ -25,6 +24,7 @@ import {useFormatPostStatCount} from '#/components/PostControls/util'
import * as Skele from '#/components/Skeleton' import * as Skele from '#/components/Skeleton'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
import {BookmarkButton} from './BookmarkButton' import {BookmarkButton} from './BookmarkButton'
import { import {
PostControlButton, PostControlButton,
@@ -6,7 +6,6 @@ import {msg, plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {app} from '#/lexicons'
import {getModerationCauseKey} from '#/lib/moderation' import {getModerationCauseKey} from '#/lib/moderation'
import {makeProfileLink} from '#/lib/routes/links' import {makeProfileLink} from '#/lib/routes/links'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
@@ -39,6 +38,7 @@ import {Text} from '#/components/Typography'
import {IS_WEB_TOUCH_DEVICE} from '#/env' import {IS_WEB_TOUCH_DEVICE} from '#/env'
import {useActorStatus} from '#/features/liveNow' import {useActorStatus} from '#/features/liveNow'
import {LiveStatus} from '#/features/liveNow/components/LiveStatusDialog' import {LiveStatus} from '#/features/liveNow/components/LiveStatusDialog'
import {app} from '#/lexicons'
import {type ProfileHoverCardProps} from './types' import {type ProfileHoverCardProps} from './types'
const floatingMiddlewares = [ const floatingMiddlewares = [
@@ -1,13 +1,13 @@
import {forwardRef, useCallback, useImperativeHandle, useState} from 'react' import {forwardRef, useCallback, useImperativeHandle, useState} from 'react'
import {type ListRenderItemInfo, View} from 'react-native' import {type ListRenderItemInfo, View} from 'react-native'
import {app} from '#/lexicons'
import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset' import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset'
import {List, type ListRef} from '#/view/com/util/List' import {List, type ListRef} from '#/view/com/util/List'
import {type SectionRef} from '#/screens/Profile/Sections/types' import {type SectionRef} from '#/screens/Profile/Sections/types'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import * as FeedCard from '#/components/FeedCard' import * as FeedCard from '#/components/FeedCard'
import {IS_NATIVE, IS_WEB} from '#/env' import {IS_NATIVE, IS_WEB} from '#/env'
import {app} from '#/lexicons'
function keyExtractor(item: app.bsky.feed.defs.GeneratorView) { function keyExtractor(item: app.bsky.feed.defs.GeneratorView) {
return item.uri return item.uri
@@ -1,13 +1,12 @@
import {forwardRef, useCallback, useImperativeHandle, useState} from 'react' import {forwardRef, useCallback, useImperativeHandle, useState} from 'react'
import {type ListRenderItemInfo, View} from 'react-native' import {type ListRenderItemInfo, View} from 'react-native'
import {AtUri} from '@atproto/syntax'
import {type ModerationOpts} from '@bsky.app/sdk/moderation' import {type ModerationOpts} from '@bsky.app/sdk/moderation'
import { import {
type InfiniteData, type InfiniteData,
type UseInfiniteQueryResult, type UseInfiniteQueryResult,
} from '@tanstack/react-query' } from '@tanstack/react-query'
import {AtUri} from '@atproto/syntax'
import {app} from '#/lexicons'
import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset' import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted' import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted'
@@ -19,6 +18,7 @@ import {atoms as a, useTheme} from '#/alf'
import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
import {Default as ProfileCard} from '#/components/ProfileCard' import {Default as ProfileCard} from '#/components/ProfileCard'
import {IS_NATIVE, IS_WEB} from '#/env' import {IS_NATIVE, IS_WEB} from '#/env'
import {app} from '#/lexicons'
function keyExtractor(item: app.bsky.actor.defs.ProfileView, index: number) { function keyExtractor(item: app.bsky.actor.defs.ProfileView, index: number) {
return `${item.did}-${index}` return `${item.did}-${index}`
@@ -11,7 +11,6 @@ import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {app} from '#/lexicons'
import {useGenerateStarterPackMutation} from '#/lib/generate-starterpack' import {useGenerateStarterPackMutation} from '#/lib/generate-starterpack'
import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset' import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset'
import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification' import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification'
@@ -37,6 +36,7 @@ import * as Prompt from '#/components/Prompt'
import {Default as StarterPackCard} from '#/components/StarterPack/StarterPackCard' import {Default as StarterPackCard} from '#/components/StarterPack/StarterPackCard'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {IS_IOS} from '#/env' import {IS_IOS} from '#/env'
import {app} from '#/lexicons'
interface SectionRef { interface SectionRef {
scrollToTop: () => void scrollToTop: () => void
+1 -1
View File
@@ -5,13 +5,13 @@ import QRCode from 'react-native-qrcode-styled'
import type ViewShot from 'react-native-view-shot' import type ViewShot from 'react-native-view-shot'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {Logo} from '#/view/icons/Logo' import {Logo} from '#/view/icons/Logo'
import {Logotype} from '#/view/icons/Logotype' import {Logotype} from '#/view/icons/Logotype'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {LinearGradientBackground} from '#/components/LinearGradientBackground' import {LinearGradientBackground} from '#/components/LinearGradientBackground'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {IS_WEB} from '#/env' import {IS_WEB} from '#/env'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
const LazyViewShot = lazy( const LazyViewShot = lazy(
+1 -1
View File
@@ -7,7 +7,6 @@ import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {logger} from '#/logger' import {logger} from '#/logger'
import {atoms as a, useBreakpoints} from '#/alf' import {atoms as a, useBreakpoints} from '#/alf'
import {Button, ButtonIcon, ButtonText} from '#/components/Button' import {Button, ButtonIcon, ButtonText} from '#/components/Button'
@@ -21,6 +20,7 @@ import {QrCode} from '#/components/StarterPack/QrCode'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {IS_NATIVE, IS_WEB} from '#/env' import {IS_NATIVE, IS_WEB} from '#/env'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
export function QrCodeDialog({ export function QrCodeDialog({
+1 -1
View File
@@ -4,7 +4,6 @@ import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {useSaveImageToMediaLibrary} from '#/lib/media/save-image' import {useSaveImageToMediaLibrary} from '#/lib/media/save-image'
import {shareUrl} from '#/lib/sharing' import {shareUrl} from '#/lib/sharing'
import {getStarterPackOgCard} from '#/lib/strings/starter-pack' import {getStarterPackOgCard} from '#/lib/strings/starter-pack'
@@ -19,6 +18,7 @@ import {Loader} from '#/components/Loader'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {IS_NATIVE, IS_WEB} from '#/env' import {IS_NATIVE, IS_WEB} from '#/env'
import {app} from '#/lexicons'
interface Props { interface Props {
starterPack: app.bsky.graph.defs.StarterPackView starterPack: app.bsky.graph.defs.StarterPackView
@@ -1,13 +1,12 @@
import {useMemo} from 'react' import {useMemo} from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import {Image} from 'expo-image' import {Image} from 'expo-image'
import {AtUri} from '@atproto/syntax'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Plural, Trans} from '@lingui/react/macro' import {Plural, Trans} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
import {AtUri} from '@atproto/syntax'
import {app} from '#/lexicons'
import {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
import {getStarterPackOgCard} from '#/lib/strings/starter-pack' import {getStarterPackOgCard} from '#/lib/strings/starter-pack'
import {precacheResolvedUri} from '#/state/queries/resolve-uri' import {precacheResolvedUri} from '#/state/queries/resolve-uri'
@@ -20,6 +19,7 @@ import {
type LinkProps as BaseLinkProps, type LinkProps as BaseLinkProps,
} from '#/components/Link' } from '#/components/Link'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
export function Default({ export function Default({
@@ -6,7 +6,6 @@ import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
import {type ListMethods} from '#/view/com/util/List' import {type ListMethods} from '#/view/com/util/List'
import { import {
@@ -22,6 +21,7 @@ import {
} from '#/components/StarterPack/Wizard/WizardListCard' } from '#/components/StarterPack/Wizard/WizardListCard'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {IS_WEB} from '#/env' import {IS_WEB} from '#/env'
import {app} from '#/lexicons'
function keyExtractor( function keyExtractor(
item: app.bsky.actor.defs.ProfileViewBasic | app.bsky.feed.defs.GeneratorView, item: app.bsky.actor.defs.ProfileViewBasic | app.bsky.feed.defs.GeneratorView,
@@ -9,7 +9,6 @@ import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {DISCOVER_FEED_URI, STARTER_PACK_MAX_SIZE} from '#/lib/constants' import {DISCOVER_FEED_URI, STARTER_PACK_MAX_SIZE} from '#/lib/constants'
import {sanitizeDisplayName} from '#/lib/strings/display-names' import {sanitizeDisplayName} from '#/lib/strings/display-names'
import {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
@@ -25,6 +24,7 @@ import * as Toggle from '#/components/forms/Toggle'
import {Checkbox} from '#/components/forms/Toggle' import {Checkbox} from '#/components/forms/Toggle'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
function WizardListCard({ function WizardListCard({
+2 -2
View File
@@ -1,8 +1,7 @@
import {useEffect, useMemo} from 'react' import {useEffect, useMemo} from 'react'
import {type AtUri} from '@atproto/syntax'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {type AtUri} from '@atproto/syntax'
import {app} from '#/lexicons'
import {PressableScale} from '#/lib/custom-animations/PressableScale' import {PressableScale} from '#/lib/custom-animations/PressableScale'
import {useCallOnce} from '#/lib/once' import {useCallOnce} from '#/lib/once'
// import {makeProfileLink} from '#/lib/routes/links' // import {makeProfileLink} from '#/lib/routes/links'
@@ -10,6 +9,7 @@ import {useCallOnce} from '#/lib/once'
import {native} from '#/alf' import {native} from '#/alf'
import {Link as InternalLink, type LinkProps} from '#/components/Link' import {Link as InternalLink, type LinkProps} from '#/components/Link'
import {type Metrics, useAnalytics} from '#/analytics' import {type Metrics, useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
export function TrendingTopicLink({ export function TrendingTopicLink({
topic: raw, topic: raw,
+1 -1
View File
@@ -5,7 +5,6 @@ import {LinearGradient} from 'expo-linear-gradient'
import {type ModerationDecision} from '@bsky.app/sdk/moderation' import {type ModerationDecision} from '@bsky.app/sdk/moderation'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
import {formatCount} from '#/view/com/util/numeric/format' import {formatCount} from '#/view/com/util/numeric/format'
import {UserAvatar} from '#/view/com/util/UserAvatar' import {UserAvatar} from '#/view/com/util/UserAvatar'
@@ -21,6 +20,7 @@ import {Link} from '#/components/Link'
import {MediaInsetBorder} from '#/components/MediaInsetBorder' import {MediaInsetBorder} from '#/components/MediaInsetBorder'
import * as Hider from '#/components/moderation/Hider' import * as Hider from '#/components/moderation/Hider'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
function getBlackColor(t: ReturnType<typeof useTheme>) { function getBlackColor(t: ReturnType<typeof useTheme>) {
+2 -2
View File
@@ -6,12 +6,11 @@ import {
View, View,
type ViewStyle, type ViewStyle,
} from 'react-native' } from 'react-native'
import {AtUri} from '@atproto/syntax'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {AtUri} from '@atproto/syntax'
import {app} from '#/lexicons'
import {HITSLOP_10} from '#/lib/constants' import {HITSLOP_10} from '#/lib/constants'
import {makeListLink, makeProfileLink} from '#/lib/routes/links' import {makeListLink, makeProfileLink} from '#/lib/routes/links'
import { import {
@@ -34,6 +33,7 @@ import {InlineLinkText} from '#/components/Link'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {IS_NATIVE} from '#/env' import {IS_NATIVE} from '#/env'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
interface WhoCanReplyProps { interface WhoCanReplyProps {
@@ -1,6 +1,6 @@
import {useMemo, useState} from 'react' import {useMemo, useState} from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import {type DidString} from '@atproto/syntax' import {type Un$Typed} from '@atproto/lex'
import {type ModerationOpts} from '@bsky.app/sdk/moderation' import {type ModerationOpts} from '@bsky.app/sdk/moderation'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
@@ -11,7 +11,6 @@ import {
useQueryClient, useQueryClient,
} from '@tanstack/react-query' } from '@tanstack/react-query'
import {type Un$Typed} from '@atproto/lex'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
import {cleanError} from '#/lib/strings/errors' import {cleanError} from '#/lib/strings/errors'
import {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
@@ -121,8 +120,7 @@ function DialogInner({
activitySubscription: Un$Typed<app.bsky.notification.defs.ActivitySubscription>, activitySubscription: Un$Typed<app.bsky.notification.defs.ActivitySubscription>,
) => { ) => {
await client.call(app.bsky.notification.putActivitySubscription, { await client.call(app.bsky.notification.putActivitySubscription, {
// the profile view carries an already-resolved did subject: profile.did,
subject: profile.did as DidString,
activitySubscription, activitySubscription,
}) })
}, },
+1 -1
View File
@@ -1,5 +1,5 @@
import {app} from '#/lexicons'
import {type CountryCode} from '#/lib/international-telephone-codes' import {type CountryCode} from '#/lib/international-telephone-codes'
import {app} from '#/lexicons'
import {normalizePhoneNumber} from './phone-number' import {normalizePhoneNumber} from './phone-number'
import {type Contact, type Match} from './state' import {type Contact, type Match} from './state'
+2 -2
View File
@@ -1,11 +1,10 @@
import {memo, useEffect, useMemo, useState} from 'react' import {memo, useEffect, useMemo, useState} from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import {AtUri} from '@atproto/syntax'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {AtUri} from '@atproto/syntax'
import {app} from '#/lexicons'
import {EMBED_SCRIPT} from '#/lib/constants' import {EMBED_SCRIPT} from '#/lib/constants'
import {niceDate} from '#/lib/strings/time' import {niceDate} from '#/lib/strings/time'
import {toShareUrl} from '#/lib/strings/url-helpers' import {toShareUrl} from '#/lib/strings/url-helpers'
@@ -21,6 +20,7 @@ import {
} from '#/components/icons/Chevron' } from '#/components/icons/Chevron'
import {CodeBrackets_Stroke2_Corner0_Rounded as CodeBracketsIcon} from '#/components/icons/CodeBrackets' import {CodeBrackets_Stroke2_Corner0_Rounded as CodeBracketsIcon} from '#/components/icons/CodeBrackets'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {app} from '#/lexicons'
export type ColorModeValues = 'system' | 'light' | 'dark' export type ColorModeValues = 'system' | 'light' | 'dark'
@@ -49,7 +49,7 @@ import * as Toast from '#/components/Toast'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {IS_IOS} from '#/env' import {IS_IOS} from '#/env'
import {app} from '#/lexicons' import {type app} from '#/lexicons'
export type PostInteractionSettingsFormProps = { export type PostInteractionSettingsFormProps = {
canSave?: boolean canSave?: boolean
+1 -1
View File
@@ -5,7 +5,6 @@ import {useLingui} from '@lingui/react'
import {Plural, Trans} from '@lingui/react/macro' import {Plural, Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {app} from '#/lexicons'
import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification' import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
import {isNetworkError} from '#/lib/strings/errors' import {isNetworkError} from '#/lib/strings/errors'
@@ -30,6 +29,7 @@ import * as Toast from '#/components/Toast'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {IS_WEB} from '#/env' import {IS_WEB} from '#/env'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
type StarterPackWithMembership = type StarterPackWithMembership =
@@ -5,7 +5,6 @@ import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Plural, Trans} from '@lingui/react/macro' import {Plural, Trans} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {cleanError} from '#/lib/strings/errors' import {cleanError} from '#/lib/strings/errors'
import {isOverMaxGraphemeCount} from '#/lib/strings/helpers' import {isOverMaxGraphemeCount} from '#/lib/strings/helpers'
import {richTextToString} from '#/lib/strings/rich-text-helpers' import {richTextToString} from '#/lib/strings/rich-text-helpers'
@@ -28,6 +27,7 @@ import * as Prompt from '#/components/Prompt'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {IS_WEB} from '#/env' import {IS_WEB} from '#/env'
import {app} from '#/lexicons'
const DISPLAY_NAME_MAX_GRAPHEMES = 64 const DISPLAY_NAME_MAX_GRAPHEMES = 64
const DESCRIPTION_MAX_GRAPHEMES = 300 const DESCRIPTION_MAX_GRAPHEMES = 300
@@ -5,7 +5,6 @@ import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {cleanError} from '#/lib/strings/errors' import {cleanError} from '#/lib/strings/errors'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {useAllListMembersQuery} from '#/state/queries/list-members' import {useAllListMembersQuery} from '#/state/queries/list-members'
@@ -23,6 +22,7 @@ import {
import {Loader} from '#/components/Loader' import {Loader} from '#/components/Loader'
import * as ProfileCard from '#/components/ProfileCard' import * as ProfileCard from '#/components/ProfileCard'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {app} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
export function ListAddRemoveUsersDialog({ export function ListAddRemoveUsersDialog({
+1 -1
View File
@@ -7,7 +7,6 @@ import {
useState, useState,
} from 'react' } from 'react'
import {app} from '#/lexicons'
import {logger} from '#/logger' import {logger} from '#/logger'
import {STALE} from '#/state/queries' import {STALE} from '#/state/queries'
import {Nux, useNuxs, useResetNuxs, useSaveNux} from '#/state/queries/nuxs' import {Nux, useNuxs, useResetNuxs, useSaveNux} from '#/state/queries/nuxs'
@@ -30,6 +29,7 @@ import {isSnoozed, snooze, unsnooze} from '#/components/dialogs/nuxs/snoozing'
import {type EnabledCheckProps} from '#/components/dialogs/nuxs/utils' import {type EnabledCheckProps} from '#/components/dialogs/nuxs/utils'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {useGeolocation} from '#/geolocation' import {useGeolocation} from '#/geolocation'
import {app} from '#/lexicons'
type Context = { type Context = {
activeNux: Nux | undefined activeNux: Nux | undefined
+1 -1
View File
@@ -1,8 +1,8 @@
import {app} from '#/lexicons'
import {type UsePreferencesQueryResponse} from '#/state/queries/preferences' import {type UsePreferencesQueryResponse} from '#/state/queries/preferences'
import {type SessionAccount} from '#/state/session' import {type SessionAccount} from '#/state/session'
import {type AnalyticsContextType} from '#/analytics' import {type AnalyticsContextType} from '#/analytics'
import {type Geolocation} from '#/geolocation' import {type Geolocation} from '#/geolocation'
import {app} from '#/lexicons'
export type EnabledCheckProps = { export type EnabledCheckProps = {
features: AnalyticsContextType['features'] features: AnalyticsContextType['features']
+1 -1
View File
@@ -2,10 +2,10 @@ import {View} from 'react-native'
import {type ModerationOpts} from '@bsky.app/sdk/moderation' import {type ModerationOpts} from '@bsky.app/sdk/moderation'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {chat} from '#/lexicons'
import {MessageContextMenu} from '#/components/dms/MessageContextMenu' import {MessageContextMenu} from '#/components/dms/MessageContextMenu'
import {useMessageReplies} from '#/components/dms/MessageReplies' import {useMessageReplies} from '#/components/dms/MessageReplies'
import {SwipeToReply} from '#/components/dms/SwipeToReply' import {SwipeToReply} from '#/components/dms/SwipeToReply'
import {chat} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
export function ActionsWrapper({ export function ActionsWrapper({
+1 -1
View File
@@ -4,7 +4,6 @@ import {type ModerationOpts} from '@bsky.app/sdk/moderation'
import {plural} from '@lingui/core/macro' import {plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {chat} from '#/lexicons'
import {EMOJI_REACTION_LIMIT} from '#/lib/constants' import {EMOJI_REACTION_LIMIT} from '#/lib/constants'
import {useMaybeProfileShadow} from '#/state/cache/profile-shadow' import {useMaybeProfileShadow} from '#/state/cache/profile-shadow'
import {useConvoActive} from '#/state/messages/convo' import {useConvoActive} from '#/state/messages/convo'
@@ -14,6 +13,7 @@ import {MessageContextMenu} from '#/components/dms/MessageContextMenu'
import {DotGrid3x1_Stroke2_Corner0_Rounded as DotsHorizontalIcon} from '#/components/icons/DotGrid' import {DotGrid3x1_Stroke2_Corner0_Rounded as DotsHorizontalIcon} from '#/components/icons/DotGrid'
import {EmojiSmile_Stroke2_Corner0_Rounded as EmojiSmileIcon} from '#/components/icons/Emoji' import {EmojiSmile_Stroke2_Corner0_Rounded as EmojiSmileIcon} from '#/components/icons/Emoji'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {chat} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
import {EmojiReactionPicker} from './EmojiReactionPicker' import {EmojiReactionPicker} from './EmojiReactionPicker'
import { import {
@@ -3,7 +3,6 @@ import {View} from 'react-native'
import {Trans, useLingui} from '@lingui/react/macro' import {Trans, useLingui} from '@lingui/react/macro'
import {StackActions, useNavigation} from '@react-navigation/native' import {StackActions, useNavigation} from '@react-navigation/native'
import {app} from '#/lexicons'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
import {useProfileShadow} from '#/state/cache/profile-shadow' import {useProfileShadow} from '#/state/cache/profile-shadow'
import {useLeaveConvo} from '#/state/queries/messages/leave-conversation' import {useLeaveConvo} from '#/state/queries/messages/leave-conversation'
@@ -19,6 +18,7 @@ import {Loader} from '#/components/Loader'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {IS_NATIVE} from '#/env' import {IS_NATIVE} from '#/env'
import {app} from '#/lexicons'
type ReportDialogParams = { type ReportDialogParams = {
convoId: string convoId: string
+1 -1
View File
@@ -3,7 +3,6 @@ import {View} from 'react-native'
import {Trans, useLingui} from '@lingui/react/macro' import {Trans, useLingui} from '@lingui/react/macro'
import {StackActions, useNavigation} from '@react-navigation/native' import {StackActions, useNavigation} from '@react-navigation/native'
import {app} from '#/lexicons'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
import {useProfileShadow} from '#/state/cache/profile-shadow' import {useProfileShadow} from '#/state/cache/profile-shadow'
import {useLeaveConvo} from '#/state/queries/messages/leave-conversation' import {useLeaveConvo} from '#/state/queries/messages/leave-conversation'
@@ -19,6 +18,7 @@ import {Loader} from '#/components/Loader'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {IS_NATIVE} from '#/env' import {IS_NATIVE} from '#/env'
import {app} from '#/lexicons'
type ReportDialogParams = { type ReportDialogParams = {
convoId: string convoId: string
+2 -2
View File
@@ -1,8 +1,6 @@
import {View} from 'react-native' import {View} from 'react-native'
import {Plural, Trans} from '@lingui/react/macro' import {Plural, Trans} from '@lingui/react/macro'
import * as bsky from '#/types/bsky'
import {chat} from '#/lexicons'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
import {makeProfileLink} from '#/lib/routes/links' import {makeProfileLink} from '#/lib/routes/links'
import {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
@@ -11,6 +9,8 @@ import {AvatarBubbles} from '#/components/AvatarBubbles'
import {InlineLinkText} from '#/components/Link' import {InlineLinkText} from '#/components/Link'
import {ProfileBadges} from '#/components/ProfileBadges' import {ProfileBadges} from '#/components/ProfileBadges'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {chat} from '#/lexicons'
import * as bsky from '#/types/bsky'
import {useChatInvite} from './Context' import {useChatInvite} from './Context'
/** /**
+2 -2
View File
@@ -2,8 +2,6 @@ import {setStringAsync} from 'expo-clipboard'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import * as bsky from '#/types/bsky'
import {chat} from '#/lexicons'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
import { import {
type ChatInvitePreview, type ChatInvitePreview,
@@ -19,6 +17,8 @@ import {type Props as SVGIconProps} from '#/components/icons/common'
import {RaisingHand4Finger_Stroke2_Corner2_Rounded as HandIcon} from '#/components/icons/RaisingHand' import {RaisingHand4Finger_Stroke2_Corner2_Rounded as HandIcon} from '#/components/icons/RaisingHand'
import {useIntentDialogs} from '#/components/intents/IntentDialogs' import {useIntentDialogs} from '#/components/intents/IntentDialogs'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {chat} from '#/lexicons'
import * as bsky from '#/types/bsky'
import { import {
type ChatInviteAction, type ChatInviteAction,
ChatInviteProvider, ChatInviteProvider,
+1 -1
View File
@@ -3,7 +3,6 @@ import {useWindowDimensions, View} from 'react-native'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {chat} from '#/lexicons'
import {useSession} from '#/state/session' import {useSession} from '#/state/session'
import {atoms as a, tokens, useTheme} from '#/alf' import {atoms as a, tokens, useTheme} from '#/alf'
import * as ContextMenu from '#/components/ContextMenu' import * as ContextMenu from '#/components/ContextMenu'
@@ -14,6 +13,7 @@ import {
import {PlusLarge_Stroke2_Corner0_Rounded as PlusIcon} from '#/components/icons/Plus' import {PlusLarge_Stroke2_Corner0_Rounded as PlusIcon} from '#/components/icons/Plus'
import {type TriggerProps} from '#/components/Menu/types' import {type TriggerProps} from '#/components/Menu/types'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {chat} from '#/lexicons'
import {EmojiPopup} from './EmojiPopup' import {EmojiPopup} from './EmojiPopup'
import {hasAlreadyReacted, hasReachedReactionLimit} from './util' import {hasAlreadyReacted, hasReachedReactionLimit} from './util'
@@ -3,13 +3,13 @@ import {Pressable, View} from 'react-native'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {DropdownMenu} from 'radix-ui' import {DropdownMenu} from 'radix-ui'
import {chat} from '#/lexicons'
import {useSession} from '#/state/session' import {useSession} from '#/state/session'
import {atoms as a, flatten, useTheme} from '#/alf' import {atoms as a, flatten, useTheme} from '#/alf'
import * as EmojiPicker from '#/components/EmojiPicker' import * as EmojiPicker from '#/components/EmojiPicker'
import {PlusLarge_Stroke2_Corner0_Rounded as PlusIcon} from '#/components/icons/Plus' import {PlusLarge_Stroke2_Corner0_Rounded as PlusIcon} from '#/components/icons/Plus'
import * as Menu from '#/components/Menu' import * as Menu from '#/components/Menu'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {chat} from '#/lexicons'
import {hasAlreadyReacted, hasReachedReactionLimit} from './util' import {hasAlreadyReacted, hasReachedReactionLimit} from './util'
export function EmojiReactionPicker({ export function EmojiReactionPicker({
+1 -1
View File
@@ -7,7 +7,6 @@ import {RichText} from '@bsky.app/sdk/richtext'
import {plural} from '@lingui/core/macro' import {plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {chat} from '#/lexicons'
import {EMOJI_REACTION_LIMIT} from '#/lib/constants' import {EMOJI_REACTION_LIMIT} from '#/lib/constants'
import {useGoogleTranslate} from '#/lib/hooks/useGoogleTranslate' import {useGoogleTranslate} from '#/lib/hooks/useGoogleTranslate'
import {richTextToString} from '#/lib/strings/rich-text-helpers' import {richTextToString} from '#/lib/strings/rich-text-helpers'
@@ -28,6 +27,7 @@ import {Trash_Stroke2_Corner0_Rounded as TrashIcon} from '#/components/icons/Tra
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {IS_NATIVE} from '#/env' import {IS_NATIVE} from '#/env'
import {chat} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
import {EmojiReactionPicker} from './EmojiReactionPicker' import {EmojiReactionPicker} from './EmojiReactionPicker'
import {canReact, hasReachedReactionLimit} from './util' import {canReact, hasReachedReactionLimit} from './util'
+3 -3
View File
@@ -22,14 +22,12 @@ import Animated, {
ZoomIn, ZoomIn,
ZoomOut, ZoomOut,
} from 'react-native-reanimated' } from 'react-native-reanimated'
import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext'
import {moderateProfile} from '@bsky.app/sdk/moderation' import {moderateProfile} from '@bsky.app/sdk/moderation'
import {RichText as RichTextAPI} from '@bsky.app/sdk/richtext'
import {plural} from '@lingui/core/macro' import {plural} from '@lingui/core/macro'
import {Trans, useLingui} from '@lingui/react/macro' import {Trans, useLingui} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
import * as bsky from '#/types/bsky'
import {app, chat} from '#/lexicons'
import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted' import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
import {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
@@ -54,6 +52,8 @@ import * as ProfileCard from '#/components/ProfileCard'
import * as Prompt from '#/components/Prompt' import * as Prompt from '#/components/Prompt'
import {RichText} from '#/components/RichText' import {RichText} from '#/components/RichText'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {app, chat} from '#/lexicons'
import * as bsky from '#/types/bsky'
import {DateDivider} from './DateDivider' import {DateDivider} from './DateDivider'
import {MessageItemEmbed} from './MessageItemEmbed' import {MessageItemEmbed} from './MessageItemEmbed'
import {MessageItemInviteEmbed} from './MessageItemInviteEmbed' import {MessageItemInviteEmbed} from './MessageItemInviteEmbed'
+2 -2
View File
@@ -5,11 +5,11 @@ import Animated, {
type SharedValue, type SharedValue,
useAnimatedStyle, useAnimatedStyle,
} from 'react-native-reanimated' } from 'react-native-reanimated'
import {type $Typed} from '@atproto/lex' import {type $Typed} from '@atproto/lex'
import {app} from '#/lexicons'
import {atoms as a, native, useTheme, web} from '#/alf' import {atoms as a, native, useTheme, web} from '#/alf'
import {Embed, PostEmbedViewContext} from '#/components/Post/Embed' import {Embed, PostEmbedViewContext} from '#/components/Post/Embed'
import {app} from '#/lexicons'
import {MessageContextProvider} from './MessageContext' import {MessageContextProvider} from './MessageContext'
const BORDER_RADIUS = 20 const BORDER_RADIUS = 20
@@ -5,13 +5,13 @@ import Animated, {
type SharedValue, type SharedValue,
useAnimatedStyle, useAnimatedStyle,
} from 'react-native-reanimated' } from 'react-native-reanimated'
import {type $Typed} from '@atproto/lex' import {type $Typed} from '@atproto/lex'
import {chat} from '#/lexicons'
import {useConvoActive} from '#/state/messages/convo' import {useConvoActive} from '#/state/messages/convo'
import {isKnownJoinLinkPreview} from '#/state/queries/join-links' import {isKnownJoinLinkPreview} from '#/state/queries/join-links'
import {atoms as a, native, useTheme, web} from '#/alf' import {atoms as a, native, useTheme, web} from '#/alf'
import * as ChatInvite from '#/components/dms/ChatInvite' import * as ChatInvite from '#/components/dms/ChatInvite'
import {chat} from '#/lexicons'
import {MessageContextProvider} from './MessageContext' import {MessageContextProvider} from './MessageContext'
const BORDER_RADIUS = 20 const BORDER_RADIUS = 20
+1 -1
View File
@@ -10,7 +10,6 @@ import {LayoutAnimation} from 'react-native'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
import {chat} from '#/lexicons'
import {useConvoActive} from '#/state/messages/convo' import {useConvoActive} from '#/state/messages/convo'
import {unstableCacheProfileView} from '#/state/queries/unstable-profile-cache' import {unstableCacheProfileView} from '#/state/queries/unstable-profile-cache'
import {useDialogControl} from '#/components/Dialog' import {useDialogControl} from '#/components/Dialog'
@@ -20,6 +19,7 @@ import {ReportDialog} from '#/components/moderation/ReportDialog'
import * as Prompt from '#/components/Prompt' import * as Prompt from '#/components/Prompt'
import {usePromptControl} from '#/components/Prompt' import {usePromptControl} from '#/components/Prompt'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {chat} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
type MessageDialogsContextType = { type MessageDialogsContextType = {
+1 -1
View File
@@ -5,7 +5,6 @@ import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {app} from '#/lexicons'
import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification' import {useRequireEmailVerification} from '#/lib/hooks/useRequireEmailVerification'
import {type NavigationProp} from '#/lib/routes/types' import {type NavigationProp} from '#/lib/routes/types'
import {useGetConvoAvailabilityQuery} from '#/state/queries/messages/get-convo-availability' import {useGetConvoAvailabilityQuery} from '#/state/queries/messages/get-convo-availability'
@@ -16,6 +15,7 @@ import {canBeMessaged} from '#/components/dms/util'
import {Message_Stroke2_Corner0_Rounded as Message} from '#/components/icons/Message' import {Message_Stroke2_Corner0_Rounded as Message} from '#/components/icons/Message'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
export function MessageProfileButton({ export function MessageProfileButton({
profile, profile,
+2 -1
View File
@@ -1,4 +1,3 @@
import {chat} from '#/lexicons'
import { import {
createContext, createContext,
useCallback, useCallback,
@@ -9,6 +8,8 @@ import {
useState, useState,
} from 'react' } from 'react'
import {chat} from '#/lexicons'
/** /**
* How long a message stays highlighted after scrolling to it, before the flash * How long a message stays highlighted after scrolling to it, before the flash
* fades out. * fades out.
+1 -1
View File
@@ -8,7 +8,6 @@ import {
} from 'react-native' } from 'react-native'
import {Trans, useLingui} from '@lingui/react/macro' import {Trans, useLingui} from '@lingui/react/macro'
import {chat} from '#/lexicons'
import {HITSLOP_10} from '#/lib/constants' import {HITSLOP_10} from '#/lib/constants'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
import {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
@@ -23,6 +22,7 @@ import {filterBlockedReactions} from '#/components/dms/util'
import * as Toast from '#/components/Toast' import * as Toast from '#/components/Toast'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {IS_NATIVE, IS_WEB} from '#/env' import {IS_NATIVE, IS_WEB} from '#/env'
import {chat} from '#/lexicons'
import type * as bsky from '#/types/bsky' import type * as bsky from '#/types/bsky'
type Reaction = { type Reaction = {
+1 -1
View File
@@ -10,13 +10,13 @@ import Animated, {
import {plural} from '@lingui/core/macro' import {plural} from '@lingui/core/macro'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {chat} from '#/lexicons'
import {HITSLOP_10} from '#/lib/constants' import {HITSLOP_10} from '#/lib/constants'
import {type SystemMessageGroupItem} from '#/screens/Messages/components/groupSystemMessages' import {type SystemMessageGroupItem} from '#/screens/Messages/components/groupSystemMessages'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {SystemMessageItem} from '#/components/dms/SystemMessageItem' import {SystemMessageItem} from '#/components/dms/SystemMessageItem'
import {ChevronBottom_Stroke2_Corner0_Rounded as ChevronDown} from '#/components/icons/Chevron' import {ChevronBottom_Stroke2_Corner0_Rounded as ChevronDown} from '#/components/icons/Chevron'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {chat} from '#/lexicons'
const ANIMATION_DURATION_MS = 200 const ANIMATION_DURATION_MS = 200
+1 -1
View File
@@ -1,7 +1,6 @@
import {View} from 'react-native' import {View} from 'react-native'
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import {chat} from '#/lexicons'
import {makeProfileLink} from '#/lib/routes/links' import {makeProfileLink} from '#/lib/routes/links'
import {type ConvoItem} from '#/state/messages/convo/types' import {type ConvoItem} from '#/state/messages/convo/types'
import {useInviteLinkDialog} from '#/screens/Messages/components/InviteLinkDialogProvider' import {useInviteLinkDialog} from '#/screens/Messages/components/InviteLinkDialogProvider'
@@ -10,6 +9,7 @@ import {Button} from '#/components/Button'
import {getSystemMessageInfo} from '#/components/dms/getSystemMessageInfo' import {getSystemMessageInfo} from '#/components/dms/getSystemMessageInfo'
import {Link} from '#/components/Link' import {Link} from '#/components/Link'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {chat} from '#/lexicons'
export function SystemMessageItem({ export function SystemMessageItem({
item, item,
+1 -1
View File
@@ -1,7 +1,6 @@
import {type I18n} from '@lingui/core' import {type I18n} from '@lingui/core'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {app, chat} from '#/lexicons'
import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted' import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
import { import {
@@ -9,6 +8,7 @@ import {
toBskyAppUrl, toBskyAppUrl,
toShortUrl, toShortUrl,
} from '#/lib/strings/url-helpers' } from '#/lib/strings/url-helpers'
import {app, chat} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
export type UserMessageInfo = { export type UserMessageInfo = {
+1 -1
View File
@@ -1,9 +1,9 @@
import {type I18n} from '@lingui/core' import {type I18n} from '@lingui/core'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import {chat} from '#/lexicons'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
import {isDidBlockedInConvo} from '#/components/dms/getMessageInfo' import {isDidBlockedInConvo} from '#/components/dms/getMessageInfo'
import {chat} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
export type UserReactionInfo = { export type UserReactionInfo = {
+2 -2
View File
@@ -1,8 +1,6 @@
import {type MessageDescriptor} from '@lingui/core' import {type MessageDescriptor} from '@lingui/core'
import {msg} from '@lingui/core/macro' import {msg} from '@lingui/core/macro'
import * as bsky from '#/types/bsky'
import {chat} from '#/lexicons'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
import {ArrowBoxLeft_Stroke2_Corner0_Rounded as LeaveIcon} from '#/components/icons/ArrowBoxLeft' import {ArrowBoxLeft_Stroke2_Corner0_Rounded as LeaveIcon} from '#/components/icons/ArrowBoxLeft'
import {ArrowBoxRight_Stroke2_Corner3_Rounded as JoinIcon} from '#/components/icons/ArrowBoxRight' import {ArrowBoxRight_Stroke2_Corner3_Rounded as JoinIcon} from '#/components/icons/ArrowBoxRight'
@@ -16,6 +14,8 @@ import {
Unlock_Stroke2_Corner2_Rounded as UnlockIcon, Unlock_Stroke2_Corner2_Rounded as UnlockIcon,
} from '#/components/icons/Lock' } from '#/components/icons/Lock'
import {PencilLine_Stroke2_Corner0_Rounded as PencilIcon} from '#/components/icons/Pencil' import {PencilLine_Stroke2_Corner0_Rounded as PencilIcon} from '#/components/icons/Pencil'
import {chat} from '#/lexicons'
import * as bsky from '#/types/bsky'
export type SystemMessageAction = export type SystemMessageAction =
| { | {
+2 -2
View File
@@ -1,8 +1,8 @@
import {useLingui} from '@lingui/react/macro' import {useLingui} from '@lingui/react/macro'
import * as bsky from '#/types/bsky'
import {app, chat} from '#/lexicons'
import {BSKY_APP_HOST, toShortUrl} from '#/lib/strings/url-helpers' import {BSKY_APP_HOST, toShortUrl} from '#/lib/strings/url-helpers'
import {app, chat} from '#/lexicons'
import * as bsky from '#/types/bsky'
/** /**
* Describes the embed of a quoted message that has no text of its own, so the * Describes the embed of a quoted message that has no text of its own, so the
+2 -2
View File
@@ -1,7 +1,6 @@
import {type $Typed} from '@atproto/lex'
import {moderateProfile, type ModerationOpts} from '@bsky.app/sdk/moderation' import {moderateProfile, type ModerationOpts} from '@bsky.app/sdk/moderation'
import {type $Typed} from '@atproto/lex'
import {chat} from '#/lexicons'
import {EMOJI_REACTION_LIMIT} from '#/lib/constants' import {EMOJI_REACTION_LIMIT} from '#/lib/constants'
import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted' import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted'
import {logger} from '#/logger' import {logger} from '#/logger'
@@ -9,6 +8,7 @@ import {type Shadow} from '#/state/cache/profile-shadow'
import {type ConvoState, ConvoStatus} from '#/state/messages/convo/types' import {type ConvoState, ConvoStatus} from '#/state/messages/convo/types'
import {platform} from '#/alf' import {platform} from '#/alf'
import {type ReportSubject} from '#/components/moderation/ReportDialog/types' import {type ReportSubject} from '#/components/moderation/ReportDialog/types'
import {chat} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
export const MESSAGE_GAP_THRESHOLD_MS = 60 * 60 * 1000 export const MESSAGE_GAP_THRESHOLD_MS = 60 * 60 * 1000
@@ -1,7 +1,5 @@
import {View} from 'react-native' import {View} from 'react-native'
import * as bsky from '#/types/bsky'
import {app} from '#/lexicons'
import {type FeedPostSliceItem} from '#/state/queries/post-feed' import {type FeedPostSliceItem} from '#/state/queries/post-feed'
import {type VideoFeedSourceContext} from '#/screens/VideoFeed/types' import {type VideoFeedSourceContext} from '#/screens/VideoFeed/types'
import {atoms as a, useGutters} from '#/alf' import {atoms as a, useGutters} from '#/alf'
@@ -11,6 +9,8 @@ import {
VideoPostCardPlaceholder, VideoPostCardPlaceholder,
} from '#/components/VideoPostCard' } from '#/components/VideoPostCard'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky'
export function PostFeedVideoGridRow({ export function PostFeedVideoGridRow({
items: slices, items: slices,
+1 -1
View File
@@ -10,7 +10,6 @@ import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {type Dimensions} from '#/lib/media/types' import {type Dimensions} from '#/lib/media/types'
import {useLargeAltBadgeEnabled} from '#/state/preferences/large-alt-badge' import {useLargeAltBadgeEnabled} from '#/state/preferences/large-alt-badge'
import {atoms as a, useTheme, web} from '#/alf' import {atoms as a, useTheme, web} from '#/alf'
@@ -18,6 +17,7 @@ import {ArrowsDiagonalOut_Stroke2_Corner0_Rounded as Fullscreen} from '#/compone
import {MediaInsetBorder} from '#/components/MediaInsetBorder' import {MediaInsetBorder} from '#/components/MediaInsetBorder'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {IS_NATIVE} from '#/env' import {IS_NATIVE} from '#/env'
import {app} from '#/lexicons'
export function ConstrainedImage({ export function ConstrainedImage({
aspectRatio, aspectRatio,
+1 -1
View File
@@ -18,7 +18,6 @@ import {utils} from '@bsky.app/alf'
import {Trans, useLingui} from '@lingui/react/macro' import {Trans, useLingui} from '@lingui/react/macro'
import debounce from 'lodash.debounce' import debounce from 'lodash.debounce'
import {app} from '#/lexicons'
import {type Dimensions} from '#/lib/media/types' import {type Dimensions} from '#/lib/media/types'
import {mergeRefs} from '#/lib/merge-refs' import {mergeRefs} from '#/lib/merge-refs'
import {useA11y} from '#/state/a11y' import {useA11y} from '#/state/a11y'
@@ -41,6 +40,7 @@ import {PostEmbedViewContext} from '#/components/Post/Embed/types'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {IS_ANDROID, IS_WEB} from '#/env' import {IS_ANDROID, IS_WEB} from '#/env'
import {app} from '#/lexicons'
export * from './const' export * from './const'
export * from './maybeApplyGalleryOffsetStyles' export * from './maybeApplyGalleryOffsetStyles'
@@ -1,9 +1,9 @@
import {type ModerationCause, type ModerationUI} from '@bsky.app/sdk/moderation' import {type ModerationCause, type ModerationUI} from '@bsky.app/sdk/moderation'
import {app} from '#/lexicons'
import {unique} from '#/lib/moderation' import {unique} from '#/lib/moderation'
import {type AppModerationCause} from '#/components/Pills' import {type AppModerationCause} from '#/components/Pills'
import {Features, features} from '#/analytics/features' import {Features, features} from '#/analytics/features'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky' import * as bsky from '#/types/bsky'
export const POST_META_NO_CONTENT_OFFSET = {paddingTop: 10} export const POST_META_NO_CONTENT_OFFSET = {paddingTop: 10}
+1 -1
View File
@@ -2,10 +2,10 @@ import {useRef} from 'react'
import {type StyleProp, View, type ViewStyle} from 'react-native' import {type StyleProp, View, type ViewStyle} from 'react-native'
import {type AnimatedRef, useAnimatedRef} from 'react-native-reanimated' import {type AnimatedRef, useAnimatedRef} from 'react-native-reanimated'
import {app} from '#/lexicons'
import {atoms as a, useBreakpoints} from '#/alf' import {atoms as a, useBreakpoints} from '#/alf'
import {type Dimensions} from '#/components/Lightbox/types' import {type Dimensions} from '#/components/Lightbox/types'
import {type PostEmbedViewContext} from '#/components/Post/Embed/types' import {type PostEmbedViewContext} from '#/components/Post/Embed/types'
import {app} from '#/lexicons'
import {GalleryItem} from './ImageLayoutGridItem' import {GalleryItem} from './ImageLayoutGridItem'
interface ImageLayoutGridProps { interface ImageLayoutGridProps {
@@ -6,7 +6,6 @@ import {msg} from '@lingui/core/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Trans} from '@lingui/react/macro' import {Trans} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {type Dimensions} from '#/lib/media/types' import {type Dimensions} from '#/lib/media/types'
import {useLargeAltBadgeEnabled} from '#/state/preferences/large-alt-badge' import {useLargeAltBadgeEnabled} from '#/state/preferences/large-alt-badge'
import {atoms as a, tokens, useTheme} from '#/alf' import {atoms as a, tokens, useTheme} from '#/alf'
@@ -14,6 +13,7 @@ import {MediaInsetBorder} from '#/components/MediaInsetBorder'
import {ImageContextMenu} from '#/components/Post/Embed/ImageContextMenu' import {ImageContextMenu} from '#/components/Post/Embed/ImageContextMenu'
import {type PostEmbedViewContext} from '#/components/Post/Embed/types' import {type PostEmbedViewContext} from '#/components/Post/Embed/types'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {app} from '#/lexicons'
type EventFunction = (index: number) => void type EventFunction = (index: number) => void
@@ -5,7 +5,6 @@ import {Plural, Trans, useLingui} from '@lingui/react/macro'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
import * as bsky from '#/types/bsky'
import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name' import {createSanitizedDisplayName} from '#/lib/moderation/create-sanitized-display-name'
import {useCallOnce} from '#/lib/once' import {useCallOnce} from '#/lib/once'
import {makeProfileLink} from '#/lib/routes/links' import {makeProfileLink} from '#/lib/routes/links'
@@ -47,6 +46,7 @@ import * as Toast from '#/components/Toast'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {chat} from '#/lexicons' import {chat} from '#/lexicons'
import * as bsky from '#/types/bsky'
import {ProfileBadges} from '../ProfileBadges' import {ProfileBadges} from '../ProfileBadges'
export function GroupChatJoinDialog() { export function GroupChatJoinDialog() {
@@ -3,7 +3,6 @@ import {Pressable, View} from 'react-native'
import {moderateProfile} from '@bsky.app/sdk/moderation' import {moderateProfile} from '@bsky.app/sdk/moderation'
import {Plural, Trans, useLingui} from '@lingui/react/macro' import {Plural, Trans, useLingui} from '@lingui/react/macro'
import {app} from '#/lexicons'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
import { import {
useTrendingSettings, useTrendingSettings,
@@ -30,6 +29,7 @@ import {SubtleHover} from '#/components/SubtleHover'
import {useTrendingTopicSeen} from '#/components/TrendingTopics' import {useTrendingTopicSeen} from '#/components/TrendingTopics'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
const TOPIC_COUNT = 3 const TOPIC_COUNT = 3
@@ -1,11 +1,9 @@
import {useCallback, useEffect, useMemo} from 'react' import {useCallback, useEffect, useMemo} from 'react'
import {ScrollView, View} from 'react-native' import {ScrollView, View} from 'react-native'
import {AtUri} from '@atproto/syntax'
import {Trans, useLingui} from '@lingui/react/macro' import {Trans, useLingui} from '@lingui/react/macro'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
import {AtUri} from '@atproto/syntax'
import * as bsky from '#/types/bsky'
import {app} from '#/lexicons'
import {VIDEO_FEED_URI} from '#/lib/constants' import {VIDEO_FEED_URI} from '#/lib/constants'
import {makeCustomFeedLink} from '#/lib/routes/links' import {makeCustomFeedLink} from '#/lib/routes/links'
import {useTrendingSettingsApi} from '#/state/preferences/trending' import {useTrendingSettingsApi} from '#/state/preferences/trending'
@@ -23,6 +21,8 @@ import {
CompactVideoPostCardPlaceholder, CompactVideoPostCardPlaceholder,
} from '#/components/VideoPostCard' } from '#/components/VideoPostCard'
import {useAnalytics} from '#/analytics' import {useAnalytics} from '#/analytics'
import {app} from '#/lexicons'
import * as bsky from '#/types/bsky'
const CARD_WIDTH = 108 const CARD_WIDTH = 108

Some files were not shown because too many files have changed in this diff Show More