feat: battle of ts - unlimited edition

This commit is contained in:
=
2025-10-10 00:09:46 +05:30
parent fd98465dec
commit 44c9575a3d
38 changed files with 492 additions and 498 deletions
@@ -20,7 +20,7 @@ export const AuditLogsRetentionSection = () => {
const { mutateAsync: updateAuditLogsRetention } = useUpdateWorkspaceAuditLogsRetention();
const { currentProject } = useProject();
const { membership } = useProjectPermission();
const { hasProjectRole } = useProjectPermission();
const { subscription } = useSubscription();
const { popUp, handlePopUpOpen, handlePopUpToggle } = usePopUp(["upgradePlan"] as const);
@@ -82,7 +82,7 @@ export const AuditLogsRetentionSection = () => {
return null;
}
const isAdmin = membership.roles.includes(ProjectMembershipRole.Admin);
const isAdmin = hasProjectRole(ProjectMembershipRole.Admin);
return (
<>
<div className="mb-6 rounded-lg border border-mineshaft-600 bg-mineshaft-900 p-4">
@@ -10,7 +10,8 @@ import {
ProjectPermissionSub,
useOrganization,
useProject,
useProjectPermission
useProjectPermission,
useUser
} from "@app/context";
import { useToggle } from "@app/hooks";
import { useDeleteWorkspace, useGetWorkspaceUsers, useLeaveProject } from "@app/hooks/api";
@@ -24,8 +25,9 @@ export const DeleteProjectSection = () => {
"leaveWorkspace"
] as const);
const { user } = useUser();
const { currentOrg } = useOrganization();
const { hasProjectRole, membership } = useProjectPermission();
const { hasProjectRole } = useProjectPermission();
const { currentProject } = useProject();
const [isDeleting, setIsDeleting] = useToggle();
const [isLeaving, setIsLeaving] = useToggle();
@@ -39,14 +41,14 @@ export const DeleteProjectSection = () => {
const isNoAccessMember = hasProjectRole("no-access");
const isOnlyAdminMember = useMemo(() => {
if (!members || !membership || !hasProjectRole("admin")) return false;
if (!members || !hasProjectRole("admin")) return false;
const adminMembers = members.filter(
(member) => member.roles.map((r) => r.role).includes("admin") && member.id !== membership.id // exclude the current user
(member) => member.roles.map((r) => r.role).includes("admin") && member.user.id !== user.id // exclude the current user
);
return !adminMembers.length;
}, [members, membership]);
}, [members, user]);
const handleDeleteWorkspaceSubmit = async () => {
setIsDeleting.on();