From 91bc7039645d7ce7dfbe9d3982cf571fea05afb5 Mon Sep 17 00:00:00 2001 From: Eric Bailey Date: Thu, 15 Feb 2024 13:24:26 -0600 Subject: [PATCH] Clean up ProfileMod screen --- src/components/Loader.tsx | 8 +- .../ProfileModerationService/index.tsx | 76 ++++++++----------- src/state/queries/modservice.ts | 8 +- 3 files changed, 43 insertions(+), 49 deletions(-) diff --git a/src/components/Loader.tsx b/src/components/Loader.tsx index bbe4e2f75c..031af03775 100644 --- a/src/components/Loader.tsx +++ b/src/components/Loader.tsx @@ -7,11 +7,12 @@ import Animated, { withTiming, } from 'react-native-reanimated' -import {atoms as a} from '#/alf' +import {atoms as a, useTheme} from '#/alf' import {Props, useCommonSVGProps} from '#/components/icons/common' import {Loader_Stroke2_Corner0_Rounded as Icon} from '#/components/icons/Loader' export function Loader(props: Props) { + const t = useTheme() const common = useCommonSVGProps(props) const rotation = useSharedValue(0) @@ -35,7 +36,10 @@ export function Loader(props: Props) { {width: common.size, height: common.size}, animatedStyles, ]}> - + ) } diff --git a/src/screens/ProfileModerationService/index.tsx b/src/screens/ProfileModerationService/index.tsx index 854990b33f..938fe9c476 100644 --- a/src/screens/ProfileModerationService/index.tsx +++ b/src/screens/ProfileModerationService/index.tsx @@ -1,9 +1,10 @@ import React from 'react' -import {Dimensions, View} from 'react-native' +import {View} from 'react-native' import {NativeStackScreenProps} from '@react-navigation/native-stack' import {AppBskyModerationDefs} from '@atproto/api' import {Trans, msg} from '@lingui/macro' import {useLingui} from '@lingui/react' +import {useSafeAreaFrame} from 'react-native-safe-area-context' import {usePalette} from '#/lib/hooks/usePalette' import {CommonNavigatorParams} from '#/lib/routes/types' @@ -45,17 +46,32 @@ import {ErrorState} from '#/screens/ProfileModerationService/ErrorState' import {Header} from '#/screens/ProfileModerationService/Header' import {PreferenceRow} from '#/screens/ProfileModerationService/PreferenceRow' -// TODO -const MIN_HEIGHT = Dimensions.get('window').height * 1.5 -// TODO loader default color - export function ProfileModserviceScreen( props: NativeStackScreenProps, ) { const t = useTheme() const {_} = useLingui() + const {height: minHeight} = useSafeAreaFrame() const {name: handleOrDid} = props.route.params - const {isLoading, error, data: resolvedDid} = useResolveDidQuery(handleOrDid) + const { + isLoading: isDidResolutionLoading, + error: didResolutionError, + data: did, + } = useResolveDidQuery(handleOrDid) + const { + isLoading: isPreferencesLoading, + error: preferencesError, + data: preferences, + } = usePreferencesQuery() + const { + isLoading: isModServiceLoading, + error: modServiceError, + data: modservice, + } = useModServiceInfoQuery({did}) + + const isLoading = + isDidResolutionLoading || isPreferencesLoading || isModServiceLoading + const error = didResolutionError || preferencesError || modServiceError return ( @@ -65,60 +81,31 @@ export function ProfileModserviceScreen( a.border_r, t.atoms.border_contrast_low, { - minHeight: MIN_HEIGHT, + minHeight, }, ]}> {isLoading ? ( - + - ) : resolvedDid ? ( - - ) : ( + ) : error || !(did && preferences && modservice) ? ( + ) : ( + )} ) } -function ProfileModservicecreenIntermediate({modDid}: {modDid: string}) { - const t = useTheme() - const {_} = useLingui() - const { - isLoading: isPreferencesLoading, - error: preferencesError, - data: preferences, - } = usePreferencesQuery() - const { - isLoading: isModServiceLoading, - error: modServiceError, - data: info, - } = useModServiceInfoQuery({did: modDid}) - - const isLoading = isPreferencesLoading || isModServiceLoading - const error = preferencesError || modServiceError - - return isLoading ? ( - - - - ) : preferences && info ? ( - - ) : ( - - ) -} - export function ProfileModserviceScreenInner({ preferences, modservice, @@ -128,6 +115,7 @@ export function ProfileModserviceScreenInner({ }) { const t = useTheme() const {_} = useLingui() + const {height: minHeight} = useSafeAreaFrame() const pal = usePalette('default') const {hasSession} = useSession() const {track} = useAnalytics() @@ -178,7 +166,7 @@ export function ProfileModserviceScreenInner({ diff --git a/src/state/queries/modservice.ts b/src/state/queries/modservice.ts index 73ebedf6f5..4a4ebf674e 100644 --- a/src/state/queries/modservice.ts +++ b/src/state/queries/modservice.ts @@ -15,12 +15,14 @@ export const modServicesDetailedInfoQueryKey = (dids: string[]) => [ dids, ] -export function useModServiceInfoQuery({did}: {did: string}) { +export function useModServiceInfoQuery({did}: {did?: string}) { return useQuery({ enabled: !!did, - queryKey: modServiceInfoQueryKey(did), + queryKey: modServiceInfoQueryKey(did as string), queryFn: async () => { - const res = await getAgent().app.bsky.moderation.getService({did}) + const res = await getAgent().app.bsky.moderation.getService({ + did: did as string, + }) return res.data }, })