feat: updated the useage of listCurrent in the app and use org role from session (#14653)
* feat: include org role in org session data * update contents * fix: type err --------- Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Co-authored-by: Udit Takkar <udit222001@gmail.com>
This commit is contained in:
co-authored by
Udit Takkar
Udit Takkar
parent
3ce6c23603
commit
74f09c332b
@@ -1,5 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import { useSession } from "next-auth/react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useState, useEffect } from "react";
|
||||
import { useForm } from "react-hook-form";
|
||||
@@ -212,6 +213,8 @@ const OrgAppearanceView = ({
|
||||
const OrgAppearanceViewWrapper = () => {
|
||||
const router = useRouter();
|
||||
const { t } = useLocale();
|
||||
const session = useSession();
|
||||
const orgRole = session?.data?.user?.org?.role;
|
||||
const { data: currentOrg, isPending, error } = trpc.viewer.organizations.listCurrent.useQuery();
|
||||
|
||||
useEffect(
|
||||
@@ -229,9 +232,7 @@ const OrgAppearanceViewWrapper = () => {
|
||||
|
||||
if (!currentOrg) return null;
|
||||
|
||||
const isAdminOrOwner =
|
||||
currentOrg &&
|
||||
(currentOrg.user.role === MembershipRole.OWNER || currentOrg.user.role === MembershipRole.ADMIN);
|
||||
const isAdminOrOwner = orgRole === MembershipRole.OWNER || orgRole === MembershipRole.ADMIN;
|
||||
|
||||
return <OrgAppearanceView currentOrg={currentOrg} isAdminOrOwner={isAdminOrOwner} />;
|
||||
};
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import { useSession } from "next-auth/react";
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useEffect } from "react";
|
||||
import { Controller, useForm } from "react-hook-form";
|
||||
@@ -52,6 +53,8 @@ interface GeneralViewProps {
|
||||
const OrgGeneralView = () => {
|
||||
const { t } = useLocale();
|
||||
const router = useRouter();
|
||||
const session = useSession();
|
||||
const orgRole = session?.data?.user?.org?.role;
|
||||
|
||||
const {
|
||||
data: currentOrg,
|
||||
@@ -73,8 +76,7 @@ const OrgGeneralView = () => {
|
||||
if (!currentOrg) {
|
||||
return null;
|
||||
}
|
||||
const isAdminOrOwner =
|
||||
currentOrg.user.role === MembershipRole.OWNER || currentOrg.user.role === MembershipRole.ADMIN;
|
||||
const isAdminOrOwner = orgRole === MembershipRole.OWNER || orgRole === MembershipRole.ADMIN;
|
||||
|
||||
return (
|
||||
<LicenseRequired>
|
||||
@@ -84,7 +86,7 @@ const OrgGeneralView = () => {
|
||||
localeProp={user?.locale ?? "en"}
|
||||
/>
|
||||
|
||||
<LockEventTypeSwitch currentOrg={currentOrg} isAdminOrOwner={isAdminOrOwner} />
|
||||
<LockEventTypeSwitch currentOrg={currentOrg} isAdminOrOwner={!!isAdminOrOwner} />
|
||||
</LicenseRequired>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
"use client";
|
||||
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useEffect } from "react";
|
||||
import { useSession } from "next-auth/react";
|
||||
|
||||
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
||||
import { MembershipRole } from "@calcom/prisma/enums";
|
||||
import { trpc } from "@calcom/trpc/react";
|
||||
import { AppSkeletonLoader as SkeletonLoader, Meta } from "@calcom/ui";
|
||||
|
||||
import { getLayout } from "../../../settings/layouts/SettingsLayout";
|
||||
@@ -13,36 +11,23 @@ import SSOConfiguration from "../components/SSOConfiguration";
|
||||
|
||||
const SAMLSSO = () => {
|
||||
const { t } = useLocale();
|
||||
const router = useRouter();
|
||||
|
||||
const {
|
||||
data: currentOrg,
|
||||
isPending,
|
||||
error,
|
||||
} = trpc.viewer.organizations.listCurrent.useQuery(undefined, {});
|
||||
const { data, status } = useSession();
|
||||
const org = data?.user.org;
|
||||
|
||||
useEffect(
|
||||
function refactorMeWithoutEffect() {
|
||||
if (error) {
|
||||
router.push("/settings");
|
||||
}
|
||||
},
|
||||
[error]
|
||||
);
|
||||
|
||||
if (isPending)
|
||||
if (status === "loading")
|
||||
<SkeletonLoader title={t("sso_saml_heading")} description={t("sso_configuration_description_orgs")} />;
|
||||
if (!currentOrg) {
|
||||
|
||||
if (!org) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const isAdminOrOwner =
|
||||
currentOrg.user.role === MembershipRole.OWNER || currentOrg.user.role === MembershipRole.ADMIN;
|
||||
const isAdminOrOwner = org.role === MembershipRole.OWNER || org.role === MembershipRole.ADMIN;
|
||||
|
||||
return isAdminOrOwner ? (
|
||||
return !!isAdminOrOwner ? (
|
||||
<div className="bg-default w-full sm:mx-0 xl:mt-0">
|
||||
<Meta title={t("sso_configuration")} description={t("sso_configuration_description_orgs")} />
|
||||
<SSOConfiguration teamId={currentOrg?.id} />
|
||||
<SSOConfiguration teamId={org.id} />
|
||||
</div>
|
||||
) : (
|
||||
<div className="py-5">
|
||||
|
||||
@@ -236,10 +236,8 @@ const PendingMemberItem = (props: { member: TeamMember; index: number; teamId: n
|
||||
const { t } = useLocale();
|
||||
const utils = trpc.useUtils();
|
||||
const session = useSession();
|
||||
const orgRole = session?.data?.user.org?.role;
|
||||
const bookerUrl = member.bookerUrl;
|
||||
const { data: currentOrg } = trpc.viewer.organizations.listCurrent.useQuery(undefined, {
|
||||
enabled: !!session.data?.user?.org,
|
||||
});
|
||||
const removeMemberMutation = trpc.viewer.teams.removeMember.useMutation({
|
||||
async onSuccess() {
|
||||
await utils.viewer.teams.get.invalidate();
|
||||
@@ -251,9 +249,7 @@ const PendingMemberItem = (props: { member: TeamMember; index: number; teamId: n
|
||||
},
|
||||
});
|
||||
|
||||
const isOrgAdminOrOwner =
|
||||
currentOrg &&
|
||||
(currentOrg.user.role === MembershipRole.OWNER || currentOrg.user.role === MembershipRole.ADMIN);
|
||||
const isOrgAdminOrOwner = orgRole === MembershipRole.OWNER || orgRole === MembershipRole.ADMIN;
|
||||
|
||||
return (
|
||||
<li
|
||||
|
||||
@@ -82,6 +82,7 @@ const MembersView = () => {
|
||||
|
||||
const router = useRouter();
|
||||
const session = useSession();
|
||||
const org = session?.data?.user.org;
|
||||
|
||||
const utils = trpc.useUtils();
|
||||
const params = useParamsWithFallback();
|
||||
@@ -91,9 +92,6 @@ const MembersView = () => {
|
||||
const showDialog = searchParams?.get("inviteModal") === "true";
|
||||
const [showMemberInvitationModal, setShowMemberInvitationModal] = useState(showDialog);
|
||||
const [showInviteLinkSettingsModal, setInviteLinkSettingsModal] = useState(false);
|
||||
const { data: currentOrg } = trpc.viewer.organizations.listCurrent.useQuery(undefined, {
|
||||
enabled: !!session.data?.user?.org,
|
||||
});
|
||||
|
||||
const { data: orgMembersNotInThisTeam, isPending: isOrgListLoading } =
|
||||
trpc.viewer.organizations.getMembers.useQuery(
|
||||
@@ -134,9 +132,7 @@ const MembersView = () => {
|
||||
const isAdmin =
|
||||
team && (team.membership.role === MembershipRole.OWNER || team.membership.role === MembershipRole.ADMIN);
|
||||
|
||||
const isOrgAdminOrOwner =
|
||||
currentOrg &&
|
||||
(currentOrg.user.role === MembershipRole.OWNER || currentOrg.user.role === MembershipRole.ADMIN);
|
||||
const isOrgAdminOrOwner = org?.role === MembershipRole.OWNER || org?.role === MembershipRole.ADMIN;
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { zodResolver } from "@hookform/resolvers/zod";
|
||||
import { useSession } from "next-auth/react";
|
||||
import type { Dispatch } from "react";
|
||||
import { useMemo } from "react";
|
||||
import { Controller, useForm } from "react-hook-form";
|
||||
@@ -55,6 +56,8 @@ export function EditForm({
|
||||
}) {
|
||||
const [setMutationLoading] = useEditMode((state) => [state.setMutationloading], shallow);
|
||||
const { t } = useLocale();
|
||||
const session = useSession();
|
||||
const org = session?.data?.user?.org;
|
||||
const utils = trpc.useUtils();
|
||||
const form = useForm({
|
||||
resolver: zodResolver(editSchema),
|
||||
@@ -69,8 +72,7 @@ export function EditForm({
|
||||
},
|
||||
});
|
||||
|
||||
const { data: currentMembership } = trpc.viewer.organizations.listCurrent.useQuery();
|
||||
const isOwner = currentMembership?.user.role === MembershipRole.OWNER;
|
||||
const isOwner = org?.role === MembershipRole.OWNER;
|
||||
|
||||
const membershipOptions = useMemo<MembershipOption[]>(() => {
|
||||
const options: MembershipOption[] = [
|
||||
|
||||
Reference in New Issue
Block a user