From 7bb09932491b82985883c7c312d207d0aa11ef79 Mon Sep 17 00:00:00 2001 From: Andrew Pareles Date: Thu, 9 Jan 2025 02:48:48 -0800 Subject: [PATCH] transfer button feedback --- .../void/browser/react/src/util/inputs.tsx | 4 +-- .../react/src/void-settings-tsx/Settings.tsx | 29 ++++++++++++++++--- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/contrib/void/browser/react/src/util/inputs.tsx b/src/vs/workbench/contrib/void/browser/react/src/util/inputs.tsx index 5fecb79b..583fef54 100644 --- a/src/vs/workbench/contrib/void/browser/react/src/util/inputs.tsx +++ b/src/vs/workbench/contrib/void/browser/react/src/util/inputs.tsx @@ -567,8 +567,8 @@ export const VoidCodeEditor = ({ initValue, language, maxHeight, showScrollbars } -export const VoidButton = ({ children, onClick }: { children: React.ReactNode; onClick: () => void }) => { - return diff --git a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx index 8333bc5e..e196f4e6 100644 --- a/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx +++ b/src/vs/workbench/contrib/void/browser/react/src/void-settings-tsx/Settings.tsx @@ -498,24 +498,45 @@ const OneClickSwitch = () => { const accessor = useAccessor() const fileService = accessor.get('IFileService') + const [state, setState] = useState<{ type: 'done' | 'loading' | 'justfinished' } | { type: 'justerrored', error: string }>({ type: 'done' }) + if (transferTheseFiles.length === 0) return <> - + + + const onClick = async () => { + + if (state.type !== 'done') return + + setState({ type: 'loading' }) + + let errAcc = '' for (let { from, to } of transferTheseFiles) { console.log('transferring', from, to) // not sure if this can fail, just wrapping it with try/catch for now try { await fileService.copy(from, to, true) } - catch (e) { console.error('Void Transfer Error:', e) } + catch (e) { errAcc += e + '\n' } } + const hadError = !!errAcc + if (hadError) setState({ type: 'justerrored', error: errAcc }) + else setState({ type: 'justfinished' }) + + setTimeout(() => { setState({ type: 'done' }); }, hadError ? 5000 : 3000) } return <> - - Transfer Settings + + {state.type === 'done' ? 'Transfer my Settings' + : state.type === 'loading' ? 'Transferring...' + : state.type === 'justfinished' ? 'Success!' + : state.type === 'justerrored' ? `There was Error` + : null + } + {state.type === 'justerrored' && state.error} }