mirror of
https://github.com/hanzoai/calendar.git
synced 2026-10-30 14:46:43 +00:00
* refactor: move organization members page from /settings/organizations/members to /members - Create new /members route under main-nav with same functionality - Add permanent redirect from /settings/organizations/members to /members - Include loading skeleton and server actions for the new route Co-Authored-By: [email protected] <[email protected]> * refactor: Deduplicate organization members page logic (#27168) * refactor(web): extract shared org members data fetching logic - Extract data fetching, coaching, and permission logic into [getOrgMembersPageData.ts](cci:7://file:///Users/dhairyashilshinde/work/cal.com/apps/web/modules/members/getOrgMembersPageData.ts:0:0-0:0) - Deduplicate logic between [/members](cci:7://file:///Users/dhairyashilshinde/work/cal.com/apps/web/app/%28use-page-wrapper%29/%28main-nav%29/members:0:0-0:0) and pages - Reduce page component size and improve maintainability * safe guard for org id null --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Dhairyashil Shinde <[email protected]>
46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
|
|
|
|
import { buildLegacyRequest } from "@lib/buildLegacyCtx";
|
|
|
|
import { _generateMetadata, getTranslate } from "app/_utils";
|
|
import { ShellMainAppDir } from "app/(use-page-wrapper)/(main-nav)/ShellMainAppDir";
|
|
import { cookies, headers } from "next/headers";
|
|
import { redirect } from "next/navigation";
|
|
|
|
import { getOrgMembersPageData } from "~/members/getOrgMembersPageData";
|
|
import { MembersView } from "~/members/members-view";
|
|
|
|
export const generateMetadata = async () =>
|
|
await _generateMetadata(
|
|
(t) => t("organization_members"),
|
|
(t) => t("organization_description"),
|
|
undefined,
|
|
undefined,
|
|
"/members"
|
|
);
|
|
|
|
const Page = async () => {
|
|
const session = await getServerSession({ req: buildLegacyRequest(await headers(), await cookies()) });
|
|
|
|
if (!session?.user.id || !session?.user.profile?.organizationId || !session?.user.org) {
|
|
return redirect("/settings/my-account/profile");
|
|
}
|
|
|
|
const { org, teams, facetedTeamValues, attributes, permissions } = await getOrgMembersPageData(session);
|
|
const t = await getTranslate();
|
|
|
|
return (
|
|
<ShellMainAppDir heading={t("organization_members")} subtitle={t("organization_description")}>
|
|
<MembersView
|
|
org={org}
|
|
teams={teams}
|
|
facetedTeamValues={facetedTeamValues}
|
|
attributes={attributes}
|
|
permissions={permissions}
|
|
/>
|
|
</ShellMainAppDir>
|
|
);
|
|
};
|
|
|
|
export default Page;
|