From b4b8be3297e427dad6fbc6697ffdb765a796f7fd Mon Sep 17 00:00:00 2001 From: David Beall Date: Sun, 2 Aug 2026 14:26:12 -0700 Subject: [PATCH] fix: align plugin install progress (#944) Co-authored-by: David Beall <6121439+beallio@users.noreply.github.com> --- .../modals/MultiplePluginsInstallModal.tsx | 12 +++---- .../components/modals/PluginInstallModal.tsx | 16 +++------- .../modals/PluginInstallProgress.tsx | 31 +++++++++++++++++++ 3 files changed, 40 insertions(+), 19 deletions(-) create mode 100644 frontend/src/components/modals/PluginInstallProgress.tsx diff --git a/frontend/src/components/modals/MultiplePluginsInstallModal.tsx b/frontend/src/components/modals/MultiplePluginsInstallModal.tsx index e5c1c647..4a386997 100644 --- a/frontend/src/components/modals/MultiplePluginsInstallModal.tsx +++ b/frontend/src/components/modals/MultiplePluginsInstallModal.tsx @@ -1,9 +1,10 @@ -import { ConfirmModal, Navigation, ProgressBarWithInfo, QuickAccessTab } from '@decky/ui'; +import { ConfirmModal, Navigation, QuickAccessTab } from '@decky/ui'; import { FC, useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { FaCheck, FaDownload } from 'react-icons/fa'; import { DisabledPlugin, InstallType, InstallTypeTranslationMapping } from '../../plugin'; +import PluginInstallProgress from './PluginInstallProgress'; interface MultiplePluginsInstallModalProps { requests: { name: string; version: string; hash: string; install_type: InstallType }[]; @@ -132,15 +133,12 @@ const MultiplePluginsInstallModal: FC = ({ ); })} - {/* TODO: center the progress bar and make it 80% width */} {loading && ( - )} diff --git a/frontend/src/components/modals/PluginInstallModal.tsx b/frontend/src/components/modals/PluginInstallModal.tsx index 0075fce5..012d0982 100644 --- a/frontend/src/components/modals/PluginInstallModal.tsx +++ b/frontend/src/components/modals/PluginInstallModal.tsx @@ -1,8 +1,9 @@ -import { ConfirmModal, Navigation, ProgressBarWithInfo, QuickAccessTab } from '@decky/ui'; +import { ConfirmModal, Navigation, QuickAccessTab } from '@decky/ui'; import { FC, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { InstallType, InstallTypeTranslationMapping } from '../../plugin'; +import PluginInstallProgress from './PluginInstallProgress'; interface PluginInstallModalProps { artifact: string; @@ -66,7 +67,7 @@ const PluginInstallModal: FC = ({ await onCancel(); }} strTitle={ -
+
{ // IMPORTANT! These comments are not cosmetic and are needed for `extracttext` task to work // t('PluginInstallModal.install.title') @@ -76,16 +77,6 @@ const PluginInstallModal: FC = ({ // t('PluginInstallModal.overwrite.title') t(`PluginInstallModal.${installTypeTranslationKey}.title`, { artifact: artifact }) } - {loading && ( -
- -
- )}
} strOKButtonText={ @@ -128,6 +119,7 @@ const PluginInstallModal: FC = ({ }
{hash == 'False' && {t('PluginInstallModal.no_hash')}} + {loading && } ); }; diff --git a/frontend/src/components/modals/PluginInstallProgress.tsx b/frontend/src/components/modals/PluginInstallProgress.tsx new file mode 100644 index 00000000..14fe9f34 --- /dev/null +++ b/frontend/src/components/modals/PluginInstallProgress.tsx @@ -0,0 +1,31 @@ +import { Field, ProgressBar } from '@decky/ui'; +import { FC } from 'react'; + +interface PluginInstallProgressProps { + percentage: number; + operationText: string | null; +} + +const PluginInstallProgress: FC = ({ percentage, operationText }) => { + return ( +
+ +
+
+ {operationText} +
+ +
+
+
+ ); +}; + +export default PluginInstallProgress;