From 59a57dbdc3463ca8b0b5f2a17fda68ab141da0e6 Mon Sep 17 00:00:00 2001 From: Mattrixwv Date: Sat, 15 Mar 2025 22:41:24 -0400 Subject: [PATCH] Raid Instance Creator works for raiders --- public/favicon.ico | Bin 0 -> 4286 bytes src/hooks/RaidInstanceHooks.ts | 3 +- src/providers/RaidInstanceLayoutProvider.tsx | 3 +- .../modal/SelectClassGroupModal.tsx | 2 +- .../modal/PersonCharacterSelectorModal.tsx | 2 +- src/ui/raidInstance/RaidInstanceHeader.tsx | 6 +++- src/ui/raidInstance/RaidInstanceTab.tsx | 28 +++++++++++++----- .../creator/RaidInstanceCreator.tsx | 3 +- 8 files changed, 33 insertions(+), 14 deletions(-) create mode 100644 public/favicon.ico diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..ffab39c377415992bcd7af4e6e52c496948c5285 GIT binary patch literal 4286 zcmb_dc}&xH6#sZE(Zmh1aTI|SS{YY$8qs+UoRKWf0~K(JE%cx*XQ{}IieWf0PB)Rs za9&e3*O{TjOdKRS6%pqqg2%3i^GKHcvqk?QN_+-4hvqel;6zpV=sEq_3nPf!*R#uTy@ z5vCN~LQ``$Iyw&F^5s#_j5jcV&E|!srVbQsY)42|FBDdSVkP4X4yzt){zu4hma1?b-7=7Ugvel^f^MY18YeSHhGG^+iV3v;Y(;Xa46!@B%VxqYotcmEz40@QSr^-1- z`fQPrqEuWL=WJBgoyPIw*&gH9)_#MSluHOoeS{yZmpEvq8R%f5o&v%|KQc)bWu|{D zdK$sn42#U7UGvlFlLcmyMY1+#7hFbb>k*Ifw`{qEz~l!A)KKOOEfvJ+$U9U=HFI^e zE?&=i5Vf#tLKSJU+>K9_$>(My5;nqsL@W^;{!;m6%Q{m6%hCsvbeqGb zO>$IJUcu;PBsgTwNTqA(dXgzp2|;OW+Q&Gk82?|Zo;o#pnj6D4>E97zS22eM+f^Jp z7VI{DWo0-@R(B!bUB+KVnbS4YxFn65lF~>Op&7tI)WSexBlN649c_#^P$TPN{8*t& z&fhVg*t@@z^AGn3zo?w?lSy#MV*G;GR0>wA$;Ldav1v3k*jWc1`b18oqI2Oj9*yR1z8f~Cv*O4#^=08FQ>^-YWhK=rRZ=`2hk5L<7*xG z_8l=U%1A$^>Z$B4{w;QP{q8RQFK|Eq^73%3EbNAC2?-8a(^gPnteQ+y)wE+?D*1%0 zU|p)&>>S2Lq}lZsqNA#K9W^HDNEOZ6l=da>%I%+adyH>c)eZl}1pg(BpF%(Bw3IT5 zaV1SGmvkv+LvR=ukt*r$%LFaWeEsp+kT}%Td4^wD7>=BkjGw^xizzN@DTOLn3o@aH zr4A1E*$^B;lp0z(d7vhq;PBDM-PpI!{rU_1OiMTX783jfhec8yAWM|`;fjO39|Pyp zJ{!`G*iz#ezQqy_Q}!kJ&S(6maj?&ZeMg9X4AjJ<*^u_s2U{;;=T7(Y&&dgb)p`e( zyxYjm{TW*G_n4)*3B|&Pk|z4=;NTD-dg0JS__Bvsm~#U~>pD=q=@)FRxsCezJJ_)! z$nE)eUbI?AVoJsWn61fp+j0;2#W!Hdzlupoosh9M#e7PdU>?)e7qPnHD&E_89f@W4 zu(mo8aRu|RdGknTxIumTnkT^5SOXukiT#J5q+}{eOTR_7wG*L>{)B?fT6_^zRn4fb zo-Ez*GnwIQ+6LkK%qM9W{LE^Or*&`;5r?3-*npyvYbY)I4HXr-ei*@1+!a1x-)B8O zMg!+jF4f4-^@{5`(Gi``nv1Ve=jiW70K5}=l=h0zq8|u zzwr(D81tWe?DlWrD`E`hyle>K`dt9l4j+uW-G_Ze3=zxI<7b)!AJZC7-Trr9#1OGO zIo@gB%=>H3eW)jHuJ3XT5lh5$ap=CB=x;Bg6T^rqh7bXg^)a}xULba$-3R3En(&w6 ajTle#W;yl6_O9*Y7r)2$62;yplK%%iX>9la literal 0 HcmV?d00001 diff --git a/src/hooks/RaidInstanceHooks.ts b/src/hooks/RaidInstanceHooks.ts index 4110ccd..61eb7da 100644 --- a/src/hooks/RaidInstanceHooks.ts +++ b/src/hooks/RaidInstanceHooks.ts @@ -18,7 +18,8 @@ export function useGetRaidInstance(raidInstanceId: string, raidGroupId: string){ } return response.data as RaidInstance; - } + }, + enabled: !!raidInstanceId && !!raidGroupId }); } diff --git a/src/providers/RaidInstanceLayoutProvider.tsx b/src/providers/RaidInstanceLayoutProvider.tsx index 81eafe0..dcc8c9f 100644 --- a/src/providers/RaidInstanceLayoutProvider.tsx +++ b/src/providers/RaidInstanceLayoutProvider.tsx @@ -127,7 +127,8 @@ export default function RaidInstanceLayoutProvider({ } } else if(!raidInstanceId){ - setRaidInstance({} as RaidInstance); + setRaidInstance({raidSize: 3, numberRuns: 1} as RaidInstance); + setSelectedClassGroups([null, null, null]); } }, [ raidInstanceId, raidInstanceQuery.status, raidInstanceQuery.data ]); diff --git a/src/ui/classGroup/modal/SelectClassGroupModal.tsx b/src/ui/classGroup/modal/SelectClassGroupModal.tsx index c2bed8e..c2cb351 100644 --- a/src/ui/classGroup/modal/SelectClassGroupModal.tsx +++ b/src/ui/classGroup/modal/SelectClassGroupModal.tsx @@ -23,7 +23,7 @@ export default function SelectClassGroupModal({ const [ currentClassGroup, setCurrentClassGroup ] = useState(selectedClassGroup); const selectorId = crypto.randomUUID().replaceAll("-", ""); - const classGroupsQuery = useGetClassGroups(raidGroupId, 0, 100); + const classGroupsQuery = useGetClassGroups(raidGroupId, 0, 1000); useEffect(() => { diff --git a/src/ui/personCharacter/modal/PersonCharacterSelectorModal.tsx b/src/ui/personCharacter/modal/PersonCharacterSelectorModal.tsx index 00e33af..27e1212 100644 --- a/src/ui/personCharacter/modal/PersonCharacterSelectorModal.tsx +++ b/src/ui/personCharacter/modal/PersonCharacterSelectorModal.tsx @@ -24,7 +24,7 @@ export default function PersonCharacterSelectorModal({ }:{ display: boolean; close: () => void; - currentSlotClassGroup?: ClassGroup; + currentSlotClassGroup?: ClassGroup | null; currentRunCharacters: PersonCharacter[]; otherRunsCharacters: PersonCharacter[]; personCharacters: PersonCharacter[]; diff --git a/src/ui/raidInstance/RaidInstanceHeader.tsx b/src/ui/raidInstance/RaidInstanceHeader.tsx index 865fb2b..6ae3946 100644 --- a/src/ui/raidInstance/RaidInstanceHeader.tsx +++ b/src/ui/raidInstance/RaidInstanceHeader.tsx @@ -4,8 +4,10 @@ import NumberInput from "@/components/input/NumberInput"; import TextInput from "@/components/input/TextInput"; import { useUpdateRaidInstanceNoInvalidation, useUpdateRaidInstancePersonCharacterXrefs } from "@/hooks/RaidInstanceHooks"; import { RaidInstance } from "@/interface/RaidInstance"; +import { useAuth } from "@/providers/AuthProvider"; import { useRaidInstanceContext } from "@/providers/RaidInstanceLayoutProvider"; import { useTimedModal } from "@/providers/TimedModalProvider"; +import { isRaidGroupAdmin, isRaidGroupLeader } from "@/util/PermissionUtil"; import clsx from "clsx"; import moment from "moment"; import { useEffect, useState } from "react"; @@ -25,6 +27,8 @@ export default function RaidInstanceHeader(){ personCharacterXrefs, setPersonCharacterXrefs } = useRaidInstanceContext(); + const { accountPermissions, raidGroupPermissions } = useAuth(); + const [ displayRaidLayoutSelectorModal, setDisplayRaidLayoutSelectorModal ] = useState(false); const [ displayRosterSelectorModal, setDisplayRosterSelectorModal ] = useState(false); const { addSuccessMessage, addErrorMessage } = useTimedModal(); @@ -98,7 +102,6 @@ export default function RaidInstanceHeader(){ raidInstanceName: e.target.value } as RaidInstance) } - //disabled={} /> @@ -197,6 +200,7 @@ export default function RaidInstanceHeader(){ Save diff --git a/src/ui/raidInstance/RaidInstanceTab.tsx b/src/ui/raidInstance/RaidInstanceTab.tsx index 3fd5c78..29f4909 100644 --- a/src/ui/raidInstance/RaidInstanceTab.tsx +++ b/src/ui/raidInstance/RaidInstanceTab.tsx @@ -6,6 +6,7 @@ import { RaidGroup } from "@/interface/RaidGroup"; import { useAuth } from "@/providers/AuthProvider"; import { isRaidGroupAdmin, isRaidGroupLeader } from "@/util/PermissionUtil"; import { useEffect, useState } from "react"; +import { useNavigate } from "react-router"; import { useDebouncedCallback } from "use-debounce"; import RaidInstanceLoader from "./RaidInstanceLoader"; import RaidInstanceModal from "./modals/RaidInstanceModal"; @@ -24,6 +25,7 @@ export default function RaidInstanceTab({ const [ sentSearchTerm, setSentSearchTerm ] = useState(); const pageSize = 10; const modalId = crypto.randomUUID().replaceAll("-", ""); + const navigate = useNavigate(); const updateSearchTerm = useDebouncedCallback((newSearchTerm: string) => { @@ -59,13 +61,25 @@ export default function RaidInstanceTab({
- setDisplayCreateRaidInstanceModal(true)} - disabled={!isRaidGroupAdmin(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions) && !isRaidGroupLeader(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions)} - > - Create Raid Instance - + { + (!isRaidGroupAdmin(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions) || !isRaidGroupLeader(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions)) && + navigate(`/raidGroup/${raidGroup.raidGroupId}/raidInstance`)} + > + Create Raid Instance + + } + { + (isRaidGroupAdmin(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions) || isRaidGroupLeader(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions)) && + setDisplayCreateRaidInstanceModal(true)} + disabled={!isRaidGroupAdmin(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions) && !isRaidGroupLeader(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions)} + > + Create Raid Instance + + } setDisplayCreateRaidInstanceModal(false)} diff --git a/src/ui/raidInstance/creator/RaidInstanceCreator.tsx b/src/ui/raidInstance/creator/RaidInstanceCreator.tsx index 0bad77a..c737ca6 100644 --- a/src/ui/raidInstance/creator/RaidInstanceCreator.tsx +++ b/src/ui/raidInstance/creator/RaidInstanceCreator.tsx @@ -13,7 +13,6 @@ import RaidInstanceCreatorTable from "./RaidInstanceCreatorTable"; export default function RaidInstanceCreator(){ const { raidGroup, - classGroups, raidInstance, setRaidInstance, roster, setRaidLayout, @@ -117,7 +116,7 @@ export default function RaidInstanceCreator(){ setDisplayPersonCharacterSelectorModal(false)} - currentSlotClassGroup={classGroups[currentLocation.col]} + currentSlotClassGroup={selectedClassGroups.length >= currentLocation.col ? selectedClassGroups[currentLocation.col] : null} currentRunCharacters={getCurrentRunCharacters()} otherRunsCharacters={getCharactersFromOtherRuns()} personCharacters={getPersonCharactersFromRoster()}