feat: build collaboration workspaces
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { AlertsModulePage } from "@/modules/shared/components/ReservedModulePages";
|
||||
import AlertsPage from "../../alerts/page";
|
||||
|
||||
export default function ScopedAlertsPage(): React.ReactElement {
|
||||
return <AlertsModulePage />;
|
||||
export default async function ScopedAlertsPage(): Promise<React.ReactElement> {
|
||||
return AlertsPage();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { DevicesModulePage } from "@/modules/shared/components/ReservedModulePages";
|
||||
import DevicesPage from "../../devices/page";
|
||||
|
||||
export default function ScopedDevicesPage(): React.ReactElement {
|
||||
return <DevicesModulePage />;
|
||||
export default async function ScopedDevicesPage(): Promise<React.ReactElement> {
|
||||
return DevicesPage();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { FamilyModulePage } from "@/modules/shared/components/ReservedModulePages";
|
||||
import FamilyPage from "../../family/page";
|
||||
|
||||
export default function ScopedFamilyPage(): React.ReactElement {
|
||||
return <FamilyModulePage />;
|
||||
export default async function ScopedFamilyPage(): Promise<React.ReactElement> {
|
||||
return FamilyPage();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { NoticesModulePage } from "@/modules/shared/components/ReservedModulePages";
|
||||
import NoticesPage from "../../notices/page";
|
||||
|
||||
export default function ScopedNoticesPage(): React.ReactElement {
|
||||
return <NoticesModulePage />;
|
||||
export default async function ScopedNoticesPage(): Promise<React.ReactElement> {
|
||||
return NoticesPage();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
import { AlertsModulePage } from "@/modules/shared/components/ReservedModulePages";
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export default function AlertsPage(): React.ReactElement {
|
||||
return <AlertsModulePage />;
|
||||
import { getCurrentAuthContext } from "@/modules/core/server/auth";
|
||||
import { hasPermission } from "@/modules/core/server/permissions";
|
||||
import { AlertsWorkspaceClient } from "@/modules/alerts/components/AlertsWorkspaceClient";
|
||||
import { listAlertCenterData } from "@/modules/alerts/server/operations";
|
||||
import { getWorkspaceHref } from "@/modules/shared/lib/workspace-routing";
|
||||
|
||||
export default async function AlertsPage(): Promise<React.ReactElement> {
|
||||
const context = await getCurrentAuthContext();
|
||||
if (!context) {
|
||||
redirect("/login");
|
||||
}
|
||||
|
||||
if (!hasPermission(context.permissions, "alert:read")) {
|
||||
redirect(getWorkspaceHref(context.organization?.slug, "/dashboard"));
|
||||
}
|
||||
|
||||
const organizationId = context.organization?.id;
|
||||
if (!organizationId) {
|
||||
redirect(getWorkspaceHref(context.organization?.slug, "/dashboard"));
|
||||
}
|
||||
|
||||
const data = await listAlertCenterData(organizationId);
|
||||
return <AlertsWorkspaceClient canManage={hasPermission(context.permissions, "alert:manage")} initialData={data} />;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
import { DevicesModulePage } from "@/modules/shared/components/ReservedModulePages";
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export default function DevicesPage(): React.ReactElement {
|
||||
return <DevicesModulePage />;
|
||||
import { getCurrentAuthContext } from "@/modules/core/server/auth";
|
||||
import { hasPermission } from "@/modules/core/server/permissions";
|
||||
import { DevicesWorkspaceClient } from "@/modules/devices/components/DevicesWorkspaceClient";
|
||||
import { listDeviceOperationsData } from "@/modules/devices/server/operations";
|
||||
import { getWorkspaceHref } from "@/modules/shared/lib/workspace-routing";
|
||||
|
||||
export default async function DevicesPage(): Promise<React.ReactElement> {
|
||||
const context = await getCurrentAuthContext();
|
||||
if (!context) {
|
||||
redirect("/login");
|
||||
}
|
||||
|
||||
if (!hasPermission(context.permissions, "device:read")) {
|
||||
redirect(getWorkspaceHref(context.organization?.slug, "/dashboard"));
|
||||
}
|
||||
|
||||
const organizationId = context.organization?.id;
|
||||
if (!organizationId) {
|
||||
redirect(getWorkspaceHref(context.organization?.slug, "/dashboard"));
|
||||
}
|
||||
|
||||
const data = await listDeviceOperationsData(organizationId);
|
||||
return <DevicesWorkspaceClient canManage={hasPermission(context.permissions, "device:manage")} initialData={data} />;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
import { FamilyModulePage } from "@/modules/shared/components/ReservedModulePages";
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export default function FamilyPage(): React.ReactElement {
|
||||
return <FamilyModulePage />;
|
||||
import { getCurrentAuthContext } from "@/modules/core/server/auth";
|
||||
import { hasPermission } from "@/modules/core/server/permissions";
|
||||
import { FamilyWorkspaceClient } from "@/modules/family/components/FamilyWorkspaceClient";
|
||||
import { listFamilyServiceData } from "@/modules/family/server/operations";
|
||||
import { getWorkspaceHref } from "@/modules/shared/lib/workspace-routing";
|
||||
|
||||
export default async function FamilyPage(): Promise<React.ReactElement> {
|
||||
const context = await getCurrentAuthContext();
|
||||
if (!context) {
|
||||
redirect("/login");
|
||||
}
|
||||
|
||||
if (!hasPermission(context.permissions, "family:read")) {
|
||||
redirect(getWorkspaceHref(context.organization?.slug, "/dashboard"));
|
||||
}
|
||||
|
||||
const organizationId = context.organization?.id;
|
||||
if (!organizationId) {
|
||||
redirect(getWorkspaceHref(context.organization?.slug, "/dashboard"));
|
||||
}
|
||||
|
||||
const data = await listFamilyServiceData(organizationId);
|
||||
return <FamilyWorkspaceClient canManage={hasPermission(context.permissions, "family:manage")} initialData={data} />;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,26 @@
|
||||
import { NoticesModulePage } from "@/modules/shared/components/ReservedModulePages";
|
||||
import { redirect } from "next/navigation";
|
||||
|
||||
export default function NoticesPage(): React.ReactElement {
|
||||
return <NoticesModulePage />;
|
||||
import { getCurrentAuthContext } from "@/modules/core/server/auth";
|
||||
import { hasPermission } from "@/modules/core/server/permissions";
|
||||
import { NoticesWorkspaceClient } from "@/modules/notices/components/NoticesWorkspaceClient";
|
||||
import { listNoticeCenterData } from "@/modules/notices/server/operations";
|
||||
import { getWorkspaceHref } from "@/modules/shared/lib/workspace-routing";
|
||||
|
||||
export default async function NoticesPage(): Promise<React.ReactElement> {
|
||||
const context = await getCurrentAuthContext();
|
||||
if (!context) {
|
||||
redirect("/login");
|
||||
}
|
||||
|
||||
if (!hasPermission(context.permissions, "notice:read")) {
|
||||
redirect(getWorkspaceHref(context.organization?.slug, "/dashboard"));
|
||||
}
|
||||
|
||||
const organizationId = context.organization?.id;
|
||||
if (!organizationId) {
|
||||
redirect(getWorkspaceHref(context.organization?.slug, "/dashboard"));
|
||||
}
|
||||
|
||||
const data = await listNoticeCenterData(organizationId, context.account.id);
|
||||
return <NoticesWorkspaceClient canManage={hasPermission(context.permissions, "notice:manage")} initialData={data} />;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user