mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-10 22:20:14 +00:00
fix(studio): code-review and live-test fixes for the variables stack
This commit is contained in:
+17
-22
@@ -13,8 +13,9 @@ import { usePreviewPersistence } from "./hooks/usePreviewPersistence";
|
||||
import { useTimelineEditing } from "./hooks/useTimelineEditing";
|
||||
import type { BlockPreviewInfo } from "./components/sidebar/BlocksTab";
|
||||
import { useDomEditSession } from "./hooks/useDomEditSession";
|
||||
import { useSdkSession } from "./hooks/useSdkSession";
|
||||
import { useSdkSelectionSync } from "./hooks/useSdkSelectionSync";
|
||||
import { useStudioSdkSessions } from "./hooks/useStudioSdkSessions";
|
||||
import { usePreviewDocumentVersion } from "./hooks/usePreviewDocumentVersion";
|
||||
import { useBlockHandlers } from "./hooks/useBlockHandlers";
|
||||
import { useAppHotkeys } from "./hooks/useAppHotkeys";
|
||||
import { useClipboard } from "./hooks/useClipboard";
|
||||
@@ -54,6 +55,7 @@ import { useServerConnection } from "./hooks/useServerConnection";
|
||||
import {
|
||||
normalizeStudioCompositionPath,
|
||||
readStudioUrlStateFromWindow,
|
||||
resolveMasterCompositionPath,
|
||||
} from "./utils/studioUrlState";
|
||||
import { trackStudioSessionStart } from "./telemetry/events";
|
||||
import { hasFiredSessionStart, markSessionStartFired } from "./telemetry/config";
|
||||
@@ -80,7 +82,7 @@ export function StudioApp() {
|
||||
const [previewIframe, setPreviewIframe] = useState<HTMLIFrameElement | null>(null);
|
||||
const [compositionLoading, setCompositionLoading] = useState(true);
|
||||
const [refreshKey, setRefreshKey] = useState(0);
|
||||
const [previewDocumentVersion, setPreviewDocumentVersion] = useState(0);
|
||||
const [previewDocumentVersion, refreshPreviewDocumentVersion] = usePreviewDocumentVersion();
|
||||
const [blockPreview, setBlockPreview] = useState<BlockPreviewInfo | null>(null);
|
||||
const previewIframeRef = useRef<HTMLIFrameElement | null>(null);
|
||||
const activeCompPathRef = useRef(activeCompPath);
|
||||
@@ -105,22 +107,6 @@ export function StudioApp() {
|
||||
: 0;
|
||||
return Math.max(timelineDuration, maxEnd);
|
||||
}, [timelineDuration, timelineElements]);
|
||||
const refreshTimersRef = useRef<number[]>([]);
|
||||
const refreshPreviewDocumentVersion = useCallback(() => {
|
||||
for (const id of refreshTimersRef.current) clearTimeout(id);
|
||||
refreshTimersRef.current = [];
|
||||
setPreviewDocumentVersion((v) => v + 1);
|
||||
refreshTimersRef.current.push(
|
||||
window.setTimeout(() => setPreviewDocumentVersion((v) => v + 1), 80),
|
||||
window.setTimeout(() => setPreviewDocumentVersion((v) => v + 1), 300),
|
||||
);
|
||||
}, []);
|
||||
useEffect(
|
||||
() => () => {
|
||||
for (const id of refreshTimersRef.current) clearTimeout(id);
|
||||
},
|
||||
[],
|
||||
);
|
||||
const [timelineVisible, setTimelineVisible] = useState(
|
||||
() =>
|
||||
initialUrlStateRef.current.timelineVisible ??
|
||||
@@ -150,7 +136,16 @@ export function StudioApp() {
|
||||
domEditSaveTimestampRef,
|
||||
setRefreshKey,
|
||||
});
|
||||
const sdkHandle = useSdkSession(projectId, activeCompPath, domEditSaveTimestampRef);
|
||||
const masterCompPath = useMemo(
|
||||
() => resolveMasterCompositionPath(fileManager.fileTree),
|
||||
[fileManager.fileTree],
|
||||
);
|
||||
const { sdkHandle, editFlowSdkSession } = useStudioSdkSessions(
|
||||
projectId,
|
||||
activeCompPath,
|
||||
domEditSaveTimestampRef,
|
||||
masterCompPath,
|
||||
);
|
||||
useEffect(() => {
|
||||
if (activeCompPathHydrated) return;
|
||||
if (!fileManager.fileTreeLoaded) return;
|
||||
@@ -186,7 +181,7 @@ export function StudioApp() {
|
||||
pendingTimelineEditPathRef,
|
||||
uploadProjectFiles: fileManager.uploadProjectFiles,
|
||||
isRecordingRef: isGestureRecordingRef,
|
||||
sdkSession: sdkHandle.session,
|
||||
sdkSession: editFlowSdkSession,
|
||||
forceReloadSdkSession: sdkHandle.forceReload,
|
||||
});
|
||||
const {
|
||||
@@ -302,7 +297,7 @@ export function StudioApp() {
|
||||
openSourceForSelection: fileManager.openSourceForSelection,
|
||||
selectSidebarTab: sidebarTabRef.current.select,
|
||||
getSidebarTab: sidebarTabRef.current.get,
|
||||
sdkSession: sdkHandle.session,
|
||||
sdkSession: editFlowSdkSession,
|
||||
forceReloadSdkSession: sdkHandle.forceReload,
|
||||
});
|
||||
domEditSelectionBridgeRef.current = domEditSession.domEditSelection;
|
||||
@@ -320,7 +315,7 @@ export function StudioApp() {
|
||||
}
|
||||
};
|
||||
useSdkSelectionSync(
|
||||
sdkHandle.session,
|
||||
editFlowSdkSession,
|
||||
domEditSession.domEditSelection,
|
||||
domEditSession.domEditGroupSelections,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user