Skip to content

Commit 63daae0

Browse files
committed
Fix invalid hook error
1 parent 52d4362 commit 63daae0

1 file changed

Lines changed: 29 additions & 5 deletions

File tree

frontend/src/components/Contexts/InspectionsContext.tsx

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { createContext, FC, useContext, useEffect } from 'react'
1+
import { createContext, FC, useContext, useEffect, useRef } from 'react'
22
import { SignalREventLabels, useSignalRContext } from './SignalRContext'
33
import { SaraAnalysisResultReady, SaraInspectionVisualizationReady } from 'models/Inspection'
44
import { useQuery } from '@tanstack/react-query'
@@ -37,14 +37,29 @@ export const InspectionsProvider: FC<Props> = ({ children }) => {
3737
const { registerEvent, connectionReady } = useSignalRContext()
3838
const backendApi = useBackendApi()
3939

40+
// Keep a stable ref to backendApi so callbacks don't capture a stale closure
41+
const backendApiRef = useRef(backendApi)
42+
useEffect(() => {
43+
backendApiRef.current = backendApi
44+
}, [backendApi])
45+
4046
useEffect(() => {
4147
if (connectionReady) {
4248
registerEvent(SignalREventLabels.inspectionVisualizationReady, (username: string, message: string) => {
4349
const inspectionVisualizationData: SaraInspectionVisualizationReady = JSON.parse(message)
50+
const inspectionId = inspectionVisualizationData.inspectionId
4451
queryClient.invalidateQueries({
45-
queryKey: ['fetchInspectionData', inspectionVisualizationData.inspectionId],
52+
queryKey: ['fetchInspectionData', inspectionId],
53+
})
54+
queryClient.fetchQuery({
55+
queryKey: ['fetchInspectionData', inspectionId],
56+
queryFn: async () => {
57+
const imageBlob = await backendApiRef.current.getInspection(inspectionId)
58+
return URL.createObjectURL(imageBlob)
59+
},
60+
retry: 1,
61+
staleTime: 10 * 60 * 1000,
4662
})
47-
fetchImageData(inspectionVisualizationData.inspectionId)
4863
})
4964
}
5065
}, [registerEvent, connectionReady])
@@ -53,10 +68,19 @@ export const InspectionsProvider: FC<Props> = ({ children }) => {
5368
if (connectionReady) {
5469
registerEvent(SignalREventLabels.analysisResultReady, (username: string, message: string) => {
5570
const analysisResultData: SaraAnalysisResultReady = JSON.parse(message)
71+
const inspectionId = analysisResultData.inspectionId
5672
queryClient.invalidateQueries({
57-
queryKey: ['fetchAnalysisData', analysisResultData.inspectionId],
73+
queryKey: ['fetchAnalysisData', inspectionId],
74+
})
75+
queryClient.fetchQuery({
76+
queryKey: ['fetchAnalysisData', inspectionId],
77+
queryFn: async () => {
78+
const imageBlob = await backendApiRef.current.getAnalysis(inspectionId)
79+
return URL.createObjectURL(imageBlob)
80+
},
81+
retry: 1,
82+
staleTime: 10 * 60 * 1000,
5883
})
59-
fetchAnalysisData(analysisResultData.inspectionId)
6084
})
6185
}
6286
}, [registerEvent, connectionReady])

0 commit comments

Comments
 (0)