diff --git a/frontend/preview/mock/defaultconfig.ts b/frontend/preview/mock/defaultconfig.ts new file mode 100644 index 0000000000..0c2ac11b3a --- /dev/null +++ b/frontend/preview/mock/defaultconfig.ts @@ -0,0 +1,22 @@ +// Copyright 2026, Command Line Inc. +// SPDX-License-Identifier: Apache-2.0 + +import mimetypesJson from "../../../pkg/wconfig/defaultconfig/mimetypes.json"; +import presetsJson from "../../../pkg/wconfig/defaultconfig/presets.json"; +import settingsJson from "../../../pkg/wconfig/defaultconfig/settings.json"; +import termthemesJson from "../../../pkg/wconfig/defaultconfig/termthemes.json"; +import waveaiJson from "../../../pkg/wconfig/defaultconfig/waveai.json"; +import widgetsJson from "../../../pkg/wconfig/defaultconfig/widgets.json"; + +export const DefaultFullConfig: FullConfigType = { + settings: settingsJson as SettingsType, + mimetypes: mimetypesJson as unknown as { [key: string]: MimeTypeConfigType }, + defaultwidgets: widgetsJson as unknown as { [key: string]: WidgetConfigType }, + widgets: {}, + presets: presetsJson as unknown as { [key: string]: MetaType }, + termthemes: termthemesJson as unknown as { [key: string]: TermThemeType }, + connections: {}, + bookmarks: {}, + waveai: waveaiJson as unknown as { [key: string]: AIModeConfigType }, + configerrors: [], +}; diff --git a/frontend/preview/mock/mockwaveenv.ts b/frontend/preview/mock/mockwaveenv.ts index 9ed61e2b58..913cbc1501 100644 --- a/frontend/preview/mock/mockwaveenv.ts +++ b/frontend/preview/mock/mockwaveenv.ts @@ -5,6 +5,7 @@ import { getSettingsKeyAtom, makeDefaultConnStatus } from "@/app/store/global"; import { RpcApiType } from "@/app/store/wshclientapi"; import { WaveEnv } from "@/app/waveenv/waveenv"; import { Atom, atom, PrimitiveAtom } from "jotai"; +import { DefaultFullConfig } from "./defaultconfig"; import { previewElectronApi } from "./preview-electron-api"; type RpcOverrides = { @@ -13,7 +14,7 @@ type RpcOverrides = { export type MockEnv = { isDev?: boolean; - config?: Partial; + settings?: Partial; rpc?: RpcOverrides; atoms?: Partial; electron?: Partial; @@ -35,10 +36,9 @@ function mergeRecords(base: Record, overrides: Record): export function mergeMockEnv(base: MockEnv, overrides: MockEnv): MockEnv { return { isDev: overrides.isDev ?? base.isDev, - config: mergeRecords(base.config, overrides.config), + settings: mergeRecords(base.settings, overrides.settings), rpc: mergeRecords(base.rpc as any, overrides.rpc as any) as RpcOverrides, - atoms: - overrides.atoms != null || base.atoms != null ? { ...base.atoms, ...overrides.atoms } : undefined, + atoms: overrides.atoms != null || base.atoms != null ? { ...base.atoms, ...overrides.atoms } : undefined, electron: overrides.electron != null || base.electron != null ? { ...(base.electron ?? {}), ...(overrides.electron ?? {}) } @@ -67,15 +67,27 @@ function makeMockConfigAtoms(overrides?: Partial): WaveEnv["config }); } -function makeMockGlobalAtoms(atomOverrides?: Partial): GlobalAtomsType { +function makeMockGlobalAtoms( + settingsOverrides?: Partial, + atomOverrides?: Partial +): GlobalAtomsType { + let fullConfig = DefaultFullConfig; + if (settingsOverrides) { + fullConfig = { + ...DefaultFullConfig, + settings: { ...DefaultFullConfig.settings, ...settingsOverrides }, + }; + } + const fullConfigAtom = atom(fullConfig) as PrimitiveAtom; + const settingsAtom = atom((get) => get(fullConfigAtom)?.settings ?? {}) as Atom; const defaults: GlobalAtomsType = { builderId: atom(""), builderAppId: atom("") as any, uiContext: atom({} as UIContext), workspace: atom(null as Workspace), - fullConfigAtom: atom(null) as any, + fullConfigAtom, waveaiModeConfigAtom: atom({}) as any, - settingsAtom: atom({} as SettingsType), + settingsAtom, hasCustomAIPresetsAtom: atom(false), staticTabId: atom(""), isFullScreen: atom(false) as any, @@ -141,8 +153,8 @@ export function makeMockWaveEnv(mockEnv?: MockEnv): MockWaveEnv { mockEnv: overrides, electron: overrides.electron ? { ...previewElectronApi, ...overrides.electron } : previewElectronApi, rpc: makeMockRpc(overrides.rpc), - configAtoms: makeMockConfigAtoms(overrides.config), - atoms: makeMockGlobalAtoms(overrides.atoms), + configAtoms: makeMockConfigAtoms(overrides.settings), + atoms: makeMockGlobalAtoms(overrides.settings, overrides.atoms), isDev: () => overrides.isDev ?? true, createBlock: overrides.createBlock ??