From 6a63c9055400666dbc1aa311e249f69498a164cc Mon Sep 17 00:00:00 2001 From: LJ <81748770+elle-j@users.noreply.github.com> Date: Mon, 30 Oct 2023 15:43:10 +0100 Subject: [PATCH 1/8] Move 'deleteUser' responsibility to 'useDemoSyncTriggers'. --- .../frontend/app/hooks/useDemoSyncTriggers.ts | 16 +++++++++++++++- .../frontend/app/screens/StoreScreen.tsx | 9 +++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/examples/rn-connection-and-error/frontend/app/hooks/useDemoSyncTriggers.ts b/examples/rn-connection-and-error/frontend/app/hooks/useDemoSyncTriggers.ts index 57cff39594..91fbb08859 100644 --- a/examples/rn-connection-and-error/frontend/app/hooks/useDemoSyncTriggers.ts +++ b/examples/rn-connection-and-error/frontend/app/hooks/useDemoSyncTriggers.ts @@ -18,7 +18,7 @@ import {useCallback, useEffect, useState} from 'react'; import {BSON, ConnectionState, UserState} from 'realm'; -import {useRealm, useUser} from '@realm/react'; +import {useApp, useRealm, useUser} from '@realm/react'; import {Store} from '../models/Store'; import {logger} from '../utils/logger'; @@ -37,6 +37,7 @@ let mostRecentAccessToken: string | null = null; * You can also add a listener to the App (via `useApp()`). */ export function useDemoSyncTriggers() { + const app = useApp(); const realm = useRealm(); const currentUser = useUser(); const [isConnected, setIsConnected] = useState(true); @@ -147,6 +148,18 @@ export function useDemoSyncTriggers() { await currentUser.refreshCustomData(); }, [currentUser]); + /** + * Trigger the user event listener by removing the user from the app. + */ + const deleteUser = useCallback(() => { + // TODO: Update to use only `deleteUser`. + // We currently call both `deleteUser` (deletes from server and client) and + // `removeUser` (deletes from client) due to a bug in `deleteUser` where the + // `currentUser` is not updated to `null`. + app.deleteUser(currentUser); + app.removeUser(currentUser); + }, [app, currentUser]); + useEffect(() => { /** * The user listener - Will be invoked on various user related events including @@ -196,5 +209,6 @@ export function useDemoSyncTriggers() { triggerSyncError, triggerClientReset, refreshAccessToken, + deleteUser, }; } diff --git a/examples/rn-connection-and-error/frontend/app/screens/StoreScreen.tsx b/examples/rn-connection-and-error/frontend/app/screens/StoreScreen.tsx index c27b814015..647dde6d56 100644 --- a/examples/rn-connection-and-error/frontend/app/screens/StoreScreen.tsx +++ b/examples/rn-connection-and-error/frontend/app/screens/StoreScreen.tsx @@ -18,7 +18,7 @@ import React from 'react'; import {Alert, FlatList, StyleSheet, Text, View} from 'react-native'; -import {useAuth, useApp, useUser} from '@realm/react'; +import {useAuth, useUser} from '@realm/react'; import {Button} from '../components/Button'; import {KioskItem} from '../components/KioskItem'; @@ -41,10 +41,10 @@ export function StoreScreen() { triggerSyncError, triggerClientReset, refreshAccessToken, + deleteUser, } = useDemoSyncTriggers(); const {logOut} = useAuth(); const user = useUser(); - const app = useApp(); return ( @@ -119,10 +119,7 @@ export function StoreScreen() { />