Fix adhoc raid instance saving
This commit is contained in:
@@ -80,7 +80,14 @@ export function useCreateRaidInstance(raidGroupId: string){
|
||||
return useMutation({
|
||||
mutationKey: ["createRaidInstance", raidGroupId],
|
||||
mutationFn: async (raidInstance: RaidInstance) => {
|
||||
const response = await api.post(`/raidGroup/${raidGroupId}/raidInstance`, raidInstance);
|
||||
const response = await api.post(`/raidGroup/${raidGroupId}/raidInstance`, {
|
||||
raidInstanceName: raidInstance.raidInstanceName,
|
||||
raidStartDate: raidInstance.raidStartDate,
|
||||
raidEndDate: raidInstance.raidEndDate,
|
||||
raidSize: raidInstance.raidSize,
|
||||
numberRuns: raidInstance.numberRuns,
|
||||
raidGroupId: raidInstance.raidGroupId
|
||||
});
|
||||
|
||||
if(response.status !== 200){
|
||||
throw new Error("Failed to create raid instance");
|
||||
@@ -88,6 +95,8 @@ export function useCreateRaidInstance(raidGroupId: string){
|
||||
else if(response.data.errors){
|
||||
throw new Error(response.data.errors.join(", "));
|
||||
}
|
||||
|
||||
return response.data.raidInstanceId as string;
|
||||
},
|
||||
onSuccess: () => {
|
||||
queryClient.invalidateQueries({ queryKey: ["raidInstances"] });
|
||||
|
||||
@@ -2,7 +2,7 @@ import PrimaryButton from "@/components/button/PrimaryButton";
|
||||
import DateInput from "@/components/input/DateInput";
|
||||
import NumberInput from "@/components/input/NumberInput";
|
||||
import TextInput from "@/components/input/TextInput";
|
||||
import { useUpdateRaidInstanceNoInvalidation, useUpdateRaidInstancePersonCharacterXrefs } from "@/hooks/RaidInstanceHooks";
|
||||
import { useCreateRaidInstance, useUpdateRaidInstanceNoInvalidation, useUpdateRaidInstancePersonCharacterXrefs } from "@/hooks/RaidInstanceHooks";
|
||||
import { RaidInstance } from "@/interface/RaidInstance";
|
||||
import { useAuth } from "@/providers/AuthProvider";
|
||||
import { useRaidInstanceContext } from "@/providers/RaidInstanceLayoutProvider";
|
||||
@@ -11,6 +11,7 @@ import { isRaidGroupAdmin, isRaidGroupLeader } from "@/util/PermissionUtil";
|
||||
import clsx from "clsx";
|
||||
import moment from "moment";
|
||||
import { useEffect, useState } from "react";
|
||||
import { useNavigate } from "react-router";
|
||||
import PersonSelectorModal from "../person/modals/PersonSelectorModal";
|
||||
import RaidLayoutSelectorModal from "../raidLayout/modal/RaidLayoutSelectorModal";
|
||||
|
||||
@@ -28,6 +29,7 @@ export default function RaidInstanceHeader(){
|
||||
} = useRaidInstanceContext();
|
||||
|
||||
const { accountPermissions, raidGroupPermissions } = useAuth();
|
||||
const navigate = useNavigate();
|
||||
|
||||
const [ displayRaidLayoutSelectorModal, setDisplayRaidLayoutSelectorModal ] = useState(false);
|
||||
const [ displayRosterSelectorModal, setDisplayRosterSelectorModal ] = useState(false);
|
||||
@@ -55,19 +57,50 @@ export default function RaidInstanceHeader(){
|
||||
}
|
||||
|
||||
//Mutations
|
||||
const { data: createRaidInstanceData, mutate: createRaidInstanceMutate, status: createRaidInstanceStatus, reset: createRaidInstanceReset, error: createRaidInstanceError } = useCreateRaidInstance(raidGroup?.raidGroupId ?? "");
|
||||
const { mutate: updateRaidInstanceMutate, status: updateRaidInstanceStatus, reset: updateRaidInstanceReset, error: updateRaidInstanceError } = useUpdateRaidInstanceNoInvalidation(raidGroup?.raidGroupId ?? "");
|
||||
const { mutate: updatePersonCharacterXrefsMutate, status: updatePersonCharacterXrefsStatus, reset: updatePersonCharacterXrefsReset, error: updatePersonCharacterXrefsError } = useUpdateRaidInstancePersonCharacterXrefs(raidGroup?.raidGroupId ?? "", raidInstance?.raidInstanceId ?? "");
|
||||
const { mutate: updatePersonCharacterXrefsMutate, status: updatePersonCharacterXrefsStatus, reset: updatePersonCharacterXrefsReset, error: updatePersonCharacterXrefsError } = useUpdateRaidInstancePersonCharacterXrefs(raidGroup?.raidGroupId ?? "", raidInstance?.raidInstanceId ?? createRaidInstanceData ?? "");
|
||||
|
||||
const saveRaidInstance = () => {
|
||||
if(!raidInstance?.raidInstanceId || raidInstance?.raidInstanceId === ""){
|
||||
createRaidInstanceMutate({
|
||||
raidInstanceName: raidInstance?.raidInstanceName ?? "",
|
||||
raidStartDate: raidInstance?.raidStartDate ?? new Date(),
|
||||
raidEndDate: raidInstance?.raidEndDate ?? new Date(),
|
||||
raidSize: raidInstance?.raidSize ?? 3,
|
||||
numberRuns: raidInstance?.numberRuns ?? 1,
|
||||
raidGroupId: raidGroup?.raidGroupId ?? ""
|
||||
});
|
||||
}
|
||||
else{
|
||||
updateRaidInstanceMutate(raidInstance!);
|
||||
updatePersonCharacterXrefsMutate(personCharacterXrefs);
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
if((updateRaidInstanceStatus === "success") && (updatePersonCharacterXrefsStatus === "success")){
|
||||
console.log("data", createRaidInstanceData);
|
||||
if(createRaidInstanceStatus === "success" && createRaidInstanceData){
|
||||
createRaidInstanceReset();
|
||||
setRaidInstance({...raidInstance, raidInstanceId: createRaidInstanceData} as RaidInstance);
|
||||
personCharacterXrefs.forEach(xref => xref.raidInstanceId = createRaidInstanceData);
|
||||
updatePersonCharacterXrefsMutate(personCharacterXrefs);
|
||||
setPersonCharacterXrefs([...personCharacterXrefs]);
|
||||
}
|
||||
}, [createRaidInstanceData, createRaidInstanceMutate, createRaidInstanceReset, createRaidInstanceStatus, personCharacterXrefs, raidInstance, setPersonCharacterXrefs, setRaidInstance, updatePersonCharacterXrefsMutate])
|
||||
|
||||
useEffect(() => {
|
||||
if(((createRaidInstanceStatus !== "error") || (updateRaidInstanceStatus === "success")) && (updatePersonCharacterXrefsStatus === "success")){
|
||||
addSuccessMessage("Raid Instance Saved");
|
||||
updateRaidInstanceReset();
|
||||
updatePersonCharacterXrefsReset();
|
||||
if(updateRaidInstanceStatus !== "success"){
|
||||
navigate(`/raidGroup/${raidGroup?.raidGroupId}/raidInstance/${raidInstance?.raidInstanceId}`)
|
||||
}
|
||||
}
|
||||
else if(createRaidInstanceStatus === "error"){
|
||||
addErrorMessage("Error saving Raid Instance: " + createRaidInstanceError.message);
|
||||
createRaidInstanceReset();
|
||||
}
|
||||
else if(updateRaidInstanceStatus === "error"){
|
||||
addErrorMessage("Error Saving Raid Instance: " + updateRaidInstanceError.message);
|
||||
@@ -77,7 +110,7 @@ export default function RaidInstanceHeader(){
|
||||
addErrorMessage("Error Saving Raid Instance: " + updatePersonCharacterXrefsError.message);
|
||||
updatePersonCharacterXrefsReset();
|
||||
}
|
||||
}, [ addErrorMessage, addSuccessMessage, updatePersonCharacterXrefsError?.message, updatePersonCharacterXrefsReset, updatePersonCharacterXrefsStatus, updateRaidInstanceError?.message, updateRaidInstanceReset, updateRaidInstanceStatus ]);
|
||||
}, [addErrorMessage, addSuccessMessage, createRaidInstanceData, createRaidInstanceError?.message, createRaidInstanceReset, createRaidInstanceStatus, navigate, raidGroup?.raidGroupId, raidInstance?.raidInstanceId, updatePersonCharacterXrefsError?.message, updatePersonCharacterXrefsReset, updatePersonCharacterXrefsStatus, updateRaidInstanceError?.message, updateRaidInstanceReset, updateRaidInstanceStatus]);
|
||||
|
||||
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user