export interface LaunchStateSnapshot { phase: "idle" | "launching"; recipeId: string | null;} export interface LaunchState { getLaunchingRecipeId: () => string | null; getState: () => LaunchStateSnapshot; markLaunching: (recipeId: string) => void; markIdle: () => void;} export const createLaunchState = (): LaunchState => { let state: LaunchStateSnapshot = { phase: "idle", recipeId: null }; return { getLaunchingRecipeId: (): string | null => state.recipeId, getState: (): LaunchStateSnapshot => state, markLaunching: (recipeId: string): void => { state = { phase: "launching", recipeId }; }, markIdle: (): void => { state = { phase: "idle", recipeId: null }; }, };};
export interface LaunchStateSnapshot {
phase: "idle" | "launching";
recipeId: string | null;
}
export interface LaunchState {
getLaunchingRecipeId: () => string | null;
getState: () => LaunchStateSnapshot;
markLaunching: (recipeId: string) => void;
markIdle: () => void;
}
export const createLaunchState = (): LaunchState => {
let state: LaunchStateSnapshot = { phase: "idle", recipeId: null };
return {
getLaunchingRecipeId: (): string | null => state.recipeId,
getState: (): LaunchStateSnapshot => state,
markLaunching: (recipeId: string): void => {
state = { phase: "launching", recipeId };
},
markIdle: (): void => {
state = { phase: "idle", recipeId: null };
},
};
};