diff options
| author | AAGaming <aa@mail.catvibers.me> | 2022-07-25 17:13:50 -0400 |
|---|---|---|
| committer | AAGaming <aa@mail.catvibers.me> | 2022-07-25 17:13:50 -0400 |
| commit | afb2c7c0ed1ef9ccad6b5a6764cdbc5c103563a8 (patch) | |
| tree | 835c8372a59b98ddd1cc595d0fb2bc77cee661d2 /frontend/src/components | |
| parent | 52dded85ed63f3a388fd90bb35412038c3b79146 (diff) | |
| download | decky-loader-afb2c7c0ed1ef9ccad6b5a6764cdbc5c103563a8.tar.gz decky-loader-afb2c7c0ed1ef9ccad6b5a6764cdbc5c103563a8.zip | |
Better install process UX, fix reinstallingv2.0.4-afb2c7c-pre
Diffstat (limited to 'frontend/src/components')
| -rw-r--r-- | frontend/src/components/modals/PluginInstallModal.tsx | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/frontend/src/components/modals/PluginInstallModal.tsx b/frontend/src/components/modals/PluginInstallModal.tsx new file mode 100644 index 00000000..992ce748 --- /dev/null +++ b/frontend/src/components/modals/PluginInstallModal.tsx @@ -0,0 +1,42 @@ +import { ModalRoot, QuickAccessTab, Router, Spinner, sleep, staticClasses } from 'decky-frontend-lib'; +import { FC, useState } from 'react'; + +interface PluginInstallModalProps { + artifact: string; + version: string; + hash: string; + // reinstall: boolean; + onOK(): void; + onCancel(): void; + closeModal?(): void; +} + +const PluginInstallModal: FC<PluginInstallModalProps> = ({ artifact, version, hash, onOK, onCancel, closeModal }) => { + const [loading, setLoading] = useState<boolean>(false); + return ( + <ModalRoot + bOKDisabled={loading} + closeModal={closeModal} + onOK={async () => { + setLoading(true); + await onOK(); + Router.NavigateBackOrOpenMenu(); + await sleep(250); + setTimeout(() => Router.OpenQuickAccessMenu(QuickAccessTab.Decky), 1000); + }} + onCancel={async () => { + await onCancel(); + }} + > + <div className={staticClasses.Title} style={{ flexDirection: 'column' }}> + {hash == 'False' ? <h3 style={{ color: 'red' }}>!!!!NO HASH PROVIDED!!!!</h3> : null} + <div style={{ flexDirection: 'row' }}> + {loading && <Spinner style={{ width: '20px' }} />} {loading ? 'Installing' : 'Install'} {artifact} + {version ? ' version ' + version : null}? + </div> + </div> + </ModalRoot> + ); +}; + +export default PluginInstallModal; |
