diff --git a/src/components/FileMachineProvider.tsx b/src/components/FileMachineProvider.tsx index c4973e903..cf64dd6b6 100644 --- a/src/components/FileMachineProvider.tsx +++ b/src/components/FileMachineProvider.tsx @@ -31,6 +31,9 @@ import { useSettingsAuthContext } from 'hooks/useSettingsAuthContext' import { markOnce } from 'lib/performance' import { commandBarActor } from 'machines/commandBarMachine' import { useToken } from 'machines/appMachine' +import { unit } from '@kittycad/lib/dist/types/src' +import { changeKclSettings, unitLengthToUnitLen } from 'lang/wasm' +import { err } from 'lib/trap' type MachineContext = { state: StateFrom @@ -96,8 +99,8 @@ export const FileMachineProvider = ({ navigate( `..${PATHS.FILE}/${encodeURIComponent( context.selectedDirectory + - window.electron.path.sep + - event.output.name + window.electron.path.sep + + event.output.name )}` ) } else if ( @@ -159,7 +162,12 @@ export const FileMachineProvider = ({ createdPath ) } else { - await window.electron.writeFile(createdPath, input.content ?? '') + const codeToWrite = changeKclSettings(input.content ?? '', { + defaultLengthUnits: unitLengthToUnitLen(settings.context.modeling.defaultUnit.current), + defaultAngleUnits: { type: 'Degrees' }, + }) + if (err(codeToWrite)) return Promise.reject(codeToWrite) + await window.electron.writeFile(createdPath, codeToWrite) } } @@ -188,7 +196,13 @@ export const FileMachineProvider = ({ }) createdName = name createdPath = path - await window.electron.writeFile(createdPath, input.content ?? '') + + const codeToWrite = changeKclSettings(input.content ?? '', { + defaultLengthUnits: unitLengthToUnitLen(settings.context.modeling.defaultUnit.current), + defaultAngleUnits: { type: 'Degrees' }, + }) + if (err(codeToWrite)) return Promise.reject(codeToWrite) + await window.electron.writeFile(createdPath, codeToWrite) } return { @@ -302,9 +316,8 @@ export const FileMachineProvider = ({ } return { - message: `Successfully deleted ${isDir ? 'folder' : 'file'} "${ - input.name - }"`, + message: `Successfully deleted ${isDir ? 'folder' : 'file'} "${input.name + }"`, } }), }, diff --git a/src/components/ProjectsContextProvider.tsx b/src/components/ProjectsContextProvider.tsx index 8603031d3..a11c38a98 100644 --- a/src/components/ProjectsContextProvider.tsx +++ b/src/components/ProjectsContextProvider.tsx @@ -32,6 +32,8 @@ import { } from 'lib/constants' import { codeManager, kclManager } from 'lib/singletons' import { Project } from 'lib/project' +import { changeKclSettings, unitLengthToUnitLen } from 'lang/wasm' +import { err } from 'lib/trap' type MachineContext = { state?: StateFrom @@ -84,25 +86,25 @@ const ProjectsContextWeb = ({ children }: { children: React.ReactNode }) => { const [state, send, actor] = useMachine( projectsMachine.provide({ actions: { - navigateToProject: () => {}, - navigateToProjectIfNeeded: () => {}, - navigateToFile: () => {}, + navigateToProject: () => { }, + navigateToProjectIfNeeded: () => { }, + navigateToFile: () => { }, toastSuccess: ({ event }) => toast.success( ('data' in event && typeof event.data === 'string' && event.data) || - ('output' in event && - 'message' in event.output && - typeof event.output.message === 'string' && - event.output.message) || - '' + ('output' in event && + 'message' in event.output && + typeof event.output.message === 'string' && + event.output.message) || + '' ), toastError: ({ event }) => toast.error( ('data' in event && typeof event.data === 'string' && event.data) || - ('output' in event && - typeof event.output === 'string' && - event.output) || - '' + ('output' in event && + typeof event.output === 'string' && + event.output) || + '' ), }, actors: { @@ -122,7 +124,12 @@ const ProjectsContextWeb = ({ children }: { children: React.ReactNode }) => { createFile: fromPromise(async ({ input }) => { // Browser version doesn't navigate, just overwrites the current file clearImportSearchParams() - codeManager.updateCodeStateEditor(input.code || '') + const codeToWrite = changeKclSettings(input.code ?? '', { + defaultLengthUnits: unitLengthToUnitLen(settings.context.modeling.defaultUnit.current), + defaultAngleUnits: { type: 'Degrees' }, + }) + if (err(codeToWrite)) return Promise.reject(codeToWrite) + codeManager.updateCodeStateEditor(codeToWrite) await codeManager.writeToFile() await kclManager.executeCode(true) @@ -298,19 +305,19 @@ const ProjectsContextDesktop = ({ toastSuccess: ({ event }) => toast.success( ('data' in event && typeof event.data === 'string' && event.data) || - ('output' in event && - 'message' in event.output && - typeof event.output.message === 'string' && - event.output.message) || - '' + ('output' in event && + 'message' in event.output && + typeof event.output.message === 'string' && + event.output.message) || + '' ), toastError: ({ event }) => toast.error( ('data' in event && typeof event.data === 'string' && event.data) || - ('output' in event && - typeof event.output === 'string' && - event.output) || - '' + ('output' in event && + typeof event.output === 'string' && + event.output) || + '' ), }, actors: { @@ -374,8 +381,8 @@ const ProjectsContextDesktop = ({ input.method === 'newProject' ? PROJECT_ENTRYPOINT : input.name.endsWith(FILE_EXT) - ? input.name - : input.name + FILE_EXT + ? input.name + : input.name + FILE_EXT let message = 'File created successfully' const needsInterpolated = doesProjectNameNeedInterpolated(projectName) @@ -406,7 +413,12 @@ const ProjectsContextDesktop = ({ }) fileName = name - await window.electron.writeFile(path, input.code || '') + const codeToWrite = changeKclSettings(input.code ?? '', { + defaultLengthUnits: unitLengthToUnitLen(settings.context.modeling.defaultUnit.current), + defaultAngleUnits: { type: 'Degrees' }, + }) + if (err(codeToWrite)) return Promise.reject(codeToWrite) + await window.electron.writeFile(path, codeToWrite) return { message,