diff --git a/apps/code/src/renderer/features/integrations/stores/integrationStore.ts b/apps/code/src/renderer/features/integrations/stores/integrationStore.ts index 112f42a9e..022f1eea8 100644 --- a/apps/code/src/renderer/features/integrations/stores/integrationStore.ts +++ b/apps/code/src/renderer/features/integrations/stores/integrationStore.ts @@ -26,6 +26,8 @@ interface IntegrationStore { interface IntegrationSelectors { githubIntegrations: Integration[]; hasGithubIntegration: boolean; + slackIntegrations: Integration[]; + hasSlackIntegration: boolean; } export const useIntegrationStore = create((set) => ({ @@ -36,9 +38,12 @@ export const useIntegrationStore = create((set) => ({ export const useIntegrationSelectors = (): IntegrationSelectors => { const integrations = useIntegrationStore((state) => state.integrations); const githubIntegrations = integrations.filter((i) => i.kind === "github"); + const slackIntegrations = integrations.filter((i) => i.kind === "slack"); return { githubIntegrations, hasGithubIntegration: githubIntegrations.length > 0, + slackIntegrations, + hasSlackIntegration: slackIntegrations.length > 0, }; }; diff --git a/apps/code/src/renderer/features/settings/components/sections/SlackSettings.tsx b/apps/code/src/renderer/features/settings/components/sections/SlackSettings.tsx index 29641831e..68076108b 100644 --- a/apps/code/src/renderer/features/settings/components/sections/SlackSettings.tsx +++ b/apps/code/src/renderer/features/settings/components/sections/SlackSettings.tsx @@ -1,12 +1,20 @@ import { useAuthStateValue } from "@features/auth/hooks/authQueries"; -import { ArrowSquareOutIcon } from "@phosphor-icons/react"; -import { Button, Flex, Text, Tooltip } from "@radix-ui/themes"; +import { + type Integration, + useIntegrationSelectors, +} from "@features/integrations/stores/integrationStore"; +import { useIntegrations } from "@hooks/useIntegrations"; +import { ArrowSquareOutIcon, SlackLogoIcon } from "@phosphor-icons/react"; +import { Box, Button, Flex, Spinner, Text, Tooltip } from "@radix-ui/themes"; +import { formatRelativeTimeLong } from "@renderer/utils/time"; import { openUrlInBrowser } from "@utils/browser"; import { getPostHogUrl } from "@utils/urls"; export function SlackSettings() { const projectId = useAuthStateValue((s) => s.projectId); const cloudRegion = useAuthStateValue((s) => s.cloudRegion); + const { isLoading } = useIntegrations(); + const { slackIntegrations, hasSlackIntegration } = useIntegrationSelectors(); const slackSettingsUrl = projectId ? getPostHogUrl( @@ -15,7 +23,7 @@ export function SlackSettings() { ) : null; - const button = ( + const manageButton = (