@@ -117,6 +116,6 @@ const PlaneIntelligenceSettingsPage = observer(() => {
);
-});
+}
-export default PlaneIntelligenceSettingsPage;
+export default observer(PlaneIntelligenceSettingsPage);
diff --git a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/project-states/page.tsx b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/project-states/page.tsx
index cb6a783a7d..b364dd943c 100644
--- a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/project-states/page.tsx
+++ b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/project-states/page.tsx
@@ -1,8 +1,6 @@
"use client";
-import React from "react";
import { observer } from "mobx-react";
-import { useParams } from "next/navigation";
// plane imports
import { PROJECT_GROUPING_TRACKER_EVENTS } from "@plane/constants";
import { useTranslation } from "@plane/i18n";
@@ -27,23 +25,25 @@ import {
// plane web hooks
import { useFlag, useWorkspaceFeatures } from "@/plane-web/hooks/store";
import { EWorkspaceFeatures } from "@/plane-web/types/workspace-feature";
-const WorklogsPage = observer(() => {
+import type { Route } from "./+types/page";
+
+function WorklogsPage({ params }: Route.ComponentProps) {
// router
- const { workspaceSlug } = useParams();
+ const { workspaceSlug } = params;
// store hooks
const { getWorkspaceRoleByWorkspaceSlug } = useUserPermissions();
const { currentWorkspace } = useWorkspace();
const { isWorkspaceFeatureEnabled, updateWorkspaceFeature } = useWorkspaceFeatures();
- const isFeatureEnabled = useFlag(workspaceSlug?.toString(), "PROJECT_GROUPING");
+ const isFeatureEnabled = useFlag(workspaceSlug, "PROJECT_GROUPING");
const { t } = useTranslation();
// derived values
- const currentWorkspaceRole = getWorkspaceRoleByWorkspaceSlug(workspaceSlug.toString());
+ const currentWorkspaceRole = getWorkspaceRoleByWorkspaceSlug(workspaceSlug);
const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Project States` : undefined;
const isAdmin = currentWorkspaceRole === EUserWorkspaceRoles.ADMIN;
const isProjectGroupingEnabled = isWorkspaceFeatureEnabled(EWorkspaceFeatures.IS_PROJECT_GROUPING_ENABLED);
- if (!workspaceSlug || !currentWorkspace?.id) return <>>;
+ if (!currentWorkspace?.id) return <>>;
if (!isAdmin) return ;
@@ -53,7 +53,7 @@ const WorklogsPage = observer(() => {
const payload = {
[EWorkspaceFeatures.IS_PROJECT_GROUPING_ENABLED]: willEnableProjectGrouping,
};
- await updateWorkspaceFeature(workspaceSlug.toString(), payload);
+ await updateWorkspaceFeature(workspaceSlug, payload);
captureSuccess({
eventName: willEnableProjectGrouping
? PROJECT_GROUPING_TRACKER_EVENTS.ENABLE
@@ -87,12 +87,12 @@ const WorklogsPage = observer(() => {
}
- workspaceSlug={workspaceSlug?.toString()}
+ workspaceSlug={workspaceSlug}
>
@@ -101,6 +101,6 @@ const WorklogsPage = observer(() => {
);
-});
+}
-export default WorklogsPage;
+export default observer(WorklogsPage);
diff --git a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/teamspaces/page.tsx b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/teamspaces/page.tsx
index 3e3827c12b..faf04f33d3 100644
--- a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/teamspaces/page.tsx
+++ b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/teamspaces/page.tsx
@@ -1,8 +1,6 @@
"use client";
-import React from "react";
import { observer } from "mobx-react";
-import { useParams } from "next/navigation";
// plane imports
import { TEAMSPACE_TRACKER_ELEMENTS, TEAMSPACE_TRACKER_EVENTS } from "@plane/constants";
import { useTranslation } from "@plane/i18n";
@@ -24,10 +22,11 @@ import { WithFeatureFlagHOC } from "@/plane-web/components/feature-flags";
import { TeamspaceUpgrade } from "@/plane-web/components/teamspaces/upgrade";
import { useWorkspaceFeatures } from "@/plane-web/hooks/store";
import { EWorkspaceFeatures } from "@/plane-web/types/workspace-feature";
+import type { Route } from "./+types/page";
-const TeamspaceSettingsPage = observer(() => {
+function TeamspaceSettingsPage({ params }: Route.ComponentProps) {
// router
- const { workspaceSlug } = useParams();
+ const { workspaceSlug } = params;
// store hooks
const { getWorkspaceRoleByWorkspaceSlug } = useUserPermissions();
const { currentWorkspace } = useWorkspace();
@@ -35,12 +34,12 @@ const TeamspaceSettingsPage = observer(() => {
const { t } = useTranslation();
// derived values
- const currentWorkspaceRole = getWorkspaceRoleByWorkspaceSlug(workspaceSlug.toString());
+ const currentWorkspaceRole = getWorkspaceRoleByWorkspaceSlug(workspaceSlug);
const pageTitle = currentWorkspace?.name ? `${currentWorkspace.name} - Teamspaces` : undefined;
const isAdmin = currentWorkspaceRole === EUserWorkspaceRoles.ADMIN;
const isTeamspacesFeatureEnabled = isWorkspaceFeatureEnabled(EWorkspaceFeatures.IS_TEAMSPACES_ENABLED);
- if (!workspaceSlug || !currentWorkspace?.id) return <>>;
+ if (!currentWorkspace?.id) return <>>;
if (!isAdmin) return
;
@@ -52,7 +51,7 @@ const TeamspaceSettingsPage = observer(() => {
const payload = {
[EWorkspaceFeatures.IS_TEAMSPACES_ENABLED]: !isTeamspacesFeatureEnabled,
};
- const toggleTeamsFeaturePromise = updateWorkspaceFeature(workspaceSlug.toString(), payload);
+ const toggleTeamsFeaturePromise = updateWorkspaceFeature(workspaceSlug, payload);
setPromiseToast(toggleTeamsFeaturePromise, {
loading: "Updating teamspaces feature...",
success: {
@@ -68,7 +67,7 @@ const TeamspaceSettingsPage = observer(() => {
captureSuccess({
eventName: isTeamspacesFeatureEnabled ? TEAMSPACE_TRACKER_EVENTS.DISABLE : TEAMSPACE_TRACKER_EVENTS.ENABLE,
payload: {
- workspace_slug: workspaceSlug.toString(),
+ workspace_slug: workspaceSlug,
},
});
} catch (error) {
@@ -76,7 +75,7 @@ const TeamspaceSettingsPage = observer(() => {
captureError({
eventName: isTeamspacesFeatureEnabled ? TEAMSPACE_TRACKER_EVENTS.DISABLE : TEAMSPACE_TRACKER_EVENTS.ENABLE,
payload: {
- workspace_slug: workspaceSlug.toString(),
+ workspace_slug: workspaceSlug,
},
});
}
@@ -89,7 +88,7 @@ const TeamspaceSettingsPage = observer(() => {
title={t("workspace_settings.settings.teamspaces.heading")}
description={t("workspace_settings.settings.teamspaces.description")}
/>
-
} workspaceSlug={workspaceSlug?.toString()}>
+
} workspaceSlug={workspaceSlug}>
@@ -120,6 +119,6 @@ const TeamspaceSettingsPage = observer(() => {
);
-});
+}
-export default TeamspaceSettingsPage;
+export default observer(TeamspaceSettingsPage);
diff --git a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/layout.tsx b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/layout.tsx
index 8ebb408f76..4dcb606305 100644
--- a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/layout.tsx
+++ b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/layout.tsx
@@ -2,14 +2,14 @@
import { observer } from "mobx-react";
import Link from "next/link";
-import { useParams } from "next/navigation";
import { Outlet } from "react-router";
import { ChevronLeftIcon } from "lucide-react";
import { SettingsContentWrapper } from "@/components/settings/content-wrapper";
+import type { Route } from "./+types/layout";
-const TemplatesLayout = observer(() => {
+function TemplatesLayout({ params }: Route.ComponentProps) {
// router params
- const { workspaceSlug } = useParams();
+ const { workspaceSlug } = params;
return (
@@ -25,6 +25,6 @@ const TemplatesLayout = observer(() => {
);
-});
+}
-export default TemplatesLayout;
+export default observer(TemplatesLayout);
diff --git a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/page/page.tsx b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/page/page.tsx
index 9c3a95cf0c..fc631fd18f 100644
--- a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/page/page.tsx
+++ b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/page/page.tsx
@@ -1,7 +1,7 @@
"use client";
import { observer } from "mobx-react";
-import { useParams, useSearchParams } from "next/navigation";
+import { useSearchParams } from "next/navigation";
// plane imports
import { E_FEATURE_FLAGS, ETemplateLevel } from "@plane/constants";
// plane web imports
@@ -9,10 +9,11 @@ import { useTranslation } from "@plane/i18n";
import { WithFeatureFlagHOC } from "@/plane-web/components/feature-flags";
import { TemplatesUpgrade } from "@/plane-web/components/templates/settings";
import { CreateUpdatePageTemplate } from "@/plane-web/components/templates/settings/page/create-update";
+import type { Route } from "./+types/page";
-const CreateWorkspaceLevelPageTemplatePage = observer(() => {
+function CreateWorkspaceLevelPageTemplatePage({ params }: Route.ComponentProps) {
// router
- const { workspaceSlug } = useParams();
+ const { workspaceSlug } = params;
const searchParams = useSearchParams();
// store hooks
const { t } = useTranslation();
@@ -21,7 +22,7 @@ const CreateWorkspaceLevelPageTemplatePage = observer(() => {
return (
}
>
@@ -31,12 +32,12 @@ const CreateWorkspaceLevelPageTemplatePage = observer(() => {
);
-});
+}
-export default CreateWorkspaceLevelPageTemplatePage;
+export default observer(CreateWorkspaceLevelPageTemplatePage);
diff --git a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/project/[templateId]/publish/page.tsx b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/project/[templateId]/publish/page.tsx
index 1313e64f1a..af75f070a8 100644
--- a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/project/[templateId]/publish/page.tsx
+++ b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/project/[templateId]/publish/page.tsx
@@ -1,7 +1,6 @@
"use client";
import { observer } from "mobx-react";
-import { useParams } from "next/navigation";
// plane imports
import { E_FEATURE_FLAGS } from "@plane/constants";
// plane web imports
@@ -9,28 +8,29 @@ import { WithFeatureFlagHOC } from "@/plane-web/components/feature-flags";
import { TemplatesUpgrade } from "@/plane-web/components/templates/settings";
import { PublishTemplate } from "@/plane-web/components/templates/settings/publish";
import { useProjectTemplates } from "@/plane-web/hooks/store";
+import type { Route } from "./+types/page";
-const PublishProjectTemplatePage = observer(() => {
+function PublishProjectTemplatePage({ params }: Route.ComponentProps) {
// router
- const { workspaceSlug, templateId } = useParams();
+ const { workspaceSlug, templateId } = params;
// store hooks
const { isInitializingTemplates, getTemplateById } = useProjectTemplates();
// derived values
- const templateInstance = getTemplateById(templateId?.toString());
+ const templateInstance = getTemplateById(templateId);
return (
}
>
);
-});
+}
-export default PublishProjectTemplatePage;
+export default observer(PublishProjectTemplatePage);
diff --git a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/project/page.tsx b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/project/page.tsx
index eb90e2560e..517b020246 100644
--- a/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/project/page.tsx
+++ b/apps/web/app/(all)/[workspaceSlug]/(settings)/settings/(workspace)/templates/(templates)/project/page.tsx
@@ -1,7 +1,7 @@
"use client";
import { observer } from "mobx-react";
-import { useParams, useSearchParams } from "next/navigation";
+import { useSearchParams } from "next/navigation";
// plane web imports
import { E_FEATURE_FLAGS } from "@plane/constants";
import { useTranslation } from "@plane/i18n";
@@ -9,10 +9,11 @@ import { WithFeatureFlagHOC } from "@/plane-web/components/feature-flags";
import { IssueModalProvider } from "@/plane-web/components/issues/issue-modal/provider";
import { TemplatesUpgrade } from "@/plane-web/components/templates/settings";
import { CreateUpdateProjectTemplate } from "@/plane-web/components/templates/settings/project";
+import type { Route } from "./+types/page";
-const CreateProjectTemplatePage = observer(() => {
+function CreateProjectTemplatePage({ params }: Route.ComponentProps) {
// router
- const { workspaceSlug } = useParams();
+ const { workspaceSlug } = params;
const searchParams = useSearchParams();
// store hooks
const { t } = useTranslation();
@@ -21,7 +22,7 @@ const CreateProjectTemplatePage = observer(() => {
return (
}
>
@@ -31,10 +32,10 @@ const CreateProjectTemplatePage = observer(() => {