feat: enhance TableSelector with automatic selection logic and update CreateSessionModal and EndSessionModal for improved session handling and user feedback

This commit is contained in:
2025-07-02 12:07:38 +05:00
parent a0e737aa11
commit c9357962c6
4 changed files with 41 additions and 17 deletions
+1 -4
View File
@@ -65,11 +65,8 @@ export default function CreateSessionModal({ targetServerId, client }: Props) {
if (!error && data) {
setName(data.name);
setEmail(data.email);
} else {
setName(isFullPhone ? name : null);
setEmail(isFullPhone ? email : null);
}
}, [data, error, isFullPhone, name, email]);
}, [data, error]);
const { mutate: createClient } = useMutation({
mutationFn: () =>
+29 -11
View File
@@ -6,12 +6,17 @@ import Button from "../Button";
import CurrentSessionModal from "./CurrentSessionModal";
import api from "../../utils/api";
import SpinIcon from "../icons/SpinIcon";
import SessionModal from "./SessionModal";
function EndSessionModal({ session }: { session: Session }) {
const queryClient = useQueryClient();
const { setModal } = useModalStore();
const { mutate: endSession, isPending } = useMutation({
const {
mutate: endSession,
isPending,
isSuccess,
} = useMutation({
mutationKey: ["sessions", session.id],
mutationFn: () =>
api.put(`sessions/${session.id}`, { json: { status: "ending" } }),
@@ -22,7 +27,6 @@ function EndSessionModal({ session }: { session: Session }) {
},
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ["last-sessions"] });
setModal(null);
},
});
@@ -48,31 +52,45 @@ function EndSessionModal({ session }: { session: Session }) {
<div className="p-[1.389vw] flex flex-col gap-[1.667vw]">
<div className="flex flex-col gap-[0.556vw]">
<p className="title-m font-medium">
Точно хотите завершить сеанс?
{isSuccess
? "Доступен отчет по встрече"
: "Точно хотите завершить сеанс?"}
</p>
<p className="caption-m font-medium text-[#BDBDBD]">
Текущий сеанс будет завершен немедленно
{isSuccess
? "Вы можете просмотреть отчет или создать новый сеанс, перейдя на главную страницу"
: "Текущий сеанс будет завершен немедленно"}
</p>
</div>
<div className="flex flex-col gap-[0.556vw]">
<Button
size="large"
variant="critical"
variant={isSuccess ? "cta" : "critical"}
className="w-full"
onClick={() => endSession()}
onClick={() => {
if (isSuccess) {
setModal(<SessionModal session={session} />);
} else {
endSession();
}
}}
disabled={isPending}
>
Завершить сеанс
{isSuccess ? "Перейти к отчету" : "Завершить сеанс"}
</Button>
<Button
size="large"
variant="primary"
className="w-full"
onClick={() =>
setModal(<CurrentSessionModal session={session} />)
}
onClick={() => {
if (isSuccess) {
setModal(null);
} else {
setModal(<CurrentSessionModal session={session} />);
}
}}
>
Отменить
{isSuccess ? "На главную" : "Отменить"}
</Button>
</div>
</div>