Files
calendar/packages/features/insights/context/InsightsOrgTeamsProvider.tsx
Eunjae LeeandGitHub 5b08b9f11f fix: add isAdminOrOwner and useIsOrgAdminOrOwner (#20429)
* fix: add isAdminOrOwner and useIsOrgAdminOrOwner

* make useIsOrgAdminOrOwner to accept session

* revert change

* remove useIsOrgAdminOrOwner and rename isAdminOrOwner to checkAdminOrOwner

* fix type

* fix type

* fix import
2025-03-28 17:01:06 +00:00

41 lines
1.2 KiB
TypeScript

"use client";
import { useSession } from "next-auth/react";
import { createContext, useState } from "react";
import { checkAdminOrOwner } from "@calcom/features/auth/lib/checkAdminOrOwner";
import type { OrgTeamsType } from "../filters/OrgTeamsFilter";
export type InsightsOrgTeamsContextType = {
orgTeamsType: OrgTeamsType;
setOrgTeamsType: (type: OrgTeamsType) => void;
selectedTeamId: number | undefined;
setSelectedTeamId: (id: number | undefined) => void;
};
export const InsightsOrgTeamsContext = createContext<InsightsOrgTeamsContextType | null>(null);
export function InsightsOrgTeamsProvider({ children }: { children: React.ReactNode }) {
const session = useSession();
const currentOrgId = session.data?.user.org?.id;
const isAdminOrOwner = checkAdminOrOwner(session.data?.user?.org?.role);
const [orgTeamsType, setOrgTeamsType] = useState<OrgTeamsType>(
isAdminOrOwner && currentOrgId ? "org" : "yours"
);
const [selectedTeamId, setSelectedTeamId] = useState<number | undefined>();
return (
<InsightsOrgTeamsContext.Provider
value={{
orgTeamsType,
setOrgTeamsType,
selectedTeamId,
setSelectedTeamId,
}}>
{children}
</InsightsOrgTeamsContext.Provider>
);
}