From 004664a53e08da537765243077f5029b354dcd35 Mon Sep 17 00:00:00 2001 From: IRBorisov <8611739+IRBorisov@users.noreply.github.com> Date: Fri, 11 Aug 2023 15:53:18 +0300 Subject: [PATCH] Fix LibraryContext update when user changes --- rsconcept/frontend/src/context/AuthContext.tsx | 8 ++++++-- rsconcept/frontend/src/context/LibraryContext.tsx | 13 +++++++++---- rsconcept/frontend/src/context/UsersContext.tsx | 11 +++++++---- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/rsconcept/frontend/src/context/AuthContext.tsx b/rsconcept/frontend/src/context/AuthContext.tsx index 9d91d31b..95203090 100644 --- a/rsconcept/frontend/src/context/AuthContext.tsx +++ b/rsconcept/frontend/src/context/AuthContext.tsx @@ -58,7 +58,9 @@ export const AuthState = ({ children }: AuthStateProps) => { showError: true, setLoading: setLoading, onError: error => { setError(error); }, - onSuccess: newData => reload(() => { if (callback) callback(newData); }) + onSuccess: newData => reload(() => { + if (callback) callback(newData); + }) }); } @@ -66,7 +68,9 @@ export const AuthState = ({ children }: AuthStateProps) => { setError(undefined); postLogout({ showError: true, - onSuccess: newData => reload(() => { if (callback) callback(newData); }) + onSuccess: newData => reload(() => { + if (callback) callback(newData); + }) }); } diff --git a/rsconcept/frontend/src/context/LibraryContext.tsx b/rsconcept/frontend/src/context/LibraryContext.tsx index 4f1567d9..8a4b14d9 100644 --- a/rsconcept/frontend/src/context/LibraryContext.tsx +++ b/rsconcept/frontend/src/context/LibraryContext.tsx @@ -3,6 +3,7 @@ import { createContext, useCallback, useContext, useEffect, useState } from 'rea import { ErrorInfo } from '../components/BackendError'; import { DataCallback, getLibrary, postNewRSForm } from '../utils/backendAPI'; import { ILibraryFilter, IRSFormCreateData, IRSFormMeta, matchRSFormMeta } from '../utils/models'; +import { useAuth } from './AuthContext'; interface ILibraryContext { items: IRSFormMeta[] @@ -11,7 +12,7 @@ interface ILibraryContext { error: ErrorInfo setError: (error: ErrorInfo) => void - reload: () => void + reload: (callback?: () => void) => void filter: (params: ILibraryFilter) => IRSFormMeta[] createSchema: (data: IRSFormCreateData, callback?: DataCallback) => void } @@ -36,6 +37,7 @@ export const LibraryState = ({ children }: LibraryStateProps) => { const [ loading, setLoading ] = useState(false); const [ processing, setProcessing ] = useState(false); const [ error, setError ] = useState(undefined); + const { user } = useAuth(); const filter = useCallback( (params: ILibraryFilter) => { @@ -53,20 +55,23 @@ export const LibraryState = ({ children }: LibraryStateProps) => { }, [items]); const reload = useCallback( - () => { + (callback?: () => void) => { setItems([]); setError(undefined); getLibrary({ setLoading: setLoading, showError: true, onError: (error) => setError(error), - onSuccess: newData => { setItems(newData); } + onSuccess: newData => { + setItems(newData); + if (callback) callback(); + } }); }, []); useEffect(() => { reload(); - }, [reload]); + }, [reload, user]); const createSchema = useCallback( (data: IRSFormCreateData, callback?: DataCallback) => { diff --git a/rsconcept/frontend/src/context/UsersContext.tsx b/rsconcept/frontend/src/context/UsersContext.tsx index 3c783540..f14c817e 100644 --- a/rsconcept/frontend/src/context/UsersContext.tsx +++ b/rsconcept/frontend/src/context/UsersContext.tsx @@ -5,7 +5,7 @@ import { type IUserInfo } from '../utils/models'; interface IUsersContext { users: IUserInfo[] - reload: () => void + reload: (callback?: () => void) => void getUserLabel: (userID: number | null) => string } @@ -47,11 +47,14 @@ export const UsersState = ({ children }: UsersStateProps) => { } const reload = useCallback( - () => { + (callback?: () => void) => { getActiveUsers({ showError: true, - onError: () => { setUsers([]); }, - onSuccess: newData => { setUsers(newData); } + onError: () => setUsers([]), + onSuccess: newData => { + setUsers(newData); + if (callback) callback(); + } }); }, [setUsers]);