From 42cc69ab1b8476752d605be885b2e54b53145d63 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 10 Jul 2024 11:09:05 -0700 Subject: [PATCH] fixed a bug with inferenceJobs polling causing modal rerenders --- .../CoreServicesProvider.tsx | 30 ++++--------------- .../InferenceJobsProvider.tsx | 27 +++++++++++++++-- .../SessionProvider/SessionProvider.tsx | 11 +++++-- 3 files changed, 38 insertions(+), 30 deletions(-) diff --git a/packages/fakeyou.com/src/components/providers/CoreServicesProvider/CoreServicesProvider.tsx b/packages/fakeyou.com/src/components/providers/CoreServicesProvider/CoreServicesProvider.tsx index c33b88753c..3f46fca4db 100644 --- a/packages/fakeyou.com/src/components/providers/CoreServicesProvider/CoreServicesProvider.tsx +++ b/packages/fakeyou.com/src/components/providers/CoreServicesProvider/CoreServicesProvider.tsx @@ -6,7 +6,6 @@ import { SessionProvider, } from "components/providers"; import ServerStatusChecker from "./ServerStatusChecker"; -import { useInferenceJobsPolling } from "hooks"; interface Props { children?: any; @@ -21,15 +20,6 @@ export default function CoreServicesProvider({ querySubscriptions, state, }: Props) { - const { - byCategory, - clearJobs, - clearJobsStatus, - enqueueInferenceJob, - inferenceJobs, - someJobsAreDone, - } = useInferenceJobsPolling({ sessionWrapper: state.sessionWrapper }); - const sessionProps = { querySession: querySession, querySubscriptions, @@ -37,23 +27,15 @@ export default function CoreServicesProvider({ sessionWrapper: state.sessionWrapper, sessionFetched: state.sessionFetched, }; - const inferenceJobsProps = { - enqueue: enqueueInferenceJob, - byCategory, - clearJobs, - clearJobsStatus, - inferenceJobs, - someJobsAreDone, - }; return ( - - - - {children} - - + + + + {children} + + ); } diff --git a/packages/fakeyou.com/src/components/providers/InferenceJobsProvider/InferenceJobsProvider.tsx b/packages/fakeyou.com/src/components/providers/InferenceJobsProvider/InferenceJobsProvider.tsx index 9efb952908..12fe5c9d44 100644 --- a/packages/fakeyou.com/src/components/providers/InferenceJobsProvider/InferenceJobsProvider.tsx +++ b/packages/fakeyou.com/src/components/providers/InferenceJobsProvider/InferenceJobsProvider.tsx @@ -4,7 +4,7 @@ import { GetQueuesResponse, } from "@storyteller/components/src/api/stats/queues/GetQueues"; import { FetchStatus } from "@storyteller/components/src/api/_common/SharedFetchTypes"; -import { useQueuePoll } from "hooks"; +import { useInferenceJobsPolling, useQueuePoll, useSession } from "hooks"; interface InferenceJobsContextType { inferenceJobs?: any; @@ -24,11 +24,32 @@ interface Props { children?: any; } -export default function InferenceJobsProvider({ children, ...rest }: Props) { +export default function InferenceJobsProvider({ children }: Props) { + const { sessionWrapper } = useSession(); const queueStats = useQueuePoll(); + const { + byCategory, + clearJobs, + clearJobsStatus, + enqueueInferenceJob, + inferenceJobs, + someJobsAreDone, + } = useInferenceJobsPolling({ sessionWrapper }); return ( - + {children} ); diff --git a/packages/fakeyou.com/src/components/providers/SessionProvider/SessionProvider.tsx b/packages/fakeyou.com/src/components/providers/SessionProvider/SessionProvider.tsx index 0c76ae775d..958de54d5a 100644 --- a/packages/fakeyou.com/src/components/providers/SessionProvider/SessionProvider.tsx +++ b/packages/fakeyou.com/src/components/providers/SessionProvider/SessionProvider.tsx @@ -33,6 +33,7 @@ interface SessionContextType { querySubscriptions?: any; sessionFetched: boolean; sessionSubscriptions?: any; + sessionWrapper: SessionWrapper; studioAccessCheck: (x: any) => any; user?: any; userTokenMatch: (token: string) => boolean; @@ -51,6 +52,8 @@ interface Props { // These functions will never actually fire because they are immediately redefined in the provider below, // as they must be as they utilize the provider's state. +// const thingy = new SessionWrapper() + export const SessionContext = createContext({ canAccessStudio: () => false, canEditTtsModel: () => false, @@ -66,6 +69,7 @@ export const SessionContext = createContext({ view: ModalView.Closed, }, userTokenMatch: () => false, + sessionWrapper: SessionWrapper.emptySession(), }); export default function SessionProvider({ @@ -98,9 +102,9 @@ export default function SessionProvider({ }; // NB: Since user token matching is used for ownership permission checking, neither may be undefined! const userTokenMatch = (otherUserToken?: string) => - user?.user_token !== undefined && - otherUserToken !== undefined && - user.user_token === otherUserToken; + user?.user_token !== undefined && + otherUserToken !== undefined && + user.user_token === otherUserToken; const canEditTtsModel = (userToken: string) => user?.can_delete_other_users_tts_models || userTokenMatch(userToken); const canEditMediaFile = (userToken?: string) => @@ -134,6 +138,7 @@ export default function SessionProvider({ querySubscriptions, sessionFetched, sessionSubscriptions, + sessionWrapper, studioAccessCheck, user, userTokenMatch,