From 4ba3cfb64d4aeb21d8e848df5d3c069266a84181 Mon Sep 17 00:00:00 2001 From: Ryan Wang Date: Wed, 8 Mar 2023 17:32:11 +0800 Subject: [PATCH] feat: add support for refreshing search engine indexes (#3475) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /kind feature #### What this PR does / why we need it: 在 Console 端仪表盘的快捷访问中添加刷新搜索引擎索引的入口。 ![2023-03-07 13 48 52](https://user-images.githubusercontent.com/21301288/223332020-6d4e143e-e024-46ce-a84c-96ea3813cec0.gif) #### Special notes for your reviewer: 1. 测试仪表盘快捷访问中的刷新搜索引擎操作是否可以正常调用接口即可。 2. 分配一个不包含文章管理权限的角色给某个用户,检查是否可以看到这个刷新的入口。 #### Does this PR introduce a user-facing change? ```release-note Console 端仪表盘的快捷访问中添加刷新搜索引擎索引的入口。 ``` --- .../dashboard/widgets/QuickLinkWidget.vue | 19 +++++++++++++++++++ console/src/utils/api-client.ts | 2 ++ .../extensions/role-template-post.yaml | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/console/src/modules/dashboard/widgets/QuickLinkWidget.vue b/console/src/modules/dashboard/widgets/QuickLinkWidget.vue index 9f5b57d7a..8289de260 100644 --- a/console/src/modules/dashboard/widgets/QuickLinkWidget.vue +++ b/console/src/modules/dashboard/widgets/QuickLinkWidget.vue @@ -8,12 +8,16 @@ import { IconUserSettings, IconPalette, IconWindowLine, + IconSearch, VCard, IconUserLine, + Dialog, + Toast, } from "@halo-dev/components"; import { markRaw, ref, type Component } from "vue"; import { useRouter } from "vue-router"; import ThemePreviewModal from "@/modules/interface/themes/components/preview/ThemePreviewModal.vue"; +import { apiClient } from "@/utils/api-client"; interface Action { icon: Component; @@ -111,6 +115,21 @@ const actions: Action[] = [ }, permissions: ["system:users:manage"], }, + { + icon: markRaw(IconSearch), + title: "刷新搜索引擎", + action: () => { + Dialog.warning({ + title: "确定要刷新搜索引擎索引吗?", + description: "此操作会对所有已发布的文章重新创建搜索引擎索引。", + onConfirm: async () => { + await apiClient.indices.buildPostIndices(); + Toast.success("刷新成功"); + }, + }); + }, + permissions: ["system:posts:manage"], + }, ];