diff options
Diffstat (limited to 'src/view/com/util')
75 files changed, 476 insertions, 551 deletions
diff --git a/src/view/com/util/AccountDropdownBtn.tsx b/src/view/com/util/AccountDropdownBtn.tsx index 24f64af45..221879df7 100644 --- a/src/view/com/util/AccountDropdownBtn.tsx +++ b/src/view/com/util/AccountDropdownBtn.tsx @@ -1,18 +1,16 @@ +import React from 'react' +import {Pressable} from 'react-native' import { FontAwesomeIcon, FontAwesomeIconStyle, } from '@fortawesome/react-native-fontawesome' -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {usePalette} from 'lib/hooks/usePalette' import {s} from 'lib/styles' -import React from 'react' -import {Pressable} from 'react-native' - -import {SessionAccount, useSessionApi} from '#/state/session' - -import * as Toast from '../../com/util/Toast' +import {usePalette} from 'lib/hooks/usePalette' import {DropdownItem, NativeDropdown} from './forms/NativeDropdown' +import * as Toast from '../../com/util/Toast' +import {useSessionApi, SessionAccount} from '#/state/session' +import {useLingui} from '@lingui/react' +import {msg} from '@lingui/macro' export function AccountDropdownBtn({account}: {account: SessionAccount}) { const pal = usePalette('default') diff --git a/src/view/com/util/BlurView.android.tsx b/src/view/com/util/BlurView.android.tsx index a62e1dff0..eee1d9d86 100644 --- a/src/view/com/util/BlurView.android.tsx +++ b/src/view/com/util/BlurView.android.tsx @@ -1,6 +1,6 @@ -import {addStyle} from 'lib/styles' import React from 'react' import {StyleSheet, View, ViewProps} from 'react-native' +import {addStyle} from 'lib/styles' type BlurViewProps = ViewProps & { blurType?: 'dark' | 'light' diff --git a/src/view/com/util/BlurView.web.tsx b/src/view/com/util/BlurView.web.tsx index 09807816b..d1fb4665f 100644 --- a/src/view/com/util/BlurView.web.tsx +++ b/src/view/com/util/BlurView.web.tsx @@ -1,6 +1,6 @@ -import {addStyle} from 'lib/styles' import React from 'react' import {StyleSheet, View, ViewProps} from 'react-native' +import {addStyle} from 'lib/styles' type BlurViewProps = ViewProps & { blurType?: 'dark' | 'light' diff --git a/src/view/com/util/BottomSheetCustomBackdrop.tsx b/src/view/com/util/BottomSheetCustomBackdrop.tsx index 7cf9c10da..ed5a2f165 100644 --- a/src/view/com/util/BottomSheetCustomBackdrop.tsx +++ b/src/view/com/util/BottomSheetCustomBackdrop.tsx @@ -1,12 +1,12 @@ -import {BottomSheetBackdropProps} from '@gorhom/bottom-sheet' -import {t} from '@lingui/macro' import React, {useMemo} from 'react' import {TouchableWithoutFeedback} from 'react-native' +import {BottomSheetBackdropProps} from '@gorhom/bottom-sheet' import Animated, { Extrapolate, interpolate, useAnimatedStyle, } from 'react-native-reanimated' +import {t} from '@lingui/macro' export function createCustomBackdrop( onClose?: (() => void) | undefined, diff --git a/src/view/com/util/EmptyState.tsx b/src/view/com/util/EmptyState.tsx index cc71165b5..7486b212f 100644 --- a/src/view/com/util/EmptyState.tsx +++ b/src/view/com/util/EmptyState.tsx @@ -1,14 +1,13 @@ +import React from 'react' +import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native' import {IconProp} from '@fortawesome/fontawesome-svg-core' import { FontAwesomeIcon, FontAwesomeIconStyle, } from '@fortawesome/react-native-fontawesome' -import {usePalette} from 'lib/hooks/usePalette' -import {UserGroupIcon} from 'lib/icons' -import React from 'react' -import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native' - import {Text} from './text/Text' +import {UserGroupIcon} from 'lib/icons' +import {usePalette} from 'lib/hooks/usePalette' export function EmptyState({ testID, diff --git a/src/view/com/util/EmptyStateWithButton.tsx b/src/view/com/util/EmptyStateWithButton.tsx index 1a580ae9a..008ca2bdb 100644 --- a/src/view/com/util/EmptyStateWithButton.tsx +++ b/src/view/com/util/EmptyStateWithButton.tsx @@ -1,15 +1,14 @@ -import {IconProp} from '@fortawesome/fontawesome-svg-core' +import React from 'react' +import {StyleSheet, View} from 'react-native' import { FontAwesomeIcon, FontAwesomeIconStyle, } from '@fortawesome/react-native-fontawesome' +import {IconProp} from '@fortawesome/fontawesome-svg-core' +import {Text} from './text/Text' +import {Button} from './forms/Button' import {usePalette} from 'lib/hooks/usePalette' import {s} from 'lib/styles' -import React from 'react' -import {StyleSheet, View} from 'react-native' - -import {Button} from './forms/Button' -import {Text} from './text/Text' interface Props { testID?: string diff --git a/src/view/com/util/ErrorBoundary.tsx b/src/view/com/util/ErrorBoundary.tsx index b287a2469..5ec1d0014 100644 --- a/src/view/com/util/ErrorBoundary.tsx +++ b/src/view/com/util/ErrorBoundary.tsx @@ -1,10 +1,8 @@ -import {t} from '@lingui/macro' import React, {Component, ErrorInfo, ReactNode} from 'react' - -import {logger} from '#/logger' - import {ErrorScreen} from './error/ErrorScreen' import {CenteredView} from './Views' +import {t} from '@lingui/macro' +import {logger} from '#/logger' interface Props { children?: ReactNode diff --git a/src/view/com/util/FeedInfoText.tsx b/src/view/com/util/FeedInfoText.tsx index 3afaf256c..54124c739 100644 --- a/src/view/com/util/FeedInfoText.tsx +++ b/src/view/com/util/FeedInfoText.tsx @@ -1,12 +1,10 @@ -import {sanitizeDisplayName} from 'lib/strings/display-names' -import {TypographyVariant} from 'lib/ThemeContext' import React from 'react' import {StyleProp, StyleSheet, TextStyle} from 'react-native' - -import {useFeedSourceInfoQuery} from '#/state/queries/feed' - import {TextLinkOnWebOnly} from './Link' import {LoadingPlaceholder} from './LoadingPlaceholder' +import {TypographyVariant} from 'lib/ThemeContext' +import {sanitizeDisplayName} from 'lib/strings/display-names' +import {useFeedSourceInfoQuery} from '#/state/queries/feed' export function FeedNameText({ type = 'md', diff --git a/src/view/com/util/Html.tsx b/src/view/com/util/Html.tsx index b8d31dfd6..2e4719481 100644 --- a/src/view/com/util/Html.tsx +++ b/src/view/com/util/Html.tsx @@ -1,17 +1,16 @@ +import * as React from 'react' +import {StyleSheet, View} from 'react-native' +import {usePalette} from 'lib/hooks/usePalette' +import {useTheme} from 'lib/ThemeContext' +import {Text} from './text/Text' +import {TextLink} from './Link' import { H1 as ExpoH1, H2 as ExpoH2, H3 as ExpoH3, H4 as ExpoH4, } from '@expo/html-elements' -import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {useTheme} from 'lib/ThemeContext' -import * as React from 'react' -import {StyleSheet, View} from 'react-native' - -import {TextLink} from './Link' -import {Text} from './text/Text' /** * These utilities are used to define long documents in an html-like diff --git a/src/view/com/util/Link.tsx b/src/view/com/util/Link.tsx index 112e061bc..f45622488 100644 --- a/src/view/com/util/Link.tsx +++ b/src/view/com/util/Link.tsx @@ -1,38 +1,36 @@ -import {sanitizeUrl} from '@braintree/sanitize-url' -import {StackActions, useLinkProps} from '@react-navigation/native' -import { - DebouncedNavigationProp, - useNavigationDeduped, -} from 'lib/hooks/useNavigationDeduped' -import { - convertBskyAppUrlIfNeeded, - isExternalUrl, - linkRequiresWarning, -} from 'lib/strings/url-helpers' -import {TypographyVariant} from 'lib/ThemeContext' -import {isAndroid, isWeb} from 'platform/detection' import React, {ComponentProps, memo, useMemo} from 'react' import { GestureResponderEvent, Platform, - Pressable, StyleProp, - TextProps, TextStyle, - TouchableOpacity, - TouchableWithoutFeedback, + TextProps, View, ViewStyle, + Pressable, + TouchableWithoutFeedback, + TouchableOpacity, } from 'react-native' -import {WebAuxClickWrapper} from 'view/com/util/WebAuxClickWrapper' - -import {useModalControls} from '#/state/modals' -import {useOpenLink} from '#/state/preferences/in-app-browser' - +import {useLinkProps, StackActions} from '@react-navigation/native' +import {Text} from './text/Text' +import {TypographyVariant} from 'lib/ThemeContext' import {router} from '../../../routes' -import FixedTouchableHighlight from '../pager/FixedTouchableHighlight' +import { + convertBskyAppUrlIfNeeded, + isExternalUrl, + linkRequiresWarning, +} from 'lib/strings/url-helpers' +import {isAndroid, isWeb} from 'platform/detection' +import {sanitizeUrl} from '@braintree/sanitize-url' import {PressableWithHover} from './PressableWithHover' -import {Text} from './text/Text' +import FixedTouchableHighlight from '../pager/FixedTouchableHighlight' +import {useModalControls} from '#/state/modals' +import {useOpenLink} from '#/state/preferences/in-app-browser' +import {WebAuxClickWrapper} from 'view/com/util/WebAuxClickWrapper' +import { + DebouncedNavigationProp, + useNavigationDeduped, +} from 'lib/hooks/useNavigationDeduped' type Event = | React.MouseEvent<HTMLAnchorElement, MouseEvent> diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index 896608af1..d30a9d805 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -1,13 +1,11 @@ -import {addStyle} from 'lib/styles' import React, {memo} from 'react' import {FlatListProps, RefreshControl} from 'react-native' +import {FlatList_INTERNAL} from './Views' +import {addStyle} from 'lib/styles' +import {useScrollHandlers} from '#/lib/ScrollContext' import {runOnJS, useSharedValue} from 'react-native-reanimated' - import {useAnimatedScrollHandler} from '#/lib/hooks/useAnimatedScrollHandler_FIXED' import {usePalette} from '#/lib/hooks/usePalette' -import {useScrollHandlers} from '#/lib/ScrollContext' - -import {FlatList_INTERNAL} from './Views' export type ListMethods = FlatList_INTERNAL export type ListProps<ItemT> = Omit< diff --git a/src/view/com/util/List.web.tsx b/src/view/com/util/List.web.tsx index 6fb17b9f6..936bac198 100644 --- a/src/view/com/util/List.web.tsx +++ b/src/view/com/util/List.web.tsx @@ -1,12 +1,11 @@ +import React, {isValidElement, memo, useRef, startTransition} from 'react' +import {FlatListProps, StyleSheet, View, ViewProps} from 'react-native' +import {addStyle} from 'lib/styles' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {addStyle} from 'lib/styles' -import React, {isValidElement, memo, startTransition, useRef} from 'react' -import {FlatListProps, StyleSheet, View, ViewProps} from 'react-native' - -import {batchedUpdates} from '#/lib/batchedUpdates' -import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' import {useScrollHandlers} from '#/lib/ScrollContext' +import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' +import {batchedUpdates} from '#/lib/batchedUpdates' export type ListMethods = any // TODO: Better types. export type ListProps<ItemT> = Omit< diff --git a/src/view/com/util/LoadMoreRetryBtn.tsx b/src/view/com/util/LoadMoreRetryBtn.tsx index fa8245632..a2e9838b3 100644 --- a/src/view/com/util/LoadMoreRetryBtn.tsx +++ b/src/view/com/util/LoadMoreRetryBtn.tsx @@ -1,13 +1,12 @@ +import React from 'react' +import {StyleSheet} from 'react-native' import { FontAwesomeIcon, FontAwesomeIconStyle, } from '@fortawesome/react-native-fontawesome' -import {usePalette} from 'lib/hooks/usePalette' -import React from 'react' -import {StyleSheet} from 'react-native' - import {Button} from './forms/Button' import {Text} from './text/Text' +import {usePalette} from 'lib/hooks/usePalette' export function LoadMoreRetryBtn({ label, diff --git a/src/view/com/util/LoadingPlaceholder.tsx b/src/view/com/util/LoadingPlaceholder.tsx index fb2c226e8..6dfe12598 100644 --- a/src/view/com/util/LoadingPlaceholder.tsx +++ b/src/view/com/util/LoadingPlaceholder.tsx @@ -1,20 +1,20 @@ -import {usePalette} from 'lib/hooks/usePalette' +import React from 'react' +import { + StyleSheet, + StyleProp, + View, + ViewStyle, + DimensionValue, +} from 'react-native' import { - CommentBottomArrow, HeartIcon, HeartIconSolid, + CommentBottomArrow, RepostIcon, } from 'lib/icons' import {s} from 'lib/styles' import {useTheme} from 'lib/ThemeContext' -import React from 'react' -import { - DimensionValue, - StyleProp, - StyleSheet, - View, - ViewStyle, -} from 'react-native' +import {usePalette} from 'lib/hooks/usePalette' export function LoadingPlaceholder({ width, diff --git a/src/view/com/util/LoadingScreen.tsx b/src/view/com/util/LoadingScreen.tsx index 073664931..93c3bee42 100644 --- a/src/view/com/util/LoadingScreen.tsx +++ b/src/view/com/util/LoadingScreen.tsx @@ -1,7 +1,6 @@ -import {s} from 'lib/styles' import React from 'react' import {ActivityIndicator, View} from 'react-native' - +import {s} from 'lib/styles' import {CenteredView} from './Views' export function LoadingScreen() { diff --git a/src/view/com/util/MainScrollProvider.tsx b/src/view/com/util/MainScrollProvider.tsx index 1ed0631ac..01b8a954d 100644 --- a/src/view/com/util/MainScrollProvider.tsx +++ b/src/view/com/util/MainScrollProvider.tsx @@ -1,12 +1,11 @@ -import EventEmitter from 'eventemitter3' -import {isNative, isWeb} from 'platform/detection' import React, {useCallback, useEffect} from 'react' -import {NativeScrollEvent} from 'react-native' -import {interpolate, useSharedValue} from 'react-native-reanimated' - +import EventEmitter from 'eventemitter3' import {ScrollProvider} from '#/lib/ScrollContext' -import {useMinimalShellMode, useSetMinimalShellMode} from '#/state/shell' +import {NativeScrollEvent} from 'react-native' +import {useSetMinimalShellMode, useMinimalShellMode} from '#/state/shell' import {useShellLayout} from '#/state/shell/shell-layout' +import {isNative, isWeb} from 'platform/detection' +import {useSharedValue, interpolate} from 'react-native-reanimated' const WEB_HIDE_SHELL_THRESHOLD = 200 diff --git a/src/view/com/util/PostMeta.tsx b/src/view/com/util/PostMeta.tsx index 5832fc5d8..3795dcf13 100644 --- a/src/view/com/util/PostMeta.tsx +++ b/src/view/com/util/PostMeta.tsx @@ -1,20 +1,18 @@ -import {ModerationUI} from '@atproto/api' +import React, {memo} from 'react' +import {StyleProp, StyleSheet, TextStyle, View, ViewStyle} from 'react-native' +import {Text} from './text/Text' +import {TextLinkOnWebOnly} from './Link' +import {niceDate} from 'lib/strings/time' import {usePalette} from 'lib/hooks/usePalette' -import {makeProfileLink} from 'lib/routes/links' +import {TypographyVariant} from 'lib/ThemeContext' +import {UserAvatar} from './UserAvatar' import {sanitizeDisplayName} from 'lib/strings/display-names' import {sanitizeHandle} from 'lib/strings/handles' -import {niceDate} from 'lib/strings/time' -import {TypographyVariant} from 'lib/ThemeContext' import {isAndroid, isWeb} from 'platform/detection' -import React, {memo} from 'react' -import {StyleProp, StyleSheet, TextStyle, View, ViewStyle} from 'react-native' - -import {usePrefetchProfileQuery} from '#/state/queries/profile' - -import {TextLinkOnWebOnly} from './Link' -import {Text} from './text/Text' import {TimeElapsed} from './TimeElapsed' -import {UserAvatar} from './UserAvatar' +import {makeProfileLink} from 'lib/routes/links' +import {ModerationUI} from '@atproto/api' +import {usePrefetchProfileQuery} from '#/state/queries/profile' interface PostMetaOpts { author: { diff --git a/src/view/com/util/PressableWithHover.tsx b/src/view/com/util/PressableWithHover.tsx index 83c84f836..77276f184 100644 --- a/src/view/com/util/PressableWithHover.tsx +++ b/src/view/com/util/PressableWithHover.tsx @@ -1,12 +1,12 @@ -import {addStyle} from 'lib/styles' import React, { - forwardRef, + useState, + useCallback, PropsWithChildren, + forwardRef, Ref, - useCallback, - useState, } from 'react' import {Pressable, PressableProps, StyleProp, ViewStyle} from 'react-native' +import {addStyle} from 'lib/styles' interface PressableWithHover extends PressableProps { hoverStyle: StyleProp<ViewStyle> diff --git a/src/view/com/util/Selector.tsx b/src/view/com/util/Selector.tsx index b607a018a..66e363cd4 100644 --- a/src/view/com/util/Selector.tsx +++ b/src/view/com/util/Selector.tsx @@ -1,10 +1,9 @@ -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {usePalette} from 'lib/hooks/usePalette' -import React, {createRef, useMemo, useRef, useState} from 'react' +import React, {createRef, useState, useMemo, useRef} from 'react' import {Animated, Pressable, StyleSheet, View} from 'react-native' - import {Text} from './text/Text' +import {usePalette} from 'lib/hooks/usePalette' +import {useLingui} from '@lingui/react' +import {msg} from '@lingui/macro' interface Layout { x: number diff --git a/src/view/com/util/SimpleViewHeader.tsx b/src/view/com/util/SimpleViewHeader.tsx index 3319f7a94..814b2fb15 100644 --- a/src/view/com/util/SimpleViewHeader.tsx +++ b/src/view/com/util/SimpleViewHeader.tsx @@ -1,9 +1,3 @@ -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {useNavigation} from '@react-navigation/native' -import {useAnalytics} from 'lib/analytics/analytics' -import {usePalette} from 'lib/hooks/usePalette' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {NavigationProp} from 'lib/routes/types' import React from 'react' import { StyleProp, @@ -12,11 +6,15 @@ import { View, ViewStyle, } from 'react-native' - -import {isWeb} from '#/platform/detection' -import {useSetDrawerOpen} from '#/state/shell' - +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' +import {useNavigation} from '@react-navigation/native' import {CenteredView} from './Views' +import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {useAnalytics} from 'lib/analytics/analytics' +import {NavigationProp} from 'lib/routes/types' +import {useSetDrawerOpen} from '#/state/shell' +import {isWeb} from '#/platform/detection' const BACK_HITSLOP = {left: 20, top: 20, right: 50, bottom: 20} diff --git a/src/view/com/util/TimeElapsed.tsx b/src/view/com/util/TimeElapsed.tsx index bf848193d..aa3a09223 100644 --- a/src/view/com/util/TimeElapsed.tsx +++ b/src/view/com/util/TimeElapsed.tsx @@ -1,6 +1,5 @@ -import {ago} from 'lib/strings/time' import React from 'react' - +import {ago} from 'lib/strings/time' import {useTickEveryMinute} from '#/state/shell' // FIXME(dan): Figure out why the false positives diff --git a/src/view/com/util/Toast.tsx b/src/view/com/util/Toast.tsx index 91187e205..5462505e1 100644 --- a/src/view/com/util/Toast.tsx +++ b/src/view/com/util/Toast.tsx @@ -1,16 +1,14 @@ +import RootSiblings from 'react-native-root-siblings' +import React from 'react' +import {Animated, StyleSheet, View} from 'react-native' import {Props as FontAwesomeProps} from '@fortawesome/react-native-fontawesome' -import {useAnimatedValue} from 'lib/hooks/useAnimatedValue' -import {usePalette} from 'lib/hooks/usePalette' +import {Text} from './text/Text' import {colors} from 'lib/styles' import {useTheme} from 'lib/ThemeContext' -import React from 'react' -import {Animated, StyleSheet, View} from 'react-native' -import RootSiblings from 'react-native-root-siblings' - +import {usePalette} from 'lib/hooks/usePalette' +import {useAnimatedValue} from 'lib/hooks/useAnimatedValue' import {IS_TEST} from '#/env' -import {Text} from './text/Text' - const TIMEOUT = 4e3 export function show( diff --git a/src/view/com/util/Toast.web.tsx b/src/view/com/util/Toast.web.tsx index da7a5df8e..d5a843541 100644 --- a/src/view/com/util/Toast.web.tsx +++ b/src/view/com/util/Toast.web.tsx @@ -2,13 +2,13 @@ * Note: the dataSet properties are used to leverage custom CSS in public/index.html */ +import React, {useState, useEffect} from 'react' +import {StyleSheet, Text, View} from 'react-native' import { FontAwesomeIcon, FontAwesomeIconStyle, Props as FontAwesomeProps, } from '@fortawesome/react-native-fontawesome' -import React, {useEffect, useState} from 'react' -import {StyleSheet, Text, View} from 'react-native' const DURATION = 3500 diff --git a/src/view/com/util/UserAvatar.tsx b/src/view/com/util/UserAvatar.tsx index 2aa28b725..413237397 100644 --- a/src/view/com/util/UserAvatar.tsx +++ b/src/view/com/util/UserAvatar.tsx @@ -1,31 +1,30 @@ -import {ModerationUI} from '@atproto/api' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {msg, Trans} from '@lingui/macro' +import React, {memo, useMemo} from 'react' +import {Image, StyleSheet, TouchableOpacity, View} from 'react-native' +import Svg, {Circle, Rect, Path} from 'react-native-svg' +import {Image as RNImage} from 'react-native-image-crop-picker' import {useLingui} from '@lingui/react' -import {usePalette} from 'lib/hooks/usePalette' +import {msg, Trans} from '@lingui/macro' +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' +import {ModerationUI} from '@atproto/api' + +import {HighPriorityImage} from 'view/com/util/images/Image' +import {openCamera, openCropper, openPicker} from '../../../lib/media/picker' import { - useCameraPermission, usePhotoLibraryPermission, + useCameraPermission, } from 'lib/hooks/usePermissions' import {colors} from 'lib/styles' -import {isAndroid, isNative, isWeb} from 'platform/detection' -import React, {memo, useMemo} from 'react' -import {Image, StyleSheet, TouchableOpacity, View} from 'react-native' -import {Image as RNImage} from 'react-native-image-crop-picker' -import Svg, {Circle, Path, Rect} from 'react-native-svg' -import {HighPriorityImage} from 'view/com/util/images/Image' - -import {useTheme} from '#/alf' +import {usePalette} from 'lib/hooks/usePalette' +import {isWeb, isAndroid, isNative} from 'platform/detection' +import {UserPreviewLink} from './UserPreviewLink' +import * as Menu from '#/components/Menu' import { - Camera_Filled_Stroke2_Corner0_Rounded as CameraFilled, Camera_Stroke2_Corner0_Rounded as Camera, + Camera_Filled_Stroke2_Corner0_Rounded as CameraFilled, } from '#/components/icons/Camera' import {StreamingLive_Stroke2_Corner0_Rounded as Library} from '#/components/icons/StreamingLive' import {Trash_Stroke2_Corner0_Rounded as Trash} from '#/components/icons/Trash' -import * as Menu from '#/components/Menu' - -import {openCamera, openCropper, openPicker} from '../../../lib/media/picker' -import {UserPreviewLink} from './UserPreviewLink' +import {useTheme} from '#/alf' export type UserAvatarType = 'user' | 'algo' | 'list' diff --git a/src/view/com/util/UserBanner.tsx b/src/view/com/util/UserBanner.tsx index 6eb0ccc12..a5ddfee8a 100644 --- a/src/view/com/util/UserBanner.tsx +++ b/src/view/com/util/UserBanner.tsx @@ -1,30 +1,29 @@ +import React from 'react' +import {StyleSheet, TouchableOpacity, View} from 'react-native' import {ModerationUI} from '@atproto/api' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' import {Image} from 'expo-image' -import {usePalette} from 'lib/hooks/usePalette' +import {useLingui} from '@lingui/react' +import {msg, Trans} from '@lingui/macro' + +import {colors} from 'lib/styles' +import {useTheme} from 'lib/ThemeContext' +import {useTheme as useAlfTheme} from '#/alf' +import {openCamera, openCropper, openPicker} from '../../../lib/media/picker' import { - useCameraPermission, usePhotoLibraryPermission, + useCameraPermission, } from 'lib/hooks/usePermissions' -import {colors} from 'lib/styles' -import {useTheme} from 'lib/ThemeContext' +import {usePalette} from 'lib/hooks/usePalette' import {isAndroid, isNative} from 'platform/detection' -import React from 'react' -import {StyleSheet, TouchableOpacity, View} from 'react-native' import {Image as RNImage} from 'react-native-image-crop-picker' import {EventStopper} from 'view/com/util/EventStopper' - -import {useTheme as useAlfTheme} from '#/alf' +import * as Menu from '#/components/Menu' import { Camera_Filled_Stroke2_Corner0_Rounded as CameraFilled, Camera_Stroke2_Corner0_Rounded as Camera, } from '#/components/icons/Camera' import {StreamingLive_Stroke2_Corner0_Rounded as Library} from '#/components/icons/StreamingLive' import {Trash_Stroke2_Corner0_Rounded as Trash} from '#/components/icons/Trash' -import * as Menu from '#/components/Menu' - -import {openCamera, openCropper, openPicker} from '../../../lib/media/picker' export function UserBanner({ banner, diff --git a/src/view/com/util/UserInfoText.tsx b/src/view/com/util/UserInfoText.tsx index ab937c664..9cb9997f6 100644 --- a/src/view/com/util/UserInfoText.tsx +++ b/src/view/com/util/UserInfoText.tsx @@ -1,17 +1,15 @@ -import {AppBskyActorGetProfile as GetProfile} from '@atproto/api' -import {makeProfileLink} from 'lib/routes/links' -import {sanitizeDisplayName} from 'lib/strings/display-names' -import {sanitizeHandle} from 'lib/strings/handles' -import {TypographyVariant} from 'lib/ThemeContext' import React from 'react' +import {AppBskyActorGetProfile as GetProfile} from '@atproto/api' import {StyleProp, StyleSheet, TextStyle} from 'react-native' - -import {STALE} from '#/state/queries' -import {useProfileQuery} from '#/state/queries/profile' - import {TextLinkOnWebOnly} from './Link' -import {LoadingPlaceholder} from './LoadingPlaceholder' import {Text} from './text/Text' +import {LoadingPlaceholder} from './LoadingPlaceholder' +import {TypographyVariant} from 'lib/ThemeContext' +import {sanitizeDisplayName} from 'lib/strings/display-names' +import {sanitizeHandle} from 'lib/strings/handles' +import {makeProfileLink} from 'lib/routes/links' +import {useProfileQuery} from '#/state/queries/profile' +import {STALE} from '#/state/queries' export function UserInfoText({ type = 'md', diff --git a/src/view/com/util/UserPreviewLink.tsx b/src/view/com/util/UserPreviewLink.tsx index 09d230000..a2c46afc0 100644 --- a/src/view/com/util/UserPreviewLink.tsx +++ b/src/view/com/util/UserPreviewLink.tsx @@ -1,11 +1,9 @@ -import {makeProfileLink} from 'lib/routes/links' -import {isWeb} from 'platform/detection' import React from 'react' import {StyleProp, ViewStyle} from 'react-native' - -import {usePrefetchProfileQuery} from '#/state/queries/profile' - import {Link} from './Link' +import {isWeb} from 'platform/detection' +import {makeProfileLink} from 'lib/routes/links' +import {usePrefetchProfileQuery} from '#/state/queries/profile' interface UserPreviewLinkProps { did: string diff --git a/src/view/com/util/ViewHeader.tsx b/src/view/com/util/ViewHeader.tsx index 3ac757269..872e10eef 100644 --- a/src/view/com/util/ViewHeader.tsx +++ b/src/view/com/util/ViewHeader.tsx @@ -1,21 +1,19 @@ +import React from 'react' +import {StyleSheet, TouchableOpacity, View} from 'react-native' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' import {useNavigation} from '@react-navigation/native' -import {useAnalytics} from 'lib/analytics/analytics' -import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode' +import {CenteredView} from './Views' +import {Text} from './text/Text' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {useAnalytics} from 'lib/analytics/analytics' import {NavigationProp} from 'lib/routes/types' -import React from 'react' -import {StyleSheet, TouchableOpacity, View} from 'react-native' +import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode' import Animated from 'react-native-reanimated' - -import {useTheme} from '#/alf' import {useSetDrawerOpen} from '#/state/shell' - -import {Text} from './text/Text' -import {CenteredView} from './Views' +import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {useTheme} from '#/alf' const BACK_HITSLOP = {left: 20, top: 20, right: 50, bottom: 20} diff --git a/src/view/com/util/ViewSelector.tsx b/src/view/com/util/ViewSelector.tsx index 380028334..ee993c564 100644 --- a/src/view/com/util/ViewSelector.tsx +++ b/src/view/com/util/ViewSelector.tsx @@ -1,21 +1,20 @@ -import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' -import {usePalette} from 'lib/hooks/usePalette' -import {clamp} from 'lib/numbers' -import {colors, s} from 'lib/styles' -import {isAndroid} from 'platform/detection' import React, {useEffect, useState} from 'react' import { - NativeScrollEvent, NativeSyntheticEvent, + NativeScrollEvent, Pressable, RefreshControl, - ScrollView, StyleSheet, View, + ScrollView, } from 'react-native' - -import {Text} from './text/Text' import {FlatList_INTERNAL} from './Views' +import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' +import {Text} from './text/Text' +import {usePalette} from 'lib/hooks/usePalette' +import {clamp} from 'lib/numbers' +import {s, colors} from 'lib/styles' +import {isAndroid} from 'platform/detection' const HEADER_ITEM = {_reactKey: '__header__'} const SELECTOR_ITEM = {_reactKey: '__selector__'} diff --git a/src/view/com/util/Views.web.tsx b/src/view/com/util/Views.web.tsx index db023a32c..ae165077c 100644 --- a/src/view/com/util/Views.web.tsx +++ b/src/view/com/util/Views.web.tsx @@ -12,9 +12,6 @@ * need to match layout but which aren't scrolled. */ -import {usePalette} from 'lib/hooks/usePalette' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {addStyle} from 'lib/styles' import React from 'react' import { FlatListProps, @@ -23,6 +20,9 @@ import { View, ViewProps, } from 'react-native' +import {addStyle} from 'lib/styles' +import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import Animated from 'react-native-reanimated' interface AddedProps { diff --git a/src/view/com/util/anim/TriggerableAnimated.tsx b/src/view/com/util/anim/TriggerableAnimated.tsx index bb88035d7..eedeeda03 100644 --- a/src/view/com/util/anim/TriggerableAnimated.tsx +++ b/src/view/com/util/anim/TriggerableAnimated.tsx @@ -1,6 +1,6 @@ -import {useAnimatedValue} from 'lib/hooks/useAnimatedValue' import React from 'react' import {Animated, StyleProp, View, ViewStyle} from 'react-native' +import {useAnimatedValue} from 'lib/hooks/useAnimatedValue' type CreateAnimFn = (interp: Animated.Value) => Animated.CompositeAnimation type FinishCb = () => void diff --git a/src/view/com/util/error/ErrorMessage.tsx b/src/view/com/util/error/ErrorMessage.tsx index 5418a0204..a4238b8a4 100644 --- a/src/view/com/util/error/ErrorMessage.tsx +++ b/src/view/com/util/error/ErrorMessage.tsx @@ -1,21 +1,20 @@ -import { - FontAwesomeIcon, - FontAwesomeIconStyle, -} from '@fortawesome/react-native-fontawesome' -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {usePalette} from 'lib/hooks/usePalette' -import {useTheme} from 'lib/ThemeContext' import React from 'react' import { - StyleProp, StyleSheet, TouchableOpacity, + StyleProp, View, ViewStyle, } from 'react-native' - +import { + FontAwesomeIcon, + FontAwesomeIconStyle, +} from '@fortawesome/react-native-fontawesome' import {Text} from '../text/Text' +import {useTheme} from 'lib/ThemeContext' +import {usePalette} from 'lib/hooks/usePalette' +import {useLingui} from '@lingui/react' +import {msg} from '@lingui/macro' export function ErrorMessage({ message, diff --git a/src/view/com/util/error/ErrorScreen.tsx b/src/view/com/util/error/ErrorScreen.tsx index f3c4a7a3b..98fe6437b 100644 --- a/src/view/com/util/error/ErrorScreen.tsx +++ b/src/view/com/util/error/ErrorScreen.tsx @@ -1,19 +1,18 @@ +import React from 'react' +import {StyleSheet, View} from 'react-native' import { FontAwesomeIcon, FontAwesomeIconStyle, } from '@fortawesome/react-native-fontawesome' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {usePalette} from 'lib/hooks/usePalette' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {Text} from '../text/Text' import {useTheme} from 'lib/ThemeContext' -import React from 'react' -import {StyleSheet, View} from 'react-native' -import {ViewHeader} from 'view/com/util/ViewHeader' - +import {usePalette} from 'lib/hooks/usePalette' import {Button} from '../forms/Button' -import {Text} from '../text/Text' import {CenteredView} from '../Views' +import {Trans, msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {ViewHeader} from 'view/com/util/ViewHeader' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' export function ErrorScreen({ title, diff --git a/src/view/com/util/fab/FAB.web.tsx b/src/view/com/util/fab/FAB.web.tsx index cbe1adfd3..0a8831fa9 100644 --- a/src/view/com/util/fab/FAB.web.tsx +++ b/src/view/com/util/fab/FAB.web.tsx @@ -1,8 +1,7 @@ -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import React from 'react' import {View} from 'react-native' - import {FABInner, FABProps} from './FABInner' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' export const FAB = (_opts: FABProps) => { const {isDesktop} = useWebMediaQueries() diff --git a/src/view/com/util/fab/FABInner.tsx b/src/view/com/util/fab/FABInner.tsx index 15e3262ae..27a16117b 100644 --- a/src/view/com/util/fab/FABInner.tsx +++ b/src/view/com/util/fab/FABInner.tsx @@ -1,14 +1,13 @@ -import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {clamp} from 'lib/numbers' -import {gradients} from 'lib/styles' import React, {ComponentProps} from 'react' import {StyleSheet, TouchableWithoutFeedback} from 'react-native' import LinearGradient from 'react-native-linear-gradient' -import Animated from 'react-native-reanimated' +import {gradients} from 'lib/styles' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {useSafeAreaInsets} from 'react-native-safe-area-context' - +import {clamp} from 'lib/numbers' +import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode' import {isWeb} from '#/platform/detection' +import Animated from 'react-native-reanimated' export interface FABProps extends ComponentProps<typeof TouchableWithoutFeedback> { diff --git a/src/view/com/util/forms/Button.tsx b/src/view/com/util/forms/Button.tsx index 62d49c00b..e6e05bb04 100644 --- a/src/view/com/util/forms/Button.tsx +++ b/src/view/com/util/forms/Button.tsx @@ -1,21 +1,20 @@ -import {choose} from 'lib/functions' -import {useTheme} from 'lib/ThemeContext' import React from 'react' import { - ActivityIndicator, GestureResponderEvent, - NativeSyntheticEvent, - NativeTouchEvent, - Pressable, - PressableStateCallbackType, StyleProp, StyleSheet, TextStyle, - View, + Pressable, ViewStyle, + PressableStateCallbackType, + ActivityIndicator, + View, + NativeSyntheticEvent, + NativeTouchEvent, } from 'react-native' - import {Text} from '../text/Text' +import {useTheme} from 'lib/ThemeContext' +import {choose} from 'lib/functions' export type ButtonType = | 'primary' diff --git a/src/view/com/util/forms/DateInput.tsx b/src/view/com/util/forms/DateInput.tsx index 8a813049a..0104562aa 100644 --- a/src/view/com/util/forms/DateInput.tsx +++ b/src/view/com/util/forms/DateInput.tsx @@ -1,19 +1,18 @@ +import React, {useState, useCallback} from 'react' +import {StyleProp, StyleSheet, TextStyle, View, ViewStyle} from 'react-native' import { FontAwesomeIcon, FontAwesomeIconStyle, } from '@fortawesome/react-native-fontawesome' -import {getLocales} from 'expo-localization' -import {usePalette} from 'lib/hooks/usePalette' +import {isIOS, isAndroid} from 'platform/detection' +import {Button, ButtonType} from './Button' +import {Text} from '../text/Text' import {TypographyVariant} from 'lib/ThemeContext' import {useTheme} from 'lib/ThemeContext' -import {isAndroid, isIOS} from 'platform/detection' -import React, {useCallback, useState} from 'react' -import {StyleProp, StyleSheet, TextStyle, View, ViewStyle} from 'react-native' +import {usePalette} from 'lib/hooks/usePalette' +import {getLocales} from 'expo-localization' import DatePicker from 'react-native-date-picker' -import {Text} from '../text/Text' -import {Button, ButtonType} from './Button' - const LOCALE = getLocales()[0] interface Props { diff --git a/src/view/com/util/forms/DateInput.web.tsx b/src/view/com/util/forms/DateInput.web.tsx index ff1ed58b7..8d74f6dae 100644 --- a/src/view/com/util/forms/DateInput.web.tsx +++ b/src/view/com/util/forms/DateInput.web.tsx @@ -1,8 +1,8 @@ -import {usePalette} from 'lib/hooks/usePalette' -import React, {useCallback, useState} from 'react' +import React, {useState, useCallback} from 'react' import {StyleProp, StyleSheet, TextStyle, View, ViewStyle} from 'react-native' // @ts-ignore types not available -prf import {unstable_createElement} from 'react-native-web' +import {usePalette} from 'lib/hooks/usePalette' interface Props { testID?: string diff --git a/src/view/com/util/forms/DropdownButton.tsx b/src/view/com/util/forms/DropdownButton.tsx index f12f1d09c..2285b0615 100644 --- a/src/view/com/util/forms/DropdownButton.tsx +++ b/src/view/com/util/forms/DropdownButton.tsx @@ -1,12 +1,3 @@ -import {IconProp} from '@fortawesome/fontawesome-svg-core' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {HITSLOP_10} from 'lib/constants' -import {usePalette} from 'lib/hooks/usePalette' -import {colors} from 'lib/styles' -import {useTheme} from 'lib/ThemeContext' -import {isWeb} from 'platform/detection' import React, {PropsWithChildren, useMemo, useRef} from 'react' import { Dimensions, @@ -19,10 +10,18 @@ import { View, ViewStyle, } from 'react-native' +import {IconProp} from '@fortawesome/fontawesome-svg-core' import RootSiblings from 'react-native-root-siblings' - +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {Text} from '../text/Text' import {Button, ButtonType} from './Button' +import {colors} from 'lib/styles' +import {usePalette} from 'lib/hooks/usePalette' +import {useTheme} from 'lib/ThemeContext' +import {HITSLOP_10} from 'lib/constants' +import {useLingui} from '@lingui/react' +import {msg} from '@lingui/macro' +import {isWeb} from 'platform/detection' const ESTIMATED_BTN_HEIGHT = 50 const ESTIMATED_SEP_HEIGHT = 16 diff --git a/src/view/com/util/forms/NativeDropdown.tsx b/src/view/com/util/forms/NativeDropdown.tsx index 62f830c43..0a47569f2 100644 --- a/src/view/com/util/forms/NativeDropdown.tsx +++ b/src/view/com/util/forms/NativeDropdown.tsx @@ -1,13 +1,13 @@ -import {IconProp} from '@fortawesome/fontawesome-svg-core' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {HITSLOP_10} from 'lib/constants' -import {usePalette} from 'lib/hooks/usePalette' -import {useTheme} from 'lib/ThemeContext' -import {isWeb} from 'platform/detection' import React from 'react' -import {Platform, Pressable, StyleSheet, View, ViewStyle} from 'react-native' +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import * as DropdownMenu from 'zeego/dropdown-menu' +import {Pressable, StyleSheet, Platform, View, ViewStyle} from 'react-native' +import {IconProp} from '@fortawesome/fontawesome-svg-core' import {MenuItemCommonProps} from 'zeego/lib/typescript/menu' +import {usePalette} from 'lib/hooks/usePalette' +import {isWeb} from 'platform/detection' +import {useTheme} from 'lib/ThemeContext' +import {HITSLOP_10} from 'lib/constants' // Custom Dropdown Menu Components // == diff --git a/src/view/com/util/forms/NativeDropdown.web.tsx b/src/view/com/util/forms/NativeDropdown.web.tsx index 10a005446..6abeb16cc 100644 --- a/src/view/com/util/forms/NativeDropdown.web.tsx +++ b/src/view/com/util/forms/NativeDropdown.web.tsx @@ -1,12 +1,12 @@ -import {IconProp} from '@fortawesome/fontawesome-svg-core' +import React from 'react' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import * as DropdownMenu from '@radix-ui/react-dropdown-menu' -import {HITSLOP_10} from 'lib/constants' +import {Pressable, StyleSheet, View, Text, ViewStyle} from 'react-native' +import {IconProp} from '@fortawesome/fontawesome-svg-core' +import {MenuItemCommonProps} from 'zeego/lib/typescript/menu' import {usePalette} from 'lib/hooks/usePalette' import {useTheme} from 'lib/ThemeContext' -import React from 'react' -import {Pressable, StyleSheet, Text, View, ViewStyle} from 'react-native' -import {MenuItemCommonProps} from 'zeego/lib/typescript/menu' +import {HITSLOP_10} from 'lib/constants' // Custom Dropdown Menu Components // == diff --git a/src/view/com/util/forms/PostDropdownBtn.tsx b/src/view/com/util/forms/PostDropdownBtn.tsx index 9727fc21f..3c1a736f3 100644 --- a/src/view/com/util/forms/PostDropdownBtn.tsx +++ b/src/view/com/util/forms/PostDropdownBtn.tsx @@ -1,50 +1,49 @@ +import React, {memo} from 'react' +import {StyleProp, ViewStyle, Pressable, PressableProps} from 'react-native' +import Clipboard from '@react-native-clipboard/clipboard' +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' +import {useNavigation} from '@react-navigation/native' import { AppBskyActorDefs, AppBskyFeedPost, AtUri, RichText as RichTextAPI, } from '@atproto/api' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import Clipboard from '@react-native-clipboard/clipboard' -import {useNavigation} from '@react-navigation/native' -import {getCurrentRoute} from 'lib/routes/helpers' -import {shareUrl} from 'lib/sharing' import {toShareUrl} from 'lib/strings/url-helpers' import {useTheme} from 'lib/ThemeContext' -import React, {memo} from 'react' -import {Pressable, PressableProps, StyleProp, ViewStyle} from 'react-native' - -import {atoms as a, useTheme as useAlf} from '#/alf' -import {useGlobalDialogsControlContext} from '#/components/dialogs/Context' -import {ArrowOutOfBox_Stroke2_Corner0_Rounded as Share} from '#/components/icons/ArrowOutOfBox' -import {BubbleQuestion_Stroke2_Corner0_Rounded as Translate} from '#/components/icons/Bubble' -import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo' -import {Clipboard_Stroke2_Corner2_Rounded as ClipboardIcon} from '#/components/icons/Clipboard' -import {EyeSlash_Stroke2_Corner0_Rounded as EyeSlash} from '#/components/icons/EyeSlash' -import {Filter_Stroke2_Corner0_Rounded as Filter} from '#/components/icons/Filter' -import {Mute_Stroke2_Corner0_Rounded as Mute} from '#/components/icons/Mute' -import {SpeakerVolumeFull_Stroke2_Corner0_Rounded as Unmute} from '#/components/icons/Speaker' -import {Trash_Stroke2_Corner0_Rounded as Trash} from '#/components/icons/Trash' -import {Warning_Stroke2_Corner0_Rounded as Warning} from '#/components/icons/Warning' -import * as Menu from '#/components/Menu' +import {shareUrl} from 'lib/sharing' +import * as Toast from '../Toast' +import {EventStopper} from '../EventStopper' +import {useModalControls} from '#/state/modals' import {makeProfileLink} from '#/lib/routes/links' import {CommonNavigatorParams} from '#/lib/routes/types' -import {richTextToString} from '#/lib/strings/rich-text-helpers' +import {getCurrentRoute} from 'lib/routes/helpers' import {getTranslatorLink} from '#/locale/helpers' -import {logger} from '#/logger' -import {isWeb} from '#/platform/detection' -import {useModalControls} from '#/state/modals' +import {usePostDeleteMutation} from '#/state/queries/post' import {useMutedThreads, useToggleThreadMute} from '#/state/muted-threads' import {useLanguagePrefs} from '#/state/preferences' import {useHiddenPosts, useHiddenPostsApi} from '#/state/preferences' import {useOpenLink} from '#/state/preferences/in-app-browser' -import {usePostDeleteMutation} from '#/state/queries/post' +import {logger} from '#/logger' +import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' import {useSession} from '#/state/session' +import {isWeb} from '#/platform/detection' +import {richTextToString} from '#/lib/strings/rich-text-helpers' +import {useGlobalDialogsControlContext} from '#/components/dialogs/Context' -import {EventStopper} from '../EventStopper' -import * as Toast from '../Toast' +import {atoms as a, useTheme as useAlf} from '#/alf' +import * as Menu from '#/components/Menu' +import {Clipboard_Stroke2_Corner2_Rounded as ClipboardIcon} from '#/components/icons/Clipboard' +import {Filter_Stroke2_Corner0_Rounded as Filter} from '#/components/icons/Filter' +import {ArrowOutOfBox_Stroke2_Corner0_Rounded as Share} from '#/components/icons/ArrowOutOfBox' +import {EyeSlash_Stroke2_Corner0_Rounded as EyeSlash} from '#/components/icons/EyeSlash' +import {Mute_Stroke2_Corner0_Rounded as Mute} from '#/components/icons/Mute' +import {SpeakerVolumeFull_Stroke2_Corner0_Rounded as Unmute} from '#/components/icons/Speaker' +import {BubbleQuestion_Stroke2_Corner0_Rounded as Translate} from '#/components/icons/Bubble' +import {Warning_Stroke2_Corner0_Rounded as Warning} from '#/components/icons/Warning' +import {Trash_Stroke2_Corner0_Rounded as Trash} from '#/components/icons/Trash' +import {CircleInfo_Stroke2_Corner0_Rounded as CircleInfo} from '#/components/icons/CircleInfo' let PostDropdownBtn = ({ testID, diff --git a/src/view/com/util/forms/RadioButton.tsx b/src/view/com/util/forms/RadioButton.tsx index 696a0c00a..9d1cb4749 100644 --- a/src/view/com/util/forms/RadioButton.tsx +++ b/src/view/com/util/forms/RadioButton.tsx @@ -1,10 +1,9 @@ -import {choose} from 'lib/functions' -import {useTheme} from 'lib/ThemeContext' import React from 'react' import {StyleProp, StyleSheet, TextStyle, View, ViewStyle} from 'react-native' - import {Text} from '../text/Text' import {Button, ButtonType} from './Button' +import {useTheme} from 'lib/ThemeContext' +import {choose} from 'lib/functions' export function RadioButton({ testID, diff --git a/src/view/com/util/forms/RadioGroup.tsx b/src/view/com/util/forms/RadioGroup.tsx index abd1f5589..14599e649 100644 --- a/src/view/com/util/forms/RadioGroup.tsx +++ b/src/view/com/util/forms/RadioGroup.tsx @@ -1,9 +1,8 @@ -import {s} from 'lib/styles' import React, {useState} from 'react' import {View} from 'react-native' - -import {ButtonType} from './Button' import {RadioButton} from './RadioButton' +import {ButtonType} from './Button' +import {s} from 'lib/styles' export interface RadioGroupItem { label: string | JSX.Element diff --git a/src/view/com/util/forms/SearchInput.tsx b/src/view/com/util/forms/SearchInput.tsx index ff8b6bbdd..5a21d8fdd 100644 --- a/src/view/com/util/forms/SearchInput.tsx +++ b/src/view/com/util/forms/SearchInput.tsx @@ -1,13 +1,3 @@ -import { - FontAwesomeIcon, - FontAwesomeIconStyle, -} from '@fortawesome/react-native-fontawesome' -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {HITSLOP_10} from 'lib/constants' -import {usePalette} from 'lib/hooks/usePalette' -import {MagnifyingGlassIcon} from 'lib/icons' -import {useTheme} from 'lib/ThemeContext' import React from 'react' import { StyleProp, @@ -17,6 +7,16 @@ import { View, ViewStyle, } from 'react-native' +import { + FontAwesomeIcon, + FontAwesomeIconStyle, +} from '@fortawesome/react-native-fontawesome' +import {HITSLOP_10} from 'lib/constants' +import {MagnifyingGlassIcon} from 'lib/icons' +import {useTheme} from 'lib/ThemeContext' +import {usePalette} from 'lib/hooks/usePalette' +import {useLingui} from '@lingui/react' +import {msg} from '@lingui/macro' interface Props { query: string diff --git a/src/view/com/util/forms/SelectableBtn.tsx b/src/view/com/util/forms/SelectableBtn.tsx index 94eb049d2..e577e155d 100644 --- a/src/view/com/util/forms/SelectableBtn.tsx +++ b/src/view/com/util/forms/SelectableBtn.tsx @@ -1,9 +1,8 @@ -import {usePalette} from 'lib/hooks/usePalette' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import React from 'react' -import {Pressable, StyleProp, StyleSheet, ViewStyle} from 'react-native' - +import {Pressable, ViewStyle, StyleProp, StyleSheet} from 'react-native' import {Text} from '../text/Text' +import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' interface SelectableBtnProps { testID?: string diff --git a/src/view/com/util/forms/ToggleButton.tsx b/src/view/com/util/forms/ToggleButton.tsx index e40218b80..c98e846cd 100644 --- a/src/view/com/util/forms/ToggleButton.tsx +++ b/src/view/com/util/forms/ToggleButton.tsx @@ -1,12 +1,11 @@ -import {choose} from 'lib/functions' -import {colors} from 'lib/styles' -import {useTheme} from 'lib/ThemeContext' -import {TypographyVariant} from 'lib/ThemeContext' import React from 'react' import {StyleProp, StyleSheet, TextStyle, View, ViewStyle} from 'react-native' - import {Text} from '../text/Text' import {Button, ButtonType} from './Button' +import {useTheme} from 'lib/ThemeContext' +import {choose} from 'lib/functions' +import {colors} from 'lib/styles' +import {TypographyVariant} from 'lib/ThemeContext' export function ToggleButton({ testID, diff --git a/src/view/com/util/images/AutoSizedImage.tsx b/src/view/com/util/images/AutoSizedImage.tsx index 2b52b103d..61cb6f69f 100644 --- a/src/view/com/util/images/AutoSizedImage.tsx +++ b/src/view/com/util/images/AutoSizedImage.tsx @@ -1,11 +1,11 @@ -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import React from 'react' +import {StyleProp, StyleSheet, Pressable, View, ViewStyle} from 'react-native' import {Image} from 'expo-image' -import * as imageSizes from 'lib/media/image-sizes' -import {Dimensions} from 'lib/media/types' import {clamp} from 'lib/numbers' -import React from 'react' -import {Pressable, StyleProp, StyleSheet, View, ViewStyle} from 'react-native' +import {Dimensions} from 'lib/media/types' +import * as imageSizes from 'lib/media/image-sizes' +import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' const MIN_ASPECT_RATIO = 0.33 // 1/3 const MAX_ASPECT_RATIO = 10 // 10/1 diff --git a/src/view/com/util/images/Gallery.tsx b/src/view/com/util/images/Gallery.tsx index b5bc39498..7de3b093a 100644 --- a/src/view/com/util/images/Gallery.tsx +++ b/src/view/com/util/images/Gallery.tsx @@ -1,10 +1,10 @@ import {AppBskyEmbedImages} from '@atproto/api' +import React, {ComponentProps, FC} from 'react' +import {StyleSheet, Text, Pressable, View} from 'react-native' +import {Image} from 'expo-image' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {Image} from 'expo-image' import {isWeb} from 'platform/detection' -import React, {ComponentProps, FC} from 'react' -import {Pressable, StyleSheet, Text, View} from 'react-native' type EventFunction = (index: number) => void diff --git a/src/view/com/util/images/Image.tsx b/src/view/com/util/images/Image.tsx index fbdcfebbf..e779fa378 100644 --- a/src/view/com/util/images/Image.tsx +++ b/src/view/com/util/images/Image.tsx @@ -1,5 +1,5 @@ -import {Image, ImageProps, ImageSource} from 'expo-image' import React from 'react' +import {Image, ImageProps, ImageSource} from 'expo-image' interface HighPriorityImageProps extends ImageProps { source: ImageSource diff --git a/src/view/com/util/images/Image.web.tsx b/src/view/com/util/images/Image.web.tsx index eeaf16b9a..ecd9d730a 100644 --- a/src/view/com/util/images/Image.web.tsx +++ b/src/view/com/util/images/Image.web.tsx @@ -1,8 +1,8 @@ import { Image, + NativeSyntheticEvent, ImageLoadEventData, ImageSourcePropType, - NativeSyntheticEvent, } from 'react-native' export default Image export const HighPriorityImage = Image diff --git a/src/view/com/util/images/ImageHorzList.tsx b/src/view/com/util/images/ImageHorzList.tsx index a93fa195c..e37f8af1b 100644 --- a/src/view/com/util/images/ImageHorzList.tsx +++ b/src/view/com/util/images/ImageHorzList.tsx @@ -1,7 +1,7 @@ -import {AppBskyEmbedImages} from '@atproto/api' -import {Image} from 'expo-image' import React from 'react' import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native' +import {Image} from 'expo-image' +import {AppBskyEmbedImages} from '@atproto/api' interface Props { images: AppBskyEmbedImages.ViewImage[] diff --git a/src/view/com/util/images/ImageLayoutGrid.tsx b/src/view/com/util/images/ImageLayoutGrid.tsx index fe2a409b2..ba6c04f50 100644 --- a/src/view/com/util/images/ImageLayoutGrid.tsx +++ b/src/view/com/util/images/ImageLayoutGrid.tsx @@ -1,9 +1,8 @@ -import {AppBskyEmbedImages} from '@atproto/api' -import {isWeb} from 'platform/detection' import React from 'react' import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native' - +import {AppBskyEmbedImages} from '@atproto/api' import {GalleryItem} from './Gallery' +import {isWeb} from 'platform/detection' interface ImageLayoutGridProps { images: AppBskyEmbedImages.ViewImage[] diff --git a/src/view/com/util/layouts/LoggedOutLayout.tsx b/src/view/com/util/layouts/LoggedOutLayout.tsx index 1032c1f14..9424a7154 100644 --- a/src/view/com/util/layouts/LoggedOutLayout.tsx +++ b/src/view/com/util/layouts/LoggedOutLayout.tsx @@ -1,10 +1,9 @@ -import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' -import {usePalette} from 'lib/hooks/usePalette' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import React from 'react' import {StyleSheet, View} from 'react-native' - import {Text} from '../text/Text' +import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' export const LoggedOutLayout = ({ leadin, diff --git a/src/view/com/util/layouts/TitleColumnLayout.tsx b/src/view/com/util/layouts/TitleColumnLayout.tsx index 3033d7f42..49ad9fcdb 100644 --- a/src/view/com/util/layouts/TitleColumnLayout.tsx +++ b/src/view/com/util/layouts/TitleColumnLayout.tsx @@ -1,7 +1,7 @@ -import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' -import {usePalette} from 'lib/hooks/usePalette' import React from 'react' import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native' +import {usePalette} from 'lib/hooks/usePalette' +import {useColorSchemeStyle} from 'lib/hooks/useColorSchemeStyle' interface Props { testID?: string diff --git a/src/view/com/util/layouts/withBreakpoints.tsx b/src/view/com/util/layouts/withBreakpoints.tsx index de649e55c..5746aa660 100644 --- a/src/view/com/util/layouts/withBreakpoints.tsx +++ b/src/view/com/util/layouts/withBreakpoints.tsx @@ -1,6 +1,6 @@ -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {isNative} from 'platform/detection' import React from 'react' +import {isNative} from 'platform/detection' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' export const withBreakpoints = <P extends object>( Mobile: React.ComponentType<P>, diff --git a/src/view/com/util/load-latest/LoadLatestBtn.tsx b/src/view/com/util/load-latest/LoadLatestBtn.tsx index 4cc30432d..f02e4a2bd 100644 --- a/src/view/com/util/load-latest/LoadLatestBtn.tsx +++ b/src/view/com/util/load-latest/LoadLatestBtn.tsx @@ -1,13 +1,13 @@ -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {HITSLOP_20} from 'lib/constants' -import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode' -import {usePalette} from 'lib/hooks/usePalette' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {colors} from 'lib/styles' import React from 'react' import {StyleSheet, TouchableOpacity, View} from 'react-native' +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import Animated from 'react-native-reanimated' import {useMediaQuery} from 'react-responsive' +import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {colors} from 'lib/styles' +import {HITSLOP_20} from 'lib/constants' +import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode' const AnimatedTouchableOpacity = Animated.createAnimatedComponent(TouchableOpacity) import {isWeb} from 'platform/detection' diff --git a/src/view/com/util/moderation/ContentHider.tsx b/src/view/com/util/moderation/ContentHider.tsx index 8d4978d22..cd2545290 100644 --- a/src/view/com/util/moderation/ContentHider.tsx +++ b/src/view/com/util/moderation/ContentHider.tsx @@ -1,17 +1,15 @@ -import {ModerationUI, PostModeration} from '@atproto/api' +import React from 'react' +import {Pressable, StyleProp, StyleSheet, View, ViewStyle} from 'react-native' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' import {usePalette} from 'lib/hooks/usePalette' +import {ModerationUI, PostModeration} from '@atproto/api' +import {Text} from '../text/Text' import {ShieldExclamation} from 'lib/icons' import {describeModerationCause} from 'lib/moderation' -import {isPostMediaBlurred} from 'lib/moderation' -import React from 'react' -import {Pressable, StyleProp, StyleSheet, View, ViewStyle} from 'react-native' - +import {useLingui} from '@lingui/react' +import {msg, Trans} from '@lingui/macro' import {useModalControls} from '#/state/modals' - -import {Text} from '../text/Text' +import {isPostMediaBlurred} from 'lib/moderation' export function ContentHider({ testID, diff --git a/src/view/com/util/moderation/LabelInfo.tsx b/src/view/com/util/moderation/LabelInfo.tsx index 55f8b2dab..970338752 100644 --- a/src/view/com/util/moderation/LabelInfo.tsx +++ b/src/view/com/util/moderation/LabelInfo.tsx @@ -1,14 +1,12 @@ +import React from 'react' +import {Pressable, StyleProp, View, ViewStyle} from 'react-native' import {ComAtprotoLabelDefs} from '@atproto/api' +import {Text} from '../text/Text' +import {usePalette} from 'lib/hooks/usePalette' import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {usePalette} from 'lib/hooks/usePalette' -import React from 'react' -import {Pressable, StyleProp, View, ViewStyle} from 'react-native' - import {useModalControls} from '#/state/modals' -import {Text} from '../text/Text' - export function LabelInfo({ details, labels, diff --git a/src/view/com/util/moderation/PostAlerts.tsx b/src/view/com/util/moderation/PostAlerts.tsx index 135a99486..bc5bf9b32 100644 --- a/src/view/com/util/moderation/PostAlerts.tsx +++ b/src/view/com/util/moderation/PostAlerts.tsx @@ -1,16 +1,14 @@ +import React from 'react' +import {Pressable, StyleProp, StyleSheet, ViewStyle} from 'react-native' import {ModerationUI} from '@atproto/api' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import {Text} from '../text/Text' import {usePalette} from 'lib/hooks/usePalette' import {ShieldExclamation} from 'lib/icons' import {describeModerationCause} from 'lib/moderation' -import React from 'react' -import {Pressable, StyleProp, StyleSheet, ViewStyle} from 'react-native' - +import {Trans, msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' import {useModalControls} from '#/state/modals' -import {Text} from '../text/Text' - export function PostAlerts({ moderation, style, diff --git a/src/view/com/util/moderation/PostHider.tsx b/src/view/com/util/moderation/PostHider.tsx index 02d309a85..ede62e988 100644 --- a/src/view/com/util/moderation/PostHider.tsx +++ b/src/view/com/util/moderation/PostHider.tsx @@ -1,18 +1,16 @@ +import React, {ComponentProps} from 'react' +import {StyleSheet, Pressable, View, ViewStyle, StyleProp} from 'react-native' import {ModerationUI} from '@atproto/api' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' import {usePalette} from 'lib/hooks/usePalette' -import {ShieldExclamation} from 'lib/icons' -import {describeModerationCause} from 'lib/moderation' -import {addStyle} from 'lib/styles' -import React, {ComponentProps} from 'react' -import {Pressable, StyleProp, StyleSheet, View, ViewStyle} from 'react-native' - -import {useModalControls} from '#/state/modals' - import {Link} from '../Link' import {Text} from '../text/Text' +import {addStyle} from 'lib/styles' +import {describeModerationCause} from 'lib/moderation' +import {ShieldExclamation} from 'lib/icons' +import {useLingui} from '@lingui/react' +import {Trans, msg} from '@lingui/macro' +import {useModalControls} from '#/state/modals' interface Props extends ComponentProps<typeof Link> { iconSize: number diff --git a/src/view/com/util/moderation/ProfileHeaderAlerts.tsx b/src/view/com/util/moderation/ProfileHeaderAlerts.tsx index 0d4660ebb..0f07b679b 100644 --- a/src/view/com/util/moderation/ProfileHeaderAlerts.tsx +++ b/src/view/com/util/moderation/ProfileHeaderAlerts.tsx @@ -1,20 +1,18 @@ +import React from 'react' +import {Pressable, StyleProp, StyleSheet, View, ViewStyle} from 'react-native' import {ProfileModeration} from '@atproto/api' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import {Text} from '../text/Text' import {usePalette} from 'lib/hooks/usePalette' import {ShieldExclamation} from 'lib/icons' import { describeModerationCause, getProfileModerationCauses, } from 'lib/moderation' -import React from 'react' -import {Pressable, StyleProp, StyleSheet, View, ViewStyle} from 'react-native' - +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {useModalControls} from '#/state/modals' -import {Text} from '../text/Text' - export function ProfileHeaderAlerts({ moderation, style, diff --git a/src/view/com/util/moderation/ScreenHider.tsx b/src/view/com/util/moderation/ScreenHider.tsx index 52e5e37a0..86f0cbf7b 100644 --- a/src/view/com/util/moderation/ScreenHider.tsx +++ b/src/view/com/util/moderation/ScreenHider.tsx @@ -1,29 +1,27 @@ -import {ModerationUI} from '@atproto/api' +import React from 'react' +import { + TouchableWithoutFeedback, + StyleProp, + StyleSheet, + View, + ViewStyle, +} from 'react-native' import { FontAwesomeIcon, FontAwesomeIconStyle, } from '@fortawesome/react-native-fontawesome' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' import {useNavigation} from '@react-navigation/native' +import {ModerationUI} from '@atproto/api' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {describeModerationCause} from 'lib/moderation' import {NavigationProp} from 'lib/routes/types' -import React from 'react' -import { - StyleProp, - StyleSheet, - TouchableWithoutFeedback, - View, - ViewStyle, -} from 'react-native' - -import {s} from '#/lib/styles' -import {useModalControls} from '#/state/modals' - -import {Button} from '../forms/Button' import {Text} from '../text/Text' +import {Button} from '../forms/Button' +import {describeModerationCause} from 'lib/moderation' +import {Trans, msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {useModalControls} from '#/state/modals' +import {s} from '#/lib/styles' import {CenteredView} from '../Views' export function ScreenHider({ diff --git a/src/view/com/util/post-ctrls/PostCtrls.tsx b/src/view/com/util/post-ctrls/PostCtrls.tsx index d1340f6d2..1e26eecce 100644 --- a/src/view/com/util/post-ctrls/PostCtrls.tsx +++ b/src/view/com/util/post-ctrls/PostCtrls.tsx @@ -1,20 +1,3 @@ -import { - AppBskyFeedDefs, - AppBskyFeedPost, - AtUri, - RichText as RichTextAPI, -} from '@atproto/api' -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {HITSLOP_10, HITSLOP_20} from 'lib/constants' -import {Haptics} from 'lib/haptics' -import {CommentBottomArrow, HeartIcon, HeartIconSolid} from 'lib/icons' -import {makeProfileLink} from 'lib/routes/links' -import {shareUrl} from 'lib/sharing' -import {pluralize} from 'lib/strings/helpers' -import {toShareUrl} from 'lib/strings/url-helpers' -import {s} from 'lib/styles' -import {useTheme} from 'lib/ThemeContext' import React, {memo, useCallback} from 'react' import { StyleProp, @@ -23,20 +6,35 @@ import { View, ViewStyle, } from 'react-native' - -import {ArrowOutOfBox_Stroke2_Corner0_Rounded as ArrowOutOfBox} from '#/components/icons/ArrowOutOfBox' -import {Shadow} from '#/state/cache/types' +import { + AppBskyFeedDefs, + AppBskyFeedPost, + AtUri, + RichText as RichTextAPI, +} from '@atproto/api' +import {Text} from '../text/Text' +import {PostDropdownBtn} from '../forms/PostDropdownBtn' +import {HeartIcon, HeartIconSolid, CommentBottomArrow} from 'lib/icons' +import {s} from 'lib/styles' +import {pluralize} from 'lib/strings/helpers' +import {useTheme} from 'lib/ThemeContext' +import {RepostButton} from './RepostButton' +import {Haptics} from 'lib/haptics' +import {HITSLOP_10, HITSLOP_20} from 'lib/constants' import {useModalControls} from '#/state/modals' import { usePostLikeMutationQueue, usePostRepostMutationQueue, } from '#/state/queries/post' -import {useRequireAuth} from '#/state/session' import {useComposerControls} from '#/state/shell/composer' - -import {PostDropdownBtn} from '../forms/PostDropdownBtn' -import {Text} from '../text/Text' -import {RepostButton} from './RepostButton' +import {Shadow} from '#/state/cache/types' +import {useRequireAuth} from '#/state/session' +import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {ArrowOutOfBox_Stroke2_Corner0_Rounded as ArrowOutOfBox} from '#/components/icons/ArrowOutOfBox' +import {toShareUrl} from 'lib/strings/url-helpers' +import {shareUrl} from 'lib/sharing' +import {makeProfileLink} from 'lib/routes/links' let PostCtrls = ({ big, diff --git a/src/view/com/util/post-ctrls/RepostButton.tsx b/src/view/com/util/post-ctrls/RepostButton.tsx index b0cf6a7b1..cc3db50c8 100644 --- a/src/view/com/util/post-ctrls/RepostButton.tsx +++ b/src/view/com/util/post-ctrls/RepostButton.tsx @@ -1,17 +1,15 @@ -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {HITSLOP_10, HITSLOP_20} from 'lib/constants' -import {RepostIcon} from 'lib/icons' -import {pluralize} from 'lib/strings/helpers' -import {colors, s} from 'lib/styles' -import {useTheme} from 'lib/ThemeContext' import React, {memo, useCallback} from 'react' import {StyleProp, StyleSheet, TouchableOpacity, ViewStyle} from 'react-native' - +import {RepostIcon} from 'lib/icons' +import {s, colors} from 'lib/styles' +import {useTheme} from 'lib/ThemeContext' +import {Text} from '../text/Text' +import {pluralize} from 'lib/strings/helpers' +import {HITSLOP_10, HITSLOP_20} from 'lib/constants' import {useModalControls} from '#/state/modals' import {useRequireAuth} from '#/state/session' - -import {Text} from '../text/Text' +import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' interface Props { isReposted: boolean diff --git a/src/view/com/util/post-ctrls/RepostButton.web.tsx b/src/view/com/util/post-ctrls/RepostButton.web.tsx index 391eeaf1f..bbe5869fe 100644 --- a/src/view/com/util/post-ctrls/RepostButton.web.tsx +++ b/src/view/com/util/post-ctrls/RepostButton.web.tsx @@ -1,20 +1,19 @@ -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import React from 'react' +import {StyleProp, StyleSheet, View, ViewStyle, Pressable} from 'react-native' import {RepostIcon} from 'lib/icons' import {colors} from 'lib/styles' import {useTheme} from 'lib/ThemeContext' -import React from 'react' -import {Pressable, StyleProp, StyleSheet, View, ViewStyle} from 'react-native' - -import {useRequireAuth} from '#/state/session' -import {useSession} from '#/state/session' +import {Text} from '../text/Text' -import {EventStopper} from '../EventStopper' import { - DropdownItem as NativeDropdownItem, NativeDropdown, + DropdownItem as NativeDropdownItem, } from '../forms/NativeDropdown' -import {Text} from '../text/Text' +import {EventStopper} from '../EventStopper' +import {useLingui} from '@lingui/react' +import {msg} from '@lingui/macro' +import {useRequireAuth} from '#/state/session' +import {useSession} from '#/state/session' interface Props { isReposted: boolean diff --git a/src/view/com/util/post-embeds/ExternalGifEmbed.tsx b/src/view/com/util/post-embeds/ExternalGifEmbed.tsx index 135f9b211..f06c8b794 100644 --- a/src/view/com/util/post-embeds/ExternalGifEmbed.tsx +++ b/src/view/com/util/post-embeds/ExternalGifEmbed.tsx @@ -1,10 +1,6 @@ -import {AppBskyEmbedExternal} from '@atproto/api' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {Image, ImageLoadEventData} from 'expo-image' import {EmbedPlayerParams, getGifDims} from 'lib/strings/embed-player' import React from 'react' +import {Image, ImageLoadEventData} from 'expo-image' import { ActivityIndicator, GestureResponderEvent, @@ -13,10 +9,13 @@ import { StyleSheet, View, } from 'react-native' -import {useModalControls} from 'state/modals' -import {useExternalEmbedsPrefs} from 'state/preferences' - import {isIOS, isNative, isWeb} from '#/platform/detection' +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' +import {useExternalEmbedsPrefs} from 'state/preferences' +import {useModalControls} from 'state/modals' +import {useLingui} from '@lingui/react' +import {msg} from '@lingui/macro' +import {AppBskyEmbedExternal} from '@atproto/api' export function ExternalGifEmbed({ link, diff --git a/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx b/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx index a29901bae..aaa98a41f 100644 --- a/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx +++ b/src/view/com/util/post-embeds/ExternalLinkEmbed.tsx @@ -1,16 +1,15 @@ -import {AppBskyEmbedExternal} from '@atproto/api' +import React from 'react' import {Image} from 'expo-image' +import {Text} from '../text/Text' +import {StyleSheet, View} from 'react-native' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {parseEmbedPlayerFromUrl} from 'lib/strings/embed-player' +import {AppBskyEmbedExternal} from '@atproto/api' import {toNiceDomain} from 'lib/strings/url-helpers' -import React from 'react' -import {StyleSheet, View} from 'react-native' -import {useExternalEmbedsPrefs} from 'state/preferences' -import {ExternalGifEmbed} from 'view/com/util/post-embeds/ExternalGifEmbed' +import {parseEmbedPlayerFromUrl} from 'lib/strings/embed-player' import {ExternalPlayer} from 'view/com/util/post-embeds/ExternalPlayerEmbed' - -import {Text} from '../text/Text' +import {ExternalGifEmbed} from 'view/com/util/post-embeds/ExternalGifEmbed' +import {useExternalEmbedsPrefs} from 'state/preferences' export const ExternalLinkEmbed = ({ link, diff --git a/src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx b/src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx index 1b9d40844..cf2db5b33 100644 --- a/src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx +++ b/src/view/com/util/post-embeds/ExternalPlayerEmbed.tsx @@ -1,12 +1,3 @@ -import {AppBskyEmbedExternal} from '@atproto/api' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {useNavigation} from '@react-navigation/native' -import {Image} from 'expo-image' -import {NavigationProp} from 'lib/routes/types' -import {EmbedPlayerParams, getPlayerAspect} from 'lib/strings/embed-player' -import {isNative} from 'platform/detection' import React from 'react' import { ActivityIndicator, @@ -22,12 +13,20 @@ import Animated, { useAnimatedRef, useFrameCallback, } from 'react-native-reanimated' -import {useSafeAreaInsets} from 'react-native-safe-area-context' +import {Image} from 'expo-image' import {WebView} from 'react-native-webview' -import {useModalControls} from 'state/modals' -import {useExternalEmbedsPrefs} from 'state/preferences' - +import {useSafeAreaInsets} from 'react-native-safe-area-context' +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' +import {msg} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {useNavigation} from '@react-navigation/native' +import {AppBskyEmbedExternal} from '@atproto/api' +import {EmbedPlayerParams, getPlayerAspect} from 'lib/strings/embed-player' import {EventStopper} from '../EventStopper' +import {isNative} from 'platform/detection' +import {NavigationProp} from 'lib/routes/types' +import {useExternalEmbedsPrefs} from 'state/preferences' +import {useModalControls} from 'state/modals' interface ShouldStartLoadRequest { url: string diff --git a/src/view/com/util/post-embeds/ListEmbed.tsx b/src/view/com/util/post-embeds/ListEmbed.tsx index ad766d900..fc5ad270f 100644 --- a/src/view/com/util/post-embeds/ListEmbed.tsx +++ b/src/view/com/util/post-embeds/ListEmbed.tsx @@ -1,9 +1,9 @@ -import {AppBskyGraphDefs} from '@atproto/api' -import {usePalette} from 'lib/hooks/usePalette' -import {s} from 'lib/styles' import React from 'react' import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native' +import {usePalette} from 'lib/hooks/usePalette' import {ListCard} from 'view/com/lists/ListCard' +import {AppBskyGraphDefs} from '@atproto/api' +import {s} from 'lib/styles' export function ListEmbed({ item, diff --git a/src/view/com/util/post-embeds/QuoteEmbed.tsx b/src/view/com/util/post-embeds/QuoteEmbed.tsx index b3b24192b..35b091269 100644 --- a/src/view/com/util/post-embeds/QuoteEmbed.tsx +++ b/src/view/com/util/post-embeds/QuoteEmbed.tsx @@ -1,29 +1,27 @@ +import React from 'react' +import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native' import { - AppBskyEmbedExternal, - AppBskyEmbedImages, AppBskyEmbedRecord, - AppBskyEmbedRecordWithMedia, AppBskyFeedPost, + AppBskyEmbedImages, + AppBskyEmbedRecordWithMedia, ModerationUI, + AppBskyEmbedExternal, RichText as RichTextAPI, } from '@atproto/api' import {AtUri} from '@atproto/api' -import {Trans} from '@lingui/macro' -import {usePalette} from 'lib/hooks/usePalette' -import {InfoCircleIcon} from 'lib/icons' -import {makeProfileLink} from 'lib/routes/links' -import React from 'react' -import {StyleProp, StyleSheet, View, ViewStyle} from 'react-native' -import {ComposerOptsQuote} from 'state/shell/composer' - -import {atoms as a} from '#/alf' -import {RichText} from '#/components/RichText' - -import {Link} from '../Link' -import {PostAlerts} from '../moderation/PostAlerts' import {PostMeta} from '../PostMeta' +import {Link} from '../Link' import {Text} from '../text/Text' +import {usePalette} from 'lib/hooks/usePalette' +import {ComposerOptsQuote} from 'state/shell/composer' import {PostEmbeds} from '.' +import {PostAlerts} from '../moderation/PostAlerts' +import {makeProfileLink} from 'lib/routes/links' +import {InfoCircleIcon} from 'lib/icons' +import {Trans} from '@lingui/macro' +import {RichText} from '#/components/RichText' +import {atoms as a} from '#/alf' export function MaybeQuoteEmbed({ embed, diff --git a/src/view/com/util/post-embeds/index.tsx b/src/view/com/util/post-embeds/index.tsx index c2fabd2a0..7e235babb 100644 --- a/src/view/com/util/post-embeds/index.tsx +++ b/src/view/com/util/post-embeds/index.tsx @@ -1,6 +1,16 @@ +import React, {useCallback} from 'react' +import { + StyleSheet, + StyleProp, + View, + ViewStyle, + Text, + InteractionManager, +} from 'react-native' +import {Image} from 'expo-image' import { - AppBskyEmbedExternal, AppBskyEmbedImages, + AppBskyEmbedExternal, AppBskyEmbedRecord, AppBskyEmbedRecordWithMedia, AppBskyFeedDefs, @@ -8,31 +18,19 @@ import { ModerationUI, PostModeration, } from '@atproto/api' -import {Image} from 'expo-image' +import {Link} from '../Link' +import {ImageLayoutGrid} from '../images/ImageLayoutGrid' +import {useLightboxControls, ImagesLightbox} from '#/state/lightbox' import {usePalette} from 'lib/hooks/usePalette' +import {ExternalLinkEmbed} from './ExternalLinkEmbed' +import {MaybeQuoteEmbed} from './QuoteEmbed' +import {AutoSizedImage} from '../images/AutoSizedImage' +import {ListEmbed} from './ListEmbed' import {isCauseALabelOnUri, isQuoteBlurred} from 'lib/moderation' -import React, {useCallback} from 'react' -import { - InteractionManager, - StyleProp, - StyleSheet, - Text, - View, - ViewStyle, -} from 'react-native' import {FeedSourceCard} from 'view/com/feeds/FeedSourceCard' - -import {shareUrl} from '#/lib/sharing' -import {isNative} from '#/platform/detection' -import {ImagesLightbox, useLightboxControls} from '#/state/lightbox' - -import {AutoSizedImage} from '../images/AutoSizedImage' -import {ImageLayoutGrid} from '../images/ImageLayoutGrid' -import {Link} from '../Link' import {ContentHider} from '../moderation/ContentHider' -import {ExternalLinkEmbed} from './ExternalLinkEmbed' -import {ListEmbed} from './ListEmbed' -import {MaybeQuoteEmbed} from './QuoteEmbed' +import {isNative} from '#/platform/detection' +import {shareUrl} from '#/lib/sharing' type Embed = | AppBskyEmbedRecord.View diff --git a/src/view/com/util/text/RichText.tsx b/src/view/com/util/text/RichText.tsx index 5756db324..f4ade30e5 100644 --- a/src/view/com/util/text/RichText.tsx +++ b/src/view/com/util/text/RichText.tsx @@ -1,18 +1,16 @@ -import {AppBskyRichtextFacet, RichText as RichTextObj} from '@atproto/api' +import React from 'react' +import {TextStyle, StyleProp} from 'react-native' +import {RichText as RichTextObj, AppBskyRichtextFacet} from '@atproto/api' +import {TextLink} from '../Link' +import {Text} from './Text' +import {lh} from 'lib/styles' +import {toShortUrl} from 'lib/strings/url-helpers' +import {useTheme, TypographyVariant} from 'lib/ThemeContext' import {usePalette} from 'lib/hooks/usePalette' import {makeTagLink} from 'lib/routes/links' -import {toShortUrl} from 'lib/strings/url-helpers' -import {lh} from 'lib/styles' -import {TypographyVariant, useTheme} from 'lib/ThemeContext' -import React from 'react' -import {StyleProp, TextStyle} from 'react-native' - import {TagMenu, useTagMenuControl} from '#/components/TagMenu' import {isNative} from '#/platform/detection' -import {TextLink} from '../Link' -import {Text} from './Text' - const WORD_WRAP = {wordWrap: 1} /** diff --git a/src/view/com/util/text/Text.tsx b/src/view/com/util/text/Text.tsx index 0dfa667fb..ccb51bfca 100644 --- a/src/view/com/util/text/Text.tsx +++ b/src/view/com/util/text/Text.tsx @@ -1,8 +1,8 @@ -import {lh, s} from 'lib/styles' -import {TypographyVariant, useTheme} from 'lib/ThemeContext' -import {isIOS} from 'platform/detection' import React from 'react' import {Text as RNText, TextProps} from 'react-native' +import {s, lh} from 'lib/styles' +import {useTheme, TypographyVariant} from 'lib/ThemeContext' +import {isIOS} from 'platform/detection' import {UITextView} from 'react-native-ui-text-view' export type CustomTextProps = TextProps & { diff --git a/src/view/com/util/text/ThemedText.tsx b/src/view/com/util/text/ThemedText.tsx index 27268472b..2844d273c 100644 --- a/src/view/com/util/text/ThemedText.tsx +++ b/src/view/com/util/text/ThemedText.tsx @@ -1,8 +1,7 @@ -import {usePalette} from 'lib/hooks/usePalette' -import {addStyle} from 'lib/styles' import React from 'react' - import {CustomTextProps, Text} from './Text' +import {usePalette} from 'lib/hooks/usePalette' +import {addStyle} from 'lib/styles' export type ThemedTextProps = CustomTextProps & { fg?: 'default' | 'light' | 'error' | 'inverted' | 'inverted-light' |