Skip to content

Commit

Permalink
Add units as inline annotation on file creation
Browse files Browse the repository at this point in the history
  • Loading branch information
franknoirot committed Feb 7, 2025
1 parent b3acb34 commit e2dd6e7
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 32 deletions.
27 changes: 20 additions & 7 deletions src/components/FileMachineProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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<T extends AnyStateMachine> = {
state: StateFrom<T>
Expand Down Expand Up @@ -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 (
Expand Down Expand Up @@ -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)
}
}

Expand Down Expand Up @@ -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 {
Expand Down Expand Up @@ -302,9 +316,8 @@ export const FileMachineProvider = ({
}

return {
message: `Successfully deleted ${isDir ? 'folder' : 'file'} "${
input.name
}"`,
message: `Successfully deleted ${isDir ? 'folder' : 'file'} "${input.name
}"`,
}
}),
},
Expand Down
62 changes: 37 additions & 25 deletions src/components/ProjectsContextProvider.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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<T extends AnyStateMachine> = {
state?: StateFrom<T>
Expand Down Expand Up @@ -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: {
Expand All @@ -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)

Expand Down Expand Up @@ -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: {
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit e2dd6e7

Please sign in to comment.