Implement inline editing and image upload/delete/edit

This commit is contained in:
april
2024-01-15 16:33:26 -06:00
parent 325730a9da
commit 924252b38f
17 changed files with 1213 additions and 50 deletions

View File

@@ -1,4 +1,4 @@
import { useQuery } from "@tanstack/react-query";
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { useApi } from "./api";
export function useAircraft() {
@@ -31,3 +31,24 @@ export function useFlights(filter: string = "", value: string = "") {
return flights;
}
export function usePatchFlight(
id: string,
field: string,
onSuccess: () => void
) {
const client = useApi();
const queryClient = useQueryClient();
return useMutation({
mutationFn: async (value: string | string[] | number | Date | null) =>
await client
.patch(`/flights/${id}`, { [field]: value })
.then((res) => res.data),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: [id] });
queryClient.invalidateQueries({ queryKey: ["flights-list"] });
onSuccess();
},
});
}

View File

@@ -51,7 +51,8 @@ type FlightFormSchema = FlightBaseSchema & {
time_down: number | null;
time_stop: number | null;
images: File[];
existing_images?: string[] | null;
images: File[] | string[];
};
type FlightCreateSchema = FlightBaseSchema & {
@@ -136,7 +137,7 @@ const flightCreateHelper = (
};
const flightEditHelper = (
values: FlightCreateSchema
values: FlightDisplaySchema
): FlightFormSchema | void => {
try {
const flight = {
@@ -154,6 +155,8 @@ const flightEditHelper = (
time_stop: Number(
`${dayjs(values.time_stop).hour()}${dayjs(values.time_stop).minute()}`
),
existing_images: values.images as string[],
images: [],
};
return flight;
} catch (err) {