diff options
Diffstat (limited to 'src/view/com/modals')
-rw-r--r-- | src/view/com/modals/AddAppPasswords.tsx | 4 | ||||
-rw-r--r-- | src/view/com/modals/AltImage.tsx | 8 | ||||
-rw-r--r-- | src/view/com/modals/Confirm.tsx | 4 | ||||
-rw-r--r-- | src/view/com/modals/ContentFilteringSettings.tsx | 22 | ||||
-rw-r--r-- | src/view/com/modals/CreateOrEditMuteList.tsx | 13 | ||||
-rw-r--r-- | src/view/com/modals/DeleteAccount.tsx | 5 | ||||
-rw-r--r-- | src/view/com/modals/EditImage.tsx | 35 | ||||
-rw-r--r-- | src/view/com/modals/InviteCodes.tsx | 4 | ||||
-rw-r--r-- | src/view/com/modals/ListAddRemoveUser.tsx | 4 | ||||
-rw-r--r-- | src/view/com/modals/Modal.web.tsx | 5 | ||||
-rw-r--r-- | src/view/com/modals/ModerationDetails.tsx | 19 | ||||
-rw-r--r-- | src/view/com/modals/SelfLabel.tsx | 18 | ||||
-rw-r--r-- | src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx | 15 | ||||
-rw-r--r-- | src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx | 28 | ||||
-rw-r--r-- | src/view/com/modals/lang-settings/PostLanguagesSettings.tsx | 28 | ||||
-rw-r--r-- | src/view/com/modals/report/InputIssueDetails.tsx | 11 | ||||
-rw-r--r-- | src/view/com/modals/report/Modal.tsx | 29 |
17 files changed, 167 insertions, 85 deletions
diff --git a/src/view/com/modals/AddAppPasswords.tsx b/src/view/com/modals/AddAppPasswords.tsx index 6117924ae..2a8672131 100644 --- a/src/view/com/modals/AddAppPasswords.tsx +++ b/src/view/com/modals/AddAppPasswords.tsx @@ -5,7 +5,7 @@ import {Button} from '../util/forms/Button' import {s} from 'lib/styles' import {useStores} from 'state/index' import {usePalette} from 'lib/hooks/usePalette' -import {isDesktopWeb} from 'platform/detection' +import {isNative} from 'platform/detection' import { FontAwesomeIcon, FontAwesomeIconStyle, @@ -205,7 +205,7 @@ export function Component({}: {}) { const styles = StyleSheet.create({ container: { flex: 1, - paddingBottom: isDesktopWeb ? 0 : 50, + paddingBottom: isNative ? 50 : 0, paddingHorizontal: 16, }, textInputWrapper: { diff --git a/src/view/com/modals/AltImage.tsx b/src/view/com/modals/AltImage.tsx index e1145a0fe..c084e84a3 100644 --- a/src/view/com/modals/AltImage.tsx +++ b/src/view/com/modals/AltImage.tsx @@ -18,7 +18,7 @@ import {useTheme} from 'lib/ThemeContext' import {Text} from '../util/text/Text' import LinearGradient from 'react-native-linear-gradient' import {useStores} from 'state/index' -import {isDesktopWeb, isAndroid} from 'platform/detection' +import {isAndroid, isWeb} from 'platform/detection' import {ImageModel} from 'state/models/media/image' export const snapPoints = ['fullscreen'] @@ -35,7 +35,7 @@ export function Component({image}: Props) { const windim = useWindowDimensions() const imageStyles = useMemo<ImageStyle>(() => { - const maxWidth = isDesktopWeb ? 450 : windim.width + const maxWidth = isWeb ? 450 : windim.width if (image.height > image.width) { return { resizeMode: 'contain', @@ -137,12 +137,12 @@ const styles = StyleSheet.create({ flex: 1, height: '100%', width: '100%', - paddingVertical: isDesktopWeb ? 0 : 18, + paddingVertical: isWeb ? 0 : 18, }, scrollContainer: { flex: 1, height: '100%', - paddingHorizontal: isDesktopWeb ? 0 : 12, + paddingHorizontal: isWeb ? 0 : 12, }, scrollInner: { gap: 12, diff --git a/src/view/com/modals/Confirm.tsx b/src/view/com/modals/Confirm.tsx index f9bc0de14..270177182 100644 --- a/src/view/com/modals/Confirm.tsx +++ b/src/view/com/modals/Confirm.tsx @@ -11,7 +11,7 @@ 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 {isDesktopWeb} from 'platform/detection' +import {isWeb} from 'platform/detection' import type {ConfirmModal} from 'state/models/ui/shell' export const snapPoints = ['50%'] @@ -96,7 +96,7 @@ const styles = StyleSheet.create({ container: { flex: 1, padding: 10, - paddingBottom: isDesktopWeb ? 0 : 60, + paddingBottom: isWeb ? 0 : 60, }, title: { textAlign: 'center', diff --git a/src/view/com/modals/ContentFilteringSettings.tsx b/src/view/com/modals/ContentFilteringSettings.tsx index f39351feb..588b21353 100644 --- a/src/view/com/modals/ContentFilteringSettings.tsx +++ b/src/view/com/modals/ContentFilteringSettings.tsx @@ -11,13 +11,15 @@ import {TextLink} from '../util/Link' import {ToggleButton} from '../util/forms/ToggleButton' import {usePalette} from 'lib/hooks/usePalette' import {CONFIGURABLE_LABEL_GROUPS} from 'lib/labeling/const' -import {isDesktopWeb, isIOS} from 'platform/detection' +import {isIOS} from 'platform/detection' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import * as Toast from '../util/Toast' export const snapPoints = ['90%'] export const Component = observer(({}: {}) => { const store = useStores() + const {isMobile} = useWebMediaQueries() const pal = usePalette('default') React.useEffect(() => { @@ -88,9 +90,14 @@ export const Component = observer(({}: {}) => { <ContentLabelPref group="hate" /> <ContentLabelPref group="spam" /> <ContentLabelPref group="impersonation" /> - <View style={styles.bottomSpacer} /> + <View style={{height: isMobile ? 60 : 0}} /> </ScrollView> - <View style={[styles.btnContainer, pal.borderDark]}> + <View + style={[ + styles.btnContainer, + isMobile && styles.btnContainerMobile, + pal.borderDark, + ]}> <Pressable testID="sendReportBtn" onPress={onPressDone} @@ -259,14 +266,13 @@ const styles = StyleSheet.create({ flex: 1, paddingHorizontal: 10, }, - bottomSpacer: { - height: isDesktopWeb ? 0 : 60, - }, btnContainer: { paddingTop: 10, paddingHorizontal: 10, - paddingBottom: isDesktopWeb ? 0 : 40, - borderTopWidth: isDesktopWeb ? 0 : 1, + }, + btnContainerMobile: { + paddingBottom: 40, + borderTopWidth: 1, }, contentLabelPref: { diff --git a/src/view/com/modals/CreateOrEditMuteList.tsx b/src/view/com/modals/CreateOrEditMuteList.tsx index 09048b5db..3f3cfc5f0 100644 --- a/src/view/com/modals/CreateOrEditMuteList.tsx +++ b/src/view/com/modals/CreateOrEditMuteList.tsx @@ -22,8 +22,8 @@ import {UserAvatar} 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 {isDesktopWeb} from 'platform/detection' const MAX_NAME = 64 // todo const MAX_DESCRIPTION = 300 // todo @@ -38,6 +38,7 @@ export function Component({ list?: ListModel }) { const store = useStores() + const {isMobile} = useWebMediaQueries() const [error, setError] = useState<string>('') const pal = usePalette('default') const theme = useTheme() @@ -130,7 +131,12 @@ export function Component({ return ( <KeyboardAvoidingView behavior="height"> <ScrollView - style={[pal.view, styles.container]} + style={[ + pal.view, + { + paddingHorizontal: isMobile ? 16 : 0, + }, + ]} testID="createOrEditMuteListModal"> <Text style={[styles.title, pal.text]}> {list ? 'Edit Mute List' : 'New Mute List'} @@ -226,9 +232,6 @@ export function Component({ } const styles = StyleSheet.create({ - container: { - paddingHorizontal: isDesktopWeb ? 0 : 16, - }, title: { textAlign: 'center', fontWeight: 'bold', diff --git a/src/view/com/modals/DeleteAccount.tsx b/src/view/com/modals/DeleteAccount.tsx index b4933a1f2..98482457c 100644 --- a/src/view/com/modals/DeleteAccount.tsx +++ b/src/view/com/modals/DeleteAccount.tsx @@ -13,10 +13,10 @@ import {useStores} from 'state/index' 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 {isDesktopWeb} from 'platform/detection' export const snapPoints = ['60%'] @@ -24,6 +24,7 @@ export function Component({}: {}) { const pal = usePalette('default') const theme = useTheme() const store = useStores() + const {isMobile} = useWebMediaQueries() const [isEmailSent, setIsEmailSent] = React.useState<boolean>(false) const [confirmCode, setConfirmCode] = React.useState<string>('') const [password, setPassword] = React.useState<string>('') @@ -78,7 +79,7 @@ export function Component({}: {}) { type="title-xl" numberOfLines={1} style={[ - isDesktopWeb ? styles.titleDesktop : styles.titleMobile, + isMobile ? styles.titleMobile : styles.titleDesktop, pal.text, s.bold, ]}> diff --git a/src/view/com/modals/EditImage.tsx b/src/view/com/modals/EditImage.tsx index a4e06b955..e4cfbac35 100644 --- a/src/view/com/modals/EditImage.tsx +++ b/src/view/com/modals/EditImage.tsx @@ -7,6 +7,7 @@ import {useTheme} from 'lib/ThemeContext' import {Text} from '../util/text/Text' import LinearGradient from 'react-native-linear-gradient' import {useStores} from 'state/index' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import ImageEditor, {Position} from 'react-avatar-editor' import {TextInput} from './util' import {enforceLen} from 'lib/strings/helpers' @@ -18,7 +19,6 @@ 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 {isDesktopWeb} from 'platform/detection' export const snapPoints = ['80%'] @@ -51,6 +51,7 @@ export const Component = observer(function ({image, gallery}: Props) { const theme = useTheme() const store = useStores() const windowDimensions = useWindowDimensions() + const {isMobile} = useWebMediaQueries() const { aspectRatio, @@ -174,19 +175,28 @@ export const Component = observer(function ({image, gallery}: Props) { const computedWidth = windowDimensions.width > 500 ? 410 : windowDimensions.width - 80 - const sideLength = isDesktopWeb ? 300 : computedWidth + const sideLength = isMobile ? computedWidth : 300 const dimensions = image.getResizedDimensions(aspectRatio, sideLength) const imgContainerStyles = {width: sideLength, height: sideLength} const imgControlStyles = { alignItems: 'center' as const, - flexDirection: isDesktopWeb ? ('row' as const) : ('column' as const), - gap: isDesktopWeb ? 5 : 0, + flexDirection: isMobile ? ('column' as const) : ('row' as const), + gap: isMobile ? 0 : 5, } return ( - <View testID="editImageModal" style={[pal.view, styles.container, s.flex1]}> + <View + testID="editImageModal" + style={[ + pal.view, + styles.container, + s.flex1, + { + paddingHorizontal: isMobile ? 16 : undefined, + }, + ]}> <Text style={[styles.title, pal.text]}>Edit image</Text> <View style={[styles.gap18, s.flexRow]}> <View> @@ -213,7 +223,7 @@ export const Component = observer(function ({image, gallery}: Props) { /> </View> <View> - {isDesktopWeb ? ( + {!isMobile ? ( <Text type="sm-bold" style={pal.text}> Ratios </Text> @@ -248,7 +258,7 @@ export const Component = observer(function ({image, gallery}: Props) { ) })} </View> - {isDesktopWeb ? ( + {!isMobile ? ( <Text type="sm-bold" style={[pal.text, styles.subsection]}> Transformations </Text> @@ -282,7 +292,14 @@ export const Component = observer(function ({image, gallery}: Props) { </Text> <TextInput testID="altTextImageInput" - style={[styles.textArea, pal.border, pal.text]} + style={[ + styles.textArea, + pal.border, + pal.text, + { + maxHeight: isMobile ? 50 : undefined, + }, + ]} keyboardAppearance={theme.colorScheme} multiline value={altText} @@ -317,7 +334,6 @@ export const Component = observer(function ({image, gallery}: Props) { const styles = StyleSheet.create({ container: { gap: 18, - paddingHorizontal: isDesktopWeb ? undefined : 16, height: '100%', width: '100%', }, @@ -369,7 +385,6 @@ const styles = StyleSheet.create({ fontSize: 16, height: 100, textAlignVertical: 'top', - maxHeight: isDesktopWeb ? undefined : 50, }, bottomSection: { borderTopWidth: 1, diff --git a/src/view/com/modals/InviteCodes.tsx b/src/view/com/modals/InviteCodes.tsx index d46579f09..ba3cc382b 100644 --- a/src/view/com/modals/InviteCodes.tsx +++ b/src/view/com/modals/InviteCodes.tsx @@ -12,7 +12,7 @@ import * as Toast from '../util/Toast' import {useStores} from 'state/index' import {ScrollView} from './util' import {usePalette} from 'lib/hooks/usePalette' -import {isDesktopWeb} from 'platform/detection' +import {isWeb} from 'platform/detection' export const snapPoints = ['70%'] @@ -127,7 +127,7 @@ const InviteCode = observer( const styles = StyleSheet.create({ container: { flex: 1, - paddingBottom: isDesktopWeb ? 0 : 50, + paddingBottom: isWeb ? 0 : 50, }, title: { textAlign: 'center', diff --git a/src/view/com/modals/ListAddRemoveUser.tsx b/src/view/com/modals/ListAddRemoveUser.tsx index bfb7e4dc0..e00509285 100644 --- a/src/view/com/modals/ListAddRemoveUser.tsx +++ b/src/view/com/modals/ListAddRemoveUser.tsx @@ -19,7 +19,7 @@ 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 {isDesktopWeb, isAndroid} from 'platform/detection' +import {isWeb, isAndroid} from 'platform/detection' import isEqual from 'lodash.isequal' export const snapPoints = ['fullscreen'] @@ -231,7 +231,7 @@ export const Component = observer( const styles = StyleSheet.create({ container: { - paddingHorizontal: isDesktopWeb ? 0 : 16, + paddingHorizontal: isWeb ? 0 : 16, }, title: { textAlign: 'center', diff --git a/src/view/com/modals/Modal.web.tsx b/src/view/com/modals/Modal.web.tsx index 5cfdd6bb3..b3a79221d 100644 --- a/src/view/com/modals/Modal.web.tsx +++ b/src/view/com/modals/Modal.web.tsx @@ -3,8 +3,8 @@ import {TouchableWithoutFeedback, StyleSheet, View} from 'react-native' import {observer} from 'mobx-react-lite' import {useStores} from 'state/index' import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import type {Modal as ModalIface} from 'state/models/ui/shell' -import {isMobileWeb} from 'platform/detection' import * as ConfirmModal from './Confirm' import * as EditProfileModal from './EditProfile' @@ -47,6 +47,7 @@ export const ModalsContainer = observer(function ModalsContainer() { function Modal({modal}: {modal: ModalIface}) { const store = useStores() const pal = usePalette('default') + const {isMobile} = useWebMediaQueries() if (!store.shell.isModalActive) { return null @@ -119,7 +120,7 @@ function Modal({modal}: {modal: ModalIface}) { <View style={[ styles.container, - isMobileWeb && styles.containerMobile, + isMobile && styles.containerMobile, pal.view, pal.border, ]}> diff --git a/src/view/com/modals/ModerationDetails.tsx b/src/view/com/modals/ModerationDetails.tsx index b0e68e61b..bd51845c6 100644 --- a/src/view/com/modals/ModerationDetails.tsx +++ b/src/view/com/modals/ModerationDetails.tsx @@ -2,11 +2,12 @@ import React from 'react' import {StyleSheet, View} from 'react-native' import {ModerationUI} from '@atproto/api' import {useStores} from 'state/index' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {s} from 'lib/styles' import {Text} from '../util/text/Text' import {TextLink} from '../util/Link' import {usePalette} from 'lib/hooks/usePalette' -import {isDesktopWeb} from 'platform/detection' +import {isWeb} from 'platform/detection' import {listUriToHref} from 'lib/strings/url-helpers' import {Button} from '../util/forms/Button' @@ -20,6 +21,7 @@ export function Component({ moderation: ModerationUI }) { const store = useStores() + const {isMobile} = useWebMediaQueries() const pal = usePalette('default') let name @@ -64,7 +66,15 @@ export function Component({ } return ( - <View testID="moderationDetailsModal" style={[styles.container, pal.view]}> + <View + testID="moderationDetailsModal" + style={[ + styles.container, + { + paddingHorizontal: isMobile ? 14 : 0, + }, + pal.view, + ]}> <Text type="title-xl" style={[pal.text, styles.title]}> {name} </Text> @@ -87,7 +97,6 @@ export function Component({ const styles = StyleSheet.create({ container: { flex: 1, - paddingHorizontal: isDesktopWeb ? 0 : 14, }, title: { textAlign: 'center', @@ -99,7 +108,7 @@ const styles = StyleSheet.create({ }, btn: { paddingVertical: 14, - marginTop: isDesktopWeb ? 40 : 0, - marginBottom: isDesktopWeb ? 0 : 40, + marginTop: isWeb ? 40 : 0, + marginBottom: isWeb ? 0 : 40, }, }) diff --git a/src/view/com/modals/SelfLabel.tsx b/src/view/com/modals/SelfLabel.tsx index 42863fd33..820f2895b 100644 --- a/src/view/com/modals/SelfLabel.tsx +++ b/src/view/com/modals/SelfLabel.tsx @@ -5,7 +5,8 @@ import {Text} from '../util/text/Text' import {useStores} from 'state/index' import {s, colors} from 'lib/styles' import {usePalette} from 'lib/hooks/usePalette' -import {isDesktopWeb} from 'platform/detection' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {isWeb} from 'platform/detection' import {Button} from '../util/forms/Button' import {SelectableBtn} from '../util/forms/SelectableBtn' import {ScrollView} from 'view/com/modals/util' @@ -25,6 +26,7 @@ export const Component = observer(function Component({ }) { const pal = usePalette('default') const store = useStores() + const {isMobile} = useWebMediaQueries() const [selected, setSelected] = useState(labels) const toggleAdultLabel = (label: string) => { @@ -54,7 +56,12 @@ export const Component = observer(function Component({ </View> <ScrollView> - <View style={[styles.section, pal.border, {borderBottomWidth: 1}]}> + <View + style={[ + styles.section, + pal.border, + {borderBottomWidth: 1, paddingHorizontal: isMobile ? 20 : 0}, + ]}> <View style={{ flexDirection: 'row', @@ -152,11 +159,11 @@ export const Component = observer(function Component({ const styles = StyleSheet.create({ container: { flex: 1, - paddingBottom: isDesktopWeb ? 0 : 40, + paddingBottom: isWeb ? 0 : 40, }, titleSection: { - paddingTop: isDesktopWeb ? 0 : 4, - paddingBottom: isDesktopWeb ? 14 : 10, + paddingTop: isWeb ? 0 : 4, + paddingBottom: isWeb ? 14 : 10, }, title: { textAlign: 'center', @@ -170,7 +177,6 @@ const styles = StyleSheet.create({ section: { borderTopWidth: 1, paddingVertical: 20, - paddingHorizontal: isDesktopWeb ? 0 : 20, }, adultExplainer: { paddingLeft: 5, diff --git a/src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx b/src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx index e1ecce589..c2d0c222a 100644 --- a/src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx +++ b/src/view/com/modals/lang-settings/ConfirmLanguagesButton.tsx @@ -2,8 +2,8 @@ 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 {isDesktopWeb} from 'platform/detection' import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' export const ConfirmLanguagesButton = ({ onPress, @@ -13,8 +13,17 @@ export const ConfirmLanguagesButton = ({ extraText?: string }) => { const pal = usePalette('default') + const {isMobile} = useWebMediaQueries() return ( - <View style={[styles.btnContainer, pal.borderDark]}> + <View + style={[ + styles.btnContainer, + pal.borderDark, + isMobile && { + paddingBottom: 40, + borderTopWidth: 1, + }, + ]}> <Pressable testID="confirmContentLanguagesBtn" onPress={onPress} @@ -37,8 +46,6 @@ const styles = StyleSheet.create({ btnContainer: { paddingTop: 10, paddingHorizontal: 10, - paddingBottom: isDesktopWeb ? 0 : 40, - borderTopWidth: isDesktopWeb ? 0 : 1, }, btn: { flexDirection: 'row', diff --git a/src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx b/src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx index 4f7bbc9c7..e577991c5 100644 --- a/src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx +++ b/src/view/com/modals/lang-settings/ContentLanguagesSettings.tsx @@ -4,7 +4,8 @@ import {ScrollView} from '../util' import {useStores} from 'state/index' import {Text} from '../../util/text/Text' import {usePalette} from 'lib/hooks/usePalette' -import {isDesktopWeb, deviceLocales} from 'platform/detection' +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' @@ -14,6 +15,7 @@ export const snapPoints = ['100%'] export function Component({}: {}) { const store = useStores() const pal = usePalette('default') + const {isMobile} = useWebMediaQueries() const onPressDone = React.useCallback(() => { store.shell.closeModal() }, [store]) @@ -47,7 +49,19 @@ export function Component({}: {}) { ) return ( - <View testID="contentLanguagesModal" style={[pal.view, styles.container]}> + <View + testID="contentLanguagesModal" + style={[ + pal.view, + styles.container, + isMobile + ? { + paddingTop: 20, + } + : { + maxHeight: '90vh', + }, + ]}> <Text style={[pal.text, styles.title]}>Content Languages</Text> <Text style={[pal.text, styles.description]}> Which languages would you like to see in your algorithmic feeds? @@ -67,7 +81,11 @@ export function Component({}: {}) { }} /> ))} - <View style={styles.bottomSpacer} /> + <View + style={{ + height: isMobile ? 60 : 0, + }} + /> </ScrollView> <ConfirmLanguagesButton onPress={onPressDone} /> </View> @@ -77,7 +95,6 @@ export function Component({}: {}) { const styles = StyleSheet.create({ container: { flex: 1, - paddingTop: 20, }, title: { textAlign: 'center', @@ -94,7 +111,4 @@ const styles = StyleSheet.create({ flex: 1, paddingHorizontal: 10, }, - bottomSpacer: { - height: isDesktopWeb ? 0 : 60, - }, }) diff --git a/src/view/com/modals/lang-settings/PostLanguagesSettings.tsx b/src/view/com/modals/lang-settings/PostLanguagesSettings.tsx index 0f336e7bc..c80f8731c 100644 --- a/src/view/com/modals/lang-settings/PostLanguagesSettings.tsx +++ b/src/view/com/modals/lang-settings/PostLanguagesSettings.tsx @@ -5,7 +5,8 @@ import {ScrollView} from '../util' import {useStores} from 'state/index' import {Text} from '../../util/text/Text' import {usePalette} from 'lib/hooks/usePalette' -import {isDesktopWeb, deviceLocales} from 'platform/detection' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' +import {deviceLocales} from 'platform/detection' import {LANGUAGES, LANGUAGES_MAP_CODE2} from '../../../../locale/languages' import {ConfirmLanguagesButton} from './ConfirmLanguagesButton' import {ToggleButton} from 'view/com/util/forms/ToggleButton' @@ -15,6 +16,7 @@ export const snapPoints = ['100%'] export const Component = observer(() => { const store = useStores() const pal = usePalette('default') + const {isMobile} = useWebMediaQueries() const onPressDone = React.useCallback(() => { store.shell.closeModal() }, [store]) @@ -48,7 +50,19 @@ export const Component = observer(() => { ) return ( - <View testID="postLanguagesModal" style={[pal.view, styles.container]}> + <View + testID="postLanguagesModal" + style={[ + pal.view, + styles.container, + isMobile + ? { + paddingTop: 20, + } + : { + maxHeight: '90vh', + }, + ]}> <Text style={[pal.text, styles.title]}>Post Languages</Text> <Text style={[pal.text, styles.description]}> Which languages are used in this post? @@ -80,7 +94,11 @@ export const Component = observer(() => { /> ) })} - <View style={styles.bottomSpacer} /> + <View + style={{ + height: isMobile ? 60 : 0, + }} + /> </ScrollView> <ConfirmLanguagesButton onPress={onPressDone} /> </View> @@ -90,7 +108,6 @@ export const Component = observer(() => { const styles = StyleSheet.create({ container: { flex: 1, - paddingTop: 20, }, title: { textAlign: 'center', @@ -107,9 +124,6 @@ const styles = StyleSheet.create({ flex: 1, paddingHorizontal: 10, }, - bottomSpacer: { - height: isDesktopWeb ? 0 : 60, - }, languageToggle: { borderTopWidth: 1, borderRadius: 0, diff --git a/src/view/com/modals/report/InputIssueDetails.tsx b/src/view/com/modals/report/InputIssueDetails.tsx index a2e5069a8..70a8f7b24 100644 --- a/src/view/com/modals/report/InputIssueDetails.tsx +++ b/src/view/com/modals/report/InputIssueDetails.tsx @@ -5,9 +5,9 @@ import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import {CharProgress} from '../../composer/char-progress/CharProgress' import {Text} from '../../util/text/Text' import {usePalette} from 'lib/hooks/usePalette' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {s} from 'lib/styles' import {SendReportButton} from './SendReportButton' -import {isDesktopWeb} from 'platform/detection' export function InputIssueDetails({ details, @@ -23,9 +23,13 @@ export function InputIssueDetails({ isProcessing: boolean }) { const pal = usePalette('default') + const {isMobile} = useWebMediaQueries() return ( - <View style={[styles.detailsContainer]}> + <View + style={{ + marginTop: isMobile ? 12 : 0, + }}> <TouchableOpacity testID="addDetailsBtn" style={[s.mb10, styles.backBtn]} @@ -63,9 +67,6 @@ export function InputIssueDetails({ } const styles = StyleSheet.create({ - detailsContainer: { - marginTop: isDesktopWeb ? 0 : 12, - }, backBtn: { flexDirection: 'row', alignItems: 'center', diff --git a/src/view/com/modals/report/Modal.tsx b/src/view/com/modals/report/Modal.tsx index f386b110d..8aabe0871 100644 --- a/src/view/com/modals/report/Modal.tsx +++ b/src/view/com/modals/report/Modal.tsx @@ -3,6 +3,7 @@ import {Linking, StyleSheet, TouchableOpacity, View} from 'react-native' import {ScrollView} from 'react-native-gesture-handler' import {AtUri} from '@atproto/api' import {useStores} from 'state/index' +import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {s} from 'lib/styles' import {Text} from '../../util/text/Text' import * as Toast from '../../util/Toast' @@ -37,6 +38,7 @@ type ReportComponentProps = export function Component(content: ReportComponentProps) { const store = useStores() const pal = usePalette('default') + const {isMobile} = useWebMediaQueries() const [isProcessing, setIsProcessing] = useState(false) const [showDetailsInput, setShowDetailsInput] = useState(false) const [error, setError] = useState<string>() @@ -87,7 +89,13 @@ export function Component(content: ReportComponentProps) { return ( <ScrollView testID="reportModal" style={[s.flex1, pal.view]}> - <View style={styles.container}> + <View + style={[ + styles.container, + isMobile && { + paddingBottom: 40, + }, + ]}> {showDetailsInput ? ( <InputIssueDetails details={details} @@ -153,16 +161,14 @@ const SelectIssue = ({ <Text style={[pal.textLight, styles.description]}> What is the issue with this {collectionName}? </Text> - <ReportReasonOptions - atUri={atUri} - selectedIssue={issue} - onSelectIssue={onSelectIssue} - /> - {error ? ( - <View style={s.mt10}> - <ErrorMessage message={error} /> - </View> - ) : undefined} + <View style={{marginBottom: 10}}> + <ReportReasonOptions + atUri={atUri} + selectedIssue={issue} + onSelectIssue={onSelectIssue} + /> + </View> + {error ? <ErrorMessage message={error} /> : undefined} {/* If no atUri is present, the report would be for account in which case, we allow sending without specifying a reason */} {issue || !atUri ? ( <> @@ -188,7 +194,6 @@ const SelectIssue = ({ const styles = StyleSheet.create({ container: { paddingHorizontal: 10, - paddingBottom: 40, }, title: { textAlign: 'center', |