fix(32-01): resolve refreshCurrentSession initialization order
Use ref pattern to access refreshCurrentSession in joinSession callback to avoid "Cannot access before initialization" temporal dead zone error Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
14e9834f72
commit
742ced69e0
|
|
@ -58,6 +58,10 @@ export default function useSessionModel(app, server, sessionScreen) {
|
|||
// Maintain function interface for backward compatibility
|
||||
const currentSessionIdRef = sessionIdRef;
|
||||
|
||||
// Ref to hold refreshCurrentSession for use in callbacks defined before it
|
||||
// This avoids "Cannot access before initialization" errors
|
||||
const refreshCurrentSessionRef = useRef(null);
|
||||
|
||||
const inSession = useCallback(() => {
|
||||
return sessionIdRef.current !== null;
|
||||
}, []);
|
||||
|
|
@ -438,14 +442,18 @@ export default function useSessionModel(app, server, sessionScreen) {
|
|||
// Trigger session started event
|
||||
// $(document).trigger(EVENTS.SESSION_STARTED, {session: {id: sessionId}});
|
||||
|
||||
refreshCurrentSession(true);
|
||||
// Use ref to avoid "Cannot access before initialization" error
|
||||
// refreshCurrentSession is defined later in the hook
|
||||
if (refreshCurrentSessionRef.current) {
|
||||
refreshCurrentSessionRef.current(true);
|
||||
}
|
||||
} catch (error) {
|
||||
updateCurrentSession(null);
|
||||
}
|
||||
|
||||
return deferred;
|
||||
},
|
||||
[alreadyInSession, currentSessionIdRef, inSession, refreshCurrentSession, resetRecordingState, updateCurrentSession]
|
||||
[alreadyInSession, currentSessionIdRef, inSession, resetRecordingState, updateCurrentSession]
|
||||
);
|
||||
|
||||
// Set recording model (from useSessionLeave)
|
||||
|
|
@ -612,6 +620,11 @@ export default function useSessionModel(app, server, sessionScreen) {
|
|||
[refreshCurrentSessionRest, sessionChanged]
|
||||
);
|
||||
|
||||
// Keep ref updated for callbacks defined before refreshCurrentSession
|
||||
useEffect(() => {
|
||||
refreshCurrentSessionRef.current = refreshCurrentSession;
|
||||
}, [refreshCurrentSession]);
|
||||
|
||||
// Track changes handler - debounced to prevent excessive session refreshes
|
||||
// Uses useDebounceCallback for stable timer (doesn't reset when deps change)
|
||||
const trackChanges = useDebounceCallback((header, payload) => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue