diff options
| author | Party Wumpus <48649272+PartyWumpus@users.noreply.github.com> | 2024-05-13 14:42:55 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-13 14:42:55 +0100 |
| commit | 372771a228c9fbb31ec4a943dd6cfa9915741c6c (patch) | |
| tree | 5cd9cc5bd5cd2814e5d588232342b754324747e3 /frontend/src/components/modals/PluginInstallModal.tsx | |
| parent | 675b6d5ef8c3f84e5758d675ae0ff94ebb601de4 (diff) | |
| download | decky-loader-372771a228c9fbb31ec4a943dd6cfa9915741c6c.tar.gz decky-loader-372771a228c9fbb31ec4a943dd6cfa9915741c6c.zip | |
plugin install progress (#614)
* Frontend progress bars
* Backend bit
* closure is stale i think so no closure for you
* Fix formatting of the progress svgs
* Reset progress bar when new plugin starts downloading
Diffstat (limited to 'frontend/src/components/modals/PluginInstallModal.tsx')
| -rw-r--r-- | frontend/src/components/modals/PluginInstallModal.tsx | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/frontend/src/components/modals/PluginInstallModal.tsx b/frontend/src/components/modals/PluginInstallModal.tsx index 1d149b2a..8b3128a1 100644 --- a/frontend/src/components/modals/PluginInstallModal.tsx +++ b/frontend/src/components/modals/PluginInstallModal.tsx @@ -1,5 +1,5 @@ -import { ConfirmModal, Navigation, QuickAccessTab } from '@decky/ui'; -import { FC, useState } from 'react'; +import { ConfirmModal, Navigation, ProgressBarWithInfo, QuickAccessTab } from '@decky/ui'; +import { FC, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import TranslationHelper, { TranslationClass } from '../../utils/TranslationHelper'; @@ -24,8 +24,26 @@ const PluginInstallModal: FC<PluginInstallModalProps> = ({ closeModal, }) => { const [loading, setLoading] = useState<boolean>(false); + const [percentage, setPercentage] = useState<number>(0); + const [downloadInfo, setDownloadInfo] = useState<string | null>(null); const { t } = useTranslation(); + function updateDownloadState(percent: number, trans_text: string | undefined, trans_info: Record<string, string>) { + setPercentage(percent); + if (trans_text === undefined) { + setDownloadInfo(null); + } else { + setDownloadInfo(t(trans_text, trans_info)); + } + } + + useEffect(() => { + DeckyBackend.addEventListener('loader/plugin_download_info', updateDownloadState); + return () => { + DeckyBackend.removeEventListener('loader/plugin_download_info', updateDownloadState); + }; + }, []); + return ( <ConfirmModal bOKDisabled={loading} @@ -80,6 +98,14 @@ const PluginInstallModal: FC<PluginInstallModalProps> = ({ install_type={installType} /> </div> + {loading && ( + <ProgressBarWithInfo + layout="inline" + bottomSeparator="none" + nProgress={percentage} + sOperationText={downloadInfo} + /> + )} {hash == 'False' && <span style={{ color: 'red' }}>{t('PluginInstallModal.no_hash')}</span>} </ConfirmModal> ); |
