Replace setCode
with deferredSetCode
in App (#649)
* Replace `setCode` with `deferredSetCode` in App * Remove unused OpenFileButton component
This commit is contained in:
10
src/App.tsx
10
src/App.tsx
@ -38,7 +38,7 @@ export function App() {
|
|||||||
const streamRef = useRef<HTMLDivElement>(null)
|
const streamRef = useRef<HTMLDivElement>(null)
|
||||||
useHotKeyListener()
|
useHotKeyListener()
|
||||||
const {
|
const {
|
||||||
setCode,
|
deferredSetCode,
|
||||||
engineCommandManager,
|
engineCommandManager,
|
||||||
buttonDownInStream,
|
buttonDownInStream,
|
||||||
openPanes,
|
openPanes,
|
||||||
@ -51,7 +51,7 @@ export function App() {
|
|||||||
} = useStore((s) => ({
|
} = useStore((s) => ({
|
||||||
guiMode: s.guiMode,
|
guiMode: s.guiMode,
|
||||||
setGuiMode: s.setGuiMode,
|
setGuiMode: s.setGuiMode,
|
||||||
setCode: s.setCode,
|
deferredSetCode: s.deferredSetCode,
|
||||||
engineCommandManager: s.engineCommandManager,
|
engineCommandManager: s.engineCommandManager,
|
||||||
buttonDownInStream: s.buttonDownInStream,
|
buttonDownInStream: s.buttonDownInStream,
|
||||||
openPanes: s.openPanes,
|
openPanes: s.openPanes,
|
||||||
@ -142,15 +142,15 @@ export function App() {
|
|||||||
// on mount, and overwrite any locally-stored code
|
// on mount, and overwrite any locally-stored code
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isTauri() && loadedCode !== null) {
|
if (isTauri() && loadedCode !== null) {
|
||||||
setCode(loadedCode)
|
deferredSetCode(loadedCode)
|
||||||
}
|
}
|
||||||
return () => {
|
return () => {
|
||||||
// Clear code on unmount if in desktop app
|
// Clear code on unmount if in desktop app
|
||||||
if (isTauri()) {
|
if (isTauri()) {
|
||||||
setCode('')
|
deferredSetCode('')
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [loadedCode, setCode])
|
}, [loadedCode, deferredSetCode])
|
||||||
|
|
||||||
useSetupEngineManager(streamRef, token)
|
useSetupEngineManager(streamRef, token)
|
||||||
useEngineConnectionSubscriptions()
|
useEngineConnectionSubscriptions()
|
||||||
|
@ -1,42 +0,0 @@
|
|||||||
import { invoke } from '@tauri-apps/api/tauri'
|
|
||||||
import { open } from '@tauri-apps/api/dialog'
|
|
||||||
import { useStore } from '../useStore'
|
|
||||||
|
|
||||||
export const OpenFileButton = () => {
|
|
||||||
const { setCode } = useStore((s) => ({
|
|
||||||
setCode: s.setCode,
|
|
||||||
}))
|
|
||||||
const handleClick = async () => {
|
|
||||||
const selected = await open({
|
|
||||||
multiple: false,
|
|
||||||
directory: false,
|
|
||||||
filters: [
|
|
||||||
{
|
|
||||||
name: 'CAD',
|
|
||||||
extensions: ['toml'],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
})
|
|
||||||
if (Array.isArray(selected)) {
|
|
||||||
// User selected multiple files
|
|
||||||
// We should not get here, since multiple is false.
|
|
||||||
} else if (selected === null) {
|
|
||||||
// User cancelled the selection
|
|
||||||
// Do nothing.
|
|
||||||
} else {
|
|
||||||
// User selected a single file
|
|
||||||
// We want to invoke our command to read the file.
|
|
||||||
const json: string = await invoke('read_toml', { path: selected })
|
|
||||||
const packageDetails = JSON.parse(json).package
|
|
||||||
if (packageDetails.main) {
|
|
||||||
const absPath = [
|
|
||||||
...selected.split('/').slice(0, -1),
|
|
||||||
packageDetails.main,
|
|
||||||
].join('/')
|
|
||||||
const file: string = await invoke('read_txt_file', { path: absPath })
|
|
||||||
setCode(file)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return <button onClick={() => handleClick()}>Open File</button>
|
|
||||||
}
|
|
Reference in New Issue
Block a user