From 8205961d2a8adb7955efbee2961d5bd321cdd950 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Mon, 25 Mar 2024 16:19:45 +0530 Subject: [PATCH] [WEB-826] chore: integrations (#4057) * fix: workspace integration page * chore: remove integrations and code refactor --- web/constants/project.ts | 8 -- web/constants/workspace.ts | 16 ---- .../[projectId]/settings/integrations.tsx | 86 ------------------- .../[workspaceSlug]/settings/imports.tsx | 58 ------------- .../[workspaceSlug]/settings/integrations.tsx | 82 ------------------ 5 files changed, 250 deletions(-) delete mode 100644 web/pages/[workspaceSlug]/projects/[projectId]/settings/integrations.tsx delete mode 100644 web/pages/[workspaceSlug]/settings/imports.tsx delete mode 100644 web/pages/[workspaceSlug]/settings/integrations.tsx diff --git a/web/constants/project.ts b/web/constants/project.ts index c4ef817fdb..1715c0e82c 100644 --- a/web/constants/project.ts +++ b/web/constants/project.ts @@ -115,14 +115,6 @@ export const PROJECT_SETTINGS_LINKS: { highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/labels`, Icon: SettingIcon, }, - { - key: "integrations", - label: "Integrations", - href: `/settings/integrations`, - access: EUserProjectRoles.ADMIN, - highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/integrations`, - Icon: SettingIcon, - }, { key: "estimates", label: "Estimates", diff --git a/web/constants/workspace.ts b/web/constants/workspace.ts index 18cfac3a88..cbb8d23241 100644 --- a/web/constants/workspace.ts +++ b/web/constants/workspace.ts @@ -149,22 +149,6 @@ export const WORKSPACE_SETTINGS_LINKS: { highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/billing`, Icon: SettingIcon, }, - { - key: "integrations", - label: "Integrations", - href: `/settings/integrations`, - access: EUserWorkspaceRoles.ADMIN, - highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/integrations`, - Icon: SettingIcon, - }, - { - key: "import", - label: "Imports", - href: `/settings/imports`, - access: EUserWorkspaceRoles.ADMIN, - highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/settings/imports`, - Icon: SettingIcon, - }, { key: "export", label: "Exports", diff --git a/web/pages/[workspaceSlug]/projects/[projectId]/settings/integrations.tsx b/web/pages/[workspaceSlug]/projects/[projectId]/settings/integrations.tsx deleted file mode 100644 index a4d8c4dd7b..0000000000 --- a/web/pages/[workspaceSlug]/projects/[projectId]/settings/integrations.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import { ReactElement } from "react"; -import { observer } from "mobx-react"; -import { useRouter } from "next/router"; -import useSWR from "swr"; -import { IProject } from "@plane/types"; -// hooks -import { PageHead } from "@/components/core"; -import { EmptyState } from "@/components/empty-state"; -import { ProjectSettingHeader } from "@/components/headers"; -import { IntegrationCard } from "@/components/project"; -import { IntegrationsSettingsLoader } from "@/components/ui"; -// layouts -import { EmptyStateType } from "@/constants/empty-state"; -import { PROJECT_DETAILS, WORKSPACE_INTEGRATIONS } from "@/constants/fetch-keys"; -import { AppLayout } from "@/layouts/app-layout"; -import { ProjectSettingLayout } from "@/layouts/settings-layout"; -// services -import { NextPageWithLayout } from "@/lib/types"; -import { IntegrationService } from "@/services/integrations"; -import { ProjectService } from "@/services/project"; -// components -// ui -// types -// fetch-keys -// constants - -// services -const integrationService = new IntegrationService(); -const projectService = new ProjectService(); - -const ProjectIntegrationsPage: NextPageWithLayout = observer(() => { - const router = useRouter(); - const { workspaceSlug, projectId } = router.query; - // fetch project details - const { data: projectDetails } = useSWR( - workspaceSlug && projectId ? PROJECT_DETAILS(projectId as string) : null, - workspaceSlug && projectId ? () => projectService.getProject(workspaceSlug as string, projectId as string) : null - ); - // fetch Integrations list - const { data: workspaceIntegrations } = useSWR( - workspaceSlug ? WORKSPACE_INTEGRATIONS(workspaceSlug as string) : null, - () => (workspaceSlug ? integrationService.getWorkspaceIntegrationsList(workspaceSlug as string) : null) - ); - // derived values - const isAdmin = projectDetails?.member_role === 20; - const pageTitle = projectDetails?.name ? `${projectDetails?.name} - Integrations` : undefined; - - return ( - <> - -
-
-

Integrations

-
- {workspaceIntegrations ? ( - workspaceIntegrations.length > 0 ? ( -
- {workspaceIntegrations.map((integration) => ( - - ))} -
- ) : ( -
- -
- ) - ) : ( - - )} -
- - ); -}); - -ProjectIntegrationsPage.getLayout = function getLayout(page: ReactElement) { - return ( - }> - {page} - - ); -}; - -export default ProjectIntegrationsPage; diff --git a/web/pages/[workspaceSlug]/settings/imports.tsx b/web/pages/[workspaceSlug]/settings/imports.tsx deleted file mode 100644 index caf958d388..0000000000 --- a/web/pages/[workspaceSlug]/settings/imports.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { observer } from "mobx-react-lite"; -// hooks -import { PageHead } from "@/components/core"; -import { WorkspaceSettingHeader } from "@/components/headers"; -import IntegrationGuide from "@/components/integration/guide"; -import { EUserWorkspaceRoles } from "@/constants/workspace"; -import { useUser, useWorkspace } from "@/hooks/store"; -// layouts -import { AppLayout } from "@/layouts/app-layout"; -import { WorkspaceSettingLayout } from "@/layouts/settings-layout"; -// components -// types -import { NextPageWithLayout } from "@/lib/types"; -// constants - -const ImportsPage: NextPageWithLayout = observer(() => { - // store hooks - const { - membership: { currentWorkspaceRole }, - } = useUser(); - const { currentWorkspace } = useWorkspace(); - - // derived values - const isAdmin = currentWorkspaceRole === EUserWorkspaceRoles.ADMIN; - const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Imports` : undefined; - - if (!isAdmin) - return ( - <> - -
-

