Raid Instance Creator works for raiders

This commit is contained in:
2025-03-15 22:41:24 -04:00
parent 10d8159353
commit 59a57dbdc3
8 changed files with 33 additions and 14 deletions

View File

@@ -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={}
/>
</h1>
</div>
@@ -197,6 +200,7 @@ export default function RaidInstanceHeader(){
<PrimaryButton
id="saveInstanceButton"
onClick={saveRaidInstance}
disabled={!isRaidGroupAdmin(raidGroup?.raidGroupId ?? "", raidGroupPermissions, accountPermissions) && !isRaidGroupLeader(raidGroup?.raidGroupId ?? "", raidGroupPermissions, accountPermissions)}
>
Save
</PrimaryButton>

View File

@@ -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<string>();
const pageSize = 10;
const modalId = crypto.randomUUID().replaceAll("-", "");
const navigate = useNavigate();
const updateSearchTerm = useDebouncedCallback((newSearchTerm: string) => {
@@ -59,13 +61,25 @@ export default function RaidInstanceTab({
<div
className="flex flex-row items-center justify-center w-full"
>
<PrimaryButton
className="text-nowrap"
onClick={() => setDisplayCreateRaidInstanceModal(true)}
disabled={!isRaidGroupAdmin(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions) && !isRaidGroupLeader(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions)}
>
Create Raid Instance
</PrimaryButton>
{
(!isRaidGroupAdmin(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions) || !isRaidGroupLeader(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions)) &&
<PrimaryButton
className="text-nowrap"
onClick={() => navigate(`/raidGroup/${raidGroup.raidGroupId}/raidInstance`)}
>
Create Raid Instance
</PrimaryButton>
}
{
(isRaidGroupAdmin(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions) || isRaidGroupLeader(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions)) &&
<PrimaryButton
className="text-nowrap"
onClick={() => setDisplayCreateRaidInstanceModal(true)}
disabled={!isRaidGroupAdmin(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions) && !isRaidGroupLeader(raidGroup.raidGroupId ?? "", raidGroupPermissions, accountPermissions)}
>
Create Raid Instance
</PrimaryButton>
}
<RaidInstanceModal
display={displayCreateRaidInstanceModal}
close={() => setDisplayCreateRaidInstanceModal(false)}

View File

@@ -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(){
<PersonCharacterSelectorModal
display={displayPersonCharacterSelectorModal}
close={() => setDisplayPersonCharacterSelectorModal(false)}
currentSlotClassGroup={classGroups[currentLocation.col]}
currentSlotClassGroup={selectedClassGroups.length >= currentLocation.col ? selectedClassGroups[currentLocation.col] : null}
currentRunCharacters={getCurrentRunCharacters()}
otherRunsCharacters={getCharactersFromOtherRuns()}
personCharacters={getPersonCharactersFromRoster()}