diff --git a/frontend/src/pages/secret-manager/SettingsPage/components/WorkflowIntegrationSection/WorkflowIntegrationTab.tsx b/frontend/src/pages/secret-manager/SettingsPage/components/WorkflowIntegrationSection/WorkflowIntegrationTab.tsx
index 1cec10b9b..c3e2a20f1 100644
--- a/frontend/src/pages/secret-manager/SettingsPage/components/WorkflowIntegrationSection/WorkflowIntegrationTab.tsx
+++ b/frontend/src/pages/secret-manager/SettingsPage/components/WorkflowIntegrationSection/WorkflowIntegrationTab.tsx
@@ -1,5 +1,5 @@
import { BsMicrosoftTeams, BsSlack } from "react-icons/bs";
-import { faPlus } from "@fortawesome/free-solid-svg-icons";
+import { faGear, faPlus } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { createNotification } from "@app/components/notifications";
@@ -7,6 +7,7 @@ import { OrgPermissionCan } from "@app/components/permissions";
import {
Button,
DeleteActionModal,
+ EmptyState,
Table,
TableContainer,
TBody,
@@ -16,7 +17,10 @@ import {
} from "@app/components/v2";
import { OrgPermissionActions, OrgPermissionSubjects, useWorkspace } from "@app/context";
import { usePopUp } from "@app/hooks";
-import { useDeleteProjectWorkflowIntegration } from "@app/hooks/api";
+import {
+ useDeleteProjectWorkflowIntegration,
+ useGetWorkspaceWorkflowIntegrationConfig
+} from "@app/hooks/api";
import { WorkflowIntegrationPlatform } from "@app/hooks/api/workflowIntegrations/types";
import { AddWorkflowIntegrationModal } from "./components/AddWorkflowIntegrationModal";
@@ -44,6 +48,17 @@ export const WorkflowIntegrationTab = () => {
] as const);
const { currentWorkspace } = useWorkspace();
+ const { data: slackConfig, isPending: isSlackConfigLoading } =
+ useGetWorkspaceWorkflowIntegrationConfig({
+ workspaceId: currentWorkspace?.id ?? "",
+ integration: WorkflowIntegrationPlatform.SLACK
+ });
+
+ const { data: microsoftTeamsConfig, isPending: isMicrosoftTeamsConfigLoading } =
+ useGetWorkspaceWorkflowIntegrationConfig({
+ workspaceId: currentWorkspace?.id ?? "",
+ integration: WorkflowIntegrationPlatform.MICROSOFT_TEAMS
+ });
const { mutateAsync: deleteIntegration } = useDeleteProjectWorkflowIntegration();
@@ -89,20 +104,37 @@ export const WorkflowIntegrationTab = () => {
Connect Infisical to other platforms for notification and workflow integrations.
-
-
-
- | Provider |
- Access Request Notifications Destination |
- Secret Request Notifications Destination |
- |
-
-
-
-
-
-
-
+ {!!slackConfig || !!microsoftTeamsConfig ? (
+
+
+
+ | Provider |
+ Access Request Notifications Destination |
+ Secret Request Notifications Destination |
+ |
+
+
+
+
+
+
+
+ ) : (
+
+
+
+ )}
,
data?: {
@@ -33,14 +35,11 @@ type Props = {
) => void;
};
-export const MicrosoftTeamsConfigRow = ({ handlePopUpOpen }: Props) => {
- const { currentWorkspace } = useWorkspace();
- const { data: microsoftTeamsConfig, isPending: isMicrosoftTeamsConfigLoading } =
- useGetWorkspaceWorkflowIntegrationConfig({
- workspaceId: currentWorkspace?.id ?? "",
- integration: WorkflowIntegrationPlatform.MICROSOFT_TEAMS
- });
-
+export const MicrosoftTeamsConfigRow = ({
+ handlePopUpOpen,
+ isMicrosoftTeamsConfigLoading,
+ microsoftTeamsConfig
+}: Props) => {
const { data: microsoftTeamsChannels, isPending: isMicrosoftTeamsChannelsLoading } =
useGetMicrosoftTeamsIntegrationTeams(microsoftTeamsConfig?.integrationId);
const microsoftTeamsChannelIdToName = Object.fromEntries(
diff --git a/frontend/src/pages/secret-manager/SettingsPage/components/WorkflowIntegrationSection/components/SlackConfigRow.tsx b/frontend/src/pages/secret-manager/SettingsPage/components/WorkflowIntegrationSection/components/SlackConfigRow.tsx
index d71176927..0993ef6ac 100644
--- a/frontend/src/pages/secret-manager/SettingsPage/components/WorkflowIntegrationSection/components/SlackConfigRow.tsx
+++ b/frontend/src/pages/secret-manager/SettingsPage/components/WorkflowIntegrationSection/components/SlackConfigRow.tsx
@@ -15,15 +15,17 @@ import {
Td,
Tr
} from "@app/components/v2";
-import { OrgPermissionActions, OrgPermissionSubjects, useWorkspace } from "@app/context";
+import { OrgPermissionActions, OrgPermissionSubjects } from "@app/context";
+import { useGetSlackIntegrationChannels } from "@app/hooks/api";
import {
- useGetSlackIntegrationChannels,
- useGetWorkspaceWorkflowIntegrationConfig
-} from "@app/hooks/api";
-import { WorkflowIntegrationPlatform } from "@app/hooks/api/workflowIntegrations/types";
+ ProjectWorkflowIntegrationConfig,
+ WorkflowIntegrationPlatform
+} from "@app/hooks/api/workflowIntegrations/types";
import { UsePopUpState } from "@app/hooks/usePopUp";
type Props = {
+ slackConfig?: ProjectWorkflowIntegrationConfig;
+ isSlackConfigLoading: boolean;
handlePopUpOpen: (
popUpName: keyof UsePopUpState<["removeIntegration", "editIntegration"]>,
data?: {
@@ -33,14 +35,7 @@ type Props = {
) => void;
};
-export const SlackConfigRow = ({ handlePopUpOpen }: Props) => {
- const { currentWorkspace } = useWorkspace();
- const { data: slackConfig, isPending: isSlackConfigLoading } =
- useGetWorkspaceWorkflowIntegrationConfig({
- workspaceId: currentWorkspace?.id ?? "",
- integration: WorkflowIntegrationPlatform.SLACK
- });
-
+export const SlackConfigRow = ({ handlePopUpOpen, isSlackConfigLoading, slackConfig }: Props) => {
const { data: slackChannels, isPending: isSlackChannelsLoading } = useGetSlackIntegrationChannels(
slackConfig?.integrationId
);