Sort imports (#6009)

* Mark import sort/order/style rules as error

* npm run lint -- --fix
This commit is contained in:
dan
2024-10-29 23:02:48 +00:00
committed by GitHub
parent 0ae64a1e0a
commit a22685c345
130 changed files with 373 additions and 342 deletions
+3 -3
View File
@@ -42,9 +42,9 @@ module.exports = {
], ],
'bsky-internal/use-exact-imports': 'error', 'bsky-internal/use-exact-imports': 'error',
'bsky-internal/use-typed-gates': 'error', 'bsky-internal/use-typed-gates': 'error',
'bsky-internal/use-prefixed-imports': 'warn', 'bsky-internal/use-prefixed-imports': 'error',
'simple-import-sort/imports': [ 'simple-import-sort/imports': [
'warn', 'error',
{ {
groups: [ groups: [
// Side effect imports. // Side effect imports.
@@ -78,7 +78,7 @@ module.exports = {
], ],
}, },
], ],
'simple-import-sort/exports': 'warn', 'simple-import-sort/exports': 'error',
// TODO: Reenable when we figure out why it gets stuck on CI. // TODO: Reenable when we figure out why it gets stuck on CI.
// 'react-compiler/react-compiler': 'error', // 'react-compiler/react-compiler': 'error',
'no-restricted-imports': [ 'no-restricted-imports': [
+2 -1
View File
@@ -1,6 +1,7 @@
import React from 'react' import React from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import {atoms as a, useTheme, ViewStyleProp, flatten} from '#/alf'
import {atoms as a, flatten, useTheme, ViewStyleProp} from '#/alf'
export function Divider({style}: ViewStyleProp) { export function Divider({style}: ViewStyleProp) {
const t = useTheme() const t = useTheme()
+2 -2
View File
@@ -3,8 +3,8 @@ import {View} from 'react-native'
import {msg, Trans} from '@lingui/macro' import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useGoBack} from 'lib/hooks/useGoBack' import {useGoBack} from '#/lib/hooks/useGoBack'
import {CenteredView} from 'view/com/util/Views' import {CenteredView} from '#/view/com/util/Views'
import {atoms as a, useBreakpoints, useTheme} from '#/alf' import {atoms as a, useBreakpoints, useTheme} from '#/alf'
import {Button, ButtonText} from '#/components/Button' import {Button, ButtonText} from '#/components/Button'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
+2 -2
View File
@@ -3,11 +3,11 @@ import {AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
import {msg} from '@lingui/macro' import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
import {cleanError} from '#/lib/strings/errors'
import {logger} from '#/logger' import {logger} from '#/logger'
import {useLikedByQuery} from '#/state/queries/post-liked-by' import {useLikedByQuery} from '#/state/queries/post-liked-by'
import {useResolveUriQuery} from '#/state/queries/resolve-uri' import {useResolveUriQuery} from '#/state/queries/resolve-uri'
import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender'
import {cleanError} from 'lib/strings/errors'
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'
+2 -2
View File
@@ -3,8 +3,8 @@ import {StyleProp, View, ViewStyle} from 'react-native'
import {msg, Trans} from '@lingui/macro' import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {cleanError} from 'lib/strings/errors' import {cleanError} from '#/lib/strings/errors'
import {CenteredView} from 'view/com/util/Views' import {CenteredView} from '#/view/com/util/Views'
import {atoms as a, flatten, useBreakpoints, useTheme} from '#/alf' import {atoms as a, flatten, useBreakpoints, useTheme} from '#/alf'
import {Button, ButtonText} from '#/components/Button' import {Button, ButtonText} from '#/components/Button'
import {Error} from '#/components/Error' import {Error} from '#/components/Error'
@@ -5,15 +5,15 @@ import {flip, offset, shift, size, useFloating} from '@floating-ui/react-dom'
import {msg, plural} from '@lingui/macro' import {msg, plural} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {isTouchDevice} from '#/lib/browser'
import {getModerationCauseKey} from '#/lib/moderation' import {getModerationCauseKey} from '#/lib/moderation'
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 {sanitizeHandle} from '#/lib/strings/handles' import {sanitizeHandle} from '#/lib/strings/handles'
import {useProfileShadow} from '#/state/cache/profile-shadow'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {usePrefetchProfileQuery, useProfileQuery} from '#/state/queries/profile' import {usePrefetchProfileQuery, useProfileQuery} from '#/state/queries/profile'
import {useSession} from '#/state/session' import {useSession} from '#/state/session'
import {isTouchDevice} from 'lib/browser'
import {useProfileShadow} from 'state/cache/profile-shadow'
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'
import {ProfileHeaderHandle} from '#/screens/Profile/Header/Handle' import {ProfileHeaderHandle} from '#/screens/Profile/Header/Handle'
@@ -3,9 +3,9 @@ import {ListRenderItemInfo, View} from 'react-native'
import {AppBskyFeedDefs} from '@atproto/api' import {AppBskyFeedDefs} from '@atproto/api'
import {GeneratorView} from '@atproto/api/dist/client/types/app/bsky/feed/defs' import {GeneratorView} from '@atproto/api/dist/client/types/app/bsky/feed/defs'
import {useBottomBarOffset} from 'lib/hooks/useBottomBarOffset' import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset'
import {isNative, isWeb} from 'platform/detection' import {isNative, isWeb} from '#/platform/detection'
import {List, ListRef} from 'view/com/util/List' import {List, ListRef} from '#/view/com/util/List'
import {SectionRef} from '#/screens/Profile/Sections/types' import {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'
@@ -3,11 +3,11 @@ import {View} from 'react-native'
import {msg} from '@lingui/macro' import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {isNative} from '#/platform/detection'
import {FeedDescriptor} from '#/state/queries/post-feed' import {FeedDescriptor} from '#/state/queries/post-feed'
import {isNative} from 'platform/detection' import {Feed} from '#/view/com/posts/Feed'
import {Feed} from 'view/com/posts/Feed' import {EmptyState} from '#/view/com/util/EmptyState'
import {EmptyState} from 'view/com/util/EmptyState' import {ListRef} from '#/view/com/util/List'
import {ListRef} from 'view/com/util/List'
import {SectionRef} from '#/screens/Profile/Sections/types' import {SectionRef} from '#/screens/Profile/Sections/types'
interface ProfilesListProps { interface ProfilesListProps {
@@ -8,13 +8,13 @@ import {
} from '@atproto/api' } from '@atproto/api'
import {InfiniteData, UseInfiniteQueryResult} from '@tanstack/react-query' import {InfiniteData, UseInfiniteQueryResult} from '@tanstack/react-query'
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'
import {isNative, isWeb} from 'platform/detection' import {isNative, isWeb} from '#/platform/detection'
import {useAllListMembersQuery} from 'state/queries/list-members' import {useAllListMembersQuery} from '#/state/queries/list-members'
import {useSession} from 'state/session' import {useSession} from '#/state/session'
import {List, ListRef} from 'view/com/util/List' import {List, ListRef} from '#/view/com/util/List'
import {SectionRef} from '#/screens/Profile/Sections/types' import {SectionRef} from '#/screens/Profile/Sections/types'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
@@ -7,7 +7,7 @@ import Animated, {
SlideInRight, SlideInRight,
} from 'react-native-reanimated' } from 'react-native-reanimated'
import {isWeb} from 'platform/detection' import {isWeb} from '#/platform/detection'
export function ScreenTransition({ export function ScreenTransition({
direction, direction,
+2 -2
View File
@@ -12,8 +12,8 @@ import {ChatBskyConvoDefs} from '@atproto/api'
import {msg} from '@lingui/macro' import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {HITSLOP_10} from 'lib/constants' import {HITSLOP_10} from '#/lib/constants'
import {useHaptics} from 'lib/haptics' import {useHaptics} from '#/lib/haptics'
import {atoms as a} from '#/alf' import {atoms as a} from '#/alf'
import {MessageMenu} from '#/components/dms/MessageMenu' import {MessageMenu} from '#/components/dms/MessageMenu'
import {useMenuControl} from '#/components/Menu' import {useMenuControl} from '#/components/Menu'
+1 -1
View File
@@ -4,7 +4,7 @@ import {ModerationCause} from '@atproto/api'
import {msg} from '@lingui/macro' import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {listUriToHref} from 'lib/strings/url-helpers' import {listUriToHref} from '#/lib/strings/url-helpers'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import * as Dialog from '#/components/Dialog' import * as Dialog from '#/components/Dialog'
import {DialogControlProps} from '#/components/Dialog' import {DialogControlProps} from '#/components/Dialog'
+4 -4
View File
@@ -9,10 +9,10 @@ import Animated, {
import {msg} from '@lingui/macro' import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {ScaleAndFadeIn} from 'lib/custom-animations/ScaleAndFade' import {ScaleAndFadeIn} from '#/lib/custom-animations/ScaleAndFade'
import {ShrinkAndPop} from 'lib/custom-animations/ShrinkAndPop' import {ShrinkAndPop} from '#/lib/custom-animations/ShrinkAndPop'
import {useHaptics} from 'lib/haptics' import {useHaptics} from '#/lib/haptics'
import {isWeb} from 'platform/detection' import {isWeb} from '#/platform/detection'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
+4 -4
View File
@@ -3,10 +3,10 @@ import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {NavigationProp} from 'lib/routes/types' import {NavigationProp} from '#/lib/routes/types'
import {isNative} from 'platform/detection' import {isNative} from '#/platform/detection'
import {useLeaveConvo} from 'state/queries/messages/leave-conversation' import {useLeaveConvo} from '#/state/queries/messages/leave-conversation'
import * as Toast from 'view/com/util/Toast' import * as Toast from '#/view/com/util/Toast'
import {DialogOuterProps} from '#/components/Dialog' import {DialogOuterProps} from '#/components/Dialog'
import * as Prompt from '#/components/Prompt' import * as Prompt from '#/components/Prompt'
@@ -4,8 +4,8 @@ import {AppBskyActorDefs, ModerationCause} from '@atproto/api'
import {msg, Trans} from '@lingui/macro' import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useProfileShadow} from 'state/cache/profile-shadow' import {useProfileShadow} from '#/state/cache/profile-shadow'
import {useProfileBlockMutationQueue} from 'state/queries/profile' import {useProfileBlockMutationQueue} from '#/state/queries/profile'
import {atoms as a, useBreakpoints, useTheme} from '#/alf' import {atoms as a, useBreakpoints, useTheme} from '#/alf'
import {Button, ButtonText} from '#/components/Button' import {Button, ButtonText} from '#/components/Button'
import {useDialogControl} from '#/components/Dialog' import {useDialogControl} from '#/components/Dialog'
+3 -3
View File
@@ -12,9 +12,9 @@ import {Trans} from '@lingui/macro'
import { import {
ScaleAndFadeIn, ScaleAndFadeIn,
ScaleAndFadeOut, ScaleAndFadeOut,
} from 'lib/custom-animations/ScaleAndFade' } from '#/lib/custom-animations/ScaleAndFade'
import {useHaptics} from 'lib/haptics' import {useHaptics} from '#/lib/haptics'
import {isAndroid, isIOS, isWeb} from 'platform/detection' import {isAndroid, isIOS, isWeb} from '#/platform/detection'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
@@ -3,10 +3,10 @@ import React from 'react'
import { import {
createStarterPackLinkFromAndroidReferrer, createStarterPackLinkFromAndroidReferrer,
httpStarterPackUriToAtUri, httpStarterPackUriToAtUri,
} from 'lib/strings/starter-pack' } from '#/lib/strings/starter-pack'
import {isAndroid} from 'platform/detection' import {isAndroid} from '#/platform/detection'
import {useHasCheckedForStarterPack} from 'state/preferences/used-starter-packs' import {useHasCheckedForStarterPack} from '#/state/preferences/used-starter-packs'
import {useSetActiveStarterPack} from 'state/shell/starter-pack' import {useSetActiveStarterPack} from '#/state/shell/starter-pack'
import {Referrer, SharedPrefs} from '../../../modules/expo-bluesky-swiss-army' import {Referrer, SharedPrefs} from '../../../modules/expo-bluesky-swiss-army'
export function useStarterPackEntry() { export function useStarterPackEntry() {
+2 -2
View File
@@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
import {httpStarterPackUriToAtUri} from 'lib/strings/starter-pack' import {httpStarterPackUriToAtUri} from '#/lib/strings/starter-pack'
import {useSetActiveStarterPack} from 'state/shell/starter-pack' import {useSetActiveStarterPack} from '#/state/shell/starter-pack'
export function useStarterPackEntry() { export function useStarterPackEntry() {
const [ready, setReady] = React.useState(false) const [ready, setReady] = React.useState(false)
+2 -2
View File
@@ -6,8 +6,8 @@ import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription' import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription'
import {addStyle} from 'lib/styles' import {addStyle} from '#/lib/styles'
import {precacheProfile} from 'state/queries/profile' import {precacheProfile} from '#/state/queries/profile'
// import {Link} from '#/components/Link' TODO this imposes some styles that screw things up // import {Link} from '#/components/Link' TODO this imposes some styles that screw things up
import {Link} from '#/view/com/util/Link' import {Link} from '#/view/com/util/Link'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
@@ -2,7 +2,7 @@ import React from 'react'
import {StyleProp, ViewStyle} from 'react-native' import {StyleProp, ViewStyle} from 'react-native'
import {ModerationDecision} from '@atproto/api' import {ModerationDecision} from '@atproto/api'
import {getModerationCauseKey} from 'lib/moderation' import {getModerationCauseKey} from '#/lib/moderation'
import * as Pills from '#/components/Pills' import * as Pills from '#/components/Pills'
export function ProfileHeaderAlerts({ export function ProfileHeaderAlerts({
+3 -3
View File
@@ -1,11 +1,11 @@
import {AppBskyFeedDefs, AppBskyFeedGetTimeline, BskyAgent} from '@atproto/api' import {AppBskyFeedDefs, AppBskyFeedGetTimeline, BskyAgent} from '@atproto/api'
import shuffle from 'lodash.shuffle' import shuffle from 'lodash.shuffle'
import {bundleAsync} from '#/lib/async/bundle'
import {timeout} from '#/lib/async/timeout'
import {feedUriToHref} from '#/lib/strings/url-helpers'
import {getContentLanguages} from '#/state/preferences/languages' import {getContentLanguages} from '#/state/preferences/languages'
import {FeedParams} from '#/state/queries/post-feed' import {FeedParams} from '#/state/queries/post-feed'
import {bundleAsync} from 'lib/async/bundle'
import {timeout} from 'lib/async/timeout'
import {feedUriToHref} from 'lib/strings/url-helpers'
import {FeedTuner} from '../feed-manip' import {FeedTuner} from '../feed-manip'
import {FeedTunerFn} from '../feed-manip' import {FeedTunerFn} from '../feed-manip'
import {FeedAPI, FeedAPIResponse, ReasonFeedSource} from './types' import {FeedAPI, FeedAPIResponse, ReasonFeedSource} from './types'
+1 -1
View File
@@ -1,4 +1,4 @@
import {isNetworkError} from 'lib/strings/errors' import {isNetworkError} from '#/lib/strings/errors'
export async function retry<P>( export async function retry<P>(
retries: number, retries: number,
+4 -4
View File
@@ -8,10 +8,10 @@ import Animated, {
} from 'react-native-reanimated' } from 'react-native-reanimated'
import {i18n} from '@lingui/core' import {i18n} from '@lingui/core'
import {decideShouldRoll} from 'lib/custom-animations/util' import {decideShouldRoll} from '#/lib/custom-animations/util'
import {s} from 'lib/styles' import {s} from '#/lib/styles'
import {formatCount} from 'view/com/util/numeric/format' import {formatCount} from '#/view/com/util/numeric/format'
import {Text} from 'view/com/util/text/Text' import {Text} from '#/view/com/util/text/Text'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
const animationConfig = { const animationConfig = {
+4 -4
View File
@@ -3,10 +3,10 @@ import {View} from 'react-native'
import {useReducedMotion} from 'react-native-reanimated' import {useReducedMotion} from 'react-native-reanimated'
import {i18n} from '@lingui/core' import {i18n} from '@lingui/core'
import {decideShouldRoll} from 'lib/custom-animations/util' import {decideShouldRoll} from '#/lib/custom-animations/util'
import {s} from 'lib/styles' import {s} from '#/lib/styles'
import {formatCount} from 'view/com/util/numeric/format' import {formatCount} from '#/view/com/util/numeric/format'
import {Text} from 'view/com/util/text/Text' import {Text} from '#/view/com/util/text/Text'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
const animationConfig = { const animationConfig = {
+1 -1
View File
@@ -6,7 +6,7 @@ import Animated, {
useReducedMotion, useReducedMotion,
} from 'react-native-reanimated' } from 'react-native-reanimated'
import {s} from 'lib/styles' import {s} from '#/lib/styles'
import {useTheme} from '#/alf' import {useTheme} from '#/alf'
import { import {
Heart2_Filled_Stroke2_Corner0_Rounded as HeartIconFilled, Heart2_Filled_Stroke2_Corner0_Rounded as HeartIconFilled,
+1 -1
View File
@@ -2,7 +2,7 @@ import React from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import {useReducedMotion} from 'react-native-reanimated' import {useReducedMotion} from 'react-native-reanimated'
import {s} from 'lib/styles' import {s} from '#/lib/styles'
import {useTheme} from '#/alf' import {useTheme} from '#/alf'
import { import {
Heart2_Filled_Stroke2_Corner0_Rounded as HeartIconFilled, Heart2_Filled_Stroke2_Corner0_Rounded as HeartIconFilled,
+5 -5
View File
@@ -8,11 +8,11 @@ import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useMutation} from '@tanstack/react-query' import {useMutation} from '@tanstack/react-query'
import {until} from 'lib/async/until' import {until} from '#/lib/async/until'
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'
import {enforceLen} from 'lib/strings/helpers' import {enforceLen} from '#/lib/strings/helpers'
import {useAgent} from 'state/session' import {useAgent} from '#/state/session'
export const createStarterPackList = async ({ export const createStarterPackList = async ({
name, name,
@@ -1,4 +1,4 @@
import {useRef, useEffect} from 'react' import {useEffect, useRef} from 'react'
import {useAnimatedScrollHandler as useAnimatedScrollHandler_BUGGY} from 'react-native-reanimated' import {useAnimatedScrollHandler as useAnimatedScrollHandler_BUGGY} from 'react-native-reanimated'
export const useAnimatedScrollHandler: typeof useAnimatedScrollHandler_BUGGY = ( export const useAnimatedScrollHandler: typeof useAnimatedScrollHandler_BUGGY = (
+3 -3
View File
@@ -1,8 +1,8 @@
import {useSafeAreaInsets} from 'react-native-safe-area-context' import {useSafeAreaInsets} from 'react-native-safe-area-context'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {clamp} from 'lib/numbers' import {clamp} from '#/lib/numbers'
import {isWeb} from 'platform/detection' import {isWeb} from '#/platform/detection'
export function useBottomBarOffset(modifier: number = 0) { export function useBottomBarOffset(modifier: number = 0) {
const {isTabletOrDesktop} = useWebMediaQueries() const {isTabletOrDesktop} = useWebMediaQueries()
+1 -1
View File
@@ -1,4 +1,4 @@
import {useTheme} from 'lib/ThemeContext' import {useTheme} from '#/lib/ThemeContext'
export function useColorSchemeStyle<T>(lightStyle: T, darkStyle: T) { export function useColorSchemeStyle<T>(lightStyle: T, darkStyle: T) {
const colorScheme = useTheme().colorScheme const colorScheme = useTheme().colorScheme
+3 -2
View File
@@ -1,6 +1,7 @@
import React from 'react' import React from 'react'
import {useTheme} from 'lib/ThemeContext'
import {choose} from 'lib/functions' import {choose} from '#/lib/functions'
import {useTheme} from '#/lib/ThemeContext'
export function useCustomPalette<T>({light, dark}: {light: T; dark: T}) { export function useCustomPalette<T>({light, dark}: {light: T; dark: T}) {
const theme = useTheme() const theme = useTheme()
+4 -3
View File
@@ -1,7 +1,8 @@
import {useEffect, useRef, useMemo, ForwardedRef} from 'react' import {ForwardedRef, useEffect, useMemo, useRef} from 'react'
import {Platform, findNodeHandle} from 'react-native'
import type {ScrollView} from 'react-native' import type {ScrollView} from 'react-native'
import {mergeRefs} from 'lib/merge-refs' import {findNodeHandle, Platform} from 'react-native'
import {mergeRefs} from '#/lib/merge-refs'
type Props<Scrollable extends ScrollView = ScrollView> = { type Props<Scrollable extends ScrollView = ScrollView> = {
cursor?: string cursor?: string
+1 -1
View File
@@ -1,6 +1,6 @@
import {StackActions, useNavigation} from '@react-navigation/native' import {StackActions, useNavigation} from '@react-navigation/native'
import {NavigationProp} from 'lib/routes/types' import {NavigationProp} from '#/lib/routes/types'
import {router} from '#/routes' import {router} from '#/routes'
export function useGoBack(onGoBack?: () => unknown) { export function useGoBack(onGoBack?: () => unknown) {
+1 -1
View File
@@ -1,7 +1,7 @@
import {useWindowDimensions} from 'react-native' import {useWindowDimensions} from 'react-native'
import {useSafeAreaInsets} from 'react-native-safe-area-context' import {useSafeAreaInsets} from 'react-native-safe-area-context'
import {useBottomBarOffset} from 'lib/hooks/useBottomBarOffset' import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset'
const MIN_POST_HEIGHT = 100 const MIN_POST_HEIGHT = 100
+3 -2
View File
@@ -1,6 +1,7 @@
import {useState, useEffect} from 'react' import {useEffect, useState} from 'react'
import {Keyboard} from 'react-native' import {Keyboard} from 'react-native'
import {isIOS} from 'platform/detection'
import {isIOS} from '#/platform/detection'
export function useIsKeyboardVisible({ export function useIsKeyboardVisible({
iosUseWillEvents, iosUseWillEvents,
+4 -3
View File
@@ -1,9 +1,10 @@
import React from 'react' import React from 'react'
import {useNavigation} from '@react-navigation/core' import {useNavigation} from '@react-navigation/core'
import {AllNavigatorParams, NavigationProp} from 'lib/routes/types'
import type {NavigationAction} from '@react-navigation/routers'
import {NavigationState} from '@react-navigation/native' import {NavigationState} from '@react-navigation/native'
import {useDedupe} from 'lib/hooks/useDedupe' import type {NavigationAction} from '@react-navigation/routers'
import {useDedupe} from '#/lib/hooks/useDedupe'
import {AllNavigatorParams, NavigationProp} from '#/lib/routes/types'
export type DebouncedNavigationProp = Pick< export type DebouncedNavigationProp = Pick<
NavigationProp, NavigationProp,
+1 -1
View File
@@ -1,6 +1,6 @@
import {useNavigationState} from '@react-navigation/native' import {useNavigationState} from '@react-navigation/native'
import {getTabState, TabState} from 'lib/routes/helpers' import {getTabState, TabState} from '#/lib/routes/helpers'
export function useNavigationTabState() { export function useNavigationTabState() {
return useNavigationState(state => { return useNavigationState(state => {
+1 -1
View File
@@ -1,6 +1,6 @@
import {useNavigationState} from '@react-navigation/native' import {useNavigationState} from '@react-navigation/native'
import {getCurrentRoute} from 'lib/routes/helpers' import {getCurrentRoute} from '#/lib/routes/helpers'
export function useNavigationTabState() { export function useNavigationTabState() {
return useNavigationState(state => { return useNavigationState(state => {
+2 -2
View File
@@ -10,9 +10,9 @@ import {
useUpdates, useUpdates,
} from 'expo-updates' } from 'expo-updates'
import {IS_TESTFLIGHT} from '#/lib/app-info'
import {logger} from '#/logger' import {logger} from '#/logger'
import {IS_TESTFLIGHT} from 'lib/app-info' import {isIOS} from '#/platform/detection'
import {isIOS} from 'platform/detection'
const MINIMUM_MINIMIZE_TIME = 15 * 60e3 const MINIMUM_MINIMIZE_TIME = 15 * 60e3
+2 -1
View File
@@ -1,6 +1,7 @@
import {useMemo} from 'react' import {useMemo} from 'react'
import {TextStyle, ViewStyle} from 'react-native' import {TextStyle, ViewStyle} from 'react-native'
import {useTheme, PaletteColorName, PaletteColor} from '../ThemeContext'
import {PaletteColor, PaletteColorName, useTheme} from '../ThemeContext'
export interface UsePaletteValue { export interface UsePaletteValue {
colors: PaletteColor colors: PaletteColor
+2 -2
View File
@@ -2,8 +2,8 @@ import {Linking} from 'react-native'
import {Camera} from 'expo-camera/legacy' // TODO: Migrate to the new one. import {Camera} from 'expo-camera/legacy' // TODO: Migrate to the new one.
import * as MediaLibrary from 'expo-media-library' import * as MediaLibrary from 'expo-media-library'
import {isWeb} from 'platform/detection' import {isWeb} from '#/platform/detection'
import {Alert} from 'view/com/util/Alert' import {Alert} from '#/view/com/util/Alert'
const openPermissionAlert = (perm: string) => { const openPermissionAlert = (perm: string) => {
Alert.alert( Alert.alert(
+2 -2
View File
@@ -1,8 +1,8 @@
import {useEffect} from 'react' import {useEffect} from 'react'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {NavigationProp} from 'lib/routes/types' import {NavigationProp} from '#/lib/routes/types'
import {bskyTitle} from 'lib/strings/headings' import {bskyTitle} from '#/lib/strings/headings'
import {useUnreadNotifications} from '#/state/queries/notifications/unread' import {useUnreadNotifications} from '#/state/queries/notifications/unread'
export function useSetTitle(title?: string) { export function useSetTitle(title?: string) {
+2 -1
View File
@@ -1,6 +1,7 @@
import {useEffect, useState} from 'react' import {useEffect, useState} from 'react'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {getTabState, TabState} from 'lib/routes/helpers'
import {getTabState, TabState} from '#/lib/routes/helpers'
export function useTabFocusEffect( export function useTabFocusEffect(
tabName: string, tabName: string,
+1 -1
View File
@@ -1,4 +1,4 @@
import {useState, useRef, useEffect, useCallback} from 'react' import {useCallback, useEffect, useRef, useState} from 'react'
type Task<TServerState> = { type Task<TServerState> = {
isOn: boolean isOn: boolean
+2 -1
View File
@@ -1,5 +1,6 @@
import {useMediaQuery} from 'react-responsive' import {useMediaQuery} from 'react-responsive'
import {isNative} from 'platform/detection'
import {isNative} from '#/platform/detection'
export function useWebMediaQueries() { export function useWebMediaQueries() {
const isDesktop = useMediaQuery({minWidth: 1300}) const isDesktop = useMediaQuery({minWidth: 1300})
+1 -1
View File
@@ -1,4 +1,4 @@
import {useMemo, useState, useEffect} from 'react' import {useEffect, useMemo, useState} from 'react'
import {EventArg, useNavigation} from '@react-navigation/core' import {EventArg, useNavigation} from '@react-navigation/core'
if ('scrollRestoration' in history) { if ('scrollRestoration' in history) {
+2 -1
View File
@@ -1,5 +1,6 @@
import {Image} from 'react-native' import {Image} from 'react-native'
import type {Dimensions} from 'lib/media/types'
import type {Dimensions} from '#/lib/media/types'
const sizes: Map<string, Dimensions> = new Map() const sizes: Map<string, Dimensions> = new Map()
const activeRequests: Map<string, Promise<Dimensions>> = new Map() const activeRequests: Map<string, Promise<Dimensions>> = new Map()
+1 -1
View File
@@ -1,6 +1,6 @@
import {ImagePickerAsset} from 'expo-image-picker' import {ImagePickerAsset} from 'expo-image-picker'
import {VideoTooLargeError} from 'lib/media/video/errors' import {VideoTooLargeError} from '#/lib/media/video/errors'
import {CompressedVideo} from './types' import {CompressedVideo} from './types'
const MAX_VIDEO_SIZE = 1024 * 1024 * 50 // 50mb const MAX_VIDEO_SIZE = 1024 * 1024 * 50 // 50mb
@@ -1,7 +1,7 @@
import {AppBskyActorDefs} from '@atproto/api' import {AppBskyActorDefs} from '@atproto/api'
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'
export function createSanitizedDisplayName( export function createSanitizedDisplayName(
profile: profile:
@@ -1,6 +1,6 @@
import {InterpretedLabelValueDefinition, LabelPreference} from '@atproto/api' import {InterpretedLabelValueDefinition, LabelPreference} from '@atproto/api'
import {useLingui} from '@lingui/react'
import {msg} from '@lingui/macro' import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
export function useLabelBehaviorDescription( export function useLabelBehaviorDescription(
labelValueDef: InterpretedLabelValueDefinition, labelValueDef: InterpretedLabelValueDefinition,
+2 -2
View File
@@ -3,10 +3,10 @@ import * as Notifications from 'expo-notifications'
import {getBadgeCountAsync, setBadgeCountAsync} from 'expo-notifications' import {getBadgeCountAsync, setBadgeCountAsync} from 'expo-notifications'
import {BskyAgent} from '@atproto/api' import {BskyAgent} from '@atproto/api'
import {logEvent} from '#/lib/statsig/statsig'
import {logger} from '#/logger' import {logger} from '#/logger'
import {devicePlatform, isAndroid, isNative} from '#/platform/detection'
import {SessionAccount, useAgent, useSession} from '#/state/session' import {SessionAccount, useAgent, useSession} from '#/state/session'
import {logEvent} from 'lib/statsig/statsig'
import {devicePlatform, isAndroid, isNative} from 'platform/detection'
import BackgroundNotificationHandler from '../../../modules/expo-background-notification-handler' import BackgroundNotificationHandler from '../../../modules/expo-background-notification-handler'
const SERVICE_DID = (serviceUrl?: string) => const SERVICE_DID = (serviceUrl?: string) =>
+1 -1
View File
@@ -1,6 +1,6 @@
import {AppBskyGraphDefs, AtUri} from '@atproto/api' import {AppBskyGraphDefs, AtUri} from '@atproto/api'
import {isInvalidHandle} from 'lib/strings/handles' import {isInvalidHandle} from '#/lib/strings/handles'
export function makeProfileLink( export function makeProfileLink(
info: { info: {
+1 -1
View File
@@ -7,7 +7,7 @@ import {Platform} from 'react-native'
import {nativeApplicationVersion, nativeBuildVersion} from 'expo-application' import {nativeApplicationVersion, nativeBuildVersion} from 'expo-application'
import {init} from '@sentry/react-native' import {init} from '@sentry/react-native'
import {BUILD_ENV, IS_DEV, IS_TESTFLIGHT} from 'lib/app-info' import {BUILD_ENV, IS_DEV, IS_TESTFLIGHT} from '#/lib/app-info'
/** /**
* Examples: * Examples:
+1 -1
View File
@@ -1,6 +1,6 @@
// Regex from the go implementation // Regex from the go implementation
// https://github.com/bluesky-social/indigo/blob/main/atproto/syntax/handle.go#L10 // https://github.com/bluesky-social/indigo/blob/main/atproto/syntax/handle.go#L10
import {forceLTR} from 'lib/strings/bidi' import {forceLTR} from '#/lib/strings/bidi'
const VALIDATE_REGEX = const VALIDATE_REGEX =
/^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/ /^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$/
+1
View File
@@ -1,4 +1,5 @@
import {AppBskyRichtextFacet, RichText} from '@atproto/api' import {AppBskyRichtextFacet, RichText} from '@atproto/api'
import {linkRequiresWarning} from './url-helpers' import {linkRequiresWarning} from './url-helpers'
export function richTextToString(rt: RichText, loose: boolean): string { export function richTextToString(rt: RichText, loose: boolean): string {
+3 -3
View File
@@ -2,10 +2,10 @@ import {AtUri} from '@atproto/api'
import psl from 'psl' import psl from 'psl'
import TLDs from 'tlds' import TLDs from 'tlds'
import {BSKY_SERVICE} from '#/lib/constants'
import {isInvalidHandle} from '#/lib/strings/handles'
import {startUriToStarterPackUri} from '#/lib/strings/starter-pack'
import {logger} from '#/logger' import {logger} from '#/logger'
import {BSKY_SERVICE} from 'lib/constants'
import {isInvalidHandle} from 'lib/strings/handles'
import {startUriToStarterPackUri} from 'lib/strings/starter-pack'
export const BSKY_APP_HOST = 'https://bsky.app' export const BSKY_APP_HOST = 'https://bsky.app'
const BSKY_TRUSTED_HOSTS = [ const BSKY_TRUSTED_HOSTS = [
+1 -1
View File
@@ -1,4 +1,4 @@
import {test, expect} from '@jest/globals' import {expect, test} from '@jest/globals'
import {sanitizeAppLanguageSetting} from '#/locale/helpers' import {sanitizeAppLanguageSetting} from '#/locale/helpers'
import {AppLanguage} from '#/locale/languages' import {AppLanguage} from '#/locale/languages'
+1 -1
View File
@@ -2,7 +2,7 @@ import {AppBskyFeedDefs, AppBskyFeedPost} from '@atproto/api'
import * as bcp47Match from 'bcp-47-match' import * as bcp47Match from 'bcp-47-match'
import lande from 'lande' import lande from 'lande'
import {hasProp} from 'lib/type-guards' import {hasProp} from '#/lib/type-guards'
import { import {
AppLanguage, AppLanguage,
LANGUAGES_MAP_CODE2, LANGUAGES_MAP_CODE2,
+2 -1
View File
@@ -1,6 +1,7 @@
import React from 'react' import React from 'react'
import {I18nProvider as DefaultI18nProvider} from '@lingui/react'
import {i18n} from '@lingui/core' import {i18n} from '@lingui/core'
import {I18nProvider as DefaultI18nProvider} from '@lingui/react'
import {useLocaleLanguage} from './i18n' import {useLocaleLanguage} from './i18n'
export default function I18nProvider({children}: {children: React.ReactNode}) { export default function I18nProvider({children}: {children: React.ReactNode}) {
+7 -7
View File
@@ -5,18 +5,18 @@ import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useQueryClient} from '@tanstack/react-query' import {useQueryClient} from '@tanstack/react-query'
import {useGoBack} from '#/lib/hooks/useGoBack'
import {sanitizeHandle} from '#/lib/strings/handles'
import {logger} from '#/logger' import {logger} from '#/logger'
import {RQKEY_ROOT as listQueryRoot} from '#/state/queries/list' import {RQKEY_ROOT as listQueryRoot} from '#/state/queries/list'
import {useGoBack} from 'lib/hooks/useGoBack' import {useListBlockMutation, useListMuteMutation} from '#/state/queries/list'
import {sanitizeHandle} from 'lib/strings/handles'
import {useListBlockMutation, useListMuteMutation} from 'state/queries/list'
import { import {
UsePreferencesQueryResponse, UsePreferencesQueryResponse,
useRemoveFeedMutation, useRemoveFeedMutation,
} from 'state/queries/preferences' } from '#/state/queries/preferences'
import {useSession} from 'state/session' import {useSession} from '#/state/session'
import * as Toast from 'view/com/util/Toast' import * as Toast from '#/view/com/util/Toast'
import {CenteredView} from 'view/com/util/Views' import {CenteredView} from '#/view/com/util/Views'
import {atoms as a, useBreakpoints, useTheme} from '#/alf' import {atoms as a, useBreakpoints, useTheme} from '#/alf'
import {Button, ButtonIcon, ButtonText} from '#/components/Button' import {Button, ButtonIcon, ButtonText} from '#/components/Button'
import {EyeSlash_Stroke2_Corner0_Rounded as EyeSlash} from '#/components/icons/EyeSlash' import {EyeSlash_Stroke2_Corner0_Rounded as EyeSlash} from '#/components/icons/EyeSlash'
+4 -4
View File
@@ -1,14 +1,14 @@
import React from 'react' import React from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import {Trans, msg} from '@lingui/macro' import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {useTheme, atoms as a} from '#/alf' import {NavigationProp} from '#/lib/routes/types'
import {Text} from '#/components/Typography' import {atoms as a, useTheme} from '#/alf'
import {Button, ButtonText} from '#/components/Button' import {Button, ButtonText} from '#/components/Button'
import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo' import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo'
import {NavigationProp} from '#/lib/routes/types' import {Text} from '#/components/Typography'
export function ErrorState({error}: {error: string}) { export function ErrorState({error}: {error: string}) {
const t = useTheme() const t = useTheme()
+2 -2
View File
@@ -4,9 +4,9 @@ import {AppBskyActorDefs} from '@atproto/api'
import {msg, plural} from '@lingui/macro' import {msg, plural} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {makeProfileLink} from '#/lib/routes/links'
import {Shadow} from '#/state/cache/types' import {Shadow} from '#/state/cache/types'
import {makeProfileLink} from 'lib/routes/links' import {formatCount} from '#/view/com/util/numeric/format'
import {formatCount} from 'view/com/util/numeric/format'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {InlineLinkText} from '#/components/Link' import {InlineLinkText} from '#/components/Link'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
+1 -1
View File
@@ -4,9 +4,9 @@ import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {nanoid} from 'nanoid/non-secure' import {nanoid} from 'nanoid/non-secure'
import {logEvent} from '#/lib/statsig/statsig'
import {createFullHandle} from '#/lib/strings/handles' import {createFullHandle} from '#/lib/strings/handles'
import {logger} from '#/logger' import {logger} from '#/logger'
import {logEvent} from 'lib/statsig/statsig'
import {ScreenTransition} from '#/screens/Login/ScreenTransition' import {ScreenTransition} from '#/screens/Login/ScreenTransition'
import {useSignupContext} from '#/screens/Signup/state' import {useSignupContext} from '#/screens/Signup/state'
import {CaptchaWebView} from '#/screens/Signup/StepCaptcha/CaptchaWebView' import {CaptchaWebView} from '#/screens/Signup/StepCaptcha/CaptchaWebView'
+2 -2
View File
@@ -7,8 +7,8 @@ import {
import {GeneratorView} from '@atproto/api/dist/client/types/app/bsky/feed/defs' import {GeneratorView} from '@atproto/api/dist/client/types/app/bsky/feed/defs'
import {msg} from '@lingui/macro' import {msg} from '@lingui/macro'
import {STARTER_PACK_MAX_SIZE} from 'lib/constants' import {STARTER_PACK_MAX_SIZE} from '#/lib/constants'
import {useSession} from 'state/session' import {useSession} from '#/state/session'
import * as Toast from '#/view/com/util/Toast' import * as Toast from '#/view/com/util/Toast'
const steps = ['Details', 'Profiles', 'Feeds'] as const const steps = ['Details', 'Profiles', 'Feeds'] as const
@@ -3,8 +3,8 @@ import {View} from 'react-native'
import {msg, Trans} from '@lingui/macro' import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useProfileQuery} from 'state/queries/profile' import {useProfileQuery} from '#/state/queries/profile'
import {useSession} from 'state/session' import {useSession} from '#/state/session'
import {useWizardState} from '#/screens/StarterPack/Wizard/State' import {useWizardState} from '#/screens/StarterPack/Wizard/State'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import * as TextField from '#/components/forms/TextField' import * as TextField from '#/components/forms/TextField'
@@ -1,7 +1,7 @@
import React from 'react' import React from 'react'
import {EmbedPlayerSource} from '#/lib/strings/embed-player'
import * as persisted from '#/state/persisted' import * as persisted from '#/state/persisted'
import {EmbedPlayerSource} from 'lib/strings/embed-player'
type StateContext = persisted.Schema['externalEmbeds'] type StateContext = persisted.Schema['externalEmbeds']
type SetContext = ( type SetContext = (
+1 -1
View File
@@ -1,10 +1,10 @@
import {ChatBskyConvoDefs} from '@atproto/api' import {ChatBskyConvoDefs} from '@atproto/api'
import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query' import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query'
import {STALE} from '#/state/queries'
import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const' import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const'
import {useOnMarkAsRead} from '#/state/queries/messages/list-converations' import {useOnMarkAsRead} from '#/state/queries/messages/list-converations'
import {useAgent} from '#/state/session' import {useAgent} from '#/state/session'
import {STALE} from 'state/queries'
import {RQKEY as LIST_CONVOS_KEY} from './list-converations' import {RQKEY as LIST_CONVOS_KEY} from './list-converations'
const RQKEY_ROOT = 'convo' const RQKEY_ROOT = 'convo'
+1 -1
View File
@@ -8,9 +8,9 @@ import {useQueryClient} from '@tanstack/react-query'
import EventEmitter from 'eventemitter3' import EventEmitter from 'eventemitter3'
import BroadcastChannel from '#/lib/broadcast' import BroadcastChannel from '#/lib/broadcast'
import {resetBadgeCount} from '#/lib/notifications/notifications'
import {logger} from '#/logger' import {logger} from '#/logger'
import {useAgent, useSession} from '#/state/session' import {useAgent, useSession} from '#/state/session'
import {resetBadgeCount} from 'lib/notifications/notifications'
import {useModerationOpts} from '../../preferences/moderation-opts' import {useModerationOpts} from '../../preferences/moderation-opts'
import {truncateAndInvalidate} from '../util' import {truncateAndInvalidate} from '../util'
import {RQKEY as RQKEY_NOTIFS} from './feed' import {RQKEY as RQKEY_NOTIFS} from './feed'
+3 -3
View File
@@ -11,13 +11,13 @@ import {
import {QueryClient, useQuery, useQueryClient} from '@tanstack/react-query' import {QueryClient, useQuery, useQueryClient} from '@tanstack/react-query'
import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped'
import {findAllPostsInQueryData as findAllPostsInQuoteQueryData} from '#/state/queries/post-quotes'
import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types' import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types'
import {useAgent} from '#/state/session'
import {findAllPostsInQueryData as findAllPostsInQuoteQueryData} from 'state/queries/post-quotes'
import { import {
findAllPostsInQueryData as findAllPostsInSearchQueryData, findAllPostsInQueryData as findAllPostsInSearchQueryData,
findAllProfilesInQueryData as findAllProfilesInSearchQueryData, findAllProfilesInQueryData as findAllProfilesInSearchQueryData,
} from 'state/queries/search-posts' } from '#/state/queries/search-posts'
import {useAgent} from '#/state/session'
import { import {
findAllPostsInQueryData as findAllPostsInNotifsQueryData, findAllPostsInQueryData as findAllPostsInNotifsQueryData,
findAllProfilesInQueryData as findAllProfilesInNotifsQueryData, findAllProfilesInQueryData as findAllProfilesInNotifsQueryData,
+3 -3
View File
@@ -1,8 +1,8 @@
import {useQuery} from '@tanstack/react-query' import {useQuery} from '@tanstack/react-query'
import {resolveShortLink} from 'lib/link-meta/resolve-short-link' import {resolveShortLink} from '#/lib/link-meta/resolve-short-link'
import {parseStarterPackUri} from 'lib/strings/starter-pack' import {parseStarterPackUri} from '#/lib/strings/starter-pack'
import {STALE} from 'state/queries/index' import {STALE} from '#/state/queries/index'
const ROOT_URI = 'https://go.bsky.app/' const ROOT_URI = 'https://go.bsky.app/'
+7 -7
View File
@@ -18,17 +18,17 @@ import {
} from '@tanstack/react-query' } from '@tanstack/react-query'
import chunk from 'lodash.chunk' import chunk from 'lodash.chunk'
import {until} from 'lib/async/until' import {until} from '#/lib/async/until'
import {createStarterPackList} from 'lib/generate-starterpack' import {createStarterPackList} from '#/lib/generate-starterpack'
import { import {
createStarterPackUri, createStarterPackUri,
httpStarterPackUriToAtUri, httpStarterPackUriToAtUri,
parseStarterPackUri, parseStarterPackUri,
} from 'lib/strings/starter-pack' } from '#/lib/strings/starter-pack'
import {invalidateActorStarterPacksQuery} from 'state/queries/actor-starter-packs' import {invalidateActorStarterPacksQuery} from '#/state/queries/actor-starter-packs'
import {STALE} from 'state/queries/index' import {STALE} from '#/state/queries/index'
import {invalidateListMembersQuery} from 'state/queries/list-members' import {invalidateListMembersQuery} from '#/state/queries/list-members'
import {useAgent} from 'state/session' import {useAgent} from '#/state/session'
const RQKEY_ROOT = 'starter-pack' const RQKEY_ROOT = 'starter-pack'
const RQKEY = ({ const RQKEY = ({
+5 -4
View File
@@ -1,9 +1,10 @@
import React from 'react' import React from 'react'
import {StyleSheet, View} from 'react-native' import {StyleSheet, View} from 'react-native'
import {Text} from 'view/com/util/text/Text'
import {InfoCircleIcon} from 'lib/icons' import {useColorSchemeStyle} from '#/lib/hooks/useColorSchemeStyle'
import {s, colors} from 'lib/styles' import {InfoCircleIcon} from '#/lib/icons'
import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' import {colors, s} from '#/lib/styles'
import {Text} from '#/view/com/util/text/Text'
export function HelpTip({text}: {text: string}) { export function HelpTip({text}: {text: string}) {
const bg = useColorSchemeStyle( const bg = useColorSchemeStyle(
+4 -3
View File
@@ -1,9 +1,10 @@
import React, {ComponentProps} from 'react' import React, {ComponentProps} from 'react'
import {StyleSheet, TextInput as RNTextInput, View} from 'react-native' import {StyleSheet, TextInput as RNTextInput, View} from 'react-native'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {IconProp} from '@fortawesome/fontawesome-svg-core' import {IconProp} from '@fortawesome/fontawesome-svg-core'
import {usePalette} from 'lib/hooks/usePalette' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {useTheme} from 'lib/ThemeContext'
import {usePalette} from '#/lib/hooks/usePalette'
import {useTheme} from '#/lib/ThemeContext'
interface Props extends Omit<ComponentProps<typeof RNTextInput>, 'onChange'> { interface Props extends Omit<ComponentProps<typeof RNTextInput>, 'onChange'> {
testID?: string testID?: string
@@ -7,6 +7,8 @@ import {
import {msg} from '@lingui/macro' import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {usePalette} from '#/lib/hooks/usePalette'
import {isNative} from '#/platform/detection'
import {useModalControls} from '#/state/modals' import {useModalControls} from '#/state/modals'
import { import {
hasPostLanguage, hasPostLanguage,
@@ -14,14 +16,12 @@ import {
useLanguagePrefs, useLanguagePrefs,
useLanguagePrefsApi, useLanguagePrefsApi,
} from '#/state/preferences/languages' } from '#/state/preferences/languages'
import {usePalette} from 'lib/hooks/usePalette'
import {isNative} from 'platform/detection'
import { import {
DropdownButton, DropdownButton,
DropdownItem, DropdownItem,
DropdownItemButton, DropdownItemButton,
} from 'view/com/util/forms/DropdownButton' } from '#/view/com/util/forms/DropdownButton'
import {Text} from 'view/com/util/text/Text' import {Text} from '#/view/com/util/text/Text'
import {codeToLanguageName} from '../../../../locale/helpers' import {codeToLanguageName} from '../../../../locale/helpers'
export function SelectLangBtn() { export function SelectLangBtn() {
@@ -1,22 +1,23 @@
import React, {useEffect, useState} from 'react' import React, {useEffect, useState} from 'react'
import {StyleSheet, View} from 'react-native' import {StyleSheet, View} from 'react-native'
import lande from 'lande' import {
import {Trans, msg} from '@lingui/macro' FontAwesomeIcon,
FontAwesomeIconStyle,
} from '@fortawesome/react-native-fontawesome'
import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {Text} from '../../util/text/Text' import lande from 'lande'
import {Button} from '../../util/forms/Button'
import {usePalette} from '#/lib/hooks/usePalette'
import {s} from '#/lib/styles'
import {code3ToCode2Strict, codeToLanguageName} from '#/locale/helpers' import {code3ToCode2Strict, codeToLanguageName} from '#/locale/helpers'
import { import {
toPostLanguages, toPostLanguages,
useLanguagePrefs, useLanguagePrefs,
useLanguagePrefsApi, useLanguagePrefsApi,
} from '#/state/preferences/languages' } from '#/state/preferences/languages'
import {usePalette} from '#/lib/hooks/usePalette' import {Button} from '../../util/forms/Button'
import {s} from '#/lib/styles' import {Text} from '../../util/text/Text'
import {
FontAwesomeIcon,
FontAwesomeIconStyle,
} from '@fortawesome/react-native-fontawesome'
// fallbacks for safari // fallbacks for safari
const onIdle = globalThis.requestIdleCallback || (cb => setTimeout(cb, 1)) const onIdle = globalThis.requestIdleCallback || (cb => setTimeout(cb, 1))
@@ -1,5 +1,5 @@
import Graphemer from 'graphemer'
import {useCallback, useMemo} from 'react' import {useCallback, useMemo} from 'react'
import Graphemer from 'graphemer'
export const useGrapheme = () => { export const useGrapheme = () => {
const splitter = useMemo(() => new Graphemer(), []) const splitter = useMemo(() => new Graphemer(), [])
@@ -20,7 +20,7 @@ import {Node as ProsemirrorNode} from '@tiptap/pm/model'
import {Plugin, PluginKey} from '@tiptap/pm/state' import {Plugin, PluginKey} from '@tiptap/pm/state'
import {Decoration, DecorationSet} from '@tiptap/pm/view' import {Decoration, DecorationSet} from '@tiptap/pm/view'
import {isValidDomain} from 'lib/strings/url-helpers' import {isValidDomain} from '#/lib/strings/url-helpers'
export const LinkDecorator = Mark.create({ export const LinkDecorator = Mark.create({
name: 'link-decorator', name: 'link-decorator',
@@ -14,11 +14,11 @@
* the facet-set. * the facet-set.
*/ */
import {Mark} from '@tiptap/core'
import {Plugin, PluginKey} from '@tiptap/pm/state'
import {Node as ProsemirrorNode} from '@tiptap/pm/model'
import {Decoration, DecorationSet} from '@tiptap/pm/view'
import {TAG_REGEX, TRAILING_PUNCTUATION_REGEX} from '@atproto/api' import {TAG_REGEX, TRAILING_PUNCTUATION_REGEX} from '@atproto/api'
import {Mark} from '@tiptap/core'
import {Node as ProsemirrorNode} from '@tiptap/pm/model'
import {Plugin, PluginKey} from '@tiptap/pm/state'
import {Decoration, DecorationSet} from '@tiptap/pm/view'
function getDecorations(doc: ProsemirrorNode) { function getDecorations(doc: ProsemirrorNode) {
const decorations: Decoration[] = [] const decorations: Decoration[] = []
@@ -6,7 +6,7 @@ import {BlueskyVideoView} from '@haileyok/bluesky-video'
import {CompressedVideo} from '#/lib/media/video/types' import {CompressedVideo} from '#/lib/media/video/types'
import {clamp} from '#/lib/numbers' import {clamp} from '#/lib/numbers'
import {useAutoplayDisabled} from '#/state/preferences' import {useAutoplayDisabled} from '#/state/preferences'
import {ExternalEmbedRemoveBtn} from 'view/com/composer/ExternalEmbedRemoveBtn' import {ExternalEmbedRemoveBtn} from '#/view/com/composer/ExternalEmbedRemoveBtn'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' import {PlayButtonIcon} from '#/components/video/PlayButtonIcon'
@@ -7,8 +7,8 @@ import {useLingui} from '@lingui/react'
import {CompressedVideo} from '#/lib/media/video/types' import {CompressedVideo} from '#/lib/media/video/types'
import {clamp} from '#/lib/numbers' import {clamp} from '#/lib/numbers'
import {useAutoplayDisabled} from '#/state/preferences' import {useAutoplayDisabled} from '#/state/preferences'
import {ExternalEmbedRemoveBtn} from '#/view/com/composer/ExternalEmbedRemoveBtn'
import * as Toast from '#/view/com/util/Toast' import * as Toast from '#/view/com/util/Toast'
import {ExternalEmbedRemoveBtn} from 'view/com/composer/ExternalEmbedRemoveBtn'
import {atoms as a} from '#/alf' import {atoms as a} from '#/alf'
import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' import {PlayButtonIcon} from '#/components/video/PlayButtonIcon'
+2 -2
View File
@@ -2,10 +2,10 @@ import React from 'react'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {usePalette} from '#/lib/hooks/usePalette' import {usePalette} from '#/lib/hooks/usePalette'
import {NavigationProp} from '#/lib/routes/types'
import {FeedSourceInfo} from '#/state/queries/feed' import {FeedSourceInfo} from '#/state/queries/feed'
import {useSession} from '#/state/session' import {useSession} from '#/state/session'
import {NavigationProp} from 'lib/routes/types' import {RenderTabBarFnProps} from '#/view/com/pager/Pager'
import {RenderTabBarFnProps} from 'view/com/pager/Pager'
import {TabBar} from '../pager/TabBar' import {TabBar} from '../pager/TabBar'
import {HomeHeaderLayout} from './HomeHeaderLayout' import {HomeHeaderLayout} from './HomeHeaderLayout'
@@ -8,8 +8,8 @@
import React from 'react' import React from 'react'
import { import {
SafeAreaView, SafeAreaView,
TouchableOpacity,
StyleSheet, StyleSheet,
TouchableOpacity,
ViewStyle, ViewStyle,
} from 'react-native' } from 'react-native'
import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
@@ -2,6 +2,7 @@
import React from 'react' import React from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import {ImageSource} from '../../@types' import {ImageSource} from '../../@types'
type Props = { type Props = {
+6 -7
View File
@@ -9,15 +9,14 @@
// https://github.com/jobtoday/react-native-image-viewing // https://github.com/jobtoday/react-native-image-viewing
import React, {ComponentType, useCallback, useMemo, useState} from 'react' import React, {ComponentType, useCallback, useMemo, useState} from 'react'
import {StyleSheet, View, Platform} from 'react-native' import {Platform, StyleSheet, View} from 'react-native'
import PagerView from 'react-native-pager-view'
import ImageItem from './components/ImageItem/ImageItem'
import ImageDefaultHeader from './components/ImageDefaultHeader'
import {ImageSource} from './@types'
import Animated, {useAnimatedStyle, withSpring} from 'react-native-reanimated' import Animated, {useAnimatedStyle, withSpring} from 'react-native-reanimated'
import {Edge, SafeAreaView} from 'react-native-safe-area-context' import {Edge, SafeAreaView} from 'react-native-safe-area-context'
import PagerView from 'react-native-pager-view'
import {ImageSource} from './@types'
import ImageDefaultHeader from './components/ImageDefaultHeader'
import ImageItem from './components/ImageItem/ImageItem'
type Props = { type Props = {
images: ImageSource[] images: ImageSource[]
+5 -5
View File
@@ -3,13 +3,13 @@ import {ActivityIndicator, SafeAreaView, StyleSheet, View} from 'react-native'
import {msg, Trans} from '@lingui/macro' import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {usePalette} from '#/lib/hooks/usePalette'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {cleanError} from '#/lib/strings/errors'
import {colors, s} from '#/lib/styles'
import {isWeb} from '#/platform/detection'
import {useModalControls} from '#/state/modals' import {useModalControls} from '#/state/modals'
import {useAgent, useSession} from '#/state/session' import {useAgent, useSession} from '#/state/session'
import {usePalette} from 'lib/hooks/usePalette'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
import {cleanError} from 'lib/strings/errors'
import {colors, s} from 'lib/styles'
import {isWeb} from 'platform/detection'
import {ErrorMessage} from '../util/error/ErrorMessage' import {ErrorMessage} from '../util/error/ErrorMessage'
import {Button} from '../util/forms/Button' import {Button} from '../util/forms/Button'
import {Text} from '../util/text/Text' import {Text} from '../util/text/Text'
+6 -6
View File
@@ -11,15 +11,15 @@ import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import * as EmailValidator from 'email-validator' import * as EmailValidator from 'email-validator'
import {usePalette} from '#/lib/hooks/usePalette'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {cleanError, isNetworkError} from '#/lib/strings/errors'
import {checkAndFormatResetCode} from '#/lib/strings/password'
import {colors, s} from '#/lib/styles'
import {logger} from '#/logger' import {logger} from '#/logger'
import {isAndroid, isWeb} from '#/platform/detection'
import {useModalControls} from '#/state/modals' import {useModalControls} from '#/state/modals'
import {useAgent, useSession} from '#/state/session' import {useAgent, useSession} from '#/state/session'
import {usePalette} from 'lib/hooks/usePalette'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
import {cleanError, isNetworkError} from 'lib/strings/errors'
import {checkAndFormatResetCode} from 'lib/strings/password'
import {colors, s} from 'lib/styles'
import {isAndroid, isWeb} from 'platform/detection'
import {ErrorMessage} from '../util/error/ErrorMessage' import {ErrorMessage} from '../util/error/ErrorMessage'
import {Button} from '../util/forms/Button' import {Button} from '../util/forms/Button'
import {Text} from '../util/text/Text' import {Text} from '../util/text/Text'
+4 -4
View File
@@ -14,17 +14,17 @@ import {
import {msg, Trans} from '@lingui/macro' import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {usePalette} from '#/lib/hooks/usePalette'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {makeProfileLink} from '#/lib/routes/links' import {makeProfileLink} from '#/lib/routes/links'
import {cleanError} from '#/lib/strings/errors'
import {isWeb} from '#/platform/detection'
import {useInvitesAPI, useInvitesState} from '#/state/invites' import {useInvitesAPI, useInvitesState} from '#/state/invites'
import {useModalControls} from '#/state/modals' import {useModalControls} from '#/state/modals'
import { import {
InviteCodesQueryResponse, InviteCodesQueryResponse,
useInviteCodesQuery, useInviteCodesQuery,
} from '#/state/queries/invites' } from '#/state/queries/invites'
import {usePalette} from 'lib/hooks/usePalette'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
import {cleanError} from 'lib/strings/errors'
import {isWeb} from 'platform/detection'
import {ErrorMessage} from '../util/error/ErrorMessage' import {ErrorMessage} from '../util/error/ErrorMessage'
import {Button} from '../util/forms/Button' import {Button} from '../util/forms/Button'
import {Link} from '../util/Link' import {Link} from '../util/Link'
+8 -8
View File
@@ -12,6 +12,14 @@ import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {HITSLOP_20} from '#/lib/constants' import {HITSLOP_20} from '#/lib/constants'
import {useIsKeyboardVisible} from '#/lib/hooks/useIsKeyboardVisible'
import {usePalette} from '#/lib/hooks/usePalette'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
import {cleanError} from '#/lib/strings/errors'
import {sanitizeHandle} from '#/lib/strings/handles'
import {colors, s} from '#/lib/styles'
import {isWeb} from '#/platform/detection'
import {useModalControls} from '#/state/modals' import {useModalControls} from '#/state/modals'
import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete' import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete'
import { import {
@@ -21,14 +29,6 @@ import {
useListMembershipAddMutation, useListMembershipAddMutation,
useListMembershipRemoveMutation, useListMembershipRemoveMutation,
} from '#/state/queries/list-memberships' } from '#/state/queries/list-memberships'
import {useIsKeyboardVisible} from 'lib/hooks/useIsKeyboardVisible'
import {usePalette} from 'lib/hooks/usePalette'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
import {sanitizeDisplayName} from 'lib/strings/display-names'
import {cleanError} from 'lib/strings/errors'
import {sanitizeHandle} from 'lib/strings/handles'
import {colors, s} from 'lib/styles'
import {isWeb} from 'platform/detection'
import {Button} from '../util/forms/Button' import {Button} from '../util/forms/Button'
import {Text} from '../util/text/Text' import {Text} from '../util/text/Text'
import * as Toast from '../util/Toast' import * as Toast from '../util/Toast'
+5 -5
View File
@@ -11,14 +11,14 @@ import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
import {msg, Trans} from '@lingui/macro' import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {usePalette} from '#/lib/hooks/usePalette'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {cleanError} from '#/lib/strings/errors'
import {colors, s} from '#/lib/styles'
import {logger} from '#/logger' import {logger} from '#/logger'
import {isWeb} from '#/platform/detection'
import {useModalControls} from '#/state/modals' import {useModalControls} from '#/state/modals'
import {useAgent, useSession} from '#/state/session' import {useAgent, useSession} from '#/state/session'
import {usePalette} from 'lib/hooks/usePalette'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
import {cleanError} from 'lib/strings/errors'
import {colors, s} from 'lib/styles'
import {isWeb} from 'platform/detection'
import {ErrorMessage} from '../util/error/ErrorMessage' import {ErrorMessage} from '../util/error/ErrorMessage'
import {Button} from '../util/forms/Button' import {Button} from '../util/forms/Button'
import {Text} from '../util/text/Text' import {Text} from '../util/text/Text'
@@ -4,9 +4,9 @@ import {LinearGradient} from 'expo-linear-gradient'
import {msg, Trans} from '@lingui/macro' import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {usePalette} from 'lib/hooks/usePalette' import {usePalette} from '#/lib/hooks/usePalette'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {colors, gradients, s} from 'lib/styles' import {colors, gradients, s} from '#/lib/styles'
export const ConfirmLanguagesButton = ({ export const ConfirmLanguagesButton = ({
onPress, onPress,
@@ -1,8 +1,9 @@
import React from 'react' import React from 'react'
import {StyleSheet} from 'react-native' import {StyleSheet} from 'react-native'
import {usePalette} from 'lib/hooks/usePalette'
import {ToggleButton} from 'view/com/util/forms/ToggleButton' import {usePalette} from '#/lib/hooks/usePalette'
import {useLanguagePrefs, toPostLanguages} from '#/state/preferences/languages' import {toPostLanguages, useLanguagePrefs} from '#/state/preferences/languages'
import {ToggleButton} from '#/view/com/util/forms/ToggleButton'
export function LanguageToggle({ export function LanguageToggle({
code2, code2,
+2 -1
View File
@@ -1,7 +1,8 @@
import {useDraggableScroll} from 'lib/hooks/useDraggableScrollView'
import React, {ComponentProps} from 'react' import React, {ComponentProps} from 'react'
import {ScrollView} from 'react-native' import {ScrollView} from 'react-native'
import {useDraggableScroll} from '#/lib/hooks/useDraggableScrollView'
export const DraggableScrollView = React.forwardRef< export const DraggableScrollView = React.forwardRef<
ScrollView, ScrollView,
ComponentProps<typeof ScrollView> ComponentProps<typeof ScrollView>
+1 -1
View File
@@ -3,7 +3,7 @@ import {View} from 'react-native'
import {flushSync} from 'react-dom' import {flushSync} from 'react-dom'
import {LogEvents} from '#/lib/statsig/events' import {LogEvents} from '#/lib/statsig/events'
import {s} from 'lib/styles' import {s} from '#/lib/styles'
export interface RenderTabBarFnProps { export interface RenderTabBarFnProps {
selectedPage: number selectedPage: number
+2 -2
View File
@@ -3,12 +3,12 @@ import {AppBskyFeedGetLikes as GetLikes} from '@atproto/api'
import {msg} from '@lingui/macro' import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
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'
import {isWeb} from '#/platform/detection'
import {useLikedByQuery} from '#/state/queries/post-liked-by' import {useLikedByQuery} from '#/state/queries/post-liked-by'
import {useResolveUriQuery} from '#/state/queries/resolve-uri' import {useResolveUriQuery} from '#/state/queries/resolve-uri'
import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender'
import {isWeb} from 'platform/detection'
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'
+3 -3
View File
@@ -7,15 +7,15 @@ import {
import {msg} from '@lingui/macro' import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped'
import {cleanError} from '#/lib/strings/errors' import {cleanError} from '#/lib/strings/errors'
import {logger} from '#/logger' import {logger} from '#/logger'
import {isWeb} from '#/platform/detection'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
import {usePostQuotesQuery} from '#/state/queries/post-quotes' import {usePostQuotesQuery} from '#/state/queries/post-quotes'
import {useResolveUriQuery} from '#/state/queries/resolve-uri' import {useResolveUriQuery} from '#/state/queries/resolve-uri'
import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' import {Post} from '#/view/com/post/Post'
import {isWeb} from 'platform/detection'
import {Post} from 'view/com/post/Post'
import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
import {List} from '../util/List' import {List} from '../util/List'
+1 -1
View File
@@ -3,11 +3,11 @@ import {AppBskyActorDefs as ActorDefs} from '@atproto/api'
import {msg} from '@lingui/macro' import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
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'
import {usePostRepostedByQuery} from '#/state/queries/post-reposted-by' import {usePostRepostedByQuery} from '#/state/queries/post-reposted-by'
import {useResolveUriQuery} from '#/state/queries/resolve-uri' import {useResolveUriQuery} from '#/state/queries/resolve-uri'
import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender'
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'
+7 -7
View File
@@ -7,9 +7,15 @@ import {AppBskyFeedDefs, AppBskyFeedThreadgate} from '@atproto/api'
import {msg, Trans} from '@lingui/macro' import {msg, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender'
import {useMinimalShellFabTransform} from '#/lib/hooks/useMinimalShellTransform'
import {useSetTitle} from '#/lib/hooks/useSetTitle'
import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped'
import {clamp} from '#/lib/numbers' import {clamp} from '#/lib/numbers'
import {ScrollProvider} from '#/lib/ScrollContext' import {ScrollProvider} from '#/lib/ScrollContext'
import {sanitizeDisplayName} from '#/lib/strings/display-names'
import {cleanError} from '#/lib/strings/errors'
import {isAndroid, isNative, isWeb} from '#/platform/detection' import {isAndroid, isNative, isWeb} from '#/platform/detection'
import {useModerationOpts} from '#/state/preferences/moderation-opts' import {useModerationOpts} from '#/state/preferences/moderation-opts'
import { import {
@@ -26,13 +32,7 @@ import {usePreferencesQuery} from '#/state/queries/preferences'
import {useSession} from '#/state/session' import {useSession} from '#/state/session'
import {useComposerControls} from '#/state/shell' import {useComposerControls} from '#/state/shell'
import {useMergedThreadgateHiddenReplies} from '#/state/threadgate-hidden-replies' import {useMergedThreadgateHiddenReplies} from '#/state/threadgate-hidden-replies'
import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' import {CenteredView} from '#/view/com/util/Views'
import {useMinimalShellFabTransform} from 'lib/hooks/useMinimalShellTransform'
import {useSetTitle} from 'lib/hooks/useSetTitle'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
import {sanitizeDisplayName} from 'lib/strings/display-names'
import {cleanError} from 'lib/strings/errors'
import {CenteredView} from 'view/com/util/Views'
import {atoms as a, useTheme} from '#/alf' import {atoms as a, useTheme} from '#/alf'
import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
+9 -8
View File
@@ -1,18 +1,19 @@
import React from 'react' import React from 'react'
import {StyleSheet, View} from 'react-native' import {StyleSheet, View} from 'react-native'
import {useNavigation} from '@react-navigation/native'
import { import {
FontAwesomeIcon, FontAwesomeIcon,
FontAwesomeIconStyle, FontAwesomeIconStyle,
} from '@fortawesome/react-native-fontawesome' } from '@fortawesome/react-native-fontawesome'
import {Text} from '../util/text/Text'
import {Button} from '../util/forms/Button'
import {MagnifyingGlassIcon} from 'lib/icons'
import {NavigationProp} from 'lib/routes/types'
import {usePalette} from 'lib/hooks/usePalette'
import {s} from 'lib/styles'
import {isWeb} from 'platform/detection'
import {Trans} from '@lingui/macro' import {Trans} from '@lingui/macro'
import {useNavigation} from '@react-navigation/native'
import {usePalette} from '#/lib/hooks/usePalette'
import {MagnifyingGlassIcon} from '#/lib/icons'
import {NavigationProp} from '#/lib/routes/types'
import {s} from '#/lib/styles'
import {isWeb} from '#/platform/detection'
import {Button} from '../util/forms/Button'
import {Text} from '../util/text/Text'
export function CustomFeedEmptyState() { export function CustomFeedEmptyState() {
const pal = usePalette('default') const pal = usePalette('default')
@@ -1,10 +1,11 @@
import React from 'react' import React from 'react'
import {View} from 'react-native' import {View} from 'react-native'
import {Trans} from '@lingui/macro' import {Trans} from '@lingui/macro'
import {Text} from '../util/text/Text'
import {usePalette} from '#/lib/hooks/usePalette' import {usePalette} from '#/lib/hooks/usePalette'
import {TextLink} from '../util/Link'
import {InfoCircleIcon} from '#/lib/icons' import {InfoCircleIcon} from '#/lib/icons'
import {TextLink} from '../util/Link'
import {Text} from '../util/text/Text'
export function DiscoverFallbackHeader() { export function DiscoverFallbackHeader() {
const pal = usePalette('default') const pal = usePalette('default')
+2 -2
View File
@@ -5,12 +5,12 @@ import {msg as msgLingui, Trans} from '@lingui/macro'
import {useLingui} from '@lingui/react' import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native' import {useNavigation} from '@react-navigation/native'
import {usePalette} from '#/lib/hooks/usePalette'
import {NavigationProp} from '#/lib/routes/types'
import {cleanError} from '#/lib/strings/errors' import {cleanError} from '#/lib/strings/errors'
import {logger} from '#/logger' import {logger} from '#/logger'
import {FeedDescriptor} from '#/state/queries/post-feed' import {FeedDescriptor} from '#/state/queries/post-feed'
import {useRemoveFeedMutation} from '#/state/queries/preferences' import {useRemoveFeedMutation} from '#/state/queries/preferences'
import {usePalette} from 'lib/hooks/usePalette'
import {NavigationProp} from 'lib/routes/types'
import * as Prompt from '#/components/Prompt' import * as Prompt from '#/components/Prompt'
import {EmptyState} from '../util/EmptyState' import {EmptyState} from '../util/EmptyState'
import {ErrorMessage} from '../util/error/ErrorMessage' import {ErrorMessage} from '../util/error/ErrorMessage'

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