diff --git a/src/components/DesktopCard.tsx b/src/components/DesktopCard.tsx index b53d3c8..3c2eada 100644 --- a/src/components/DesktopCard.tsx +++ b/src/components/DesktopCard.tsx @@ -11,6 +11,7 @@ import clsx from "clsx"; import ChevronRightIcon from "./icons/ChevronRightIcon"; import CurrentSessionModal from "./modals/CurrentSessionModal"; import SpinIcon from "./icons/SpinIcon"; +import { useIsMutating } from "@tanstack/react-query"; interface IDesktopCardProps { server: Server; @@ -19,6 +20,14 @@ interface IDesktopCardProps { export default function DesktopCard({ server }: IDesktopCardProps) { const { setModal, setPosition } = useModalStore(); + const isStarting = useIsMutating({ + mutationKey: ["create-session", server.id], + }); + + const isEnding = useIsMutating({ + mutationKey: ["end-session", server.sessions?.[0]?.id], + }); + async function handleClickCreateSession() { setPosition("right"); setModal(); @@ -52,7 +61,7 @@ export default function DesktopCard({ server }: IDesktopCardProps) {
- {server.sessions?.[0]?.status === "starting" ? ( + {server.sessions?.[0]?.status === "starting" || isStarting ? (
diff --git a/src/components/modals/CreateSessionModal.tsx b/src/components/modals/CreateSessionModal.tsx index cf5eae3..3228d89 100644 --- a/src/components/modals/CreateSessionModal.tsx +++ b/src/components/modals/CreateSessionModal.tsx @@ -23,7 +23,7 @@ export default function CreateSessionModal({ targetServerId }: Props) { const [name, setName] = useState(null); const [phone, setPhone] = useState(null); const [email, setEmail] = useState(null); - const [isSessionExists, setIsSessionExists] = useState(false); + // const [isSessionExists, setIsSessionExists] = useState(false); const queryClient = useQueryClient(); @@ -113,70 +113,70 @@ export default function CreateSessionModal({ targetServerId }: Props) { }, }); - const { mutate: endSession } = useMutation({ - mutationKey: ["sessions", selectedServer?.sessions?.[0]?.id], - mutationFn: () => - api.put(`sessions/${selectedServer?.sessions?.[0]?.id}`, { - json: { status: "ending" }, - }), - onMutate: () => queryClient.invalidateQueries({ queryKey: ["sessions"] }), - }); + // const { mutate: endSession } = useMutation({ + // mutationKey: ["end-session", selectedServer?.sessions?.[0]?.id], + // mutationFn: () => + // api.put(`sessions/${selectedServer?.sessions?.[0]?.id}`, { + // json: { status: "ending" }, + // }), + // onMutate: () => queryClient.invalidateQueries({ queryKey: ["sessions"] }), + // }); async function handleClickCreateSession(e: React.FormEvent) { e.preventDefault(); if (!name || !phone || !selectedServer || !selectedApp) return; - if (selectedServer?.sessions?.[0]?.status !== "started") { - createClient(undefined, { - onSuccess: (client) => { - createSession({ - clientId: client.id, - serverId: selectedServer.id, - appId: selectedApp.id, - }); - }, - }); - return; - } - - if (!isSessionExists) { - setIsSessionExists(true); - return; - } - - endSession(undefined, { - onError: (error) => { - console.log("Ошибка при завершении сессии:", error); + // if (selectedServer?.sessions?.[0]?.status !== "started") { + createClient(undefined, { + onSuccess: (client) => { + createSession({ + clientId: client.id, + serverId: selectedServer.id, + appId: selectedApp.id, + }); }, }); + // return; + // } + + // if (!isSessionExists) { + // setIsSessionExists(true); + // return; + // } + + // endSession(undefined, { + // onError: (error) => { + // console.log("Ошибка при завершении сессии:", error); + // }, + // }); } - useEffect(() => { - if ( - selectedServer && - servers?.find((server) => server.id === selectedServer?.id)?.sessions?.[0] - ?.status === "ended" && - selectedApp && - isSessionExists - ) - createClient(undefined, { - onSuccess: (client) => { - createSession({ - clientId: client.id, - serverId: selectedServer?.id, - appId: selectedApp.id, - }); - }, - }); - }, [ - selectedApp, - servers, - createClient, - createSession, - isSessionExists, - selectedServer, - ]); + // useEffect(() => { + // if ( + // selectedServer && + // servers?.find((server) => server.id === selectedServer?.id)?.sessions?.[0] + // ?.status === "ended" && + // selectedApp + // // && isSessionExists + // ) + // createClient(undefined, { + // onSuccess: (client) => { + // createSession({ + // clientId: client.id, + // serverId: selectedServer?.id, + // appId: selectedApp.id, + // }); + // }, + // }); + // }, [ + // selectedApp, + // servers, + // createClient, + // createSession, + // // isSessionExists, + // selectedServer, + // ]); const ref = useRef(null); @@ -257,8 +257,8 @@ export default function CreateSessionModal({ targetServerId }: Props) { /> )}
- {isSessionExists && ( -
+ {/* {isSessionExists && ( */} + {/*
ghost error
-
- )} +
*/} + {/* )} */}