You are not authorized to access this page.

-
- - ); - - return ( - <> - -
-
-

Imports

-
- -
- - ); -}); - -ImportsPage.getLayout = function getLayout(page: React.ReactElement) { - return ( - }> - {page} - - ); -}; - -export default ImportsPage; diff --git a/web/pages/[workspaceSlug]/settings/integrations.tsx b/web/pages/[workspaceSlug]/settings/integrations.tsx deleted file mode 100644 index 7748f976dc..0000000000 --- a/web/pages/[workspaceSlug]/settings/integrations.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import { ReactElement } from "react"; -import { observer } from "mobx-react-lite"; -import { useRouter } from "next/router"; -import useSWR from "swr"; -// hooks -// services -// layouts -// components -import { PageHead } from "@/components/core"; -import { WorkspaceSettingHeader } from "@/components/headers"; -import { SingleIntegrationCard } from "@/components/integration"; -// ui -import { IntegrationAndImportExportBanner, IntegrationsSettingsLoader } from "@/components/ui"; -// types -// fetch-keys -import { APP_INTEGRATIONS } from "@/constants/fetch-keys"; -// constants -import { EUserWorkspaceRoles } from "@/constants/workspace"; -import { useUser, useWorkspace } from "@/hooks/store"; -import { AppLayout } from "@/layouts/app-layout"; -import { WorkspaceSettingLayout } from "@/layouts/settings-layout"; -import { NextPageWithLayout } from "@/lib/types"; -import { IntegrationService } from "@/services/integrations"; - -const integrationService = new IntegrationService(); - -const WorkspaceIntegrationsPage: NextPageWithLayout = observer(() => { - // router - const router = useRouter(); - const { workspaceSlug } = router.query; - // store hooks - const { - membership: { currentWorkspaceRole }, - } = useUser(); - const { currentWorkspace } = useWorkspace(); - - // derived values - const isAdmin = currentWorkspaceRole === EUserWorkspaceRoles.ADMIN; - const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Integrations` : undefined; - - if (!isAdmin) - return ( - <> - -
-

You are not authorized to access this page.

-
- - ); - - const { data: appIntegrations } = useSWR(workspaceSlug && isAdmin ? APP_INTEGRATIONS : null, () => - workspaceSlug && isAdmin ? integrationService.getAppIntegrationsList() : null - ); - - return ( - <> - -
- -
- {appIntegrations ? ( - appIntegrations.map((integration) => ( - - )) - ) : ( - - )} -
-
- - ); -}); - -WorkspaceIntegrationsPage.getLayout = function getLayout(page: ReactElement) { - return ( - }> - {page} - - ); -}; - -export default WorkspaceIntegrationsPage;