Fix loading samples
This commit is contained in:
		| @ -16,6 +16,7 @@ import { | ||||
| import { fileMachine } from 'machines/fileMachine' | ||||
| import { isDesktop } from 'lib/isDesktop' | ||||
| import { | ||||
|   DEFAULT_DEFAULT_LENGTH_UNIT, | ||||
|   DEFAULT_FILE_NAME, | ||||
|   DEFAULT_PROJECT_KCL_FILE, | ||||
|   FILE_EXT, | ||||
| @ -250,7 +251,7 @@ export const FileMachineProvider = ({ | ||||
|               ) | ||||
|             } else { | ||||
|               const codeToWrite = newKclFile( | ||||
|                 input.content ?? '', | ||||
|                 input.content, | ||||
|                 settings.modeling.defaultUnit.current | ||||
|               ) | ||||
|               if (err(codeToWrite)) return Promise.reject(codeToWrite) | ||||
| @ -284,7 +285,7 @@ export const FileMachineProvider = ({ | ||||
|             createdName = name | ||||
|             createdPath = path | ||||
|             const codeToWrite = newKclFile( | ||||
|               input.content ?? '', | ||||
|               input.content, | ||||
|               settings.modeling.defaultUnit.current | ||||
|             ) | ||||
|             if (err(codeToWrite)) return Promise.reject(codeToWrite) | ||||
| @ -423,7 +424,9 @@ export const FileMachineProvider = ({ | ||||
|         authToken: token ?? '', | ||||
|         projectData, | ||||
|         settings: { | ||||
|           defaultUnit: settings.modeling.defaultUnit.current ?? 'mm', | ||||
|           defaultUnit: | ||||
|             settings.modeling.defaultUnit.current ?? | ||||
|             DEFAULT_DEFAULT_LENGTH_UNIT, | ||||
|         }, | ||||
|         specialPropsForSampleCommand: { | ||||
|           onSubmit: async (data) => { | ||||
|  | ||||
| @ -124,7 +124,7 @@ const ProjectsContextWeb = ({ children }: { children: React.ReactNode }) => { | ||||
|           clearImportSearchParams() | ||||
|  | ||||
|           const codeToWrite = newKclFile( | ||||
|             input.code ?? '', | ||||
|             input.code, | ||||
|             settings.modeling.defaultUnit.current | ||||
|           ) | ||||
|           if (err(codeToWrite)) return Promise.reject(codeToWrite) | ||||
| @ -424,7 +424,7 @@ const ProjectsContextDesktop = ({ | ||||
|           fileName = name | ||||
|           if (!fileLoaded) { | ||||
|             const codeToWrite = newKclFile( | ||||
|               input.code ?? '', | ||||
|               input.code, | ||||
|               settings.modeling.defaultUnit.current | ||||
|             ) | ||||
|             if (err(codeToWrite)) return Promise.reject(codeToWrite) | ||||
|  | ||||
| @ -9,18 +9,24 @@ import { DEFAULT_DEFAULT_LENGTH_UNIT } from 'lib/constants' | ||||
|  | ||||
| /** | ||||
|  * Create a new KCL file with the given initial content and default length unit. | ||||
|  * @returns KCL string | ||||
|  */ | ||||
| export function newKclFile( | ||||
|   initialContent: string, | ||||
|   initialContent: string | undefined, | ||||
|   defaultLengthUnit: UnitLength | ||||
| ): string | Error { | ||||
|   // If we're given initial content, we're loading a file that should already | ||||
|   // have units in it.  Don't modify it. | ||||
|   if (initialContent !== undefined) { | ||||
|     return initialContent | ||||
|   } | ||||
|   // If the default length unit is the same as the default default length unit, | ||||
|   // there's no need to add the attribute. | ||||
|   if (defaultLengthUnit === DEFAULT_DEFAULT_LENGTH_UNIT) { | ||||
|     return initialContent | ||||
|     return '' | ||||
|   } | ||||
|  | ||||
|   return changeKclSettings(initialContent, { | ||||
|   return changeKclSettings('', { | ||||
|     defaultLengthUnits: unitLengthToUnitLen(defaultLengthUnit), | ||||
|     defaultAngleUnits: unitAngleToUnitAng(DEFAULT_DEFAULT_ANGLE_UNIT), | ||||
|     stdPath: null, | ||||
|  | ||||
| @ -118,13 +118,10 @@ export async function createNewProjectDirectory( | ||||
|   // 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 | ||||
|     ) | ||||
|   const codeToWrite = newKclFile( | ||||
|     initialCode, | ||||
|     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) | ||||
|  | ||||
| @ -48,13 +48,7 @@ export function kclCommands(commandProps: KclCommandConfig): Command[] { | ||||
|       description: 'Imports an example KCL program into the editor.', | ||||
|       needsReview: true, | ||||
|       icon: 'code', | ||||
|       reviewMessage: ({ argumentsToSubmit }) => | ||||
|         argumentsToSubmit.method === 'newFile' | ||||
|           ? CommandBarOverwriteWarning({ | ||||
|               heading: 'Create a new file, overwrite project units?', | ||||
|               message: `This will add the sample as a new file to your project, and replace your current project units with the sample's units.`, | ||||
|             }) | ||||
|           : CommandBarOverwriteWarning({}), | ||||
|       reviewMessage: ({ argumentsToSubmit }) => CommandBarOverwriteWarning({}), | ||||
|       groupId: 'code', | ||||
|       onSubmit(data) { | ||||
|         if (!data?.sample) { | ||||
|  | ||||
| @ -126,7 +126,7 @@ export const fileMachine = setup({ | ||||
|           makeDir: boolean | ||||
|           selectedDirectory: FileEntry | ||||
|           targetPathToClone?: string | ||||
|           content: string | ||||
|           content?: string | ||||
|           shouldSetToRename: boolean | ||||
|         } | ||||
|       }) => Promise.resolve({ message: '', path: '' }) | ||||
| @ -152,7 +152,7 @@ export const fileMachine = setup({ | ||||
|           name: string | ||||
|           makeDir: boolean | ||||
|           selectedDirectory: FileEntry | ||||
|           content: string | ||||
|           content?: string | ||||
|         } | ||||
|       }) => Promise.resolve({ path: '' }) | ||||
|     ), | ||||
| @ -238,7 +238,7 @@ export const fileMachine = setup({ | ||||
|             makeDir: event.data.makeDir, | ||||
|             selectedDirectory: context.selectedDirectory, | ||||
|             targetPathToClone: event.data.targetPathToClone, | ||||
|             content: event.data.content ?? '', | ||||
|             content: event.data.content, | ||||
|             shouldSetToRename: event.data.shouldSetToRename ?? false, | ||||
|           } | ||||
|         }, | ||||
| @ -417,7 +417,7 @@ export const fileMachine = setup({ | ||||
|             name: event.data.name, | ||||
|             makeDir: event.data.makeDir, | ||||
|             selectedDirectory: context.selectedDirectory, | ||||
|             content: event.data.content ?? '', | ||||
|             content: event.data.content, | ||||
|           } | ||||
|         }, | ||||
|         onDone: 'Reading files', | ||||
|  | ||||
		Reference in New Issue
	
	Block a user