diff --git a/src/components/ProjectsContextProvider.tsx b/src/components/ProjectsContextProvider.tsx index 1f59ec545..b242b1f85 100644 --- a/src/components/ProjectsContextProvider.tsx +++ b/src/components/ProjectsContextProvider.tsx @@ -402,8 +402,10 @@ const ProjectsContextDesktop = ({ } // Create the project around the file if newProject + let fileLoaded = false if (input.method === 'newProject') { await createNewProjectDirectory(projectName, input.code) + fileLoaded = true message = `Project "${projectName}" created successfully with link contents` } else { message = `File "${fileName}" created successfully` @@ -420,13 +422,16 @@ const ProjectsContextDesktop = ({ }) fileName = name - const codeToWrite = newKclFile( - input.code ?? '', - settings.modeling.defaultUnit.current - ) - if (err(codeToWrite)) return Promise.reject(codeToWrite) - await window.electron.writeFile(path, codeToWrite) + if (!fileLoaded) { + const codeToWrite = newKclFile( + input.code ?? '', + settings.modeling.defaultUnit.current + ) + if (err(codeToWrite)) return Promise.reject(codeToWrite) + await window.electron.writeFile(path, codeToWrite) + } + // TODO: Return the project's file name if one was created. return { message, fileName, diff --git a/src/lib/desktop.ts b/src/lib/desktop.ts index 5e252aaa8..455e0c4a8 100644 --- a/src/lib/desktop.ts +++ b/src/lib/desktop.ts @@ -9,6 +9,7 @@ import { parseProjectSettings, } from 'lang/wasm' import { + DEFAULT_DEFAULT_LENGTH_UNIT, PROJECT_ENTRYPOINT, PROJECT_FOLDER, PROJECT_IMAGE_NAME, @@ -21,6 +22,7 @@ import { import { DeepPartial } from './types' import { ProjectConfiguration } from '@rust/kcl-lib/bindings/ProjectConfiguration' import { Configuration } from '@rust/kcl-lib/bindings/Configuration' +import { newKclFile } from 'lang/project' export async function renameProjectDirectory( projectPath: string, @@ -113,7 +115,18 @@ export async function createNewProjectDirectory( } const projectFile = window.electron.path.join(projectDir, PROJECT_ENTRYPOINT) - await window.electron.writeFile(projectFile, initialCode ?? '') + // When initialCode is present, we're loading existing code. If it's not + // present, we're creating a new project, and we want to incorporate the + // user's settings. + const codeToWrite = + initialCode ?? + newKclFile( + '', + configuration?.settings?.modeling?.base_unit ?? + DEFAULT_DEFAULT_LENGTH_UNIT + ) + if (err(codeToWrite)) return Promise.reject(codeToWrite) + await window.electron.writeFile(projectFile, codeToWrite) const metadata = await window.electron.stat(projectFile) return {