85 lines
1.9 KiB
JavaScript
85 lines
1.9 KiB
JavaScript
export function createControlPageSessionLoadState({
|
|
phase,
|
|
panelReady = false,
|
|
apiReady = false,
|
|
controlViewReady = false,
|
|
stateBundle = null,
|
|
workflowStatus = null,
|
|
controlView = null,
|
|
error = null,
|
|
} = {}) {
|
|
return {
|
|
phase,
|
|
panelReady,
|
|
apiReady,
|
|
controlViewReady,
|
|
stateBundle,
|
|
workflowStatus,
|
|
controlView,
|
|
error,
|
|
};
|
|
}
|
|
|
|
export function loadMachineSessionForControlPageWorkflow({
|
|
getPanelWindow,
|
|
getPanelApi,
|
|
getControlView,
|
|
} = {}) {
|
|
if (typeof getPanelWindow !== "function") {
|
|
throw new Error("A panel window getter is required.");
|
|
}
|
|
if (typeof getPanelApi !== "function") {
|
|
throw new Error("A panel API getter is required.");
|
|
}
|
|
if (typeof getControlView !== "function") {
|
|
throw new Error("A control view getter is required.");
|
|
}
|
|
|
|
let panelWindow = null;
|
|
let panelApi = null;
|
|
let controlView = null;
|
|
try {
|
|
panelWindow = getPanelWindow();
|
|
panelApi = getPanelApi();
|
|
controlView = getControlView();
|
|
} catch (error) {
|
|
return createControlPageSessionLoadState({
|
|
phase: "error",
|
|
error: error.message,
|
|
});
|
|
}
|
|
|
|
if (!panelWindow) {
|
|
return createControlPageSessionLoadState({
|
|
phase: "waiting-panel",
|
|
});
|
|
}
|
|
|
|
if (!panelApi) {
|
|
return createControlPageSessionLoadState({
|
|
phase: "waiting-api",
|
|
panelReady: true,
|
|
});
|
|
}
|
|
|
|
if (!controlView) {
|
|
return createControlPageSessionLoadState({
|
|
phase: "waiting-session",
|
|
panelReady: true,
|
|
apiReady: true,
|
|
stateBundle: panelApi.getMachineSessionStateBundle?.() ?? null,
|
|
workflowStatus: panelApi.getMachineSessionWorkflowStatus?.() ?? null,
|
|
});
|
|
}
|
|
|
|
return createControlPageSessionLoadState({
|
|
phase: "ready",
|
|
panelReady: true,
|
|
apiReady: true,
|
|
controlViewReady: true,
|
|
stateBundle: panelApi.getMachineSessionStateBundle?.() ?? null,
|
|
workflowStatus: panelApi.getMachineSessionWorkflowStatus?.() ?? null,
|
|
controlView,
|
|
});
|
|
}
|