diff options
Diffstat (limited to 'src/view/com/modals')
36 files changed, 502 insertions, 442 deletions
diff --git a/src/view/com/modals/AddAppPasswords.tsx b/src/view/com/modals/AddAppPasswords.tsx index a8913dd54..2346f6d4e 100644 --- a/src/view/com/modals/AddAppPasswords.tsx +++ b/src/view/com/modals/AddAppPasswords.tsx @@ -1,25 +1,27 @@ -import React, {useState} from 'react' -import {StyleSheet, TextInput, View, TouchableOpacity} from 'react-native' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import {s} from 'lib/styles' -import {usePalette} from 'lib/hooks/usePalette' -import {isNative} from 'platform/detection' import { FontAwesomeIcon, FontAwesomeIconStyle, } from '@fortawesome/react-native-fontawesome' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' import Clipboard from '@react-native-clipboard/clipboard' -import * as Toast from '../util/Toast' +import {usePalette} from 'lib/hooks/usePalette' +import {s} from 'lib/styles' +import {isNative} from 'platform/detection' +import React, {useState} from 'react' +import {StyleSheet, TextInput, TouchableOpacity, View} from 'react-native' + import {logger} from '#/logger' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' import {useModalControls} from '#/state/modals' import { - useAppPasswordsQuery, useAppPasswordCreateMutation, + useAppPasswordsQuery, } from '#/state/queries/app-passwords' +import {Button} from '../util/forms/Button' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' + export const snapPoints = ['70%'] const shadesOfBlue: string[] = [ diff --git a/src/view/com/modals/AltImage.tsx b/src/view/com/modals/AltImage.tsx index 17ce05cda..e3e872a17 100644 --- a/src/view/com/modals/AltImage.tsx +++ b/src/view/com/modals/AltImage.tsx @@ -1,29 +1,31 @@ -import React, {useMemo, useCallback, useState} from 'react' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {Image} from 'expo-image' +import {MAX_ALT_TEXT} from 'lib/constants' +import {useIsKeyboardVisible} from 'lib/hooks/useIsKeyboardVisible' +import {usePalette} from 'lib/hooks/usePalette' +import {enforceLen} from 'lib/strings/helpers' +import {gradients, s} from 'lib/styles' +import {useTheme} from 'lib/ThemeContext' +import {isWeb} from 'platform/detection' +import React, {useCallback, useMemo, useState} from 'react' import { ImageStyle, + ScrollView as RNScrollView, StyleSheet, - TouchableOpacity, - View, TextInput as RNTextInput, + TouchableOpacity, useWindowDimensions, - ScrollView as RNScrollView, + View, } from 'react-native' -import {ScrollView, TextInput} from './util' -import {Image} from 'expo-image' -import {usePalette} from 'lib/hooks/usePalette' -import {gradients, s} from 'lib/styles' -import {enforceLen} from 'lib/strings/helpers' -import {MAX_ALT_TEXT} from 'lib/constants' -import {useTheme} from 'lib/ThemeContext' -import {useIsKeyboardVisible} from 'lib/hooks/useIsKeyboardVisible' -import {Text} from '../util/text/Text' import LinearGradient from 'react-native-linear-gradient' -import {isWeb} from 'platform/detection' import {ImageModel} from 'state/models/media/image' -import {useLingui} from '@lingui/react' -import {Trans, msg} from '@lingui/macro' + import {useModalControls} from '#/state/modals' +import {Text} from '../util/text/Text' +import {ScrollView, TextInput} from './util' + export const snapPoints = ['100%'] interface Props { diff --git a/src/view/com/modals/AppealLabel.tsx b/src/view/com/modals/AppealLabel.tsx index b0aaaf625..5756452a2 100644 --- a/src/view/com/modals/AppealLabel.tsx +++ b/src/view/com/modals/AppealLabel.tsx @@ -1,17 +1,19 @@ -import React, {useState} from 'react' -import {StyleSheet, TouchableOpacity, View} from 'react-native' import {ComAtprotoModerationDefs} from '@atproto/api' -import {ScrollView, TextInput} from './util' -import {Text} from '../util/text/Text' -import {s, colors} from 'lib/styles' -import {usePalette} from 'lib/hooks/usePalette' -import {Trans, msg} from '@lingui/macro' +import {msg, Trans} from '@lingui/macro' import {useLingui} from '@lingui/react' +import {usePalette} from 'lib/hooks/usePalette' +import {colors, s} from 'lib/styles' +import React, {useState} from 'react' +import {StyleSheet, TouchableOpacity, View} from 'react-native' + +import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' import {useModalControls} from '#/state/modals' -import {CharProgress} from '../composer/char-progress/CharProgress' import {getAgent} from '#/state/session' + +import {CharProgress} from '../composer/char-progress/CharProgress' +import {Text} from '../util/text/Text' import * as Toast from '../util/Toast' -import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' +import {ScrollView, TextInput} from './util' export const snapPoints = ['40%'] diff --git a/src/view/com/modals/BirthDateSettings.tsx b/src/view/com/modals/BirthDateSettings.tsx index 1cab95989..dc8b914a5 100644 --- a/src/view/com/modals/BirthDateSettings.tsx +++ b/src/view/com/modals/BirthDateSettings.tsx @@ -1,3 +1,10 @@ +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {cleanError} from 'lib/strings/errors' +import {colors, s} from 'lib/styles' +import {isWeb} from 'platform/detection' import React, {useState} from 'react' import { ActivityIndicator, @@ -5,23 +12,18 @@ import { TouchableOpacity, View, } from 'react-native' -import {Text} from '../util/text/Text' -import {DateInput} from '../util/forms/DateInput' -import {ErrorMessage} from '../util/error/ErrorMessage' -import {s, colors} from 'lib/styles' -import {usePalette} from 'lib/hooks/usePalette' -import {isWeb} from 'platform/detection' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {cleanError} from 'lib/strings/errors' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' + +import {logger} from '#/logger' import {useModalControls} from '#/state/modals' import { usePreferencesQuery, - usePreferencesSetBirthDateMutation, UsePreferencesQueryResponse, + usePreferencesSetBirthDateMutation, } from '#/state/queries/preferences' -import {logger} from '#/logger' + +import {ErrorMessage} from '../util/error/ErrorMessage' +import {DateInput} from '../util/forms/DateInput' +import {Text} from '../util/text/Text' export const snapPoints = ['50%', '90%'] diff --git a/src/view/com/modals/ChangeEmail.tsx b/src/view/com/modals/ChangeEmail.tsx index c5672bc81..23d0b6f0d 100644 --- a/src/view/com/modals/ChangeEmail.tsx +++ b/src/view/com/modals/ChangeEmail.tsx @@ -1,19 +1,21 @@ -import React, {useState} from 'react' -import {ActivityIndicator, SafeAreaView, StyleSheet, View} from 'react-native' -import {ScrollView, TextInput} from './util' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import {ErrorMessage} from '../util/error/ErrorMessage' -import * as Toast from '../util/Toast' -import {s, colors} from 'lib/styles' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' import {usePalette} from 'lib/hooks/usePalette' -import {isWeb} from 'platform/detection' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {cleanError} from 'lib/strings/errors' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import {colors, s} from 'lib/styles' +import {isWeb} from 'platform/detection' +import React, {useState} from 'react' +import {ActivityIndicator, SafeAreaView, StyleSheet, View} from 'react-native' + import {useModalControls} from '#/state/modals' -import {useSession, useSessionApi, getAgent} from '#/state/session' +import {getAgent, useSession, useSessionApi} from '#/state/session' + +import {ErrorMessage} from '../util/error/ErrorMessage' +import {Button} from '../util/forms/Button' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {ScrollView, TextInput} from './util' enum Stages { InputEmail, diff --git a/src/view/com/modals/ChangeHandle.tsx b/src/view/com/modals/ChangeHandle.tsx index a43c30c29..1521b2d5c 100644 --- a/src/view/com/modals/ChangeHandle.tsx +++ b/src/view/com/modals/ChangeHandle.tsx @@ -1,38 +1,40 @@ -import React, {useState} from 'react' -import Clipboard from '@react-native-clipboard/clipboard' import {ComAtprotoServerDescribeServer} from '@atproto/api' -import * as Toast from '../util/Toast' +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import Clipboard from '@react-native-clipboard/clipboard' +import {useAnalytics} from 'lib/analytics/analytics' +import {usePalette} from 'lib/hooks/usePalette' +import {cleanError} from 'lib/strings/errors' +import {createFullHandle, makeValidHandle} from 'lib/strings/handles' +import {s} from 'lib/styles' +import {useTheme} from 'lib/ThemeContext' +import React, {useState} from 'react' import { ActivityIndicator, StyleSheet, TouchableOpacity, View, } from 'react-native' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {ScrollView, TextInput} from './util' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import {SelectableBtn} from '../util/forms/SelectableBtn' -import {ErrorMessage} from '../util/error/ErrorMessage' -import {s} from 'lib/styles' -import {createFullHandle, makeValidHandle} from 'lib/strings/handles' -import {usePalette} from 'lib/hooks/usePalette' -import {useTheme} from 'lib/ThemeContext' -import {useAnalytics} from 'lib/analytics/analytics' -import {cleanError} from 'lib/strings/errors' + import {logger} from '#/logger' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' import {useModalControls} from '#/state/modals' +import {useFetchDid, useUpdateHandleMutation} from '#/state/queries/handle' import {useServiceQuery} from '#/state/queries/service' -import {useUpdateHandleMutation, useFetchDid} from '#/state/queries/handle' import { + getAgent, + SessionAccount, useSession, useSessionApi, - SessionAccount, - getAgent, } from '#/state/session' +import {ErrorMessage} from '../util/error/ErrorMessage' +import {Button} from '../util/forms/Button' +import {SelectableBtn} from '../util/forms/SelectableBtn' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {ScrollView, TextInput} from './util' + export const snapPoints = ['100%'] export type Props = {onChanged: () => void} diff --git a/src/view/com/modals/ChangePassword.tsx b/src/view/com/modals/ChangePassword.tsx index d8add9794..ba60e5d88 100644 --- a/src/view/com/modals/ChangePassword.tsx +++ b/src/view/com/modals/ChangePassword.tsx @@ -1,3 +1,13 @@ +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import * as EmailValidator from 'email-validator' +import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {cleanError, isNetworkError} from 'lib/strings/errors' +import {checkAndFormatResetCode} from 'lib/strings/password' +import {colors, s} from 'lib/styles' +import {isAndroid, isWeb} from 'platform/detection' import React, {useState} from 'react' import { ActivityIndicator, @@ -6,24 +16,16 @@ import { TouchableOpacity, View, } from 'react-native' + +import {logger} from '#/logger' +import {useModalControls} from '#/state/modals' +import {getAgent, useSession} from '#/state/session' + +import {ErrorMessage} from '../util/error/ErrorMessage' +import {Button} from '../util/forms/Button' +import {Text} from '../util/text/Text' import {ScrollView} from './util' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {TextInput} from './util' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import {ErrorMessage} from '../util/error/ErrorMessage' -import {s, colors} from 'lib/styles' -import {usePalette} from 'lib/hooks/usePalette' -import {isAndroid, isWeb} from 'platform/detection' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {cleanError, isNetworkError} from 'lib/strings/errors' -import {checkAndFormatResetCode} from 'lib/strings/password' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {useModalControls} from '#/state/modals' -import {useSession, getAgent} from '#/state/session' -import * as EmailValidator from 'email-validator' -import {logger} from '#/logger' enum Stages { RequestCode, diff --git a/src/view/com/modals/Confirm.tsx b/src/view/com/modals/Confirm.tsx index 307897fb8..470d3cf61 100644 --- a/src/view/com/modals/Confirm.tsx +++ b/src/view/com/modals/Confirm.tsx @@ -1,3 +1,9 @@ +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {usePalette} from 'lib/hooks/usePalette' +import {cleanError} from 'lib/strings/errors' +import {colors, s} from 'lib/styles' +import {isWeb} from 'platform/detection' import React, {useState} from 'react' import { ActivityIndicator, @@ -5,17 +11,13 @@ import { TouchableOpacity, View, } from 'react-native' -import {Text} from '../util/text/Text' -import {s, colors} from 'lib/styles' -import {ErrorMessage} from '../util/error/ErrorMessage' -import {cleanError} from 'lib/strings/errors' -import {usePalette} from 'lib/hooks/usePalette' -import {isWeb} from 'platform/detection' -import {useLingui} from '@lingui/react' -import {Trans, msg} from '@lingui/macro' + import type {ConfirmModal} from '#/state/modals' import {useModalControls} from '#/state/modals' +import {ErrorMessage} from '../util/error/ErrorMessage' +import {Text} from '../util/text/Text' + export const snapPoints = ['50%'] export function Component({ diff --git a/src/view/com/modals/ContentFilteringSettings.tsx b/src/view/com/modals/ContentFilteringSettings.tsx index 328d23dc2..ed0b6dcf8 100644 --- a/src/view/com/modals/ContentFilteringSettings.tsx +++ b/src/view/com/modals/ContentFilteringSettings.tsx @@ -1,30 +1,32 @@ -import React from 'react' import {LabelPreference} from '@atproto/api' -import {StyleSheet, Pressable, View, Linking} from 'react-native' -import LinearGradient from 'react-native-linear-gradient' -import {ScrollView} from './util' -import {s, colors, gradients} from 'lib/styles' -import {Text} from '../util/text/Text' -import {TextLink} from '../util/Link' -import {ToggleButton} from '../util/forms/ToggleButton' -import {Button} from '../util/forms/Button' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' import {usePalette} from 'lib/hooks/usePalette' -import {isIOS} from 'platform/detection' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import * as Toast from '../util/Toast' +import {colors, gradients, s} from 'lib/styles' +import {isIOS} from 'platform/detection' +import React from 'react' +import {Linking, Pressable, StyleSheet, View} from 'react-native' +import LinearGradient from 'react-native-linear-gradient' + import {logger} from '#/logger' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' import {useModalControls} from '#/state/modals' import { - usePreferencesQuery, - usePreferencesSetContentLabelMutation, - usePreferencesSetAdultContentMutation, - ConfigurableLabelGroup, CONFIGURABLE_LABEL_GROUPS, + ConfigurableLabelGroup, + usePreferencesQuery, UsePreferencesQueryResponse, + usePreferencesSetAdultContentMutation, + usePreferencesSetContentLabelMutation, } from '#/state/queries/preferences' +import {Button} from '../util/forms/Button' +import {ToggleButton} from '../util/forms/ToggleButton' +import {TextLink} from '../util/Link' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {ScrollView} from './util' + export const snapPoints = ['90%'] export function Component({}: {}) { diff --git a/src/view/com/modals/CreateOrEditList.tsx b/src/view/com/modals/CreateOrEditList.tsx index 0e11fcffd..3c7618e1e 100644 --- a/src/view/com/modals/CreateOrEditList.tsx +++ b/src/view/com/modals/CreateOrEditList.tsx @@ -1,4 +1,19 @@ -import React, {useState, useCallback, useMemo} from 'react' +import { + AppBskyGraphDefs, + AppBskyRichtextFacet, + RichText as RichTextAPI, +} from '@atproto/api' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {useAnalytics} from 'lib/analytics/analytics' +import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {compressIfNeeded} from 'lib/media/manip' +import {cleanError, isNetworkError} from 'lib/strings/errors' +import {enforceLen} from 'lib/strings/helpers' +import {colors, gradients, s} from 'lib/styles' +import {useTheme} from 'lib/ThemeContext' +import React, {useCallback, useMemo, useState} from 'react' import { ActivityIndicator, KeyboardAvoidingView, @@ -8,36 +23,23 @@ import { TouchableOpacity, View, } from 'react-native' -import { - AppBskyGraphDefs, - AppBskyRichtextFacet, - RichText as RichTextAPI, -} from '@atproto/api' -import LinearGradient from 'react-native-linear-gradient' import {Image as RNImage} from 'react-native-image-crop-picker' -import {Text} from '../util/text/Text' -import {ErrorMessage} from '../util/error/ErrorMessage' -import * as Toast from '../util/Toast' -import {s, colors, gradients} from 'lib/styles' -import {enforceLen} from 'lib/strings/helpers' -import {compressIfNeeded} from 'lib/media/manip' -import {EditableUserAvatar} from '../util/UserAvatar' -import {usePalette} from 'lib/hooks/usePalette' -import {useTheme} from 'lib/ThemeContext' -import {useAnalytics} from 'lib/analytics/analytics' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {cleanError, isNetworkError} from 'lib/strings/errors' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import LinearGradient from 'react-native-linear-gradient' + +import {richTextToString} from '#/lib/strings/rich-text-helpers' +import {shortenLinks} from '#/lib/strings/rich-text-manip' import {useModalControls} from '#/state/modals' import { useListCreateMutation, useListMetadataMutation, } from '#/state/queries/list' -import {richTextToString} from '#/lib/strings/rich-text-helpers' -import {shortenLinks} from '#/lib/strings/rich-text-manip' import {getAgent} from '#/state/session' +import {ErrorMessage} from '../util/error/ErrorMessage' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {EditableUserAvatar} from '../util/UserAvatar' + const MAX_NAME = 64 // todo const MAX_DESCRIPTION = 300 // todo diff --git a/src/view/com/modals/DeleteAccount.tsx b/src/view/com/modals/DeleteAccount.tsx index 40d78cfe0..f0d2af8d2 100644 --- a/src/view/com/modals/DeleteAccount.tsx +++ b/src/view/com/modals/DeleteAccount.tsx @@ -1,27 +1,29 @@ +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {cleanError} from 'lib/strings/errors' +import {colors, gradients, s} from 'lib/styles' +import {useTheme} from 'lib/ThemeContext' +import {isAndroid} from 'platform/detection' import React from 'react' import { - SafeAreaView, ActivityIndicator, + SafeAreaView, StyleSheet, TouchableOpacity, View, } from 'react-native' -import {TextInput, ScrollView} from './util' import LinearGradient from 'react-native-linear-gradient' -import * as Toast from '../util/Toast' -import {Text} from '../util/text/Text' -import {s, colors, gradients} from 'lib/styles' -import {usePalette} from 'lib/hooks/usePalette' -import {useTheme} from 'lib/ThemeContext' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {ErrorMessage} from '../util/error/ErrorMessage' -import {cleanError} from 'lib/strings/errors' -import {resetToTab} from '../../../Navigation' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' + import {useModalControls} from '#/state/modals' -import {useSession, useSessionApi, getAgent} from '#/state/session' -import {isAndroid} from 'platform/detection' +import {getAgent, useSession, useSessionApi} from '#/state/session' + +import {resetToTab} from '../../../Navigation' +import {ErrorMessage} from '../util/error/ErrorMessage' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {ScrollView, TextInput} from './util' export const snapPoints = isAndroid ? ['90%'] : ['55%'] diff --git a/src/view/com/modals/EditImage.tsx b/src/view/com/modals/EditImage.tsx index 3b35ffee2..0b77a506a 100644 --- a/src/view/com/modals/EditImage.tsx +++ b/src/view/com/modals/EditImage.tsx @@ -1,27 +1,29 @@ -import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react' -import {Pressable, StyleSheet, View} from 'react-native' +import {MaterialIcons} from '@expo/vector-icons' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {Slider} from '@miblanchard/react-native-slider' +import {MAX_ALT_TEXT} from 'lib/constants' import {usePalette} from 'lib/hooks/usePalette' -import {useWindowDimensions} from 'react-native' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {RectTallIcon, RectWideIcon, SquareIcon} from 'lib/icons' +import {enforceLen} from 'lib/strings/helpers' import {gradients, s} from 'lib/styles' import {useTheme} from 'lib/ThemeContext' -import {Text} from '../util/text/Text' -import LinearGradient from 'react-native-linear-gradient' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {getKeys} from 'lib/type-assertions' +import {observer} from 'mobx-react-lite' +import React, {useCallback, useEffect, useMemo, useRef, useState} from 'react' import ImageEditor, {Position} from 'react-avatar-editor' -import {TextInput} from './util' -import {enforceLen} from 'lib/strings/helpers' -import {MAX_ALT_TEXT} from 'lib/constants' +import {Pressable, StyleSheet, View} from 'react-native' +import {useWindowDimensions} from 'react-native' +import LinearGradient from 'react-native-linear-gradient' import {GalleryModel} from 'state/models/media/gallery' import {ImageModel} from 'state/models/media/image' -import {SquareIcon, RectWideIcon, RectTallIcon} from 'lib/icons' -import {Slider} from '@miblanchard/react-native-slider' -import {MaterialIcons} from '@expo/vector-icons' -import {observer} from 'mobx-react-lite' -import {getKeys} from 'lib/type-assertions' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' + import {useModalControls} from '#/state/modals' +import {Text} from '../util/text/Text' +import {TextInput} from './util' + export const snapPoints = ['80%'] const RATIOS = { diff --git a/src/view/com/modals/EditProfile.tsx b/src/view/com/modals/EditProfile.tsx index 097b7b0d1..7e11e6bbc 100644 --- a/src/view/com/modals/EditProfile.tsx +++ b/src/view/com/modals/EditProfile.tsx @@ -1,5 +1,16 @@ -import React, {useState, useCallback} from 'react' -import * as Toast from '../util/Toast' +import {AppBskyActorDefs} from '@atproto/api' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {useAnalytics} from 'lib/analytics/analytics' +import {MAX_DESCRIPTION, MAX_DISPLAY_NAME} from 'lib/constants' +import {usePalette} from 'lib/hooks/usePalette' +import {compressIfNeeded} from 'lib/media/manip' +import {cleanError} from 'lib/strings/errors' +import {enforceLen} from 'lib/strings/helpers' +import {colors, gradients, s} from 'lib/styles' +import {useTheme} from 'lib/ThemeContext' +import {isWeb} from 'platform/detection' +import React, {useCallback, useState} from 'react' import { ActivityIndicator, KeyboardAvoidingView, @@ -9,28 +20,19 @@ import { TouchableOpacity, View, } from 'react-native' -import LinearGradient from 'react-native-linear-gradient' import {Image as RNImage} from 'react-native-image-crop-picker' -import {AppBskyActorDefs} from '@atproto/api' -import {Text} from '../util/text/Text' -import {ErrorMessage} from '../util/error/ErrorMessage' -import {s, colors, gradients} from 'lib/styles' -import {enforceLen} from 'lib/strings/helpers' -import {MAX_DISPLAY_NAME, MAX_DESCRIPTION} from 'lib/constants' -import {compressIfNeeded} from 'lib/media/manip' -import {UserBanner} from '../util/UserBanner' -import {EditableUserAvatar} from '../util/UserAvatar' -import {usePalette} from 'lib/hooks/usePalette' -import {useTheme} from 'lib/ThemeContext' -import {useAnalytics} from 'lib/analytics/analytics' -import {cleanError} from 'lib/strings/errors' +import LinearGradient from 'react-native-linear-gradient' import Animated, {FadeOut} from 'react-native-reanimated' -import {isWeb} from 'platform/detection' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' + +import {logger} from '#/logger' import {useModalControls} from '#/state/modals' import {useProfileUpdateMutation} from '#/state/queries/profile' -import {logger} from '#/logger' + +import {ErrorMessage} from '../util/error/ErrorMessage' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {EditableUserAvatar} from '../util/UserAvatar' +import {UserBanner} from '../util/UserBanner' const AnimatedTouchableOpacity = Animated.createAnimatedComponent(TouchableOpacity) diff --git a/src/view/com/modals/EmbedConsent.tsx b/src/view/com/modals/EmbedConsent.tsx index 04104c52e..9eaaf082a 100644 --- a/src/view/com/modals/EmbedConsent.tsx +++ b/src/view/com/modals/EmbedConsent.tsx @@ -1,20 +1,22 @@ +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {usePalette} from 'lib/hooks/usePalette' +import {colors, gradients, s} from 'lib/styles' import React from 'react' import {StyleSheet, TouchableOpacity, View} from 'react-native' import LinearGradient from 'react-native-linear-gradient' -import {s, colors, gradients} from 'lib/styles' -import {Text} from '../util/text/Text' -import {ScrollView} from './util' -import {usePalette} from 'lib/hooks/usePalette' + +import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' import { EmbedPlayerSource, embedPlayerSources, externalEmbedLabels, } from '#/lib/strings/embed-player' -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' import {useModalControls} from '#/state/modals' import {useSetExternalEmbedPref} from '#/state/preferences/external-embeds-prefs' -import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' + +import {Text} from '../util/text/Text' +import {ScrollView} from './util' export const snapPoints = [450] diff --git a/src/view/com/modals/InAppBrowserConsent.tsx b/src/view/com/modals/InAppBrowserConsent.tsx index 86bb46ca8..cc1903757 100644 --- a/src/view/com/modals/InAppBrowserConsent.tsx +++ b/src/view/com/modals/InAppBrowserConsent.tsx @@ -1,20 +1,20 @@ +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {usePalette} from 'lib/hooks/usePalette' +import {s} from 'lib/styles' import React from 'react' import {StyleSheet, View} from 'react-native' -import {s} from 'lib/styles' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import {ScrollView} from './util' -import {usePalette} from 'lib/hooks/usePalette' - -import {msg, Trans} from '@lingui/macro' -import {useLingui} from '@lingui/react' import {useModalControls} from '#/state/modals' import { useOpenLink, useSetInAppBrowser, } from '#/state/preferences/in-app-browser' +import {Button} from '../util/forms/Button' +import {Text} from '../util/text/Text' +import {ScrollView} from './util' + export const snapPoints = [350] export function Component({href}: {href: string}) { diff --git a/src/view/com/modals/InviteCodes.tsx b/src/view/com/modals/InviteCodes.tsx index c0318df01..80155e228 100644 --- a/src/view/com/modals/InviteCodes.tsx +++ b/src/view/com/modals/InviteCodes.tsx @@ -1,36 +1,38 @@ -import React from 'react' -import { - StyleSheet, - TouchableOpacity, - View, - ActivityIndicator, -} from 'react-native' import {ComAtprotoServerDefs} from '@atproto/api' import { FontAwesomeIcon, FontAwesomeIconStyle, } from '@fortawesome/react-native-fontawesome' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' import Clipboard from '@react-native-clipboard/clipboard' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import * as Toast from '../util/Toast' -import {ScrollView} from './util' import {usePalette} from 'lib/hooks/usePalette' -import {isWeb} from 'platform/detection' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {Trans, msg} from '@lingui/macro' import {cleanError} from 'lib/strings/errors' -import {useModalControls} from '#/state/modals' -import {useInvitesState, useInvitesAPI} from '#/state/invites' -import {UserInfoText} from '../util/UserInfoText' +import {isWeb} from 'platform/detection' +import React from 'react' +import { + ActivityIndicator, + StyleSheet, + TouchableOpacity, + View, +} from 'react-native' + import {makeProfileLink} from '#/lib/routes/links' -import {Link} from '../util/Link' -import {ErrorMessage} from '../util/error/ErrorMessage' +import {useInvitesAPI, useInvitesState} from '#/state/invites' +import {useModalControls} from '#/state/modals' import { - useInviteCodesQuery, InviteCodesQueryResponse, + useInviteCodesQuery, } from '#/state/queries/invites' -import {useLingui} from '@lingui/react' + +import {ErrorMessage} from '../util/error/ErrorMessage' +import {Button} from '../util/forms/Button' +import {Link} from '../util/Link' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {UserInfoText} from '../util/UserInfoText' +import {ScrollView} from './util' export const snapPoints = ['70%'] diff --git a/src/view/com/modals/LinkWarning.tsx b/src/view/com/modals/LinkWarning.tsx index 81fdc7285..1d0f1bda6 100644 --- a/src/view/com/modals/LinkWarning.tsx +++ b/src/view/com/modals/LinkWarning.tsx @@ -1,19 +1,21 @@ -import React from 'react' -import {SafeAreaView, StyleSheet, View} from 'react-native' -import {ScrollView} from './util' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import {s, colors} from 'lib/styles' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' import {usePalette} from 'lib/hooks/usePalette' -import {isWeb} from 'platform/detection' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {isPossiblyAUrl, splitApexDomain} from 'lib/strings/url-helpers' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import {colors, s} from 'lib/styles' +import {isWeb} from 'platform/detection' +import React from 'react' +import {SafeAreaView, StyleSheet, View} from 'react-native' + import {useModalControls} from '#/state/modals' import {useOpenLink} from '#/state/preferences/in-app-browser' +import {Button} from '../util/forms/Button' +import {Text} from '../util/text/Text' +import {ScrollView} from './util' + export const snapPoints = ['50%'] export function Component({text, href}: {text: string; href: string}) { diff --git a/src/view/com/modals/ListAddRemoveUsers.tsx b/src/view/com/modals/ListAddRemoveUsers.tsx index 27c33f806..eae746d2b 100644 --- a/src/view/com/modals/ListAddRemoveUsers.tsx +++ b/src/view/com/modals/ListAddRemoveUsers.tsx @@ -1,3 +1,15 @@ +import {AppBskyActorDefs, AppBskyGraphDefs} from '@atproto/api' +import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {useIsKeyboardVisible} from 'lib/hooks/useIsKeyboardVisible' +import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {sanitizeDisplayName} from 'lib/strings/display-names' +import {cleanError} from 'lib/strings/errors' +import {sanitizeHandle} from 'lib/strings/handles' +import {colors, s} from 'lib/styles' +import {isWeb} from 'platform/detection' import React, {useCallback, useState} from 'react' import { ActivityIndicator, @@ -6,33 +18,23 @@ import { StyleSheet, View, } from 'react-native' -import {AppBskyActorDefs, AppBskyGraphDefs} from '@atproto/api' -import {ScrollView, TextInput} from './util' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' -import {UserAvatar} from '../util/UserAvatar' -import * as Toast from '../util/Toast' -import {s, colors} from 'lib/styles' -import {usePalette} from 'lib/hooks/usePalette' -import {isWeb} from 'platform/detection' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {useIsKeyboardVisible} from 'lib/hooks/useIsKeyboardVisible' -import {cleanError} from 'lib/strings/errors' -import {sanitizeDisplayName} from 'lib/strings/display-names' -import {sanitizeHandle} from 'lib/strings/handles' + import {HITSLOP_20} from '#/lib/constants' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' import {useModalControls} from '#/state/modals' +import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete' import { - useDangerousListMembershipsQuery, getMembership, ListMembersip, + useDangerousListMembershipsQuery, useListMembershipAddMutation, useListMembershipRemoveMutation, } from '#/state/queries/list-memberships' -import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete' + +import {Button} from '../util/forms/Button' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {UserAvatar} from '../util/UserAvatar' +import {ScrollView, TextInput} from './util' export const snapPoints = ['90%'] diff --git a/src/view/com/modals/Modal.tsx b/src/view/com/modals/Modal.tsx index 100444ff5..fb0ea471d 100644 --- a/src/view/com/modals/Modal.tsx +++ b/src/view/com/modals/Modal.tsx @@ -1,39 +1,40 @@ -import React, {useRef, useEffect} from 'react' -import {StyleSheet} from 'react-native' -import {SafeAreaView} from 'react-native-safe-area-context' import BottomSheet from '@gorhom/bottom-sheet' -import {createCustomBackdrop} from '../util/BottomSheetCustomBackdrop' import {usePalette} from 'lib/hooks/usePalette' +import React, {useEffect, useRef} from 'react' +import {StyleSheet} from 'react-native' +import {SafeAreaView} from 'react-native-safe-area-context' -import {useModals, useModalControls} from '#/state/modals' -import * as ConfirmModal from './Confirm' -import * as EditProfileModal from './EditProfile' -import * as RepostModal from './Repost' -import * as SelfLabelModal from './SelfLabel' -import * as ThreadgateModal from './Threadgate' -import * as CreateOrEditListModal from './CreateOrEditList' -import * as UserAddRemoveListsModal from './UserAddRemoveLists' -import * as ListAddUserModal from './ListAddRemoveUsers' +import {useModalControls, useModals} from '#/state/modals' + +import {createCustomBackdrop} from '../util/BottomSheetCustomBackdrop' +import * as AddAppPassword from './AddAppPasswords' import * as AltImageModal from './AltImage' import * as EditImageModal from './AltImage' -import * as ReportModal from './report/Modal' import * as AppealLabelModal from './AppealLabel' -import * as DeleteAccountModal from './DeleteAccount' +import * as BirthDateSettingsModal from './BirthDateSettings' +import * as ChangeEmailModal from './ChangeEmail' import * as ChangeHandleModal from './ChangeHandle' -import * as InviteCodesModal from './InviteCodes' -import * as AddAppPassword from './AddAppPasswords' +import * as ChangePasswordModal from './ChangePassword' +import * as ConfirmModal from './Confirm' import * as ContentFilteringSettingsModal from './ContentFilteringSettings' +import * as CreateOrEditListModal from './CreateOrEditList' +import * as DeleteAccountModal from './DeleteAccount' +import * as EditProfileModal from './EditProfile' +import * as EmbedConsentModal from './EmbedConsent' +import * as InAppBrowserConsentModal from './InAppBrowserConsent' +import * as InviteCodesModal from './InviteCodes' import * as ContentLanguagesSettingsModal from './lang-settings/ContentLanguagesSettings' import * as PostLanguagesSettingsModal from './lang-settings/PostLanguagesSettings' +import * as LinkWarningModal from './LinkWarning' +import * as ListAddUserModal from './ListAddRemoveUsers' import * as ModerationDetailsModal from './ModerationDetails' -import * as BirthDateSettingsModal from './BirthDateSettings' -import * as VerifyEmailModal from './VerifyEmail' -import * as ChangeEmailModal from './ChangeEmail' -import * as ChangePasswordModal from './ChangePassword' +import * as ReportModal from './report/Modal' +import * as RepostModal from './Repost' +import * as SelfLabelModal from './SelfLabel' import * as SwitchAccountModal from './SwitchAccount' -import * as LinkWarningModal from './LinkWarning' -import * as EmbedConsentModal from './EmbedConsent' -import * as InAppBrowserConsentModal from './InAppBrowserConsent' +import * as ThreadgateModal from './Threadgate' +import * as UserAddRemoveListsModal from './UserAddRemoveLists' +import * as VerifyEmailModal from './VerifyEmail' const DEFAULT_SNAPPOINTS = ['90%'] const HANDLE_HEIGHT = 24 diff --git a/src/view/com/modals/Modal.web.tsx b/src/view/com/modals/Modal.web.tsx index 0ced894a1..295942dd6 100644 --- a/src/view/com/modals/Modal.web.tsx +++ b/src/view/com/modals/Modal.web.tsx @@ -1,39 +1,40 @@ -import React from 'react' -import {TouchableWithoutFeedback, StyleSheet, View} from 'react-native' -import Animated, {FadeIn, FadeOut} from 'react-native-reanimated' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {useWebBodyScrollLock} from '#/lib/hooks/useWebBodyScrollLock' +import React from 'react' +import {StyleSheet, TouchableWithoutFeedback, View} from 'react-native' +import Animated, {FadeIn, FadeOut} from 'react-native-reanimated' -import {useModals, useModalControls} from '#/state/modals' +import {useWebBodyScrollLock} from '#/lib/hooks/useWebBodyScrollLock' import type {Modal as ModalIface} from '#/state/modals' -import * as ConfirmModal from './Confirm' -import * as EditProfileModal from './EditProfile' -import * as ReportModal from './report/Modal' +import {useModalControls, useModals} from '#/state/modals' + +import * as AddAppPassword from './AddAppPasswords' +import * as AltTextImageModal from './AltImage' import * as AppealLabelModal from './AppealLabel' +import * as BirthDateSettingsModal from './BirthDateSettings' +import * as ChangeEmailModal from './ChangeEmail' +import * as ChangeHandleModal from './ChangeHandle' +import * as ChangePasswordModal from './ChangePassword' +import * as ConfirmModal from './Confirm' +import * as ContentFilteringSettingsModal from './ContentFilteringSettings' import * as CreateOrEditListModal from './CreateOrEditList' -import * as UserAddRemoveLists from './UserAddRemoveLists' -import * as ListAddUserModal from './ListAddRemoveUsers' -import * as DeleteAccountModal from './DeleteAccount' -import * as RepostModal from './Repost' -import * as SelfLabelModal from './SelfLabel' -import * as ThreadgateModal from './Threadgate' import * as CropImageModal from './crop-image/CropImage.web' -import * as AltTextImageModal from './AltImage' +import * as DeleteAccountModal from './DeleteAccount' import * as EditImageModal from './EditImage' -import * as ChangeHandleModal from './ChangeHandle' +import * as EditProfileModal from './EditProfile' +import * as EmbedConsentModal from './EmbedConsent' import * as InviteCodesModal from './InviteCodes' -import * as AddAppPassword from './AddAppPasswords' -import * as ContentFilteringSettingsModal from './ContentFilteringSettings' import * as ContentLanguagesSettingsModal from './lang-settings/ContentLanguagesSettings' import * as PostLanguagesSettingsModal from './lang-settings/PostLanguagesSettings' +import * as LinkWarningModal from './LinkWarning' +import * as ListAddUserModal from './ListAddRemoveUsers' import * as ModerationDetailsModal from './ModerationDetails' -import * as BirthDateSettingsModal from './BirthDateSettings' +import * as ReportModal from './report/Modal' +import * as RepostModal from './Repost' +import * as SelfLabelModal from './SelfLabel' +import * as ThreadgateModal from './Threadgate' +import * as UserAddRemoveLists from './UserAddRemoveLists' import * as VerifyEmailModal from './VerifyEmail' -import * as ChangeEmailModal from './ChangeEmail' -import * as ChangePasswordModal from './ChangePassword' -import * as LinkWarningModal from './LinkWarning' -import * as EmbedConsentModal from './EmbedConsent' export function ModalsContainer() { const {isModalActive, activeModals} = useModals() diff --git a/src/view/com/modals/ModerationDetails.tsx b/src/view/com/modals/ModerationDetails.tsx index f890d50dc..77b7628e6 100644 --- a/src/view/com/modals/ModerationDetails.tsx +++ b/src/view/com/modals/ModerationDetails.tsx @@ -1,17 +1,19 @@ -import React from 'react' -import {StyleSheet, View} from 'react-native' import {ModerationUI} from '@atproto/api' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {listUriToHref} from 'lib/strings/url-helpers' import {s} from 'lib/styles' -import {Text} from '../util/text/Text' -import {TextLink} from '../util/Link' -import {usePalette} from 'lib/hooks/usePalette' import {isWeb} from 'platform/detection' -import {listUriToHref} from 'lib/strings/url-helpers' -import {Button} from '../util/forms/Button' +import React from 'react' +import {StyleSheet, View} from 'react-native' + import {useModalControls} from '#/state/modals' -import {useLingui} from '@lingui/react' -import {Trans, msg} from '@lingui/macro' + +import {Button} from '../util/forms/Button' +import {TextLink} from '../util/Link' +import {Text} from '../util/text/Text' export const snapPoints = [300] diff --git a/src/view/com/modals/Repost.tsx b/src/view/com/modals/Repost.tsx index 6e4881adc..a052979dd 100644 --- a/src/view/com/modals/Repost.tsx +++ b/src/view/com/modals/Repost.tsx @@ -1,15 +1,17 @@ +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 {RepostIcon} from 'lib/icons' +import {colors, gradients, s} from 'lib/styles' import React from 'react' import {StyleSheet, TouchableOpacity, View} from 'react-native' import LinearGradient from 'react-native-linear-gradient' -import {s, colors, gradients} from 'lib/styles' -import {Text} from '../util/text/Text' -import {usePalette} from 'lib/hooks/usePalette' -import {RepostIcon} from 'lib/icons' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' + import {useModalControls} from '#/state/modals' +import {Text} from '../util/text/Text' + export const snapPoints = [250] export function Component({ diff --git a/src/view/com/modals/SelfLabel.tsx b/src/view/com/modals/SelfLabel.tsx index 779a9e71b..a79a90d37 100644 --- a/src/view/com/modals/SelfLabel.tsx +++ b/src/view/com/modals/SelfLabel.tsx @@ -1,17 +1,19 @@ -import React, {useState} from 'react' -import {StyleSheet, TouchableOpacity, View} from 'react-native' -import {Text} from '../util/text/Text' -import {s, colors} from 'lib/styles' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {colors, s} from 'lib/styles' import {isWeb} from 'platform/detection' -import {Button} from '../util/forms/Button' -import {SelectableBtn} from '../util/forms/SelectableBtn' +import React, {useState} from 'react' +import {StyleSheet, TouchableOpacity, View} from 'react-native' import {ScrollView} from 'view/com/modals/util' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' + import {useModalControls} from '#/state/modals' +import {Button} from '../util/forms/Button' +import {SelectableBtn} from '../util/forms/SelectableBtn' +import {Text} from '../util/text/Text' + const ADULT_CONTENT_LABELS = ['sexual', 'nudity', 'porn'] export const snapPoints = ['50%'] diff --git a/src/view/com/modals/SwitchAccount.tsx b/src/view/com/modals/SwitchAccount.tsx index c034c4b52..220aba43f 100644 --- a/src/view/com/modals/SwitchAccount.tsx +++ b/src/view/com/modals/SwitchAccount.tsx @@ -1,3 +1,12 @@ +import {BottomSheetScrollView} from '@gorhom/bottom-sheet' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {useAnalytics} from 'lib/analytics/analytics' +import {Haptics} from 'lib/haptics' +import {useAccountSwitcher} from 'lib/hooks/useAccountSwitcher' +import {usePalette} from 'lib/hooks/usePalette' +import {makeProfileLink} from 'lib/routes/links' +import {s} from 'lib/styles' import React from 'react' import { ActivityIndicator, @@ -5,23 +14,16 @@ import { TouchableOpacity, View, } from 'react-native' -import {Text} from '../util/text/Text' -import {s} from 'lib/styles' -import {usePalette} from 'lib/hooks/usePalette' -import {useAnalytics} from 'lib/analytics/analytics' -import {useAccountSwitcher} from 'lib/hooks/useAccountSwitcher' -import {UserAvatar} from '../util/UserAvatar' -import {AccountDropdownBtn} from '../util/AccountDropdownBtn' -import {Link} from '../util/Link' -import {makeProfileLink} from 'lib/routes/links' -import {BottomSheetScrollView} from '@gorhom/bottom-sheet' -import {Haptics} from 'lib/haptics' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {useSession, useSessionApi, SessionAccount} from '#/state/session' + import {useProfileQuery} from '#/state/queries/profile' +import {SessionAccount, useSession, useSessionApi} from '#/state/session' import {useCloseAllActiveElements} from '#/state/util' +import {AccountDropdownBtn} from '../util/AccountDropdownBtn' +import {Link} from '../util/Link' +import {Text} from '../util/text/Text' +import {UserAvatar} from '../util/UserAvatar' + export const snapPoints = ['40%', '90%'] function SwitchAccountCard({account}: {account: SessionAccount}) { diff --git a/src/view/com/modals/Threadgate.tsx b/src/view/com/modals/Threadgate.tsx index 0e49fc2f3..b7661c428 100644 --- a/src/view/com/modals/Threadgate.tsx +++ b/src/view/com/modals/Threadgate.tsx @@ -1,3 +1,10 @@ +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 {colors, s} from 'lib/styles' +import isEqual from 'lodash.isequal' +import {isWeb} from 'platform/detection' import React, {useState} from 'react' import { Pressable, @@ -7,18 +14,13 @@ import { View, ViewStyle, } from 'react-native' -import {Text} from '../util/text/Text' -import {s, colors} from 'lib/styles' -import {usePalette} from 'lib/hooks/usePalette' -import {isWeb} from 'platform/detection' import {ScrollView} from 'view/com/modals/util' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' + import {useModalControls} from '#/state/modals' -import {ThreadgateSetting} from '#/state/queries/threadgate' import {useMyListsQuery} from '#/state/queries/my-lists' -import isEqual from 'lodash.isequal' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' +import {ThreadgateSetting} from '#/state/queries/threadgate' + +import {Text} from '../util/text/Text' export const snapPoints = ['60%'] diff --git a/src/view/com/modals/UserAddRemoveLists.tsx b/src/view/com/modals/UserAddRemoveLists.tsx index 8452f2513..ff5dfea1d 100644 --- a/src/view/com/modals/UserAddRemoveLists.tsx +++ b/src/view/com/modals/UserAddRemoveLists.tsx @@ -1,3 +1,11 @@ +import {AppBskyGraphDefs as GraphDefs} from '@atproto/api' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {usePalette} from 'lib/hooks/usePalette' +import {sanitizeDisplayName} from 'lib/strings/display-names' +import {sanitizeHandle} from 'lib/strings/handles' +import {s} from 'lib/styles' +import {isAndroid, isMobileWeb, isWeb} from 'platform/detection' import React, {useCallback} from 'react' import { ActivityIndicator, @@ -5,30 +13,24 @@ import { useWindowDimensions, View, } from 'react-native' -import {AppBskyGraphDefs as GraphDefs} from '@atproto/api' -import {Text} from '../util/text/Text' -import {UserAvatar} from '../util/UserAvatar' -import {MyLists} from '../lists/MyLists' -import {Button} from '../util/forms/Button' -import * as Toast from '../util/Toast' -import {sanitizeDisplayName} from 'lib/strings/display-names' -import {sanitizeHandle} from 'lib/strings/handles' -import {s} from 'lib/styles' -import {usePalette} from 'lib/hooks/usePalette' -import {isWeb, isAndroid, isMobileWeb} from 'platform/detection' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' + +import {cleanError} from '#/lib/strings/errors' import {useModalControls} from '#/state/modals' import { - useDangerousListMembershipsQuery, getMembership, ListMembersip, + useDangerousListMembershipsQuery, useListMembershipAddMutation, useListMembershipRemoveMutation, } from '#/state/queries/list-memberships' -import {cleanError} from '#/lib/strings/errors' import {useSession} from '#/state/session' +import {MyLists} from '../lists/MyLists' +import {Button} from '../util/forms/Button' +import {Text} from '../util/text/Text' +import * as Toast from '../util/Toast' +import {UserAvatar} from '../util/UserAvatar' + export const snapPoints = ['fullscreen'] export function Component({ diff --git a/src/view/com/modals/VerifyEmail.tsx b/src/view/com/modals/VerifyEmail.tsx index 30a57afc5..8c8c64ad9 100644 --- a/src/view/com/modals/VerifyEmail.tsx +++ b/src/view/com/modals/VerifyEmail.tsx @@ -1,3 +1,11 @@ +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 {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {cleanError} from 'lib/strings/errors' +import {colors, s} from 'lib/styles' +import {isWeb} from 'platform/detection' import React, {useState} from 'react' import { ActivityIndicator, @@ -6,23 +14,17 @@ import { StyleSheet, View, } from 'react-native' -import {Svg, Circle, Path} from 'react-native-svg' -import {ScrollView, TextInput} from './util' -import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {Text} from '../util/text/Text' -import {Button} from '../util/forms/Button' +import {Circle, Path, Svg} from 'react-native-svg' + +import {logger} from '#/logger' +import {useModalControls} from '#/state/modals' +import {getAgent, useSession, useSessionApi} from '#/state/session' + import {ErrorMessage} from '../util/error/ErrorMessage' +import {Button} from '../util/forms/Button' +import {Text} from '../util/text/Text' import * as Toast from '../util/Toast' -import {s, colors} from 'lib/styles' -import {usePalette} from 'lib/hooks/usePalette' -import {isWeb} from 'platform/detection' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {cleanError} from 'lib/strings/errors' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {useModalControls} from '#/state/modals' -import {useSession, useSessionApi, getAgent} from '#/state/session' -import {logger} from '#/logger' +import {ScrollView, TextInput} from './util' export const snapPoints = ['90%'] diff --git a/src/view/com/modals/crop-image/CropImage.web.tsx b/src/view/com/modals/crop-image/CropImage.web.tsx index 6f094a1fd..9c42d9532 100644 --- a/src/view/com/modals/crop-image/CropImage.web.tsx +++ b/src/view/com/modals/crop-image/CropImage.web.tsx @@ -1,17 +1,18 @@ -import React from 'react' -import {StyleSheet, TouchableOpacity, View} from 'react-native' -import ImageEditor from 'react-avatar-editor' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' import {Slider} from '@miblanchard/react-native-slider' -import LinearGradient from 'react-native-linear-gradient' -import {Text} from 'view/com/util/text/Text' +import {usePalette} from 'lib/hooks/usePalette' +import {RectTallIcon, RectWideIcon, SquareIcon} from 'lib/icons' import {Dimensions} from 'lib/media/types' import {getDataUriSize} from 'lib/media/util' -import {s, gradients} from 'lib/styles' -import {usePalette} from 'lib/hooks/usePalette' -import {SquareIcon, RectWideIcon, RectTallIcon} from 'lib/icons' +import {gradients, s} from 'lib/styles' +import React from 'react' +import ImageEditor from 'react-avatar-editor' +import {StyleSheet, TouchableOpacity, View} from 'react-native' import {Image as RNImage} from 'react-native-image-crop-picker' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import LinearGradient from 'react-native-linear-gradient' +import {Text} from 'view/com/util/text/Text' + import {useModalControls} from '#/state/modals' enum AspectRatio { diff --git a/src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx b/src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx index 91e11a19c..ce462d072 100644 --- a/src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx +++ b/src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx @@ -1,11 +1,11 @@ -import React from 'react' -import {StyleSheet, Text, View, Pressable} from 'react-native' -import LinearGradient from 'react-native-linear-gradient' -import {s, colors, gradients} from 'lib/styles' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' +import {colors, gradients, s} from 'lib/styles' +import React from 'react' +import {Pressable, StyleSheet, Text, View} from 'react-native' +import LinearGradient from 'react-native-linear-gradient' export const ConfirmLanguagesButton = ({ onPress, diff --git a/src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx b/src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx index b8c125b65..52863b2a8 100644 --- a/src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx +++ b/src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx @@ -1,20 +1,22 @@ -import React from 'react' -import {StyleSheet, View} from 'react-native' -import {ScrollView} from '../util' -import {Text} from '../../util/text/Text' +import {Trans} from '@lingui/macro' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {deviceLocales} from 'platform/detection' -import {LANGUAGES, LANGUAGES_MAP_CODE2} from '../../../../locale/languages' -import {LanguageToggle} from './LanguageToggle' -import {ConfirmLanguagesButton} from './ConfirmLanguagesButton' -import {Trans} from '@lingui/macro' +import React from 'react' +import {StyleSheet, View} from 'react-native' + import {useModalControls} from '#/state/modals' import { useLanguagePrefs, useLanguagePrefsApi, } from '#/state/preferences/languages' +import {LANGUAGES, LANGUAGES_MAP_CODE2} from '../../../../locale/languages' +import {Text} from '../../util/text/Text' +import {ScrollView} from '../util' +import {ConfirmLanguagesButton} from './ConfirmLanguagesButton' +import {LanguageToggle} from './LanguageToggle' + export const snapPoints = ['100%'] export function Component({}: {}) { diff --git a/src/view/com/modals/lang-settings/LanguageToggle.tsx b/src/view/com/modals/lang-settings/LanguageToggle.tsx index 45b100f20..3d6513701 100644 --- a/src/view/com/modals/lang-settings/LanguageToggle.tsx +++ b/src/view/com/modals/lang-settings/LanguageToggle.tsx @@ -1,8 +1,9 @@ +import {usePalette} from 'lib/hooks/usePalette' import React from 'react' import {StyleSheet} from 'react-native' -import {usePalette} from 'lib/hooks/usePalette' import {ToggleButton} from 'view/com/util/forms/ToggleButton' -import {useLanguagePrefs, toPostLanguages} from '#/state/preferences/languages' + +import {toPostLanguages, useLanguagePrefs} from '#/state/preferences/languages' export function LanguageToggle({ code2, diff --git a/src/view/com/modals/lang-settings/PostLanguagesSettings.tsx b/src/view/com/modals/lang-settings/PostLanguagesSettings.tsx index 05cfb8115..49a209759 100644 --- a/src/view/com/modals/lang-settings/PostLanguagesSettings.tsx +++ b/src/view/com/modals/lang-settings/PostLanguagesSettings.tsx @@ -1,21 +1,23 @@ -import React from 'react' -import {StyleSheet, View} from 'react-native' -import {ScrollView} from '../util' -import {Text} from '../../util/text/Text' +import {Trans} from '@lingui/macro' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {deviceLocales} from 'platform/detection' -import {LANGUAGES, LANGUAGES_MAP_CODE2} from '../../../../locale/languages' -import {ConfirmLanguagesButton} from './ConfirmLanguagesButton' +import React from 'react' +import {StyleSheet, View} from 'react-native' import {ToggleButton} from 'view/com/util/forms/ToggleButton' -import {Trans} from '@lingui/macro' + import {useModalControls} from '#/state/modals' import { + hasPostLanguage, useLanguagePrefs, useLanguagePrefsApi, - hasPostLanguage, } from '#/state/preferences/languages' +import {LANGUAGES, LANGUAGES_MAP_CODE2} from '../../../../locale/languages' +import {Text} from '../../util/text/Text' +import {ScrollView} from '../util' +import {ConfirmLanguagesButton} from './ConfirmLanguagesButton' + export const snapPoints = ['100%'] export function Component() { diff --git a/src/view/com/modals/report/InputIssueDetails.tsx b/src/view/com/modals/report/InputIssueDetails.tsx index 2bc86f75e..e353da56f 100644 --- a/src/view/com/modals/report/InputIssueDetails.tsx +++ b/src/view/com/modals/report/InputIssueDetails.tsx @@ -1,15 +1,16 @@ -import React from 'react' -import {View, TouchableOpacity, StyleSheet} from 'react-native' -import {TextInput} from '../util' import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' -import {CharProgress} from '../../composer/char-progress/CharProgress' -import {Text} from '../../util/text/Text' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {s} from 'lib/styles' +import React from 'react' +import {StyleSheet, TouchableOpacity, View} from 'react-native' + +import {CharProgress} from '../../composer/char-progress/CharProgress' +import {Text} from '../../util/text/Text' +import {TextInput} from '../util' import {SendReportButton} from './SendReportButton' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' export function InputIssueDetails({ details, diff --git a/src/view/com/modals/report/Modal.tsx b/src/view/com/modals/report/Modal.tsx index abbad9b40..3540b8b02 100644 --- a/src/view/com/modals/report/Modal.tsx +++ b/src/view/com/modals/report/Modal.tsx @@ -1,22 +1,24 @@ -import React, {useState, useMemo} from 'react' -import {Linking, StyleSheet, TouchableOpacity, View} from 'react-native' -import {ScrollView} from 'react-native-gesture-handler' import {AtUri} from '@atproto/api' +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {cleanError} from 'lib/strings/errors' import {s} from 'lib/styles' +import React, {useMemo, useState} from 'react' +import {Linking, StyleSheet, TouchableOpacity, View} from 'react-native' +import {ScrollView} from 'react-native-gesture-handler' + +import {useModalControls} from '#/state/modals' +import {getAgent} from '#/state/session' + +import {ErrorMessage} from '../../util/error/ErrorMessage' import {Text} from '../../util/text/Text' import * as Toast from '../../util/Toast' -import {ErrorMessage} from '../../util/error/ErrorMessage' -import {cleanError} from 'lib/strings/errors' -import {usePalette} from 'lib/hooks/usePalette' -import {SendReportButton} from './SendReportButton' import {InputIssueDetails} from './InputIssueDetails' import {ReportReasonOptions} from './ReasonOptions' +import {SendReportButton} from './SendReportButton' import {CollectionId} from './types' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' -import {useModalControls} from '#/state/modals' -import {getAgent} from '#/state/session' const DMCA_LINK = 'https://bsky.social/about/support/copyright' diff --git a/src/view/com/modals/report/ReasonOptions.tsx b/src/view/com/modals/report/ReasonOptions.tsx index 23b49b664..3ed7bb79d 100644 --- a/src/view/com/modals/report/ReasonOptions.tsx +++ b/src/view/com/modals/report/ReasonOptions.tsx @@ -1,10 +1,10 @@ -import {View} from 'react-native' -import React, {useMemo} from 'react' import {AtUri, ComAtprotoModerationDefs} from '@atproto/api' +import {usePalette, UsePaletteValue} from 'lib/hooks/usePalette' +import React, {useMemo} from 'react' +import {View} from 'react-native' +import {RadioGroup, RadioGroupItem} from 'view/com/util/forms/RadioGroup' import {Text} from '../../util/text/Text' -import {UsePaletteValue, usePalette} from 'lib/hooks/usePalette' -import {RadioGroup, RadioGroupItem} from 'view/com/util/forms/RadioGroup' import {CollectionId} from './types' type ReasonMap = Record<string, {title: string; description: string}> diff --git a/src/view/com/modals/report/SendReportButton.tsx b/src/view/com/modals/report/SendReportButton.tsx index 40c239bff..eeda20b84 100644 --- a/src/view/com/modals/report/SendReportButton.tsx +++ b/src/view/com/modals/report/SendReportButton.tsx @@ -1,15 +1,16 @@ +import {msg, Trans} from '@lingui/macro' +import {useLingui} from '@lingui/react' +import {colors, gradients, s} from 'lib/styles' import React from 'react' -import LinearGradient from 'react-native-linear-gradient' import { ActivityIndicator, StyleSheet, TouchableOpacity, View, } from 'react-native' +import LinearGradient from 'react-native-linear-gradient' + import {Text} from '../../util/text/Text' -import {s, gradients, colors} from 'lib/styles' -import {Trans, msg} from '@lingui/macro' -import {useLingui} from '@lingui/react' export function SendReportButton({ onPress, |