diff options
author | Hailey <me@haileyok.com> | 2024-02-08 12:01:36 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-08 12:01:36 -0800 |
commit | 1de1d10cf6b823f075112f8f938963c95b7fd3ba (patch) | |
tree | fceff40ee49a96167b858938d4dc75790d6b7130 /src | |
parent | 4041db31e23fef216b93aa3b6e312836b7146b90 (diff) | |
download | voidsky-1de1d10cf6b823f075112f8f938963c95b7fd3ba.tar.zst |
Fix error screen on native, use `Not Found` for profile errors instead of `Oops!` (#2789)
* remove unnecessary `<CenterView>` * show back header on profile error * use `Not Found` instead of `Oops` for account errors * use `Not Found` instead of `Oops` for account errors
Diffstat (limited to 'src')
-rw-r--r-- | src/view/com/modals/ProfilePreview.tsx | 2 | ||||
-rw-r--r-- | src/view/com/util/error/ErrorScreen.tsx | 98 | ||||
-rw-r--r-- | src/view/screens/Profile.tsx | 31 |
3 files changed, 69 insertions, 62 deletions
diff --git a/src/view/com/modals/ProfilePreview.tsx b/src/view/com/modals/ProfilePreview.tsx index 88b0df71d..1764b6b90 100644 --- a/src/view/com/modals/ProfilePreview.tsx +++ b/src/view/com/modals/ProfilePreview.tsx @@ -46,7 +46,7 @@ export function Component({did}: {did: string}) { if (profileError) { return ( <ErrorScreen - title={_(msg`Oops!`)} + title={_(msg`Not Found`)} message={cleanError(profileError)} onPressTryAgain={refetchProfile} /> diff --git a/src/view/com/util/error/ErrorScreen.tsx b/src/view/com/util/error/ErrorScreen.tsx index 45444331c..98fe6437b 100644 --- a/src/view/com/util/error/ErrorScreen.tsx +++ b/src/view/com/util/error/ErrorScreen.tsx @@ -11,6 +11,8 @@ import {Button} from '../forms/Button' 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, @@ -18,66 +20,72 @@ export function ErrorScreen({ details, onPressTryAgain, testID, + showHeader, }: { title: string message: string details?: string onPressTryAgain?: () => void testID?: string + showHeader?: boolean }) { const theme = useTheme() + const {isMobile} = useWebMediaQueries() const pal = usePalette('default') const {_} = useLingui() return ( - <CenteredView testID={testID} style={[styles.outer, pal.view]}> - <View style={styles.errorIconContainer}> - <View - style={[ - styles.errorIcon, - {backgroundColor: theme.palette.inverted.background}, - ]}> - <FontAwesomeIcon - icon="exclamation" - style={pal.textInverted as FontAwesomeIconStyle} - size={24} - /> - </View> - </View> - <Text type="title-lg" style={[styles.title, pal.text]}> - {title} - </Text> - <Text style={[styles.message, pal.text]}>{message}</Text> - {details && ( - <Text - testID={`${testID}-details`} - style={[styles.details, pal.text, pal.viewLight]}> - {details} - </Text> - )} - {onPressTryAgain && ( - <View style={styles.btnContainer}> - <Button - testID="errorScreenTryAgainButton" - type="default" - style={[styles.btn]} - onPress={onPressTryAgain} - accessibilityLabel={_(msg`Retry`)} - accessibilityHint={_( - msg`Retries the last action, which errored out`, - )}> + <> + {showHeader && isMobile && <ViewHeader title="Error" showBorder />} + <CenteredView testID={testID} style={[styles.outer, pal.view]}> + <View style={styles.errorIconContainer}> + <View + style={[ + styles.errorIcon, + {backgroundColor: theme.palette.inverted.background}, + ]}> <FontAwesomeIcon - icon="arrows-rotate" - style={pal.link as FontAwesomeIconStyle} - size={16} + icon="exclamation" + style={pal.textInverted as FontAwesomeIconStyle} + size={24} /> - <Text type="button" style={[styles.btnText, pal.link]}> - <Trans context="action">Try again</Trans> - </Text> - </Button> + </View> </View> - )} - </CenteredView> + <Text type="title-lg" style={[styles.title, pal.text]}> + {title} + </Text> + <Text style={[styles.message, pal.text]}>{message}</Text> + {details && ( + <Text + testID={`${testID}-details`} + style={[styles.details, pal.text, pal.viewLight]}> + {details} + </Text> + )} + {onPressTryAgain && ( + <View style={styles.btnContainer}> + <Button + testID="errorScreenTryAgainButton" + type="default" + style={[styles.btn]} + onPress={onPressTryAgain} + accessibilityLabel={_(msg`Retry`)} + accessibilityHint={_( + msg`Retries the last action, which errored out`, + )}> + <FontAwesomeIcon + icon="arrows-rotate" + style={pal.link as FontAwesomeIconStyle} + size={16} + /> + <Text type="button" style={[styles.btnText, pal.link]}> + <Trans context="action">Try again</Trans> + </Text> + </Button> + </View> + )} + </CenteredView> + </> ) } diff --git a/src/view/screens/Profile.tsx b/src/view/screens/Profile.tsx index 6d0f15d81..cc54ad3b2 100644 --- a/src/view/screens/Profile.tsx +++ b/src/view/screens/Profile.tsx @@ -50,6 +50,7 @@ interface SectionRef { type Props = NativeStackScreenProps<CommonNavigatorParams, 'Profile'> export function ProfileScreen({route}: Props) { + const {_} = useLingui() const {currentAccount} = useSession() const name = route.params.name === 'me' ? currentAccount?.did : route.params.name @@ -97,14 +98,13 @@ export function ProfileScreen({route}: Props) { } if (resolveError || profileError) { return ( - <CenteredView> - <ErrorScreen - testID="profileErrorScreen" - title="Oops!" - message={cleanError(resolveError || profileError)} - onPressTryAgain={onPressTryAgain} - /> - </CenteredView> + <ErrorScreen + testID="profileErrorScreen" + title={profileError ? _(msg`Not Found`) : _(msg`Oops!`)} + message={cleanError(resolveError || profileError)} + onPressTryAgain={onPressTryAgain} + showHeader + /> ) } if (profile && moderationOpts) { @@ -118,14 +118,13 @@ export function ProfileScreen({route}: Props) { } // should never happen return ( - <CenteredView> - <ErrorScreen - testID="profileErrorScreen" - title="Oops!" - message="Something went wrong and we're not sure what." - onPressTryAgain={onPressTryAgain} - /> - </CenteredView> + <ErrorScreen + testID="profileErrorScreen" + title="Oops!" + message="Something went wrong and we're not sure what." + onPressTryAgain={onPressTryAgain} + showHeader + /> ) } |