diff --git a/src/components/FloatingSupportChat/Chat.tsx b/src/components/FloatingSupportChat/Chat.tsx index 55e804a..e928c48 100644 --- a/src/components/FloatingSupportChat/Chat.tsx +++ b/src/components/FloatingSupportChat/Chat.tsx @@ -12,43 +12,47 @@ import { } from "@mui/material"; import makeRequest from "@api/makeRequest" import { - TicketMessage, - useTicketsFetcher, - useTicketMessages, - getMessageFromFetchError, - useSSESubscription, createTicket, + getMessageFromFetchError, + throttle, + TicketMessage, + useSSESubscription, + useTicketMessages, + useTicketsFetcher, } from "@frontend/kitui"; -import { enqueueSnackbar } from "notistack"; -import { useCallback, useEffect, useMemo, useRef, useState } from "react"; +import {enqueueSnackbar} from "notistack"; +import type {TouchEvent, WheelEvent} from "react"; +import {useCallback, useEffect, useMemo, useRef, useState} from "react"; import ChatMessage from "../ChatMessage"; import SendIcon from "../icons/SendIcon"; import ArrowLeft from "@root/assets/Icons/arrowLeft"; import UserCircleIcon from "./UserCircleIcon"; -import { throttle } from "@frontend/kitui"; -import { sendTicketMessage, shownMessage } from "@root/api/ticket"; -import { useSSETab } from "@root/utils/hooks/useSSETab"; +import {sendTicketMessage, shownMessage} from "@root/api/ticket"; +import {useSSETab} from "@root/utils/hooks/useSSETab"; import { + ACCEPT_SEND_MEDIA_TYPES_MAP, checkAcceptableMediaType, MAX_FILE_SIZE, - ACCEPT_SEND_MEDIA_TYPES_MAP, } from "@utils/checkAcceptableMediaType"; import { - useTicketStore, - setTicketData, addOrUpdateUnauthMessages, - setUnauthTicketMessageFetchState, - setUnauthIsPreventAutoscroll, incrementUnauthMessage, setIsMessageSending, + setTicketData, + setUnauthIsPreventAutoscroll, + setUnauthTicketMessageFetchState, + useTicketStore, } from "@root/stores/tickets"; -import { useUserStore } from "@root/stores/user"; +import {useUserStore} from "@root/stores/user"; import AttachFileIcon from "@mui/icons-material/AttachFile"; import ChatDocument from "./ChatDocument"; import ChatImage from "./ChatImage"; import ChatVideo from "./ChatVideo"; -import type { WheelEvent, TouchEvent } from "react"; +const workingHoursMessage = + "Здравствуйте, задайте ваш вопрос и наш оператор вам ответит в течение 10 минут"; +const offHoursMessage = + "Здравствуйте, к сожалению, сейчас операторы не работают. Задайте ваш вопрос, и вам ответят в 10:00 по московскому времени"; type ModalWarningType = | "errorType" @@ -178,6 +182,35 @@ export default function Chat({ open = false, onclickArrow, sx }: Props) { [fetchState] ); + useEffect(() => { + const date = new Date(); + const currentHourUTC = date.getUTCHours(); + const MscTime = 3; // Москва UTC+3; + const moscowHour = (currentHourUTC + MscTime) % 24; + const greetingMessage = + moscowHour >= 10 && moscowHour < 15 + ? workingHoursMessage + : offHoursMessage; + + const greetingMessageObj = { + created_at: new Date().toISOString(), + files: [], + id: "111ck2tepkvc9g6irk3fugg", + message: greetingMessage, + request_screenshot: "", + session_id: "111", + shown: { me: 1 }, + ticket_id: "111", + user_id: "111", + }; + + addOrUpdateUnauthMessages([greetingMessageObj]); + + if (open) { + scrollToBottom(); + } + }, [open]); + useEffect( function scrollOnNewMessage() { if (!chatBoxRef.current) return; @@ -369,7 +402,7 @@ export default function Chat({ open = false, onclickArrow, sx }: Props) { gap: "3px", }} > - Мария + Данила онлайн-консультант + + время работы 10:00-3:00 по мск +