From 9e95fdbb58e652c5ff6b901930fd197b9c6f12fe Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Thu, 5 Sep 2024 01:20:12 +0800 Subject: [PATCH] misc: added proper error message hints --- backend/src/services/slack/slack-service.ts | 6 ++++- .../OrgWorkflowIntegrationTab.tsx | 20 ++++++++++++---- .../SlackIntegrationForm.tsx | 24 ++++++++++++++----- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/backend/src/services/slack/slack-service.ts b/backend/src/services/slack/slack-service.ts index 91433f5fc..062b5e313 100644 --- a/backend/src/services/slack/slack-service.ts +++ b/backend/src/services/slack/slack-service.ts @@ -125,7 +125,11 @@ export const slackServiceFactory = ({ if (!slackClientId || !slackClientSecret) { throw new BadRequestError({ - message: "Invalid slack configuration" + message: `Invalid Slack configuration. ${ + appCfg.isCloud + ? "Please contact the Infisical team." + : "Contact your instance admin to setup Slack integration in the Admin settings." + }` }); } diff --git a/frontend/src/views/Settings/OrgSettingsPage/components/OrgWorkflowIntegrationTab/OrgWorkflowIntegrationTab.tsx b/frontend/src/views/Settings/OrgSettingsPage/components/OrgWorkflowIntegrationTab/OrgWorkflowIntegrationTab.tsx index ee37f5685..347c0e71f 100644 --- a/frontend/src/views/Settings/OrgSettingsPage/components/OrgWorkflowIntegrationTab/OrgWorkflowIntegrationTab.tsx +++ b/frontend/src/views/Settings/OrgSettingsPage/components/OrgWorkflowIntegrationTab/OrgWorkflowIntegrationTab.tsx @@ -2,6 +2,7 @@ import { useRouter } from "next/router"; import { faSlack } from "@fortawesome/free-brands-svg-icons"; import { faEllipsis, faGear, faPlus } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; +import axios from "axios"; import { twMerge } from "tailwind-merge"; import { createNotification } from "@app/components/notifications"; @@ -71,12 +72,21 @@ export const OrgWorkflowIntegrationTab = withPermission( const triggerReinstall = async (platform: WorkflowIntegrationPlatform, id: string) => { if (platform === WorkflowIntegrationPlatform.SLACK) { - const slackReinstallUrl = await fetchSlackReinstallUrl({ - slackIntegrationId: id - }); + try { + const slackReinstallUrl = await fetchSlackReinstallUrl({ + slackIntegrationId: id + }); - if (slackReinstallUrl) { - router.push(slackReinstallUrl); + if (slackReinstallUrl) { + router.push(slackReinstallUrl); + } + } catch (err) { + if (axios.isAxiosError(err)) { + createNotification({ + text: (err.response?.data as { message: string })?.message, + type: "error" + }); + } } } }; diff --git a/frontend/src/views/Settings/OrgSettingsPage/components/OrgWorkflowIntegrationTab/SlackIntegrationForm.tsx b/frontend/src/views/Settings/OrgSettingsPage/components/OrgWorkflowIntegrationTab/SlackIntegrationForm.tsx index 2c17fae59..f8aea135c 100644 --- a/frontend/src/views/Settings/OrgSettingsPage/components/OrgWorkflowIntegrationTab/SlackIntegrationForm.tsx +++ b/frontend/src/views/Settings/OrgSettingsPage/components/OrgWorkflowIntegrationTab/SlackIntegrationForm.tsx @@ -2,6 +2,7 @@ import { useEffect } from "react"; import { Controller, useForm } from "react-hook-form"; import { useRouter } from "next/router"; import { zodResolver } from "@hookform/resolvers/zod"; +import axios from "axios"; import { z } from "zod"; import { createNotification } from "@app/components/notifications"; @@ -51,12 +52,23 @@ export const SlackIntegrationForm = ({ id, onClose }: Props) => { const triggerSlackInstall = async (slug: string, description?: string) => { setIsConnectLoading.on(); - const slackInstallUrl = await fetchSlackInstallUrl({ - slug, - description - }); - if (slackInstallUrl) { - router.push(slackInstallUrl); + try { + const slackInstallUrl = await fetchSlackInstallUrl({ + slug, + description + }); + if (slackInstallUrl) { + router.push(slackInstallUrl); + } + } catch (err) { + if (axios.isAxiosError(err)) { + createNotification({ + text: (err.response?.data as { message: string })?.message, + type: "error" + }); + } + } finally { + setIsConnectLoading.off(); } };