feat(ui): add confirmation dialog before stopping and updating core
- prompt for user confirmation before stopping running core and updating - add confirm dialog UI with cancel and update actions - add multilingual translations for core update confirmation
This commit is contained in:
1 parent
2a6f110d75
commit
e8093928c0
4 files changed
+52
-1
No files matched your search
@@ -966,6 +966,8 @@ export const jaOverrides = {
|
||||
'kernel.versions.check': '更新を確認',
|
||||
'kernel.versions.installVersion': '{version} をインストール',
|
||||
'kernel.versions.installLatest': '停止して更新',
|
||||
'kernel.versions.confirmUpdateTitle': 'コアを停止して更新',
|
||||
'kernel.versions.stopAndConfirmDescription': 'コアを更新すると実行中のコアプロセスが停止し、バージョン {version} がインストールされます。更新後にコアを再起動できます。続行しますか?',
|
||||
'kernel.versions.stopAndUpdateVersion': '{version} に停止して更新',
|
||||
'kernel.versions.reinstallTitle': '現在のバージョンを再インストール',
|
||||
'kernel.versions.reinstall': '再インストール',
|
||||
|
||||
@@ -966,6 +966,8 @@ export const en: Record<MessageKey, string> = {
|
||||
'kernel.versions.check': 'Check for Updates',
|
||||
'kernel.versions.installVersion': 'Install {version}',
|
||||
'kernel.versions.installLatest': 'Stop and Update',
|
||||
'kernel.versions.confirmUpdateTitle': 'Stop and Update Core',
|
||||
'kernel.versions.stopAndConfirmDescription': 'Updating the core will stop the currently running core process and install version {version}. You can restart the core after the update. Do you want to continue?',
|
||||
'kernel.versions.stopAndUpdateVersion': 'Stop and update to {version}',
|
||||
'kernel.versions.reinstallTitle': 'Reinstall the current version',
|
||||
'kernel.versions.reinstall': 'Reinstall',
|
||||
|
||||
@@ -964,6 +964,8 @@ export const zhCN = {
|
||||
'kernel.versions.check': '检查更新',
|
||||
'kernel.versions.installVersion': '安装 {version}',
|
||||
'kernel.versions.installLatest': '停止并更新',
|
||||
'kernel.versions.confirmUpdateTitle': '停止并更新内核',
|
||||
'kernel.versions.stopAndConfirmDescription': '更新内核将停止正在运行的内核进程,并下载安装版本 {version}。更新完成后需重新启动内核,是否继续?',
|
||||
'kernel.versions.stopAndUpdateVersion': '停止并更新至 {version}',
|
||||
'kernel.versions.reinstallTitle': '重新安装当前版本',
|
||||
'kernel.versions.reinstall': '重新安装',
|
||||
|
||||
@@ -113,6 +113,7 @@ export function VersionManagementPage() {
|
||||
const [installing, setInstalling] = useState(false);
|
||||
const [progress, setProgress] = useState<CoreInstallTask | null>(null);
|
||||
const [installDialogOpen, setInstallDialogOpen] = useState(false);
|
||||
const [confirmUpdateOpen, setConfirmUpdateOpen] = useState(false);
|
||||
const [cancellingInstall, setCancellingInstall] = useState(false);
|
||||
|
||||
const [versionSource, setVersionSource] = useState<VersionSourceSettings | null>(null);
|
||||
@@ -629,7 +630,7 @@ export function VersionManagementPage() {
|
||||
className={latestVersion && (!coreInstalled || currentVersion !== latestVersion) ? 'primary-button' : 'secondary-button'}
|
||||
title={latestVersion ? t('kernel.versions.stopAndUpdateVersion', { version: latestVersion }) : t('kernel.versions.installLatest')}
|
||||
disabled={!latestVersion || busy}
|
||||
onClick={() => void installVersion(latestVersion)}
|
||||
onClick={() => setConfirmUpdateOpen(true)}
|
||||
>
|
||||
<Download size={15} aria-hidden="true" />
|
||||
<span>{!coreInstalled ? t('kernel.versions.installLatestMissing') : t('kernel.versions.installLatest')}</span>
|
||||
@@ -651,6 +652,50 @@ export function VersionManagementPage() {
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{/* Core Update Confirmation Dialog */}
|
||||
{confirmUpdateOpen ? (
|
||||
<div className="install-dialog-backdrop app-update-dialog-backdrop">
|
||||
<section
|
||||
className="install-dialog app-update-dialog"
|
||||
role="dialog"
|
||||
aria-modal="true"
|
||||
aria-labelledby="core-update-confirm-title"
|
||||
>
|
||||
<div className="install-dialog-heading">
|
||||
<span className="install-dialog-eyebrow">{t('kernel.dialog.install')}</span>
|
||||
<h2 id="core-update-confirm-title">
|
||||
{t('kernel.versions.confirmUpdateTitle')}
|
||||
</h2>
|
||||
</div>
|
||||
|
||||
<p className="app-update-confirm-copy">
|
||||
{t('kernel.versions.stopAndConfirmDescription', { version: latestVersion })}
|
||||
</p>
|
||||
|
||||
<div className="app-update-dialog-actions">
|
||||
<button
|
||||
type="button"
|
||||
className="secondary-button"
|
||||
onClick={() => setConfirmUpdateOpen(false)}
|
||||
>
|
||||
{t('common.cancel')}
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
className="primary-button"
|
||||
onClick={() => {
|
||||
setConfirmUpdateOpen(false);
|
||||
void installVersion(latestVersion);
|
||||
}}
|
||||
>
|
||||
<Download size={15} aria-hidden="true" />
|
||||
<span>{t('kernel.versions.installLatest')}</span>
|
||||
</button>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
) : null}
|
||||
|
||||
{/* Installation Progress Modal Dialog */}
|
||||
{installDialogOpen && progress ? (
|
||||
<div className="install-dialog-backdrop">
|
||||
|
||||
Reference in new issue
Block a user