import { ButtonProps } from "@/components/button/Button"; import ClassGroupsByRaidLayoutDisplay from "@/components/classGroup/ClassGroupsByRaidLayoutDisplay"; import Table from "@/components/table/Table"; import { useGetClassGroupsByRaidLayout } from "@/hooks/ClassGroupHooks"; import { ClassGroup } from "@/interface/ClassGroup"; import { RaidGroup } from "@/interface/RaidGroup"; import { RaidLayout } from "@/interface/RaidLayout"; import { useAuth } from "@/providers/AuthProvider"; import { isRaidGroupAdmin, isRaidGroupLeader } from "@/util/PermissionUtil"; import { useEffect, useState } from "react"; import DeleteRaidLayoutModal from "./modal/DeleteRaidLayoutModal"; import RaidLayoutModal from "./modal/RaidLayoutModal"; import RaidLayoutAdminButtons from "./RaidLayoutAdminButtons"; export default function RaidLayoutList({ raidLayouts, raidGroup }:{ raidLayouts: RaidLayout[]; raidGroup: RaidGroup; }){ const { accountPermissions, raidGroupPermissions } = useAuth(); const [ selectedRaidLayout, setSelectedRaidLayout ] = useState(); const [ displayEditRaidLayoutModal, showEditRaidLayoutModal ] = useState(false); const [ displayDeleteRaidLayoutModal, showDeleteRaidLayoutModal ] = useState(false); const [ selectedLayoutClassGroups, setSelectedLayoutClassGroups ] = useState<(ClassGroup | null)[]>([]); const classGroupsQuery = useGetClassGroupsByRaidLayout(raidGroup.raidGroupId ?? "", selectedRaidLayout?.raidLayoutId); useEffect(() => { setSelectedLayoutClassGroups(classGroupsQuery.data ?? []); }, [ classGroupsQuery.data ]); const buttonProps: ButtonProps = { variant: "ghost", size: "md", shape: "square", disabled: !isRaidGroupAdmin(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions) && !isRaidGroupLeader(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions) }; const headElements: React.ReactNode[] = [
Raid Layout Name
,
Raid Size
,
Class Groups
,
Actions
]; const bodyElements: React.ReactNode[][] = raidLayouts.map((raidLayout) => [
{raidLayout.raidLayoutName}
,
{raidLayout.raidSize}
,
,
 
{ setSelectedRaidLayout(raidLayout); showEditRaidLayoutModal(true); }} showDeleteRaidLayoutModal={() => { setSelectedRaidLayout(raidLayout); showDeleteRaidLayoutModal(true); }} />
]); return ( <> { showEditRaidLayoutModal(false); setSelectedRaidLayout(undefined); }} raidLayout={selectedRaidLayout} raidGroup={raidGroup} selectedClassGroups={selectedLayoutClassGroups} /> { showDeleteRaidLayoutModal(false); setSelectedRaidLayout(undefined); }} raidLayout={selectedRaidLayout} /> ); }