From 21561be5d941ace2e1fea9da97df0dba5322cf1f Mon Sep 17 00:00:00 2001 From: azmy60 Date: Wed, 25 Jun 2025 01:53:31 +0700 Subject: [PATCH 0001/1104] errors that may happen when publishing a plugin for the first time --- .../src-commercial/entrypoints/utility.ts | 4 ++ .../components/plugins/PluginManagerModal.vue | 16 ++++++- .../src/components/plugins/PluginPage.vue | 8 +++- apps/studio/src/lib/errors.ts | 42 +++++++++++++++++++ .../src/lib/utility/UtilityConnection.ts | 7 +++- .../src/services/plugin/PluginFileManager.ts | 1 - .../src/services/plugin/PluginRegistry.ts | 6 ++- .../plugin/PluginRepositoryService.ts | 30 ++++++++++--- 8 files changed, 101 insertions(+), 13 deletions(-) diff --git a/apps/studio/src-commercial/entrypoints/utility.ts b/apps/studio/src-commercial/entrypoints/utility.ts index 793a49f16cf..f83fa69d01e 100644 --- a/apps/studio/src-commercial/entrypoints/utility.ts +++ b/apps/studio/src-commercial/entrypoints/utility.ts @@ -40,6 +40,8 @@ interface Reply { type: 'reply' | 'error', data?: any, error?: string + errorName?: string + errorCode?: number stack?: string } @@ -121,6 +123,8 @@ async function runHandler(id: string, name: string, args: any) { replyArgs.type = 'error'; replyArgs.stack = e?.stack; replyArgs.error = e?.message ?? e; + replyArgs.errorName = e?.name; + replyArgs.errorCode = e?.code; log.error("HANDLER: ERROR", e) }) .finally(() => { diff --git a/apps/studio/src/components/plugins/PluginManagerModal.vue b/apps/studio/src/components/plugins/PluginManagerModal.vue index 6e711ae0d6c..3d0020a5816 100644 --- a/apps/studio/src/components/plugins/PluginManagerModal.vue +++ b/apps/studio/src/components/plugins/PluginManagerModal.vue @@ -48,6 +48,7 @@ import PluginList from "./PluginList.vue"; import PluginPage from "./PluginPage.vue"; import _ from "lodash"; import ErrorAlert from "@/components/common/ErrorAlert.vue"; +import { PluginSystemErrorCode } from "@/lib/errors"; const log = rawLog.scope("PluginManagerModal"); @@ -155,8 +156,19 @@ export default Vue.extend({ } }, async openPluginPage({ id }) { - const info = await this.$util.send("plugin/repository", { id }); - this.selectedPluginReadme = info.readme; + try { + const info = await this.$util.send("plugin/repository", { id }); + this.selectedPluginReadme = info.readme; + } catch (e) { + if (e.code === PluginSystemErrorCode.PLUGIN_NOT_FOUND) { + // FIXME use error alert box + this.selectedPluginReadme = "We can't find the repository for this plugin."; + } else { + this.selectedPluginReadme = "Something went wrong."; + log.error(e); + this.$noty.error(`Error opening plugin page: ${e.message}`); + } + } this.selectedPluginIdx = this.plugins.findIndex((p) => p.id === id); }, async buildPluginListData() { diff --git a/apps/studio/src/components/plugins/PluginPage.vue b/apps/studio/src/components/plugins/PluginPage.vue index 5a6227a6aea..6f66a19d28c 100644 --- a/apps/studio/src/components/plugins/PluginPage.vue +++ b/apps/studio/src/components/plugins/PluginPage.vue @@ -11,7 +11,10 @@ - + link   @@ -22,7 +25,8 @@ {{ plugin.description }}
-