From 210ab4e2df109914e7ae3fedd7b2b9458d4cdd47 Mon Sep 17 00:00:00 2001 From: sepeterson <10458078+sepeterson@users.noreply.github.com> Date: Wed, 17 Jun 2026 16:17:40 -0500 Subject: [PATCH 1/7] MOB-967: add account settings entry point to UserProfile --- .../Settings/LoggedInDefaultSettings.tsx | 95 +--------------- src/components/UserProfile/UserProfile.tsx | 43 +++++--- .../useNavigateToAccountSettings.ts | 103 ++++++++++++++++++ 3 files changed, 137 insertions(+), 104 deletions(-) create mode 100644 src/sharedHooks/useNavigateToAccountSettings.ts diff --git a/src/components/Settings/LoggedInDefaultSettings.tsx b/src/components/Settings/LoggedInDefaultSettings.tsx index 8c365bb75..168e8a6e7 100644 --- a/src/components/Settings/LoggedInDefaultSettings.tsx +++ b/src/components/Settings/LoggedInDefaultSettings.tsx @@ -1,11 +1,3 @@ -import { - useNetInfo, -} from "@react-native-community/netinfo"; -import { useFocusEffect, useNavigation } from "@react-navigation/native"; -import { useQueryClient } from "@tanstack/react-query"; -import { - signOut, -} from "components/LoginSignUp/AuthenticationService"; import { ActivityIndicator, Body2, @@ -13,65 +5,32 @@ import { Heading4, } from "components/SharedComponents"; import { RealmContext } from "providers/contexts"; -import React, { useCallback, useEffect, useState } from "react"; +import React, { useEffect, useState } from "react"; import { - Alert, View, } from "react-native"; -import Config from "react-native-config"; -import { EventRegister } from "react-native-event-listeners"; import QueueItem from "realmModels/QueueItem"; import { - useLayoutPrefs, useTranslation, useUserMe, } from "sharedHooks"; +import useNavigateToAccountSettings from "sharedHooks/useNavigateToAccountSettings"; import LanguageSetting from "./LanguageSetting"; import TaxonNamesSetting from "./TaxonNamesSetting"; const { useRealm } = RealmContext; -const SETTINGS_URL = `${Config.OAUTH_API_URL}/users/edit?noh1=true`; -const FINISHED_WEB_SETTINGS = "finished-web-settings"; - const LoggedInDefaultSettings = ( ) => { const realm = useRealm( ); - const { isConnected } = useNetInfo( ); - const navigation = useNavigation( ); const { t } = useTranslation( ); const { remoteUser, isLoading, refetchUserMe, } = useUserMe( { updateRealm: false } ); - const { - setIsDefaultMode, - } = useLayoutPrefs(); const [settings, setSettings] = useState( {} ); const [isSaving, setIsSaving] = useState( false ); - const [showingWebViewSettings, setShowingWebViewSettings] = useState( false ); - useFocusEffect( - useCallback( () => { - if ( showingWebViewSettings ) { - // When we get back from the webview of settings - in case the user updated their profile - // photo or other details - refetchUserMe(); - setShowingWebViewSettings( false ); - } - }, [showingWebViewSettings, refetchUserMe] ), - ); - - const confirmInternetConnection = useCallback( ( ) => { - if ( !isConnected ) { - Alert.alert( - t( "Internet-Connection-Required" ), - t( "Please-try-again-when-you-are-connected-to-the-internet" ), - ); - } - return isConnected; - }, [t, isConnected] ); - - const queryClient = useQueryClient(); + const navigateToAccountSettings = useNavigateToAccountSettings( { onFinish: refetchUserMe } ); useEffect( () => { if ( remoteUser ) { @@ -81,18 +40,6 @@ const LoggedInDefaultSettings = ( ) => { } }, [remoteUser, realm] ); - // Listen for the webview to finish so we can fetch the updates users/me - // response - useEffect( ( ) => { - const listener = EventRegister.addEventListener( - FINISHED_WEB_SETTINGS, - refetchUserMe, - ); - return ( ) => { - EventRegister?.removeEventListener( listener ); - }; - }, [refetchUserMe] ); - return ( {( isSaving || isLoading ) && ( @@ -143,41 +90,7 @@ const LoggedInDefaultSettings = ( ) => {