Replace setCode with deferredSetCode in App (#649)

* Replace `setCode` with `deferredSetCode` in App

* Remove unused OpenFileButton component
This commit is contained in:
Frank Noirot
2023-09-19 18:07:54 -04:00
committed by GitHub
parent e399a8f938
commit c767c1c3a6
2 changed files with 5 additions and 47 deletions

View File

@ -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()

View File

@ -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>
}