perf: reload page after active theme (#3779)

#### What type of PR is this?

/kind improvement
/area console
/milestone 2.5.x

#### What this PR does / why we need it:

在主题列表激活主题之后,自动刷新页面。

#### Which issue(s) this PR fixes:

Fixes #3778 

#### Special notes for your reviewer:

测试方式:

1. 打开主题列表,选择任意主题激活,观察是否刷新页面。

#### Does this PR introduce a user-facing change?

```release-note
优化 Console 端激活主题的流程,支持激活后自动刷新页面
```
pull/3772/head^2
Ryan Wang 2023-04-19 10:23:00 +08:00 committed by GitHub
parent 0fb3496aed
commit f87295e5c8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 5 deletions

View File

@ -193,7 +193,7 @@ const handleUninstall = async (theme: Theme, deleteExtensions?: boolean) => {
v-if="currentUserHasPermission(['system:themes:manage'])" v-if="currentUserHasPermission(['system:themes:manage'])"
#dropdownItems #dropdownItems
> >
<VDropdownItem v-if="!isActivated" @click="handleActiveTheme"> <VDropdownItem v-if="!isActivated" @click="handleActiveTheme(true)">
{{ $t("core.common.buttons.active") }} {{ $t("core.common.buttons.active") }}
</VDropdownItem> </VDropdownItem>
<VDropdownItem @click="emit('upgrade')"> <VDropdownItem @click="emit('upgrade')">

View File

@ -80,7 +80,7 @@ const { isActivated, handleActiveTheme } = useThemeLifeCycle(theme);
</template> </template>
<template #dropdownItems> <template #dropdownItems>
<VDropdownItem v-if="!isActivated" @click="handleActiveTheme"> <VDropdownItem v-if="!isActivated" @click="handleActiveTheme()">
{{ $t("core.common.buttons.active") }} {{ $t("core.common.buttons.active") }}
</VDropdownItem> </VDropdownItem>
<VDropdownItem @click="emit('open-settings')"> <VDropdownItem @click="emit('open-settings')">

View File

@ -11,7 +11,7 @@ interface useThemeLifeCycleReturn {
loading: Ref<boolean>; loading: Ref<boolean>;
isActivated: ComputedRef<boolean>; isActivated: ComputedRef<boolean>;
getFailedMessage: () => string | undefined; getFailedMessage: () => string | undefined;
handleActiveTheme: () => void; handleActiveTheme: (reload?: boolean) => void;
handleResetSettingConfig: () => void; handleResetSettingConfig: () => void;
} }
@ -42,7 +42,7 @@ export function useThemeLifeCycle(
} }
}; };
const handleActiveTheme = async () => { const handleActiveTheme = async (reload?: boolean) => {
Dialog.info({ Dialog.info({
title: t("core.theme.operations.active.title"), title: t("core.theme.operations.active.title"),
description: theme.value?.spec.displayName, description: theme.value?.spec.displayName,
@ -57,6 +57,10 @@ export function useThemeLifeCycle(
}); });
Toast.success(t("core.theme.operations.active.toast_success")); Toast.success(t("core.theme.operations.active.toast_success"));
if (reload) {
window.location.reload();
}
} catch (e) { } catch (e) {
console.error("Failed to active theme", e); console.error("Failed to active theme", e);
} finally { } finally {

View File

@ -177,7 +177,7 @@ watch([() => route.name, () => route.params], async () => {
v-permission="['system:themes:manage']" v-permission="['system:themes:manage']"
size="sm" size="sm"
type="primary" type="primary"
@click="handleActiveTheme" @click="handleActiveTheme()"
> >
{{ $t("core.common.buttons.active") }} {{ $t("core.common.buttons.active") }}
</VButton> </VButton>