From 31caf8f5f87732e5f640b1f0d667c6881896466d Mon Sep 17 00:00:00 2001 From: jxxghp Date: Thu, 23 Jul 2026 17:29:36 +0800 Subject: [PATCH] feat(plugin): expose native subscribe action (#502) --- docs/module-federation-guide.md | 88 ++++++- src/components/dialog/PluginConfigDialog.vue | 6 + src/components/dialog/PluginDataDialog.vue | 6 + src/components/misc/DashboardElement.vue | 14 +- .../usePluginNativeSubscribe.spec.ts | 195 ++++++++++++++++ src/composables/usePluginNativeSubscribe.ts | 215 ++++++++++++++++++ src/locales/en-US.ts | 7 + src/locales/zh-CN.ts | 7 + src/locales/zh-TW.ts | 7 + src/pages/plugin-app.vue | 6 + 10 files changed, 540 insertions(+), 11 deletions(-) create mode 100644 src/composables/__tests__/usePluginNativeSubscribe.spec.ts create mode 100644 src/composables/usePluginNativeSubscribe.ts diff --git a/docs/module-federation-guide.md b/docs/module-federation-guide.md index 00dd1c18..92c1a4bb 100644 --- a/docs/module-federation-guide.md +++ b/docs/module-federation-guide.md @@ -135,12 +135,16 @@ export default defineConfig({ // 自定义事件,用于通知主应用刷新数据 const emit = defineEmits(['action', 'switch', 'close']) -// 接收API对象 +// 接收主应用能力 const props = defineProps({ api: { type: Object, default: () => {}, }, + nativeSubscribe: { + type: Function, + default: null, + }, }) // 页面逻辑代码... @@ -175,7 +179,7 @@ function notifyClose() { ```vue +``` + +`success: true` 表示主应用已接受调用并启动原生交互,不表示用户已经完成订阅。字段无效或当前用户没有订阅权限时返回 `success: false`,插件可以依据 `code` 执行 fallback。 + +### 5.7 调用主应用 Toast `Page`、`Config`、`Dashboard` 与 `AppPage` 的宿主容器会通过固定键提供主应用 Toast。远程组件应复用该实例,不要自行渲染 `VSnackbar` 或创建另一套 Toast 容器: @@ -304,7 +365,14 @@ const emit = defineEmits(['action'])