Bluesky app fork with some witchin' additions 💫

Sort imports (#6009)

* Mark import sort/order/style rules as error

* npm run lint -- --fix

authored by danabra.mov and committed by

GitHub a22685c3 0ae64a1e

+370 -339
+3 -3
.eslintrc.js
··· 42 42 ], 43 43 'bsky-internal/use-exact-imports': 'error', 44 44 'bsky-internal/use-typed-gates': 'error', 45 - 'bsky-internal/use-prefixed-imports': 'warn', 45 + 'bsky-internal/use-prefixed-imports': 'error', 46 46 'simple-import-sort/imports': [ 47 - 'warn', 47 + 'error', 48 48 { 49 49 groups: [ 50 50 // Side effect imports. ··· 78 78 ], 79 79 }, 80 80 ], 81 - 'simple-import-sort/exports': 'warn', 81 + 'simple-import-sort/exports': 'error', 82 82 // TODO: Reenable when we figure out why it gets stuck on CI. 83 83 // 'react-compiler/react-compiler': 'error', 84 84 'no-restricted-imports': [
+2 -1
src/components/Divider.tsx
··· 1 1 import React from 'react' 2 2 import {View} from 'react-native' 3 - import {atoms as a, useTheme, ViewStyleProp, flatten} from '#/alf' 3 + 4 + import {atoms as a, flatten, useTheme, ViewStyleProp} from '#/alf' 4 5 5 6 export function Divider({style}: ViewStyleProp) { 6 7 const t = useTheme()
+2 -2
src/components/Error.tsx
··· 3 3 import {msg, Trans} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' 5 5 6 - import {useGoBack} from 'lib/hooks/useGoBack' 7 - import {CenteredView} from 'view/com/util/Views' 6 + import {useGoBack} from '#/lib/hooks/useGoBack' 7 + import {CenteredView} from '#/view/com/util/Views' 8 8 import {atoms as a, useBreakpoints, useTheme} from '#/alf' 9 9 import {Button, ButtonText} from '#/components/Button' 10 10 import {Text} from '#/components/Typography'
+2 -2
src/components/LikedByList.tsx
··· 3 3 import {msg} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' 5 5 6 + import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' 7 + import {cleanError} from '#/lib/strings/errors' 6 8 import {logger} from '#/logger' 7 9 import {useLikedByQuery} from '#/state/queries/post-liked-by' 8 10 import {useResolveUriQuery} from '#/state/queries/resolve-uri' 9 - import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' 10 - import {cleanError} from 'lib/strings/errors' 11 11 import {ProfileCardWithFollowBtn} from '#/view/com/profile/ProfileCard' 12 12 import {List} from '#/view/com/util/List' 13 13 import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
+2 -2
src/components/Lists.tsx
··· 3 3 import {msg, Trans} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' 5 5 6 - import {cleanError} from 'lib/strings/errors' 7 - import {CenteredView} from 'view/com/util/Views' 6 + import {cleanError} from '#/lib/strings/errors' 7 + import {CenteredView} from '#/view/com/util/Views' 8 8 import {atoms as a, flatten, useBreakpoints, useTheme} from '#/alf' 9 9 import {Button, ButtonText} from '#/components/Button' 10 10 import {Error} from '#/components/Error'
+2 -2
src/components/ProfileHoverCard/index.web.tsx
··· 5 5 import {msg, plural} from '@lingui/macro' 6 6 import {useLingui} from '@lingui/react' 7 7 8 + import {isTouchDevice} from '#/lib/browser' 8 9 import {getModerationCauseKey} from '#/lib/moderation' 9 10 import {makeProfileLink} from '#/lib/routes/links' 10 11 import {sanitizeDisplayName} from '#/lib/strings/display-names' 11 12 import {sanitizeHandle} from '#/lib/strings/handles' 13 + import {useProfileShadow} from '#/state/cache/profile-shadow' 12 14 import {useModerationOpts} from '#/state/preferences/moderation-opts' 13 15 import {usePrefetchProfileQuery, useProfileQuery} from '#/state/queries/profile' 14 16 import {useSession} from '#/state/session' 15 - import {isTouchDevice} from 'lib/browser' 16 - import {useProfileShadow} from 'state/cache/profile-shadow' 17 17 import {formatCount} from '#/view/com/util/numeric/format' 18 18 import {UserAvatar} from '#/view/com/util/UserAvatar' 19 19 import {ProfileHeaderHandle} from '#/screens/Profile/Header/Handle'
+3 -3
src/components/StarterPack/Main/FeedsList.tsx
··· 3 3 import {AppBskyFeedDefs} from '@atproto/api' 4 4 import {GeneratorView} from '@atproto/api/dist/client/types/app/bsky/feed/defs' 5 5 6 - import {useBottomBarOffset} from 'lib/hooks/useBottomBarOffset' 7 - import {isNative, isWeb} from 'platform/detection' 8 - import {List, ListRef} from 'view/com/util/List' 6 + import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset' 7 + import {isNative, isWeb} from '#/platform/detection' 8 + import {List, ListRef} from '#/view/com/util/List' 9 9 import {SectionRef} from '#/screens/Profile/Sections/types' 10 10 import {atoms as a, useTheme} from '#/alf' 11 11 import * as FeedCard from '#/components/FeedCard'
+4 -4
src/components/StarterPack/Main/PostsList.tsx
··· 3 3 import {msg} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' 5 5 6 + import {isNative} from '#/platform/detection' 6 7 import {FeedDescriptor} from '#/state/queries/post-feed' 7 - import {isNative} from 'platform/detection' 8 - import {Feed} from 'view/com/posts/Feed' 9 - import {EmptyState} from 'view/com/util/EmptyState' 10 - import {ListRef} from 'view/com/util/List' 8 + import {Feed} from '#/view/com/posts/Feed' 9 + import {EmptyState} from '#/view/com/util/EmptyState' 10 + import {ListRef} from '#/view/com/util/List' 11 11 import {SectionRef} from '#/screens/Profile/Sections/types' 12 12 13 13 interface ProfilesListProps {
+7 -7
src/components/StarterPack/Main/ProfilesList.tsx
··· 8 8 } from '@atproto/api' 9 9 import {InfiniteData, UseInfiniteQueryResult} from '@tanstack/react-query' 10 10 11 - import {useBottomBarOffset} from 'lib/hooks/useBottomBarOffset' 12 - import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' 13 - import {isBlockedOrBlocking} from 'lib/moderation/blocked-and-muted' 14 - import {isNative, isWeb} from 'platform/detection' 15 - import {useAllListMembersQuery} from 'state/queries/list-members' 16 - import {useSession} from 'state/session' 17 - import {List, ListRef} from 'view/com/util/List' 11 + import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset' 12 + import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' 13 + import {isBlockedOrBlocking} from '#/lib/moderation/blocked-and-muted' 14 + import {isNative, isWeb} from '#/platform/detection' 15 + import {useAllListMembersQuery} from '#/state/queries/list-members' 16 + import {useSession} from '#/state/session' 17 + import {List, ListRef} from '#/view/com/util/List' 18 18 import {SectionRef} from '#/screens/Profile/Sections/types' 19 19 import {atoms as a, useTheme} from '#/alf' 20 20 import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
+1 -1
src/components/StarterPack/Wizard/ScreenTransition.tsx
··· 7 7 SlideInRight, 8 8 } from 'react-native-reanimated' 9 9 10 - import {isWeb} from 'platform/detection' 10 + import {isWeb} from '#/platform/detection' 11 11 12 12 export function ScreenTransition({ 13 13 direction,
+2 -2
src/components/dms/ActionsWrapper.tsx
··· 12 12 import {msg} from '@lingui/macro' 13 13 import {useLingui} from '@lingui/react' 14 14 15 - import {HITSLOP_10} from 'lib/constants' 16 - import {useHaptics} from 'lib/haptics' 15 + import {HITSLOP_10} from '#/lib/constants' 16 + import {useHaptics} from '#/lib/haptics' 17 17 import {atoms as a} from '#/alf' 18 18 import {MessageMenu} from '#/components/dms/MessageMenu' 19 19 import {useMenuControl} from '#/components/Menu'
+1 -1
src/components/dms/BlockedByListDialog.tsx
··· 4 4 import {msg} from '@lingui/macro' 5 5 import {useLingui} from '@lingui/react' 6 6 7 - import {listUriToHref} from 'lib/strings/url-helpers' 7 + import {listUriToHref} from '#/lib/strings/url-helpers' 8 8 import {atoms as a, useTheme} from '#/alf' 9 9 import * as Dialog from '#/components/Dialog' 10 10 import {DialogControlProps} from '#/components/Dialog'
+4 -4
src/components/dms/ChatEmptyPill.tsx
··· 9 9 import {msg} from '@lingui/macro' 10 10 import {useLingui} from '@lingui/react' 11 11 12 - import {ScaleAndFadeIn} from 'lib/custom-animations/ScaleAndFade' 13 - import {ShrinkAndPop} from 'lib/custom-animations/ShrinkAndPop' 14 - import {useHaptics} from 'lib/haptics' 15 - import {isWeb} from 'platform/detection' 12 + import {ScaleAndFadeIn} from '#/lib/custom-animations/ScaleAndFade' 13 + import {ShrinkAndPop} from '#/lib/custom-animations/ShrinkAndPop' 14 + import {useHaptics} from '#/lib/haptics' 15 + import {isWeb} from '#/platform/detection' 16 16 import {atoms as a, useTheme} from '#/alf' 17 17 import {Text} from '#/components/Typography' 18 18
+4 -4
src/components/dms/LeaveConvoPrompt.tsx
··· 3 3 import {useLingui} from '@lingui/react' 4 4 import {useNavigation} from '@react-navigation/native' 5 5 6 - import {NavigationProp} from 'lib/routes/types' 7 - import {isNative} from 'platform/detection' 8 - import {useLeaveConvo} from 'state/queries/messages/leave-conversation' 9 - import * as Toast from 'view/com/util/Toast' 6 + import {NavigationProp} from '#/lib/routes/types' 7 + import {isNative} from '#/platform/detection' 8 + import {useLeaveConvo} from '#/state/queries/messages/leave-conversation' 9 + import * as Toast from '#/view/com/util/Toast' 10 10 import {DialogOuterProps} from '#/components/Dialog' 11 11 import * as Prompt from '#/components/Prompt' 12 12
+2 -2
src/components/dms/MessagesListBlockedFooter.tsx
··· 4 4 import {msg, Trans} from '@lingui/macro' 5 5 import {useLingui} from '@lingui/react' 6 6 7 - import {useProfileShadow} from 'state/cache/profile-shadow' 8 - import {useProfileBlockMutationQueue} from 'state/queries/profile' 7 + import {useProfileShadow} from '#/state/cache/profile-shadow' 8 + import {useProfileBlockMutationQueue} from '#/state/queries/profile' 9 9 import {atoms as a, useBreakpoints, useTheme} from '#/alf' 10 10 import {Button, ButtonText} from '#/components/Button' 11 11 import {useDialogControl} from '#/components/Dialog'
+3 -3
src/components/dms/NewMessagesPill.tsx
··· 12 12 import { 13 13 ScaleAndFadeIn, 14 14 ScaleAndFadeOut, 15 - } from 'lib/custom-animations/ScaleAndFade' 16 - import {useHaptics} from 'lib/haptics' 17 - import {isAndroid, isIOS, isWeb} from 'platform/detection' 15 + } from '#/lib/custom-animations/ScaleAndFade' 16 + import {useHaptics} from '#/lib/haptics' 17 + import {isAndroid, isIOS, isWeb} from '#/platform/detection' 18 18 import {atoms as a, useTheme} from '#/alf' 19 19 import {Text} from '#/components/Typography' 20 20
+4 -4
src/components/hooks/useStarterPackEntry.native.ts
··· 3 3 import { 4 4 createStarterPackLinkFromAndroidReferrer, 5 5 httpStarterPackUriToAtUri, 6 - } from 'lib/strings/starter-pack' 7 - import {isAndroid} from 'platform/detection' 8 - import {useHasCheckedForStarterPack} from 'state/preferences/used-starter-packs' 9 - import {useSetActiveStarterPack} from 'state/shell/starter-pack' 6 + } from '#/lib/strings/starter-pack' 7 + import {isAndroid} from '#/platform/detection' 8 + import {useHasCheckedForStarterPack} from '#/state/preferences/used-starter-packs' 9 + import {useSetActiveStarterPack} from '#/state/shell/starter-pack' 10 10 import {Referrer, SharedPrefs} from '../../../modules/expo-bluesky-swiss-army' 11 11 12 12 export function useStarterPackEntry() {
+2 -2
src/components/hooks/useStarterPackEntry.ts
··· 1 1 import React from 'react' 2 2 3 - import {httpStarterPackUriToAtUri} from 'lib/strings/starter-pack' 4 - import {useSetActiveStarterPack} from 'state/shell/starter-pack' 3 + import {httpStarterPackUriToAtUri} from '#/lib/strings/starter-pack' 4 + import {useSetActiveStarterPack} from '#/state/shell/starter-pack' 5 5 6 6 export function useStarterPackEntry() { 7 7 const [ready, setReady] = React.useState(false)
+2 -2
src/components/moderation/PostHider.tsx
··· 6 6 import {useQueryClient} from '@tanstack/react-query' 7 7 8 8 import {useModerationCauseDescription} from '#/lib/moderation/useModerationCauseDescription' 9 - import {addStyle} from 'lib/styles' 10 - import {precacheProfile} from 'state/queries/profile' 9 + import {addStyle} from '#/lib/styles' 10 + import {precacheProfile} from '#/state/queries/profile' 11 11 // import {Link} from '#/components/Link' TODO this imposes some styles that screw things up 12 12 import {Link} from '#/view/com/util/Link' 13 13 import {atoms as a, useTheme} from '#/alf'
+1 -1
src/components/moderation/ProfileHeaderAlerts.tsx
··· 2 2 import {StyleProp, ViewStyle} from 'react-native' 3 3 import {ModerationDecision} from '@atproto/api' 4 4 5 - import {getModerationCauseKey} from 'lib/moderation' 5 + import {getModerationCauseKey} from '#/lib/moderation' 6 6 import * as Pills from '#/components/Pills' 7 7 8 8 export function ProfileHeaderAlerts({
+3 -3
src/lib/api/feed/merge.ts
··· 1 1 import {AppBskyFeedDefs, AppBskyFeedGetTimeline, BskyAgent} from '@atproto/api' 2 2 import shuffle from 'lodash.shuffle' 3 3 4 + import {bundleAsync} from '#/lib/async/bundle' 5 + import {timeout} from '#/lib/async/timeout' 6 + import {feedUriToHref} from '#/lib/strings/url-helpers' 4 7 import {getContentLanguages} from '#/state/preferences/languages' 5 8 import {FeedParams} from '#/state/queries/post-feed' 6 - import {bundleAsync} from 'lib/async/bundle' 7 - import {timeout} from 'lib/async/timeout' 8 - import {feedUriToHref} from 'lib/strings/url-helpers' 9 9 import {FeedTuner} from '../feed-manip' 10 10 import {FeedTunerFn} from '../feed-manip' 11 11 import {FeedAPI, FeedAPIResponse, ReasonFeedSource} from './types'
+1 -1
src/lib/async/retry.ts
··· 1 - import {isNetworkError} from 'lib/strings/errors' 1 + import {isNetworkError} from '#/lib/strings/errors' 2 2 3 3 export async function retry<P>( 4 4 retries: number,
+4 -4
src/lib/custom-animations/CountWheel.tsx
··· 8 8 } from 'react-native-reanimated' 9 9 import {i18n} from '@lingui/core' 10 10 11 - import {decideShouldRoll} from 'lib/custom-animations/util' 12 - import {s} from 'lib/styles' 13 - import {formatCount} from 'view/com/util/numeric/format' 14 - import {Text} from 'view/com/util/text/Text' 11 + import {decideShouldRoll} from '#/lib/custom-animations/util' 12 + import {s} from '#/lib/styles' 13 + import {formatCount} from '#/view/com/util/numeric/format' 14 + import {Text} from '#/view/com/util/text/Text' 15 15 import {atoms as a, useTheme} from '#/alf' 16 16 17 17 const animationConfig = {
+4 -4
src/lib/custom-animations/CountWheel.web.tsx
··· 3 3 import {useReducedMotion} from 'react-native-reanimated' 4 4 import {i18n} from '@lingui/core' 5 5 6 - import {decideShouldRoll} from 'lib/custom-animations/util' 7 - import {s} from 'lib/styles' 8 - import {formatCount} from 'view/com/util/numeric/format' 9 - import {Text} from 'view/com/util/text/Text' 6 + import {decideShouldRoll} from '#/lib/custom-animations/util' 7 + import {s} from '#/lib/styles' 8 + import {formatCount} from '#/view/com/util/numeric/format' 9 + import {Text} from '#/view/com/util/text/Text' 10 10 import {atoms as a, useTheme} from '#/alf' 11 11 12 12 const animationConfig = {
+1 -1
src/lib/custom-animations/LikeIcon.tsx
··· 6 6 useReducedMotion, 7 7 } from 'react-native-reanimated' 8 8 9 - import {s} from 'lib/styles' 9 + import {s} from '#/lib/styles' 10 10 import {useTheme} from '#/alf' 11 11 import { 12 12 Heart2_Filled_Stroke2_Corner0_Rounded as HeartIconFilled,
+1 -1
src/lib/custom-animations/LikeIcon.web.tsx
··· 2 2 import {View} from 'react-native' 3 3 import {useReducedMotion} from 'react-native-reanimated' 4 4 5 - import {s} from 'lib/styles' 5 + import {s} from '#/lib/styles' 6 6 import {useTheme} from '#/alf' 7 7 import { 8 8 Heart2_Filled_Stroke2_Corner0_Rounded as HeartIconFilled,
+5 -5
src/lib/generate-starterpack.ts
··· 8 8 import {useLingui} from '@lingui/react' 9 9 import {useMutation} from '@tanstack/react-query' 10 10 11 - import {until} from 'lib/async/until' 12 - import {sanitizeDisplayName} from 'lib/strings/display-names' 13 - import {sanitizeHandle} from 'lib/strings/handles' 14 - import {enforceLen} from 'lib/strings/helpers' 15 - import {useAgent} from 'state/session' 11 + import {until} from '#/lib/async/until' 12 + import {sanitizeDisplayName} from '#/lib/strings/display-names' 13 + import {sanitizeHandle} from '#/lib/strings/handles' 14 + import {enforceLen} from '#/lib/strings/helpers' 15 + import {useAgent} from '#/state/session' 16 16 17 17 export const createStarterPackList = async ({ 18 18 name,
+1 -1
src/lib/hooks/useAnimatedScrollHandler_FIXED.web.ts
··· 1 - import {useRef, useEffect} from 'react' 1 + import {useEffect, useRef} from 'react' 2 2 import {useAnimatedScrollHandler as useAnimatedScrollHandler_BUGGY} from 'react-native-reanimated' 3 3 4 4 export const useAnimatedScrollHandler: typeof useAnimatedScrollHandler_BUGGY = (
+3 -3
src/lib/hooks/useBottomBarOffset.ts
··· 1 1 import {useSafeAreaInsets} from 'react-native-safe-area-context' 2 2 3 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 4 - import {clamp} from 'lib/numbers' 5 - import {isWeb} from 'platform/detection' 3 + import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 4 + import {clamp} from '#/lib/numbers' 5 + import {isWeb} from '#/platform/detection' 6 6 7 7 export function useBottomBarOffset(modifier: number = 0) { 8 8 const {isTabletOrDesktop} = useWebMediaQueries()
+1 -1
src/lib/hooks/useColorSchemeStyle.ts
··· 1 - import {useTheme} from 'lib/ThemeContext' 1 + import {useTheme} from '#/lib/ThemeContext' 2 2 3 3 export function useColorSchemeStyle<T>(lightStyle: T, darkStyle: T) { 4 4 const colorScheme = useTheme().colorScheme
+3 -2
src/lib/hooks/useCustomPalette.ts
··· 1 1 import React from 'react' 2 - import {useTheme} from 'lib/ThemeContext' 3 - import {choose} from 'lib/functions' 2 + 3 + import {choose} from '#/lib/functions' 4 + import {useTheme} from '#/lib/ThemeContext' 4 5 5 6 export function useCustomPalette<T>({light, dark}: {light: T; dark: T}) { 6 7 const theme = useTheme()
+4 -3
src/lib/hooks/useDraggableScrollView.ts
··· 1 - import {useEffect, useRef, useMemo, ForwardedRef} from 'react' 2 - import {Platform, findNodeHandle} from 'react-native' 1 + import {ForwardedRef, useEffect, useMemo, useRef} from 'react' 3 2 import type {ScrollView} from 'react-native' 4 - import {mergeRefs} from 'lib/merge-refs' 3 + import {findNodeHandle, Platform} from 'react-native' 4 + 5 + import {mergeRefs} from '#/lib/merge-refs' 5 6 6 7 type Props<Scrollable extends ScrollView = ScrollView> = { 7 8 cursor?: string
+1 -1
src/lib/hooks/useGoBack.ts
··· 1 1 import {StackActions, useNavigation} from '@react-navigation/native' 2 2 3 - import {NavigationProp} from 'lib/routes/types' 3 + import {NavigationProp} from '#/lib/routes/types' 4 4 import {router} from '#/routes' 5 5 6 6 export function useGoBack(onGoBack?: () => unknown) {
+1 -1
src/lib/hooks/useInitialNumToRender.ts
··· 1 1 import {useWindowDimensions} from 'react-native' 2 2 import {useSafeAreaInsets} from 'react-native-safe-area-context' 3 3 4 - import {useBottomBarOffset} from 'lib/hooks/useBottomBarOffset' 4 + import {useBottomBarOffset} from '#/lib/hooks/useBottomBarOffset' 5 5 6 6 const MIN_POST_HEIGHT = 100 7 7
+3 -2
src/lib/hooks/useIsKeyboardVisible.ts
··· 1 - import {useState, useEffect} from 'react' 1 + import {useEffect, useState} from 'react' 2 2 import {Keyboard} from 'react-native' 3 - import {isIOS} from 'platform/detection' 3 + 4 + import {isIOS} from '#/platform/detection' 4 5 5 6 export function useIsKeyboardVisible({ 6 7 iosUseWillEvents,
+4 -3
src/lib/hooks/useNavigationDeduped.ts
··· 1 1 import React from 'react' 2 2 import {useNavigation} from '@react-navigation/core' 3 - import {AllNavigatorParams, NavigationProp} from 'lib/routes/types' 3 + import {NavigationState} from '@react-navigation/native' 4 4 import type {NavigationAction} from '@react-navigation/routers' 5 - import {NavigationState} from '@react-navigation/native' 6 - import {useDedupe} from 'lib/hooks/useDedupe' 5 + 6 + import {useDedupe} from '#/lib/hooks/useDedupe' 7 + import {AllNavigatorParams, NavigationProp} from '#/lib/routes/types' 7 8 8 9 export type DebouncedNavigationProp = Pick< 9 10 NavigationProp,
+1 -1
src/lib/hooks/useNavigationTabState.ts
··· 1 1 import {useNavigationState} from '@react-navigation/native' 2 2 3 - import {getTabState, TabState} from 'lib/routes/helpers' 3 + import {getTabState, TabState} from '#/lib/routes/helpers' 4 4 5 5 export function useNavigationTabState() { 6 6 return useNavigationState(state => {
+1 -1
src/lib/hooks/useNavigationTabState.web.ts
··· 1 1 import {useNavigationState} from '@react-navigation/native' 2 2 3 - import {getCurrentRoute} from 'lib/routes/helpers' 3 + import {getCurrentRoute} from '#/lib/routes/helpers' 4 4 5 5 export function useNavigationTabState() { 6 6 return useNavigationState(state => {
+2 -2
src/lib/hooks/useOTAUpdates.ts
··· 10 10 useUpdates, 11 11 } from 'expo-updates' 12 12 13 + import {IS_TESTFLIGHT} from '#/lib/app-info' 13 14 import {logger} from '#/logger' 14 - import {IS_TESTFLIGHT} from 'lib/app-info' 15 - import {isIOS} from 'platform/detection' 15 + import {isIOS} from '#/platform/detection' 16 16 17 17 const MINIMUM_MINIMIZE_TIME = 15 * 60e3 18 18
+2 -1
src/lib/hooks/usePalette.ts
··· 1 1 import {useMemo} from 'react' 2 2 import {TextStyle, ViewStyle} from 'react-native' 3 - import {useTheme, PaletteColorName, PaletteColor} from '../ThemeContext' 3 + 4 + import {PaletteColor, PaletteColorName, useTheme} from '../ThemeContext' 4 5 5 6 export interface UsePaletteValue { 6 7 colors: PaletteColor
+2 -2
src/lib/hooks/usePermissions.ts
··· 2 2 import {Camera} from 'expo-camera/legacy' // TODO: Migrate to the new one. 3 3 import * as MediaLibrary from 'expo-media-library' 4 4 5 - import {isWeb} from 'platform/detection' 6 - import {Alert} from 'view/com/util/Alert' 5 + import {isWeb} from '#/platform/detection' 6 + import {Alert} from '#/view/com/util/Alert' 7 7 8 8 const openPermissionAlert = (perm: string) => { 9 9 Alert.alert(
+2 -2
src/lib/hooks/useSetTitle.ts
··· 1 1 import {useEffect} from 'react' 2 2 import {useNavigation} from '@react-navigation/native' 3 3 4 - import {NavigationProp} from 'lib/routes/types' 5 - import {bskyTitle} from 'lib/strings/headings' 4 + import {NavigationProp} from '#/lib/routes/types' 5 + import {bskyTitle} from '#/lib/strings/headings' 6 6 import {useUnreadNotifications} from '#/state/queries/notifications/unread' 7 7 8 8 export function useSetTitle(title?: string) {
+2 -1
src/lib/hooks/useTabFocusEffect.ts
··· 1 1 import {useEffect, useState} from 'react' 2 2 import {useNavigation} from '@react-navigation/native' 3 - import {getTabState, TabState} from 'lib/routes/helpers' 3 + 4 + import {getTabState, TabState} from '#/lib/routes/helpers' 4 5 5 6 export function useTabFocusEffect( 6 7 tabName: string,
+1 -1
src/lib/hooks/useToggleMutationQueue.ts
··· 1 - import {useState, useRef, useEffect, useCallback} from 'react' 1 + import {useCallback, useEffect, useRef, useState} from 'react' 2 2 3 3 type Task<TServerState> = { 4 4 isOn: boolean
+2 -1
src/lib/hooks/useWebMediaQueries.tsx
··· 1 1 import {useMediaQuery} from 'react-responsive' 2 - import {isNative} from 'platform/detection' 2 + 3 + import {isNative} from '#/platform/detection' 3 4 4 5 export function useWebMediaQueries() { 5 6 const isDesktop = useMediaQuery({minWidth: 1300})
+1 -1
src/lib/hooks/useWebScrollRestoration.ts
··· 1 - import {useMemo, useState, useEffect} from 'react' 1 + import {useEffect, useMemo, useState} from 'react' 2 2 import {EventArg, useNavigation} from '@react-navigation/core' 3 3 4 4 if ('scrollRestoration' in history) {
+2 -1
src/lib/media/image-sizes.ts
··· 1 1 import {Image} from 'react-native' 2 - import type {Dimensions} from 'lib/media/types' 2 + 3 + import type {Dimensions} from '#/lib/media/types' 3 4 4 5 const sizes: Map<string, Dimensions> = new Map() 5 6 const activeRequests: Map<string, Promise<Dimensions>> = new Map()
+1 -1
src/lib/media/video/compress.web.ts
··· 1 1 import {ImagePickerAsset} from 'expo-image-picker' 2 2 3 - import {VideoTooLargeError} from 'lib/media/video/errors' 3 + import {VideoTooLargeError} from '#/lib/media/video/errors' 4 4 import {CompressedVideo} from './types' 5 5 6 6 const MAX_VIDEO_SIZE = 1024 * 1024 * 50 // 50mb
+2 -2
src/lib/moderation/create-sanitized-display-name.ts
··· 1 1 import {AppBskyActorDefs} from '@atproto/api' 2 2 3 - import {sanitizeDisplayName} from 'lib/strings/display-names' 4 - import {sanitizeHandle} from 'lib/strings/handles' 3 + import {sanitizeDisplayName} from '#/lib/strings/display-names' 4 + import {sanitizeHandle} from '#/lib/strings/handles' 5 5 6 6 export function createSanitizedDisplayName( 7 7 profile:
+1 -1
src/lib/moderation/useLabelBehaviorDescription.ts
··· 1 1 import {InterpretedLabelValueDefinition, LabelPreference} from '@atproto/api' 2 - import {useLingui} from '@lingui/react' 3 2 import {msg} from '@lingui/macro' 3 + import {useLingui} from '@lingui/react' 4 4 5 5 export function useLabelBehaviorDescription( 6 6 labelValueDef: InterpretedLabelValueDefinition,
+2 -2
src/lib/notifications/notifications.ts
··· 3 3 import {getBadgeCountAsync, setBadgeCountAsync} from 'expo-notifications' 4 4 import {BskyAgent} from '@atproto/api' 5 5 6 + import {logEvent} from '#/lib/statsig/statsig' 6 7 import {logger} from '#/logger' 8 + import {devicePlatform, isAndroid, isNative} from '#/platform/detection' 7 9 import {SessionAccount, useAgent, useSession} from '#/state/session' 8 - import {logEvent} from 'lib/statsig/statsig' 9 - import {devicePlatform, isAndroid, isNative} from 'platform/detection' 10 10 import BackgroundNotificationHandler from '../../../modules/expo-background-notification-handler' 11 11 12 12 const SERVICE_DID = (serviceUrl?: string) =>
+1 -1
src/lib/routes/links.ts
··· 1 1 import {AppBskyGraphDefs, AtUri} from '@atproto/api' 2 2 3 - import {isInvalidHandle} from 'lib/strings/handles' 3 + import {isInvalidHandle} from '#/lib/strings/handles' 4 4 5 5 export function makeProfileLink( 6 6 info: {
+1 -1
src/lib/sentry.ts
··· 7 7 import {nativeApplicationVersion, nativeBuildVersion} from 'expo-application' 8 8 import {init} from '@sentry/react-native' 9 9 10 - import {BUILD_ENV, IS_DEV, IS_TESTFLIGHT} from 'lib/app-info' 10 + import {BUILD_ENV, IS_DEV, IS_TESTFLIGHT} from '#/lib/app-info' 11 11 12 12 /** 13 13 * Examples:
+1 -1
src/lib/strings/handles.ts
··· 1 1 // Regex from the go implementation 2 2 // https://github.com/bluesky-social/indigo/blob/main/atproto/syntax/handle.go#L10 3 - import {forceLTR} from 'lib/strings/bidi' 3 + import {forceLTR} from '#/lib/strings/bidi' 4 4 5 5 const VALIDATE_REGEX = 6 6 /^([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
src/lib/strings/rich-text-helpers.ts
··· 1 1 import {AppBskyRichtextFacet, RichText} from '@atproto/api' 2 + 2 3 import {linkRequiresWarning} from './url-helpers' 3 4 4 5 export function richTextToString(rt: RichText, loose: boolean): string {
+3 -3
src/lib/strings/url-helpers.ts
··· 2 2 import psl from 'psl' 3 3 import TLDs from 'tlds' 4 4 5 + import {BSKY_SERVICE} from '#/lib/constants' 6 + import {isInvalidHandle} from '#/lib/strings/handles' 7 + import {startUriToStarterPackUri} from '#/lib/strings/starter-pack' 5 8 import {logger} from '#/logger' 6 - import {BSKY_SERVICE} from 'lib/constants' 7 - import {isInvalidHandle} from 'lib/strings/handles' 8 - import {startUriToStarterPackUri} from 'lib/strings/starter-pack' 9 9 10 10 export const BSKY_APP_HOST = 'https://bsky.app' 11 11 const BSKY_TRUSTED_HOSTS = [
+1 -1
src/locale/__tests__/helpers.test.ts
··· 1 - import {test, expect} from '@jest/globals' 1 + import {expect, test} from '@jest/globals' 2 2 3 3 import {sanitizeAppLanguageSetting} from '#/locale/helpers' 4 4 import {AppLanguage} from '#/locale/languages'
+1 -1
src/locale/helpers.ts
··· 2 2 import * as bcp47Match from 'bcp-47-match' 3 3 import lande from 'lande' 4 4 5 - import {hasProp} from 'lib/type-guards' 5 + import {hasProp} from '#/lib/type-guards' 6 6 import { 7 7 AppLanguage, 8 8 LANGUAGES_MAP_CODE2,
+2 -1
src/locale/i18nProvider.tsx
··· 1 1 import React from 'react' 2 + import {i18n} from '@lingui/core' 2 3 import {I18nProvider as DefaultI18nProvider} from '@lingui/react' 3 - import {i18n} from '@lingui/core' 4 + 4 5 import {useLocaleLanguage} from './i18n' 5 6 6 7 export default function I18nProvider({children}: {children: React.ReactNode}) {
+7 -7
src/screens/List/ListHiddenScreen.tsx
··· 5 5 import {useLingui} from '@lingui/react' 6 6 import {useQueryClient} from '@tanstack/react-query' 7 7 8 + import {useGoBack} from '#/lib/hooks/useGoBack' 9 + import {sanitizeHandle} from '#/lib/strings/handles' 8 10 import {logger} from '#/logger' 9 11 import {RQKEY_ROOT as listQueryRoot} from '#/state/queries/list' 10 - import {useGoBack} from 'lib/hooks/useGoBack' 11 - import {sanitizeHandle} from 'lib/strings/handles' 12 - import {useListBlockMutation, useListMuteMutation} from 'state/queries/list' 12 + import {useListBlockMutation, useListMuteMutation} from '#/state/queries/list' 13 13 import { 14 14 UsePreferencesQueryResponse, 15 15 useRemoveFeedMutation, 16 - } from 'state/queries/preferences' 17 - import {useSession} from 'state/session' 18 - import * as Toast from 'view/com/util/Toast' 19 - import {CenteredView} from 'view/com/util/Views' 16 + } from '#/state/queries/preferences' 17 + import {useSession} from '#/state/session' 18 + import * as Toast from '#/view/com/util/Toast' 19 + import {CenteredView} from '#/view/com/util/Views' 20 20 import {atoms as a, useBreakpoints, useTheme} from '#/alf' 21 21 import {Button, ButtonIcon, ButtonText} from '#/components/Button' 22 22 import {EyeSlash_Stroke2_Corner0_Rounded as EyeSlash} from '#/components/icons/EyeSlash'
+4 -4
src/screens/Profile/ErrorState.tsx
··· 1 1 import React from 'react' 2 2 import {View} from 'react-native' 3 - import {Trans, msg} from '@lingui/macro' 3 + import {msg, Trans} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' 5 5 import {useNavigation} from '@react-navigation/native' 6 6 7 - import {useTheme, atoms as a} from '#/alf' 8 - import {Text} from '#/components/Typography' 7 + import {NavigationProp} from '#/lib/routes/types' 8 + import {atoms as a, useTheme} from '#/alf' 9 9 import {Button, ButtonText} from '#/components/Button' 10 10 import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo' 11 - import {NavigationProp} from '#/lib/routes/types' 11 + import {Text} from '#/components/Typography' 12 12 13 13 export function ErrorState({error}: {error: string}) { 14 14 const t = useTheme()
+2 -2
src/screens/Profile/Header/Metrics.tsx
··· 4 4 import {msg, plural} from '@lingui/macro' 5 5 import {useLingui} from '@lingui/react' 6 6 7 + import {makeProfileLink} from '#/lib/routes/links' 7 8 import {Shadow} from '#/state/cache/types' 8 - import {makeProfileLink} from 'lib/routes/links' 9 - import {formatCount} from 'view/com/util/numeric/format' 9 + import {formatCount} from '#/view/com/util/numeric/format' 10 10 import {atoms as a, useTheme} from '#/alf' 11 11 import {InlineLinkText} from '#/components/Link' 12 12 import {Text} from '#/components/Typography'
+1 -1
src/screens/Signup/StepCaptcha/index.tsx
··· 4 4 import {useLingui} from '@lingui/react' 5 5 import {nanoid} from 'nanoid/non-secure' 6 6 7 + import {logEvent} from '#/lib/statsig/statsig' 7 8 import {createFullHandle} from '#/lib/strings/handles' 8 9 import {logger} from '#/logger' 9 - import {logEvent} from 'lib/statsig/statsig' 10 10 import {ScreenTransition} from '#/screens/Login/ScreenTransition' 11 11 import {useSignupContext} from '#/screens/Signup/state' 12 12 import {CaptchaWebView} from '#/screens/Signup/StepCaptcha/CaptchaWebView'
+2 -2
src/screens/StarterPack/Wizard/State.tsx
··· 7 7 import {GeneratorView} from '@atproto/api/dist/client/types/app/bsky/feed/defs' 8 8 import {msg} from '@lingui/macro' 9 9 10 - import {STARTER_PACK_MAX_SIZE} from 'lib/constants' 11 - import {useSession} from 'state/session' 10 + import {STARTER_PACK_MAX_SIZE} from '#/lib/constants' 11 + import {useSession} from '#/state/session' 12 12 import * as Toast from '#/view/com/util/Toast' 13 13 14 14 const steps = ['Details', 'Profiles', 'Feeds'] as const
+2 -2
src/screens/StarterPack/Wizard/StepDetails.tsx
··· 3 3 import {msg, Trans} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' 5 5 6 - import {useProfileQuery} from 'state/queries/profile' 7 - import {useSession} from 'state/session' 6 + import {useProfileQuery} from '#/state/queries/profile' 7 + import {useSession} from '#/state/session' 8 8 import {useWizardState} from '#/screens/StarterPack/Wizard/State' 9 9 import {atoms as a, useTheme} from '#/alf' 10 10 import * as TextField from '#/components/forms/TextField'
+1 -1
src/state/preferences/external-embeds-prefs.tsx
··· 1 1 import React from 'react' 2 2 3 + import {EmbedPlayerSource} from '#/lib/strings/embed-player' 3 4 import * as persisted from '#/state/persisted' 4 - import {EmbedPlayerSource} from 'lib/strings/embed-player' 5 5 6 6 type StateContext = persisted.Schema['externalEmbeds'] 7 7 type SetContext = (
+1 -1
src/state/queries/messages/conversation.ts
··· 1 1 import {ChatBskyConvoDefs} from '@atproto/api' 2 2 import {useMutation, useQuery, useQueryClient} from '@tanstack/react-query' 3 3 4 + import {STALE} from '#/state/queries' 4 5 import {DM_SERVICE_HEADERS} from '#/state/queries/messages/const' 5 6 import {useOnMarkAsRead} from '#/state/queries/messages/list-converations' 6 7 import {useAgent} from '#/state/session' 7 - import {STALE} from 'state/queries' 8 8 import {RQKEY as LIST_CONVOS_KEY} from './list-converations' 9 9 10 10 const RQKEY_ROOT = 'convo'
+1 -1
src/state/queries/notifications/unread.tsx
··· 8 8 import EventEmitter from 'eventemitter3' 9 9 10 10 import BroadcastChannel from '#/lib/broadcast' 11 + import {resetBadgeCount} from '#/lib/notifications/notifications' 11 12 import {logger} from '#/logger' 12 13 import {useAgent, useSession} from '#/state/session' 13 - import {resetBadgeCount} from 'lib/notifications/notifications' 14 14 import {useModerationOpts} from '../../preferences/moderation-opts' 15 15 import {truncateAndInvalidate} from '../util' 16 16 import {RQKEY as RQKEY_NOTIFS} from './feed'
+3 -3
src/state/queries/post-thread.ts
··· 11 11 import {QueryClient, useQuery, useQueryClient} from '@tanstack/react-query' 12 12 13 13 import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 14 + import {findAllPostsInQueryData as findAllPostsInQuoteQueryData} from '#/state/queries/post-quotes' 14 15 import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types' 15 - import {useAgent} from '#/state/session' 16 - import {findAllPostsInQueryData as findAllPostsInQuoteQueryData} from 'state/queries/post-quotes' 17 16 import { 18 17 findAllPostsInQueryData as findAllPostsInSearchQueryData, 19 18 findAllProfilesInQueryData as findAllProfilesInSearchQueryData, 20 - } from 'state/queries/search-posts' 19 + } from '#/state/queries/search-posts' 20 + import {useAgent} from '#/state/session' 21 21 import { 22 22 findAllPostsInQueryData as findAllPostsInNotifsQueryData, 23 23 findAllProfilesInQueryData as findAllProfilesInNotifsQueryData,
+3 -3
src/state/queries/resolve-short-link.ts
··· 1 1 import {useQuery} from '@tanstack/react-query' 2 2 3 - import {resolveShortLink} from 'lib/link-meta/resolve-short-link' 4 - import {parseStarterPackUri} from 'lib/strings/starter-pack' 5 - import {STALE} from 'state/queries/index' 3 + import {resolveShortLink} from '#/lib/link-meta/resolve-short-link' 4 + import {parseStarterPackUri} from '#/lib/strings/starter-pack' 5 + import {STALE} from '#/state/queries/index' 6 6 7 7 const ROOT_URI = 'https://go.bsky.app/' 8 8
+7 -7
src/state/queries/starter-packs.ts
··· 18 18 } from '@tanstack/react-query' 19 19 import chunk from 'lodash.chunk' 20 20 21 - import {until} from 'lib/async/until' 22 - import {createStarterPackList} from 'lib/generate-starterpack' 21 + import {until} from '#/lib/async/until' 22 + import {createStarterPackList} from '#/lib/generate-starterpack' 23 23 import { 24 24 createStarterPackUri, 25 25 httpStarterPackUriToAtUri, 26 26 parseStarterPackUri, 27 - } from 'lib/strings/starter-pack' 28 - import {invalidateActorStarterPacksQuery} from 'state/queries/actor-starter-packs' 29 - import {STALE} from 'state/queries/index' 30 - import {invalidateListMembersQuery} from 'state/queries/list-members' 31 - import {useAgent} from 'state/session' 27 + } from '#/lib/strings/starter-pack' 28 + import {invalidateActorStarterPacksQuery} from '#/state/queries/actor-starter-packs' 29 + import {STALE} from '#/state/queries/index' 30 + import {invalidateListMembersQuery} from '#/state/queries/list-members' 31 + import {useAgent} from '#/state/session' 32 32 33 33 const RQKEY_ROOT = 'starter-pack' 34 34 const RQKEY = ({
+5 -4
src/view/com/auth/util/HelpTip.tsx
··· 1 1 import React from 'react' 2 2 import {StyleSheet, View} from 'react-native' 3 - import {Text} from 'view/com/util/text/Text' 4 - import {InfoCircleIcon} from 'lib/icons' 5 - import {s, colors} from 'lib/styles' 6 - import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' 3 + 4 + import {useColorSchemeStyle} from '#/lib/hooks/useColorSchemeStyle' 5 + import {InfoCircleIcon} from '#/lib/icons' 6 + import {colors, s} from '#/lib/styles' 7 + import {Text} from '#/view/com/util/text/Text' 7 8 8 9 export function HelpTip({text}: {text: string}) { 9 10 const bg = useColorSchemeStyle(
+4 -3
src/view/com/auth/util/TextInput.tsx
··· 1 1 import React, {ComponentProps} from 'react' 2 2 import {StyleSheet, TextInput as RNTextInput, View} from 'react-native' 3 + import {IconProp} from '@fortawesome/fontawesome-svg-core' 3 4 import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' 4 - import {IconProp} from '@fortawesome/fontawesome-svg-core' 5 - import {usePalette} from 'lib/hooks/usePalette' 6 - import {useTheme} from 'lib/ThemeContext' 5 + 6 + import {usePalette} from '#/lib/hooks/usePalette' 7 + import {useTheme} from '#/lib/ThemeContext' 7 8 8 9 interface Props extends Omit<ComponentProps<typeof RNTextInput>, 'onChange'> { 9 10 testID?: string
+4 -4
src/view/com/composer/select-language/SelectLangBtn.tsx
··· 7 7 import {msg} from '@lingui/macro' 8 8 import {useLingui} from '@lingui/react' 9 9 10 + import {usePalette} from '#/lib/hooks/usePalette' 11 + import {isNative} from '#/platform/detection' 10 12 import {useModalControls} from '#/state/modals' 11 13 import { 12 14 hasPostLanguage, ··· 14 16 useLanguagePrefs, 15 17 useLanguagePrefsApi, 16 18 } from '#/state/preferences/languages' 17 - import {usePalette} from 'lib/hooks/usePalette' 18 - import {isNative} from 'platform/detection' 19 19 import { 20 20 DropdownButton, 21 21 DropdownItem, 22 22 DropdownItemButton, 23 - } from 'view/com/util/forms/DropdownButton' 24 - import {Text} from 'view/com/util/text/Text' 23 + } from '#/view/com/util/forms/DropdownButton' 24 + import {Text} from '#/view/com/util/text/Text' 25 25 import {codeToLanguageName} from '../../../../locale/helpers' 26 26 27 27 export function SelectLangBtn() {
+11 -10
src/view/com/composer/select-language/SuggestedLanguage.tsx
··· 1 1 import React, {useEffect, useState} from 'react' 2 2 import {StyleSheet, View} from 'react-native' 3 + import { 4 + FontAwesomeIcon, 5 + FontAwesomeIconStyle, 6 + } from '@fortawesome/react-native-fontawesome' 7 + import {msg, Trans} from '@lingui/macro' 8 + import {useLingui} from '@lingui/react' 3 9 import lande from 'lande' 4 - import {Trans, msg} from '@lingui/macro' 5 - import {useLingui} from '@lingui/react' 6 - import {Text} from '../../util/text/Text' 7 - import {Button} from '../../util/forms/Button' 10 + 11 + import {usePalette} from '#/lib/hooks/usePalette' 12 + import {s} from '#/lib/styles' 8 13 import {code3ToCode2Strict, codeToLanguageName} from '#/locale/helpers' 9 14 import { 10 15 toPostLanguages, 11 16 useLanguagePrefs, 12 17 useLanguagePrefsApi, 13 18 } from '#/state/preferences/languages' 14 - import {usePalette} from '#/lib/hooks/usePalette' 15 - import {s} from '#/lib/styles' 16 - import { 17 - FontAwesomeIcon, 18 - FontAwesomeIconStyle, 19 - } from '@fortawesome/react-native-fontawesome' 19 + import {Button} from '../../util/forms/Button' 20 + import {Text} from '../../util/text/Text' 20 21 21 22 // fallbacks for safari 22 23 const onIdle = globalThis.requestIdleCallback || (cb => setTimeout(cb, 1))
+1 -1
src/view/com/composer/text-input/hooks/useGrapheme.tsx
··· 1 - import Graphemer from 'graphemer' 2 1 import {useCallback, useMemo} from 'react' 2 + import Graphemer from 'graphemer' 3 3 4 4 export const useGrapheme = () => { 5 5 const splitter = useMemo(() => new Graphemer(), [])
+1 -1
src/view/com/composer/text-input/web/LinkDecorator.ts
··· 20 20 import {Plugin, PluginKey} from '@tiptap/pm/state' 21 21 import {Decoration, DecorationSet} from '@tiptap/pm/view' 22 22 23 - import {isValidDomain} from 'lib/strings/url-helpers' 23 + import {isValidDomain} from '#/lib/strings/url-helpers' 24 24 25 25 export const LinkDecorator = Mark.create({ 26 26 name: 'link-decorator',
+2 -2
src/view/com/composer/text-input/web/TagDecorator.ts
··· 14 14 * the facet-set. 15 15 */ 16 16 17 + import {TAG_REGEX, TRAILING_PUNCTUATION_REGEX} from '@atproto/api' 17 18 import {Mark} from '@tiptap/core' 18 - import {Plugin, PluginKey} from '@tiptap/pm/state' 19 19 import {Node as ProsemirrorNode} from '@tiptap/pm/model' 20 + import {Plugin, PluginKey} from '@tiptap/pm/state' 20 21 import {Decoration, DecorationSet} from '@tiptap/pm/view' 21 - import {TAG_REGEX, TRAILING_PUNCTUATION_REGEX} from '@atproto/api' 22 22 23 23 function getDecorations(doc: ProsemirrorNode) { 24 24 const decorations: Decoration[] = []
+1 -1
src/view/com/composer/videos/VideoPreview.tsx
··· 6 6 import {CompressedVideo} from '#/lib/media/video/types' 7 7 import {clamp} from '#/lib/numbers' 8 8 import {useAutoplayDisabled} from '#/state/preferences' 9 - import {ExternalEmbedRemoveBtn} from 'view/com/composer/ExternalEmbedRemoveBtn' 9 + import {ExternalEmbedRemoveBtn} from '#/view/com/composer/ExternalEmbedRemoveBtn' 10 10 import {atoms as a, useTheme} from '#/alf' 11 11 import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' 12 12
+1 -1
src/view/com/composer/videos/VideoPreview.web.tsx
··· 7 7 import {CompressedVideo} from '#/lib/media/video/types' 8 8 import {clamp} from '#/lib/numbers' 9 9 import {useAutoplayDisabled} from '#/state/preferences' 10 + import {ExternalEmbedRemoveBtn} from '#/view/com/composer/ExternalEmbedRemoveBtn' 10 11 import * as Toast from '#/view/com/util/Toast' 11 - import {ExternalEmbedRemoveBtn} from 'view/com/composer/ExternalEmbedRemoveBtn' 12 12 import {atoms as a} from '#/alf' 13 13 import {PlayButtonIcon} from '#/components/video/PlayButtonIcon' 14 14
+2 -2
src/view/com/home/HomeHeader.tsx
··· 2 2 import {useNavigation} from '@react-navigation/native' 3 3 4 4 import {usePalette} from '#/lib/hooks/usePalette' 5 + import {NavigationProp} from '#/lib/routes/types' 5 6 import {FeedSourceInfo} from '#/state/queries/feed' 6 7 import {useSession} from '#/state/session' 7 - import {NavigationProp} from 'lib/routes/types' 8 - import {RenderTabBarFnProps} from 'view/com/pager/Pager' 8 + import {RenderTabBarFnProps} from '#/view/com/pager/Pager' 9 9 import {TabBar} from '../pager/TabBar' 10 10 import {HomeHeaderLayout} from './HomeHeaderLayout' 11 11
+1 -1
src/view/com/lightbox/ImageViewing/components/ImageDefaultHeader.tsx
··· 8 8 import React from 'react' 9 9 import { 10 10 SafeAreaView, 11 - TouchableOpacity, 12 11 StyleSheet, 12 + TouchableOpacity, 13 13 ViewStyle, 14 14 } from 'react-native' 15 15 import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
+1
src/view/com/lightbox/ImageViewing/components/ImageItem/ImageItem.tsx
··· 2 2 3 3 import React from 'react' 4 4 import {View} from 'react-native' 5 + 5 6 import {ImageSource} from '../../@types' 6 7 7 8 type Props = {
+6 -7
src/view/com/lightbox/ImageViewing/index.tsx
··· 9 9 // https://github.com/jobtoday/react-native-image-viewing 10 10 11 11 import React, {ComponentType, useCallback, useMemo, useState} from 'react' 12 - import {StyleSheet, View, Platform} from 'react-native' 12 + import {Platform, StyleSheet, View} from 'react-native' 13 + import PagerView from 'react-native-pager-view' 14 + import Animated, {useAnimatedStyle, withSpring} from 'react-native-reanimated' 15 + import {Edge, SafeAreaView} from 'react-native-safe-area-context' 13 16 17 + import {ImageSource} from './@types' 18 + import ImageDefaultHeader from './components/ImageDefaultHeader' 14 19 import ImageItem from './components/ImageItem/ImageItem' 15 - import ImageDefaultHeader from './components/ImageDefaultHeader' 16 - 17 - import {ImageSource} from './@types' 18 - import Animated, {useAnimatedStyle, withSpring} from 'react-native-reanimated' 19 - import {Edge, SafeAreaView} from 'react-native-safe-area-context' 20 - import PagerView from 'react-native-pager-view' 21 20 22 21 type Props = { 23 22 images: ImageSource[]
+5 -5
src/view/com/modals/ChangeEmail.tsx
··· 3 3 import {msg, Trans} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' 5 5 6 + import {usePalette} from '#/lib/hooks/usePalette' 7 + import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 8 + import {cleanError} from '#/lib/strings/errors' 9 + import {colors, s} from '#/lib/styles' 10 + import {isWeb} from '#/platform/detection' 6 11 import {useModalControls} from '#/state/modals' 7 12 import {useAgent, useSession} from '#/state/session' 8 - import {usePalette} from 'lib/hooks/usePalette' 9 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 10 - import {cleanError} from 'lib/strings/errors' 11 - import {colors, s} from 'lib/styles' 12 - import {isWeb} from 'platform/detection' 13 13 import {ErrorMessage} from '../util/error/ErrorMessage' 14 14 import {Button} from '../util/forms/Button' 15 15 import {Text} from '../util/text/Text'
+6 -6
src/view/com/modals/ChangePassword.tsx
··· 11 11 import {useLingui} from '@lingui/react' 12 12 import * as EmailValidator from 'email-validator' 13 13 14 + import {usePalette} from '#/lib/hooks/usePalette' 15 + import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 16 + import {cleanError, isNetworkError} from '#/lib/strings/errors' 17 + import {checkAndFormatResetCode} from '#/lib/strings/password' 18 + import {colors, s} from '#/lib/styles' 14 19 import {logger} from '#/logger' 20 + import {isAndroid, isWeb} from '#/platform/detection' 15 21 import {useModalControls} from '#/state/modals' 16 22 import {useAgent, useSession} from '#/state/session' 17 - import {usePalette} from 'lib/hooks/usePalette' 18 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 19 - import {cleanError, isNetworkError} from 'lib/strings/errors' 20 - import {checkAndFormatResetCode} from 'lib/strings/password' 21 - import {colors, s} from 'lib/styles' 22 - import {isAndroid, isWeb} from 'platform/detection' 23 23 import {ErrorMessage} from '../util/error/ErrorMessage' 24 24 import {Button} from '../util/forms/Button' 25 25 import {Text} from '../util/text/Text'
+4 -4
src/view/com/modals/InviteCodes.tsx
··· 14 14 import {msg, Trans} from '@lingui/macro' 15 15 import {useLingui} from '@lingui/react' 16 16 17 + import {usePalette} from '#/lib/hooks/usePalette' 18 + import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 17 19 import {makeProfileLink} from '#/lib/routes/links' 20 + import {cleanError} from '#/lib/strings/errors' 21 + import {isWeb} from '#/platform/detection' 18 22 import {useInvitesAPI, useInvitesState} from '#/state/invites' 19 23 import {useModalControls} from '#/state/modals' 20 24 import { 21 25 InviteCodesQueryResponse, 22 26 useInviteCodesQuery, 23 27 } from '#/state/queries/invites' 24 - import {usePalette} from 'lib/hooks/usePalette' 25 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 26 - import {cleanError} from 'lib/strings/errors' 27 - import {isWeb} from 'platform/detection' 28 28 import {ErrorMessage} from '../util/error/ErrorMessage' 29 29 import {Button} from '../util/forms/Button' 30 30 import {Link} from '../util/Link'
+8 -8
src/view/com/modals/ListAddRemoveUsers.tsx
··· 12 12 import {useLingui} from '@lingui/react' 13 13 14 14 import {HITSLOP_20} from '#/lib/constants' 15 + import {useIsKeyboardVisible} from '#/lib/hooks/useIsKeyboardVisible' 16 + import {usePalette} from '#/lib/hooks/usePalette' 17 + import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 18 + import {sanitizeDisplayName} from '#/lib/strings/display-names' 19 + import {cleanError} from '#/lib/strings/errors' 20 + import {sanitizeHandle} from '#/lib/strings/handles' 21 + import {colors, s} from '#/lib/styles' 22 + import {isWeb} from '#/platform/detection' 15 23 import {useModalControls} from '#/state/modals' 16 24 import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete' 17 25 import { ··· 21 29 useListMembershipAddMutation, 22 30 useListMembershipRemoveMutation, 23 31 } from '#/state/queries/list-memberships' 24 - import {useIsKeyboardVisible} from 'lib/hooks/useIsKeyboardVisible' 25 - import {usePalette} from 'lib/hooks/usePalette' 26 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 27 - import {sanitizeDisplayName} from 'lib/strings/display-names' 28 - import {cleanError} from 'lib/strings/errors' 29 - import {sanitizeHandle} from 'lib/strings/handles' 30 - import {colors, s} from 'lib/styles' 31 - import {isWeb} from 'platform/detection' 32 32 import {Button} from '../util/forms/Button' 33 33 import {Text} from '../util/text/Text' 34 34 import * as Toast from '../util/Toast'
+5 -5
src/view/com/modals/VerifyEmail.tsx
··· 11 11 import {msg, Trans} from '@lingui/macro' 12 12 import {useLingui} from '@lingui/react' 13 13 14 + import {usePalette} from '#/lib/hooks/usePalette' 15 + import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 16 + import {cleanError} from '#/lib/strings/errors' 17 + import {colors, s} from '#/lib/styles' 14 18 import {logger} from '#/logger' 19 + import {isWeb} from '#/platform/detection' 15 20 import {useModalControls} from '#/state/modals' 16 21 import {useAgent, useSession} from '#/state/session' 17 - import {usePalette} from 'lib/hooks/usePalette' 18 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 19 - import {cleanError} from 'lib/strings/errors' 20 - import {colors, s} from 'lib/styles' 21 - import {isWeb} from 'platform/detection' 22 22 import {ErrorMessage} from '../util/error/ErrorMessage' 23 23 import {Button} from '../util/forms/Button' 24 24 import {Text} from '../util/text/Text'
+3 -3
src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx
··· 4 4 import {msg, Trans} from '@lingui/macro' 5 5 import {useLingui} from '@lingui/react' 6 6 7 - import {usePalette} from 'lib/hooks/usePalette' 8 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 9 - import {colors, gradients, s} from 'lib/styles' 7 + import {usePalette} from '#/lib/hooks/usePalette' 8 + import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 9 + import {colors, gradients, s} from '#/lib/styles' 10 10 11 11 export const ConfirmLanguagesButton = ({ 12 12 onPress,
+4 -3
src/view/com/modals/lang-settings/LanguageToggle.tsx
··· 1 1 import React from 'react' 2 2 import {StyleSheet} from 'react-native' 3 - import {usePalette} from 'lib/hooks/usePalette' 4 - import {ToggleButton} from 'view/com/util/forms/ToggleButton' 5 - import {useLanguagePrefs, toPostLanguages} from '#/state/preferences/languages' 3 + 4 + import {usePalette} from '#/lib/hooks/usePalette' 5 + import {toPostLanguages, useLanguagePrefs} from '#/state/preferences/languages' 6 + import {ToggleButton} from '#/view/com/util/forms/ToggleButton' 6 7 7 8 export function LanguageToggle({ 8 9 code2,
+2 -1
src/view/com/pager/DraggableScrollView.tsx
··· 1 - import {useDraggableScroll} from 'lib/hooks/useDraggableScrollView' 2 1 import React, {ComponentProps} from 'react' 3 2 import {ScrollView} from 'react-native' 3 + 4 + import {useDraggableScroll} from '#/lib/hooks/useDraggableScrollView' 4 5 5 6 export const DraggableScrollView = React.forwardRef< 6 7 ScrollView,
+1 -1
src/view/com/pager/Pager.web.tsx
··· 3 3 import {flushSync} from 'react-dom' 4 4 5 5 import {LogEvents} from '#/lib/statsig/events' 6 - import {s} from 'lib/styles' 6 + import {s} from '#/lib/styles' 7 7 8 8 export interface RenderTabBarFnProps { 9 9 selectedPage: number
+2 -2
src/view/com/post-thread/PostLikedBy.tsx
··· 3 3 import {msg} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' 5 5 6 + import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' 6 7 import {cleanError} from '#/lib/strings/errors' 7 8 import {logger} from '#/logger' 9 + import {isWeb} from '#/platform/detection' 8 10 import {useLikedByQuery} from '#/state/queries/post-liked-by' 9 11 import {useResolveUriQuery} from '#/state/queries/resolve-uri' 10 - import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' 11 - import {isWeb} from 'platform/detection' 12 12 import {ProfileCardWithFollowBtn} from '#/view/com/profile/ProfileCard' 13 13 import {List} from '#/view/com/util/List' 14 14 import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
+3 -3
src/view/com/post-thread/PostQuotes.tsx
··· 7 7 import {msg} from '@lingui/macro' 8 8 import {useLingui} from '@lingui/react' 9 9 10 + import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' 10 11 import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 11 12 import {cleanError} from '#/lib/strings/errors' 12 13 import {logger} from '#/logger' 14 + import {isWeb} from '#/platform/detection' 13 15 import {useModerationOpts} from '#/state/preferences/moderation-opts' 14 16 import {usePostQuotesQuery} from '#/state/queries/post-quotes' 15 17 import {useResolveUriQuery} from '#/state/queries/resolve-uri' 16 - import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' 17 - import {isWeb} from 'platform/detection' 18 - import {Post} from 'view/com/post/Post' 18 + import {Post} from '#/view/com/post/Post' 19 19 import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' 20 20 import {List} from '../util/List' 21 21
+1 -1
src/view/com/post-thread/PostRepostedBy.tsx
··· 3 3 import {msg} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' 5 5 6 + import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' 6 7 import {cleanError} from '#/lib/strings/errors' 7 8 import {logger} from '#/logger' 8 9 import {usePostRepostedByQuery} from '#/state/queries/post-reposted-by' 9 10 import {useResolveUriQuery} from '#/state/queries/resolve-uri' 10 - import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' 11 11 import {ProfileCardWithFollowBtn} from '#/view/com/profile/ProfileCard' 12 12 import {List} from '#/view/com/util/List' 13 13 import {ListFooter, ListMaybePlaceholder} from '#/components/Lists'
+7 -7
src/view/com/post-thread/PostThread.tsx
··· 7 7 import {msg, Trans} from '@lingui/macro' 8 8 import {useLingui} from '@lingui/react' 9 9 10 + import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' 11 + import {useMinimalShellFabTransform} from '#/lib/hooks/useMinimalShellTransform' 12 + import {useSetTitle} from '#/lib/hooks/useSetTitle' 13 + import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 10 14 import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 11 15 import {clamp} from '#/lib/numbers' 12 16 import {ScrollProvider} from '#/lib/ScrollContext' 17 + import {sanitizeDisplayName} from '#/lib/strings/display-names' 18 + import {cleanError} from '#/lib/strings/errors' 13 19 import {isAndroid, isNative, isWeb} from '#/platform/detection' 14 20 import {useModerationOpts} from '#/state/preferences/moderation-opts' 15 21 import { ··· 26 32 import {useSession} from '#/state/session' 27 33 import {useComposerControls} from '#/state/shell' 28 34 import {useMergedThreadgateHiddenReplies} from '#/state/threadgate-hidden-replies' 29 - import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' 30 - import {useMinimalShellFabTransform} from 'lib/hooks/useMinimalShellTransform' 31 - import {useSetTitle} from 'lib/hooks/useSetTitle' 32 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 33 - import {sanitizeDisplayName} from 'lib/strings/display-names' 34 - import {cleanError} from 'lib/strings/errors' 35 - import {CenteredView} from 'view/com/util/Views' 35 + import {CenteredView} from '#/view/com/util/Views' 36 36 import {atoms as a, useTheme} from '#/alf' 37 37 import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' 38 38 import {Text} from '#/components/Typography'
+9 -8
src/view/com/posts/CustomFeedEmptyState.tsx
··· 1 1 import React from 'react' 2 2 import {StyleSheet, View} from 'react-native' 3 - import {useNavigation} from '@react-navigation/native' 4 3 import { 5 4 FontAwesomeIcon, 6 5 FontAwesomeIconStyle, 7 6 } from '@fortawesome/react-native-fontawesome' 8 - import {Text} from '../util/text/Text' 7 + import {Trans} from '@lingui/macro' 8 + import {useNavigation} from '@react-navigation/native' 9 + 10 + import {usePalette} from '#/lib/hooks/usePalette' 11 + import {MagnifyingGlassIcon} from '#/lib/icons' 12 + import {NavigationProp} from '#/lib/routes/types' 13 + import {s} from '#/lib/styles' 14 + import {isWeb} from '#/platform/detection' 9 15 import {Button} from '../util/forms/Button' 10 - import {MagnifyingGlassIcon} from 'lib/icons' 11 - import {NavigationProp} from 'lib/routes/types' 12 - import {usePalette} from 'lib/hooks/usePalette' 13 - import {s} from 'lib/styles' 14 - import {isWeb} from 'platform/detection' 15 - import {Trans} from '@lingui/macro' 16 + import {Text} from '../util/text/Text' 16 17 17 18 export function CustomFeedEmptyState() { 18 19 const pal = usePalette('default')
+3 -2
src/view/com/posts/DiscoverFallbackHeader.tsx
··· 1 1 import React from 'react' 2 2 import {View} from 'react-native' 3 3 import {Trans} from '@lingui/macro' 4 - import {Text} from '../util/text/Text' 4 + 5 5 import {usePalette} from '#/lib/hooks/usePalette' 6 + import {InfoCircleIcon} from '#/lib/icons' 6 7 import {TextLink} from '../util/Link' 7 - import {InfoCircleIcon} from '#/lib/icons' 8 + import {Text} from '../util/text/Text' 8 9 9 10 export function DiscoverFallbackHeader() { 10 11 const pal = usePalette('default')
+2 -2
src/view/com/posts/FeedErrorMessage.tsx
··· 5 5 import {useLingui} from '@lingui/react' 6 6 import {useNavigation} from '@react-navigation/native' 7 7 8 + import {usePalette} from '#/lib/hooks/usePalette' 9 + import {NavigationProp} from '#/lib/routes/types' 8 10 import {cleanError} from '#/lib/strings/errors' 9 11 import {logger} from '#/logger' 10 12 import {FeedDescriptor} from '#/state/queries/post-feed' 11 13 import {useRemoveFeedMutation} from '#/state/queries/preferences' 12 - import {usePalette} from 'lib/hooks/usePalette' 13 - import {NavigationProp} from 'lib/routes/types' 14 14 import * as Prompt from '#/components/Prompt' 15 15 import {EmptyState} from '../util/EmptyState' 16 16 import {ErrorMessage} from '../util/error/ErrorMessage'
+5 -5
src/view/com/posts/FollowingEmptyState.tsx
··· 7 7 import {Trans} from '@lingui/macro' 8 8 import {useNavigation} from '@react-navigation/native' 9 9 10 - import {usePalette} from 'lib/hooks/usePalette' 11 - import {MagnifyingGlassIcon} from 'lib/icons' 12 - import {NavigationProp} from 'lib/routes/types' 13 - import {s} from 'lib/styles' 14 - import {isWeb} from 'platform/detection' 10 + import {usePalette} from '#/lib/hooks/usePalette' 11 + import {MagnifyingGlassIcon} from '#/lib/icons' 12 + import {NavigationProp} from '#/lib/routes/types' 13 + import {s} from '#/lib/styles' 14 + import {isWeb} from '#/platform/detection' 15 15 import {Button} from '../util/forms/Button' 16 16 import {Text} from '../util/text/Text' 17 17
+4 -4
src/view/com/posts/FollowingEndOfFeed.tsx
··· 7 7 import {Trans} from '@lingui/macro' 8 8 import {useNavigation} from '@react-navigation/native' 9 9 10 - import {usePalette} from 'lib/hooks/usePalette' 11 - import {NavigationProp} from 'lib/routes/types' 12 - import {s} from 'lib/styles' 13 - import {isWeb} from 'platform/detection' 10 + import {usePalette} from '#/lib/hooks/usePalette' 11 + import {NavigationProp} from '#/lib/routes/types' 12 + import {s} from '#/lib/styles' 13 + import {isWeb} from '#/platform/detection' 14 14 import {Button} from '../util/forms/Button' 15 15 import {Text} from '../util/text/Text' 16 16
+3 -3
src/view/com/profile/ProfileFollowers.tsx
··· 3 3 import {msg} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' 5 5 6 + import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' 6 7 import {cleanError} from '#/lib/strings/errors' 7 8 import {logger} from '#/logger' 9 + import {isWeb} from '#/platform/detection' 8 10 import {useProfileFollowersQuery} from '#/state/queries/profile-followers' 9 11 import {useResolveDidQuery} from '#/state/queries/resolve-uri' 10 - import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' 11 - import {isWeb} from 'platform/detection' 12 - import {useSession} from 'state/session' 12 + import {useSession} from '#/state/session' 13 13 import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' 14 14 import {List} from '../util/List' 15 15 import {ProfileCardWithFollowBtn} from './ProfileCard'
+3 -3
src/view/com/profile/ProfileFollows.tsx
··· 3 3 import {msg} from '@lingui/macro' 4 4 import {useLingui} from '@lingui/react' 5 5 6 + import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' 6 7 import {cleanError} from '#/lib/strings/errors' 7 8 import {logger} from '#/logger' 9 + import {isWeb} from '#/platform/detection' 8 10 import {useProfileFollowsQuery} from '#/state/queries/profile-follows' 9 11 import {useResolveDidQuery} from '#/state/queries/resolve-uri' 10 - import {useInitialNumToRender} from 'lib/hooks/useInitialNumToRender' 11 - import {isWeb} from 'platform/detection' 12 - import {useSession} from 'state/session' 12 + import {useSession} from '#/state/session' 13 13 import {ListFooter, ListMaybePlaceholder} from '#/components/Lists' 14 14 import {List} from '../util/List' 15 15 import {ProfileCardWithFollowBtn} from './ProfileCard'
+2 -2
src/view/com/util/AccountDropdownBtn.tsx
··· 7 7 import {msg} from '@lingui/macro' 8 8 import {useLingui} from '@lingui/react' 9 9 10 + import {usePalette} from '#/lib/hooks/usePalette' 11 + import {s} from '#/lib/styles' 10 12 import {SessionAccount, useSessionApi} from '#/state/session' 11 - import {usePalette} from 'lib/hooks/usePalette' 12 - import {s} from 'lib/styles' 13 13 import {useDialogControl} from '#/components/Dialog' 14 14 import * as Prompt from '#/components/Prompt' 15 15 import * as Toast from '../../com/util/Toast'
+3 -3
src/view/com/util/EmptyState.tsx
··· 6 6 FontAwesomeIconStyle, 7 7 } from '@fortawesome/react-native-fontawesome' 8 8 9 + import {usePalette} from '#/lib/hooks/usePalette' 9 10 import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 10 - import {usePalette} from 'lib/hooks/usePalette' 11 - import {UserGroupIcon} from 'lib/icons' 12 - import {isWeb} from 'platform/detection' 11 + import {UserGroupIcon} from '#/lib/icons' 12 + import {isWeb} from '#/platform/detection' 13 13 import {Growth_Stroke2_Corner0_Rounded as Growth} from '#/components/icons/Growth' 14 14 import {Text} from './text/Text' 15 15
+5 -4
src/view/com/util/EmptyStateWithButton.tsx
··· 1 1 import React from 'react' 2 2 import {StyleSheet, View} from 'react-native' 3 + import {IconProp} from '@fortawesome/fontawesome-svg-core' 3 4 import { 4 5 FontAwesomeIcon, 5 6 FontAwesomeIconStyle, 6 7 } from '@fortawesome/react-native-fontawesome' 7 - import {IconProp} from '@fortawesome/fontawesome-svg-core' 8 + 9 + import {usePalette} from '#/lib/hooks/usePalette' 10 + import {s} from '#/lib/styles' 11 + import {Button} from './forms/Button' 8 12 import {Text} from './text/Text' 9 - import {Button} from './forms/Button' 10 - import {usePalette} from 'lib/hooks/usePalette' 11 - import {s} from 'lib/styles' 12 13 13 14 interface Props { 14 15 testID?: string
+4 -3
src/view/com/util/FeedInfoText.tsx
··· 1 1 import React from 'react' 2 2 import {StyleProp, StyleSheet, TextStyle} from 'react-native' 3 + 4 + import {sanitizeDisplayName} from '#/lib/strings/display-names' 5 + import {TypographyVariant} from '#/lib/ThemeContext' 6 + import {useFeedSourceInfoQuery} from '#/state/queries/feed' 3 7 import {TextLinkOnWebOnly} from './Link' 4 8 import {LoadingPlaceholder} from './LoadingPlaceholder' 5 - import {TypographyVariant} from 'lib/ThemeContext' 6 - import {sanitizeDisplayName} from 'lib/strings/display-names' 7 - import {useFeedSourceInfoQuery} from '#/state/queries/feed' 8 9 9 10 export function FeedNameText({ 10 11 type = 'md',
+2 -1
src/view/com/util/LoadMoreRetryBtn.tsx
··· 4 4 FontAwesomeIcon, 5 5 FontAwesomeIconStyle, 6 6 } from '@fortawesome/react-native-fontawesome' 7 + 8 + import {usePalette} from '#/lib/hooks/usePalette' 7 9 import {Button} from './forms/Button' 8 10 import {Text} from './text/Text' 9 - import {usePalette} from 'lib/hooks/usePalette' 10 11 11 12 export function LoadMoreRetryBtn({ 12 13 label,
+2 -1
src/view/com/util/LoadingScreen.tsx
··· 1 1 import React from 'react' 2 2 import {ActivityIndicator, View} from 'react-native' 3 - import {s} from 'lib/styles' 3 + 4 + import {s} from '#/lib/styles' 4 5 import {CenteredView} from './Views' 5 6 6 7 export function LoadingScreen() {
+1 -1
src/view/com/util/MainScrollProvider.tsx
··· 9 9 import EventEmitter from 'eventemitter3' 10 10 11 11 import {ScrollProvider} from '#/lib/ScrollContext' 12 + import {isNative, isWeb} from '#/platform/detection' 12 13 import {useMinimalShellMode} from '#/state/shell' 13 14 import {useShellLayout} from '#/state/shell/shell-layout' 14 - import {isNative, isWeb} from 'platform/detection' 15 15 16 16 const WEB_HIDE_SHELL_THRESHOLD = 200 17 17
+5 -4
src/view/com/util/Selector.tsx
··· 1 - import React, {createRef, useState, useMemo, useRef} from 'react' 1 + import React, {createRef, useMemo, useRef, useState} from 'react' 2 2 import {Animated, Pressable, StyleSheet, View} from 'react-native' 3 + import {msg} from '@lingui/macro' 4 + import {useLingui} from '@lingui/react' 5 + 6 + import {usePalette} from '#/lib/hooks/usePalette' 3 7 import {Text} from './text/Text' 4 - import {usePalette} from 'lib/hooks/usePalette' 5 - import {useLingui} from '@lingui/react' 6 - import {msg} from '@lingui/macro' 7 8 8 9 interface Layout { 9 10 x: number
+9 -8
src/view/com/util/ViewSelector.tsx
··· 1 1 import React, {useEffect, useState} from 'react' 2 2 import { 3 - NativeSyntheticEvent, 4 3 NativeScrollEvent, 4 + NativeSyntheticEvent, 5 5 Pressable, 6 6 RefreshControl, 7 + ScrollView, 7 8 StyleSheet, 8 9 View, 9 - ScrollView, 10 10 } from 'react-native' 11 - import {FlatList_INTERNAL} from './Views' 12 - import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' 11 + 12 + import {useColorSchemeStyle} from '#/lib/hooks/useColorSchemeStyle' 13 + import {usePalette} from '#/lib/hooks/usePalette' 14 + import {clamp} from '#/lib/numbers' 15 + import {colors, s} from '#/lib/styles' 16 + import {isAndroid} from '#/platform/detection' 13 17 import {Text} from './text/Text' 14 - import {usePalette} from 'lib/hooks/usePalette' 15 - import {clamp} from 'lib/numbers' 16 - import {s, colors} from 'lib/styles' 17 - import {isAndroid} from 'platform/detection' 18 + import {FlatList_INTERNAL} from './Views' 18 19 19 20 const HEADER_ITEM = {_reactKey: '__header__'} 20 21 const SELECTOR_ITEM = {_reactKey: '__selector__'}
+3 -3
src/view/com/util/Views.web.tsx
··· 23 23 } from 'react-native' 24 24 import Animated from 'react-native-reanimated' 25 25 26 - import {usePalette} from 'lib/hooks/usePalette' 27 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 28 - import {addStyle} from 'lib/styles' 26 + import {usePalette} from '#/lib/hooks/usePalette' 27 + import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 28 + import {addStyle} from '#/lib/styles' 29 29 30 30 interface AddedProps { 31 31 desktopFixedHeight?: boolean | number
+2 -1
src/view/com/util/anim/TriggerableAnimated.tsx
··· 1 1 import React from 'react' 2 2 import {Animated, StyleProp, View, ViewStyle} from 'react-native' 3 - import {useAnimatedValue} from 'lib/hooks/useAnimatedValue' 3 + 4 + import {useAnimatedValue} from '#/lib/hooks/useAnimatedValue' 4 5 5 6 type CreateAnimFn = (interp: Animated.Value) => Animated.CompositeAnimation 6 7 type FinishCb = () => void
+6 -5
src/view/com/util/error/ErrorMessage.tsx
··· 1 1 import React from 'react' 2 2 import { 3 + StyleProp, 3 4 StyleSheet, 4 5 TouchableOpacity, 5 - StyleProp, 6 6 View, 7 7 ViewStyle, 8 8 } from 'react-native' ··· 10 10 FontAwesomeIcon, 11 11 FontAwesomeIconStyle, 12 12 } from '@fortawesome/react-native-fontawesome' 13 + import {msg} from '@lingui/macro' 14 + import {useLingui} from '@lingui/react' 15 + 16 + import {usePalette} from '#/lib/hooks/usePalette' 17 + import {useTheme} from '#/lib/ThemeContext' 13 18 import {Text} from '../text/Text' 14 - import {useTheme} from 'lib/ThemeContext' 15 - import {usePalette} from 'lib/hooks/usePalette' 16 - import {useLingui} from '@lingui/react' 17 - import {msg} from '@lingui/macro' 18 19 19 20 export function ErrorMessage({ 20 21 message,
+8 -7
src/view/com/util/error/ErrorScreen.tsx
··· 4 4 FontAwesomeIcon, 5 5 FontAwesomeIconStyle, 6 6 } from '@fortawesome/react-native-fontawesome' 7 + import {msg, Trans} from '@lingui/macro' 8 + import {useLingui} from '@lingui/react' 9 + 10 + import {usePalette} from '#/lib/hooks/usePalette' 11 + import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 12 + import {useTheme} from '#/lib/ThemeContext' 13 + import {ViewHeader} from '#/view/com/util/ViewHeader' 14 + import {Button} from '../forms/Button' 7 15 import {Text} from '../text/Text' 8 - import {useTheme} from 'lib/ThemeContext' 9 - import {usePalette} from 'lib/hooks/usePalette' 10 - import {Button} from '../forms/Button' 11 16 import {CenteredView} from '../Views' 12 - import {Trans, msg} from '@lingui/macro' 13 - import {useLingui} from '@lingui/react' 14 - import {ViewHeader} from 'view/com/util/ViewHeader' 15 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 16 17 17 18 export function ErrorScreen({ 18 19 title,
+4 -4
src/view/com/util/forms/DateInput.tsx
··· 7 7 } from '@fortawesome/react-native-fontawesome' 8 8 import {useLingui} from '@lingui/react' 9 9 10 - import {usePalette} from 'lib/hooks/usePalette' 11 - import {TypographyVariant} from 'lib/ThemeContext' 12 - import {useTheme} from 'lib/ThemeContext' 13 - import {isAndroid, isIOS} from 'platform/detection' 10 + import {usePalette} from '#/lib/hooks/usePalette' 11 + import {TypographyVariant} from '#/lib/ThemeContext' 12 + import {useTheme} from '#/lib/ThemeContext' 13 + import {isAndroid, isIOS} from '#/platform/detection' 14 14 import {Text} from '../text/Text' 15 15 import {Button, ButtonType} from './Button' 16 16
+3 -2
src/view/com/util/forms/DateInput.web.tsx
··· 1 - import React, {useState, useCallback} from 'react' 1 + import React, {useCallback, useState} from 'react' 2 2 import {StyleProp, StyleSheet, TextStyle, View, ViewStyle} from 'react-native' 3 3 // @ts-ignore types not available -prf 4 4 import {unstable_createElement} from 'react-native-web' 5 - import {usePalette} from 'lib/hooks/usePalette' 5 + 6 + import {usePalette} from '#/lib/hooks/usePalette' 6 7 7 8 interface Props { 8 9 testID?: string
+1 -1
src/view/com/util/forms/RadioGroup.tsx
··· 1 1 import React, {useState} from 'react' 2 2 import {View} from 'react-native' 3 3 4 - import {s} from 'lib/styles' 4 + import {s} from '#/lib/styles' 5 5 import {ButtonType} from './Button' 6 6 import {RadioButton} from './RadioButton' 7 7
+4 -3
src/view/com/util/forms/SelectableBtn.tsx
··· 1 1 import React from 'react' 2 - import {Pressable, ViewStyle, StyleProp, StyleSheet} from 'react-native' 2 + import {Pressable, StyleProp, StyleSheet, ViewStyle} from 'react-native' 3 + 4 + import {usePalette} from '#/lib/hooks/usePalette' 5 + import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 3 6 import {Text} from '../text/Text' 4 - import {usePalette} from 'lib/hooks/usePalette' 5 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 6 7 7 8 interface SelectableBtnProps { 8 9 testID?: string
+3 -2
src/view/com/util/layouts/withBreakpoints.tsx
··· 1 1 import React from 'react' 2 - import {isNative} from 'platform/detection' 3 - import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' 2 + 3 + import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 4 + import {isNative} from '#/platform/detection' 4 5 5 6 export const withBreakpoints = <P extends object>( 6 7 Mobile: React.ComponentType<P>,
+10 -9
src/view/com/util/text/RichText.tsx
··· 1 1 import React from 'react' 2 - import {TextStyle, StyleProp} from 'react-native' 3 - import {RichText as RichTextObj, AppBskyRichtextFacet} from '@atproto/api' 2 + import {StyleProp, TextStyle} from 'react-native' 3 + import {AppBskyRichtextFacet, RichText as RichTextObj} from '@atproto/api' 4 + 5 + import {usePalette} from '#/lib/hooks/usePalette' 6 + import {makeTagLink} from '#/lib/routes/links' 7 + import {toShortUrl} from '#/lib/strings/url-helpers' 8 + import {lh} from '#/lib/styles' 9 + import {TypographyVariant, useTheme} from '#/lib/ThemeContext' 10 + import {isNative} from '#/platform/detection' 11 + import {TagMenu, useTagMenuControl} from '#/components/TagMenu' 4 12 import {TextLink} from '../Link' 5 13 import {Text} from './Text' 6 - import {lh} from 'lib/styles' 7 - import {toShortUrl} from 'lib/strings/url-helpers' 8 - import {useTheme, TypographyVariant} from 'lib/ThemeContext' 9 - import {usePalette} from 'lib/hooks/usePalette' 10 - import {makeTagLink} from 'lib/routes/links' 11 - import {TagMenu, useTagMenuControl} from '#/components/TagMenu' 12 - import {isNative} from '#/platform/detection' 13 14 14 15 const WORD_WRAP = {wordWrap: 1} 15 16
+1 -1
src/view/icons/Logotype.tsx
··· 1 1 import React from 'react' 2 - import Svg, {Path, SvgProps, PathProps} from 'react-native-svg' 2 + import Svg, {Path, PathProps, SvgProps} from 'react-native-svg' 3 3 4 4 import {usePalette} from '#/lib/hooks/usePalette' 5 5
+1 -1
src/view/screens/Settings/Email2FAToggle.tsx
··· 4 4 5 5 import {useModalControls} from '#/state/modals' 6 6 import {useAgent, useSession} from '#/state/session' 7 - import {ToggleButton} from 'view/com/util/forms/ToggleButton' 7 + import {ToggleButton} from '#/view/com/util/forms/ToggleButton' 8 8 import {useDialogControl} from '#/components/Dialog' 9 9 import {DisableEmail2FADialog} from './DisableEmail2FADialog' 10 10
+2 -2
src/view/screens/Storybook/Breakpoints.tsx
··· 1 1 import React from 'react' 2 2 import {View} from 'react-native' 3 3 4 - import {atoms as a, useTheme, useBreakpoints} from '#/alf' 5 - import {Text, H3} from '#/components/Typography' 4 + import {atoms as a, useBreakpoints, useTheme} from '#/alf' 5 + import {H3, Text} from '#/components/Typography' 6 6 7 7 export function Breakpoints() { 8 8 const t = useTheme()
+2 -2
src/view/screens/Storybook/ListContained.tsx
··· 1 1 import React from 'react' 2 2 import {FlatList, View} from 'react-native' 3 3 4 - import {ScrollProvider} from 'lib/ScrollContext' 5 - import {List} from 'view/com/util/List' 4 + import {ScrollProvider} from '#/lib/ScrollContext' 5 + import {List} from '#/view/com/util/List' 6 6 import {Button, ButtonText} from '#/components/Button' 7 7 import * as Toggle from '#/components/forms/Toggle' 8 8 import {Text} from '#/components/Typography'
+1 -1
src/view/screens/Storybook/Spacing.tsx
··· 2 2 import {View} from 'react-native' 3 3 4 4 import {atoms as a, useTheme} from '#/alf' 5 - import {Text, H1} from '#/components/Typography' 5 + import {H1, Text} from '#/components/Typography' 6 6 7 7 export function Spacing() { 8 8 const t = useTheme()
+1 -1
src/view/screens/Storybook/Typography.tsx
··· 2 2 import {View} from 'react-native' 3 3 4 4 import {atoms as a} from '#/alf' 5 - import {Text} from '#/components/Typography' 6 5 import {RichText} from '#/components/RichText' 6 + import {Text} from '#/components/Typography' 7 7 8 8 export function Typography() { 9 9 return (
+3 -3
src/view/shell/bottom-bar/BottomBarWeb.tsx
··· 13 13 import {makeProfileLink} from '#/lib/routes/links' 14 14 import {CommonNavigatorParams} from '#/lib/routes/types' 15 15 import {s} from '#/lib/styles' 16 + import {useUnreadMessageCount} from '#/state/queries/messages/list-converations' 17 + import {useUnreadNotifications} from '#/state/queries/notifications/unread' 16 18 import {useSession} from '#/state/session' 17 19 import {useLoggedOutViewControls} from '#/state/shell/logged-out' 18 20 import {useCloseAllActiveElements} from '#/state/util' 19 - import {useUnreadMessageCount} from 'state/queries/messages/list-converations' 20 - import {useUnreadNotifications} from 'state/queries/notifications/unread' 21 21 import {Button} from '#/view/com/util/forms/Button' 22 + import {Link} from '#/view/com/util/Link' 22 23 import {Text} from '#/view/com/util/text/Text' 23 24 import {Logo} from '#/view/icons/Logo' 24 25 import {Logotype} from '#/view/icons/Logotype' 25 - import {Link} from 'view/com/util/Link' 26 26 import { 27 27 Bell_Filled_Corner0_Rounded as BellFilled, 28 28 Bell_Stroke2_Corner0_Rounded as Bell,