@@ -13,8 +13,7 @@ import { useInstrumentRecords } from '@/hooks/useInstrumentRecords';
1313import { useAppStore } from '@/store' ;
1414import { downloadSubjectTableExcel } from '@/utils/excel' ;
1515
16- import { sessionInfo , useFindSessionQuery } from './useFindSessionQuery' ;
17- import { userInfo } from './useFindUser' ;
16+ import { useFindSessionQuery } from './useFindSessionQuery' ;
1817
1918type InstrumentVisualizationRecord = {
2019 [ key : string ] : unknown ;
@@ -57,12 +56,12 @@ export function useInstrumentVisualization({ params }: UseInstrumentVisualizatio
5756 }
5857 } ) ;
5958
60- // const sessionsUsernameQuery = useFindSessionQuery({
61- // enabled: instrumentId !== null,
62- // params: {
63- // groupId: currentGroup?.id
64- // }
65- // });
59+ const sessionsUsernameQuery = useFindSessionQuery ( {
60+ enabled : instrumentId !== null ,
61+ params : {
62+ groupId : currentGroup ?. id
63+ }
64+ } ) ;
6665
6766 // Create a new sessionsUsernameQuery which uses the useFindSessionQuery hook
6867 // have use a different return type with
@@ -219,27 +218,18 @@ export function useInstrumentVisualization({ params }: UseInstrumentVisualizatio
219218 } ;
220219
221220 useEffect ( ( ) => {
222- let cancelled = false ;
223- const fetchRecords = async ( ) => {
221+ const fetchRecords = ( ) => {
224222 try {
225- if ( recordsQuery . data ) {
223+ const sessions = sessionsUsernameQuery . data ;
224+ if ( recordsQuery . data && sessions ) {
226225 // Fetch all sessions in parallel
227- const sessionPromises = recordsQuery . data . map ( ( record ) => sessionInfo ( record . sessionId ) ) ;
228- const sessions = await Promise . all ( sessionPromises ) ;
229-
230- // Extract unique userIds and fetch users in parallel
231- const userIds = [ ...new Set ( sessions . filter ( ( s ) => s ?. userId ) . map ( ( s ) => s . userId ) ) ] ;
232-
233- //assume userId exists in userId set as we already filtered out the non-existing userIds
234- const userPromises = userIds . map ( ( userId ) => userInfo ( userId ! ) . catch ( ( ) => null ) ) ;
235- const users = await Promise . all ( userPromises ) ;
236- const userMap = new Map ( users . filter ( ( u ) => u ) . map ( ( u ) => [ u ! . id , u ! . username ] ) ) ;
237226
238227 // Build records with looked-up data
239- const records : InstrumentVisualizationRecord [ ] = recordsQuery . data . map ( ( record , i ) => {
228+ const records : InstrumentVisualizationRecord [ ] = recordsQuery . data . map ( ( record ) => {
240229 const props = record . data && typeof record . data === 'object' ? record . data : { } ;
241- const session = sessions [ i ] ;
242- const username = session ?. userId ? ( userMap . get ( session . userId ) ?? 'N/A' ) : 'N/A' ;
230+ const usersSession = sessions . find ( ( s ) => s . id === record . sessionId ) ;
231+
232+ const username = usersSession ?. user ?. username ?? 'N/A' ;
243233
244234 return {
245235 __date__ : record . date ,
@@ -250,9 +240,7 @@ export function useInstrumentVisualization({ params }: UseInstrumentVisualizatio
250240 } ;
251241 } ) ;
252242
253- if ( ! cancelled ) {
254- setRecords ( records ) ;
255- }
243+ setRecords ( records ) ;
256244 }
257245 } catch ( error ) {
258246 console . error ( 'Error occurred: ' , error ) ;
@@ -266,9 +254,6 @@ export function useInstrumentVisualization({ params }: UseInstrumentVisualizatio
266254 }
267255 } ;
268256 void fetchRecords ( ) ;
269- return ( ) => {
270- cancelled = true ;
271- } ;
272257 } , [ recordsQuery . data ] ) ;
273258
274259 const instrumentOptions : { [ key : string ] : string } = useMemo ( ( ) => {
0 commit comments