feat: implement EndSessionModal for session termination and update CurrentSessionModal to utilize it

This commit is contained in:
2025-06-10 15:55:44 +05:00
parent 538e2b67bc
commit d28fbc1429
3 changed files with 120 additions and 39 deletions
+16 -18
View File
@@ -1,12 +1,11 @@
import FlashIcon from "./icons/FlashIcon";
import { ISession } from "../types/ISession";
import NewButton from "./NewButton";
import api from "../utils/api";
import { useMutation, useQueryClient } from "@tanstack/react-query";
import ChevronRightIcon from "./icons/ChevronRightIcon";
import { motion } from "motion/react";
import CurrentSessionModal from "./modals/CurrentSessionModal";
import useModalStore from "../stores/useModalStore";
import EndSessionModal from "./modals/EndSessionModal";
function CurrentSessionCard({
session,
@@ -17,21 +16,21 @@ function CurrentSessionCard({
}) {
const { setModal } = useModalStore();
const queryClient = useQueryClient();
// const queryClient = useQueryClient();
const { mutate: endSession, isPending } = useMutation({
mutationKey: ["sessions", session.id],
mutationFn: () =>
api.put(`sessions/${session.id}`, { json: { status: "ending" } }),
onMutate: () => {
queryClient.invalidateQueries({ queryKey: ["sessions"] });
queryClient.invalidateQueries({ queryKey: ["last-started"] });
queryClient.invalidateQueries({ queryKey: ["servers"] });
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["last-sessions"] });
},
});
// const { mutate: endSession, isPending } = useMutation({
// mutationKey: ["sessions", session.id],
// mutationFn: () =>
// api.put(`sessions/${session.id}`, { json: { status: "ending" } }),
// onMutate: () => {
// queryClient.invalidateQueries({ queryKey: ["sessions"] });
// queryClient.invalidateQueries({ queryKey: ["last-started"] });
// queryClient.invalidateQueries({ queryKey: ["servers"] });
// },
// onSuccess: () => {
// queryClient.invalidateQueries({ queryKey: ["last-sessions"] });
// },
// });
return (
<motion.div
@@ -74,8 +73,7 @@ function CurrentSessionCard({
</div>
<NewButton
variant="critical"
onClick={() => endSession()}
disabled={isPending}
onClick={() => setModal(<EndSessionModal session={session} />)}
>
Завершить сеанс
</NewButton>