import { Low } from 'lowdb'; import { JSONFile } from 'lowdb/node'; import { publicFiles } from '../../setup/index.js'; import { isTest } from '../../setup/environment.js'; import { isPath } from '../../utils/fileManagement.js'; import { shouldCrashDev } from '../../utils/development.js'; interface AppState { lastLoadedProject?: string; showWelcomeDialog?: boolean; } const adapter = new JSONFile(publicFiles.appState); const config = new Low(adapter, {}); export async function isLastLoadedProject(projectName: string): Promise { const lastLoaded = await getLastLoadedProject(); return lastLoaded === projectName; } export async function getLastLoadedProject(): Promise { // in test environment, we want to start the demo project if (isTest) return; await config.read(); return config.data.lastLoadedProject; } export async function setLastLoadedProject(filename: string): Promise { if (isTest) return; // eslint-disable-next-line no-unused-labels -- dev code path DEV: shouldCrashDev(isPath(filename), 'setLastLoadedProject should not be called with a path'); config.data.lastLoadedProject = filename; await config.write(); } export async function getShowWelcomeDialog(): Promise { // in test environment, we do not want the dialog if (isTest) return false; await config.read(); return config.data.showWelcomeDialog ?? true; // default to true } export async function setShowWelcomeDialog(show: boolean): Promise { if (isTest) return; config.data.showWelcomeDialog = show; await config.write(); return show; }