fix: revert quick file write on refresh (#5943)
* fix: REVERT REVERT REVERT * fix: one more unused remove * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * Make sure connection is established before advancing settings theme test * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 * A snapshot a day keeps the bugs away! 📷🐛 --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Frank Noirot <frankjohnson1993@gmail.com>
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 69 KiB |
@ -746,6 +746,7 @@ test.describe('Testing settings', () => {
|
||||
})
|
||||
await page.setBodyDimensions({ width: 1200, height: 500 })
|
||||
await homePage.goToModelingScene()
|
||||
await expect(toolbar.startSketchBtn).toBeEnabled({ timeout: 15_000 })
|
||||
await scene.settled(cmdBar)
|
||||
await page.waitForTimeout(1000)
|
||||
|
||||
|
@ -34,7 +34,6 @@ import { settingsActor, useSettings } from 'machines/appMachine'
|
||||
import { createRouteCommands } from 'lib/commandBarConfigs/routeCommandConfig'
|
||||
import { useToken } from 'machines/appMachine'
|
||||
import { createNamedViewsCommand } from 'lib/commandBarConfigs/namedViewsConfig'
|
||||
import { reportRejection } from 'lib/trap'
|
||||
|
||||
type MachineContext<T extends AnyStateMachine> = {
|
||||
state: StateFrom<T>
|
||||
@ -61,20 +60,6 @@ export const FileMachineProvider = ({
|
||||
[]
|
||||
)
|
||||
|
||||
// Write code mirror content to disk when the page is trying to reroute
|
||||
// Our logic for codeManager.writeToFile has an artificial 1000ms timeout which
|
||||
// won't run quickly enough so users can make an edit, exit the page and lose their
|
||||
// progress within that 1000ms window.
|
||||
useEffect(() => {
|
||||
const preventUnload = (event: BeforeUnloadEvent) => {
|
||||
codeManager.writeToFileNoTimeout().catch(reportRejection)
|
||||
}
|
||||
window.addEventListener('beforeunload', preventUnload)
|
||||
return () => {
|
||||
window.removeEventListener('beforeunload', preventUnload)
|
||||
}
|
||||
}, [])
|
||||
|
||||
useEffect(() => {
|
||||
// TODO: Engine feature is not deployed
|
||||
if (DEV) {
|
||||
|
@ -164,32 +164,6 @@ export default class CodeManager {
|
||||
}
|
||||
}
|
||||
|
||||
// When we unload the page via changing routes we want to instantly write to disk to save their progress
|
||||
// There is a race condition in the system. writeToFile takes 1000ms to run, if they make an edit and leave within the 1000ms
|
||||
// window they won't get their content saved. Use this to always save their file before rerouting
|
||||
async writeToFileNoTimeout() {
|
||||
if (isDesktop()) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (!this._currentFilePath)
|
||||
return reject(new Error('currentFilePath not set'))
|
||||
|
||||
// Wait one event loop to give a chance for params to be set
|
||||
// Save the file to disk
|
||||
window.electron
|
||||
.writeFile(this._currentFilePath, this.code ?? '')
|
||||
.then(resolve)
|
||||
.catch((err: Error) => {
|
||||
// TODO: add tracing per GH issue #254 (https://github.com/KittyCAD/modeling-app/issues/254)
|
||||
console.error('error saving file', err)
|
||||
toast.error('Error saving file, please check file permissions')
|
||||
reject(err)
|
||||
})
|
||||
})
|
||||
} else {
|
||||
safeLSSetItem(PERSIST_CODE_KEY, this.code)
|
||||
}
|
||||
}
|
||||
|
||||
async updateEditorWithAstAndWriteToFile(ast: Program) {
|
||||
// We clear the AST when there it cannot be parsed, so if we are trying to write an empty AST, its
|
||||
// probably because of an earlier error. That's a bad state to be in and it's not going to be
|
||||
|