diff --git a/package.json b/package.json index 6da058e8..f7d47d4b 100755 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "@craco/craco": "^7.0.0", "@emotion/react": "^11.10.5", "@emotion/styled": "^11.10.5", - "@frontend/kitui": "^1.0.86", + "@frontend/kitui": "^1.0.87", "@frontend/squzanswerer": "^1.0.61", "@mui/icons-material": "^5.10.14", "@mui/material": "^5.10.14", @@ -86,7 +86,7 @@ ] }, "devDependencies": { - "@emoji-mart/data": "^1.1.2", + "@emoji-mart/data": "^1.2.1", "@emoji-mart/react": "^1.1.1", "@types/cytoscape-popper": "^2.0.4", "@types/react-beautiful-dnd": "^13.1.4", diff --git a/public/index.html b/public/index.html index 7e0e5c5a..0df06af1 100755 --- a/public/index.html +++ b/public/index.html @@ -174,6 +174,18 @@ } + diff --git a/src/App.tsx b/src/App.tsx index 5626f416..68b6ad6d 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -23,6 +23,7 @@ import { InfoPrivilege } from "./pages/InfoPrivilege"; import AmoTokenExpiredDialog from "./pages/IntegrationsPage/IntegrationsModal/Amo/AmoTokenExpiredDialog"; import Landing from "./pages/Landing/Landing"; import Main from "./pages/main"; +import { ErrorBoundary } from "react-error-boundary"; const MyQuizzesFull = lazy(() => import("./pages/createQuize/MyQuizzesFull")); const QuizGallery = lazy(() => import("./pages/createQuize/QuizGallery")); @@ -66,6 +67,7 @@ const LazyLoading = ({ children, fallback }: SuspenseProps) => ( ); export default function App() { + window.LoadingObserver = false; const userId = useUserStore((state) => state.userId); const location = useLocation(); const navigate = useNavigate(); diff --git a/src/api/makeRequest.ts b/src/api/makeRequest.ts index 930a89b3..0993cb38 100644 --- a/src/api/makeRequest.ts +++ b/src/api/makeRequest.ts @@ -8,6 +8,7 @@ import { clearUserData } from "@root/user"; import { clearQuizData } from "@root/quizes/store"; import type { AxiosResponse } from "axios"; +import { selectSendingMethod } from "@/ui_kit/FloatingSupportChat/utils"; interface MakeRequest { method?: Method | undefined; @@ -32,6 +33,11 @@ export const makeRequest = async ( } catch (nativeError) { const error = nativeError as AxiosError; + if (window.location.hostname !== 'localhost') selectSendingMethod({ + messageField: `status: ${error.response?.status}. Message ${(error.response?.data as ExtendedAxiosResponse)?.message}`, + isSnackbar: false, + systemError: true + }); if ( error.response?.status === 400 && (error.response?.data as ExtendedAxiosResponse)?.message === diff --git a/src/api/tariff.ts b/src/api/tariff.ts index a1b4ea3d..a0be6e70 100644 --- a/src/api/tariff.ts +++ b/src/api/tariff.ts @@ -12,7 +12,7 @@ export const getTariffs = async ( try { const tariffs = await makeRequest({ method: "GET", - url: `${API_URL}?page=${page}&limit=100`, + url: `${API_URL}/getList?page=${page}&limit=100`, }); return [tariffs]; } catch (nativeError) { diff --git a/src/api/ticket.ts b/src/api/ticket.ts index 48404ed3..5056dc64 100644 --- a/src/api/ticket.ts +++ b/src/api/ticket.ts @@ -18,6 +18,7 @@ const API_URL = `${process.env.REACT_APP_DOMAIN}/heruvym/v1.0.0`; export const sendTicketMessage = async ( ticketId: string, message: string, + systemError: boolean ): Promise<[null, string?]> => { try { const sendTicketMessageResponse = await makeRequest< @@ -27,7 +28,8 @@ export const sendTicketMessage = async ( url: `${API_URL}/send`, method: "POST", useToken: true, - body: { ticket: ticketId, message: message, lang: "ru", files: [] }, + body: { ticket: ticketId, message: message, lang: "ru", files: [], system: systemError }, + }); return [sendTicketMessageResponse]; @@ -82,11 +84,12 @@ export const sendFile = async ( export const createTicket = async ( message: string, useToken: boolean, + systemError: boolean ): Promise<[CreateTicketResponse | null, string?]> => { try { const createdTicket = await createTicketRequest({ url: `${process.env.REACT_APP_DOMAIN}/heruvym/v1.0.0/create`, - body: { Title: "Unauth title", Message: message }, + body: { Title: "Unauth title", Message: message, system: systemError }, useToken, }); diff --git a/src/assets/quiz-templates/auto/auto-1.jpg b/src/assets/quiz-templates/auto/auto-1.jpg index 4f3d9fac..ce04341c 100644 Binary files a/src/assets/quiz-templates/auto/auto-1.jpg and b/src/assets/quiz-templates/auto/auto-1.jpg differ diff --git a/src/assets/quiz-templates/auto/auto-10.jpg b/src/assets/quiz-templates/auto/auto-10.jpg index 474c8c1a..f63110be 100644 Binary files a/src/assets/quiz-templates/auto/auto-10.jpg and b/src/assets/quiz-templates/auto/auto-10.jpg differ diff --git a/src/assets/quiz-templates/auto/auto-2.jpg b/src/assets/quiz-templates/auto/auto-2.jpg index 3bd51d36..29d215d9 100644 Binary files a/src/assets/quiz-templates/auto/auto-2.jpg and b/src/assets/quiz-templates/auto/auto-2.jpg differ diff --git a/src/assets/quiz-templates/auto/auto-3.jpg b/src/assets/quiz-templates/auto/auto-3.jpg index 320f7d0b..2ab523bb 100644 Binary files a/src/assets/quiz-templates/auto/auto-3.jpg and b/src/assets/quiz-templates/auto/auto-3.jpg differ diff --git a/src/assets/quiz-templates/auto/auto-4.jpg b/src/assets/quiz-templates/auto/auto-4.jpg index 1a3c4983..66801847 100644 Binary files a/src/assets/quiz-templates/auto/auto-4.jpg and b/src/assets/quiz-templates/auto/auto-4.jpg differ diff --git a/src/assets/quiz-templates/auto/auto-5.jpg b/src/assets/quiz-templates/auto/auto-5.jpg index e0a5b948..7fe5f796 100644 Binary files a/src/assets/quiz-templates/auto/auto-5.jpg and b/src/assets/quiz-templates/auto/auto-5.jpg differ diff --git a/src/assets/quiz-templates/auto/auto-6.jpg b/src/assets/quiz-templates/auto/auto-6.jpg index 94d71b30..3f340b7d 100644 Binary files a/src/assets/quiz-templates/auto/auto-6.jpg and b/src/assets/quiz-templates/auto/auto-6.jpg differ diff --git a/src/assets/quiz-templates/auto/auto-7.jpg b/src/assets/quiz-templates/auto/auto-7.jpg index 286e7a61..130caa08 100644 Binary files a/src/assets/quiz-templates/auto/auto-7.jpg and b/src/assets/quiz-templates/auto/auto-7.jpg differ diff --git a/src/assets/quiz-templates/auto/auto-8.jpg b/src/assets/quiz-templates/auto/auto-8.jpg index b1887c9f..4d84c6a5 100644 Binary files a/src/assets/quiz-templates/auto/auto-8.jpg and b/src/assets/quiz-templates/auto/auto-8.jpg differ diff --git a/src/assets/quiz-templates/auto/auto-9.jpg b/src/assets/quiz-templates/auto/auto-9.jpg index 4521fcc4..710f0204 100644 Binary files a/src/assets/quiz-templates/auto/auto-9.jpg and b/src/assets/quiz-templates/auto/auto-9.jpg differ diff --git a/src/assets/quiz-templates/education/education-1.jpg b/src/assets/quiz-templates/education/education-1.jpg index a4eddf4d..199b10a1 100644 Binary files a/src/assets/quiz-templates/education/education-1.jpg and b/src/assets/quiz-templates/education/education-1.jpg differ diff --git a/src/assets/quiz-templates/education/education-10.jpg b/src/assets/quiz-templates/education/education-10.jpg index 708c3f03..2b9b02a4 100644 Binary files a/src/assets/quiz-templates/education/education-10.jpg and b/src/assets/quiz-templates/education/education-10.jpg differ diff --git a/src/assets/quiz-templates/education/education-2.jpg b/src/assets/quiz-templates/education/education-2.jpg index 9de16bf0..e3be450a 100644 Binary files a/src/assets/quiz-templates/education/education-2.jpg and b/src/assets/quiz-templates/education/education-2.jpg differ diff --git a/src/assets/quiz-templates/education/education-3.jpg b/src/assets/quiz-templates/education/education-3.jpg index 30ffb39f..d79b0ba1 100644 Binary files a/src/assets/quiz-templates/education/education-3.jpg and b/src/assets/quiz-templates/education/education-3.jpg differ diff --git a/src/assets/quiz-templates/education/education-4.jpg b/src/assets/quiz-templates/education/education-4.jpg index fc47aa35..91250da4 100644 Binary files a/src/assets/quiz-templates/education/education-4.jpg and b/src/assets/quiz-templates/education/education-4.jpg differ diff --git a/src/assets/quiz-templates/education/education-5.jpg b/src/assets/quiz-templates/education/education-5.jpg index 5b9dbbb1..3aef1891 100644 Binary files a/src/assets/quiz-templates/education/education-5.jpg and b/src/assets/quiz-templates/education/education-5.jpg differ diff --git a/src/assets/quiz-templates/education/education-6.jpg b/src/assets/quiz-templates/education/education-6.jpg index 2848f557..b5b0c4e7 100644 Binary files a/src/assets/quiz-templates/education/education-6.jpg and b/src/assets/quiz-templates/education/education-6.jpg differ diff --git a/src/assets/quiz-templates/education/education-7.jpg b/src/assets/quiz-templates/education/education-7.jpg index 7a291aab..c599f35d 100644 Binary files a/src/assets/quiz-templates/education/education-7.jpg and b/src/assets/quiz-templates/education/education-7.jpg differ diff --git a/src/assets/quiz-templates/education/education-8.jpg b/src/assets/quiz-templates/education/education-8.jpg index 562122fc..68c831d6 100644 Binary files a/src/assets/quiz-templates/education/education-8.jpg and b/src/assets/quiz-templates/education/education-8.jpg differ diff --git a/src/assets/quiz-templates/education/education-9.jpg b/src/assets/quiz-templates/education/education-9.jpg index 33852229..32c698e7 100644 Binary files a/src/assets/quiz-templates/education/education-9.jpg and b/src/assets/quiz-templates/education/education-9.jpg differ diff --git a/src/assets/quiz-templates/health/health-1.jpg b/src/assets/quiz-templates/health/health-1.jpg index 8e3c5adb..126974c7 100644 Binary files a/src/assets/quiz-templates/health/health-1.jpg and b/src/assets/quiz-templates/health/health-1.jpg differ diff --git a/src/assets/quiz-templates/health/health-10.jpg b/src/assets/quiz-templates/health/health-10.jpg index ff8f4b4e..ffe1c454 100644 Binary files a/src/assets/quiz-templates/health/health-10.jpg and b/src/assets/quiz-templates/health/health-10.jpg differ diff --git a/src/assets/quiz-templates/health/health-11.jpg b/src/assets/quiz-templates/health/health-11.jpg index 32ec9c3e..12ca78f6 100644 Binary files a/src/assets/quiz-templates/health/health-11.jpg and b/src/assets/quiz-templates/health/health-11.jpg differ diff --git a/src/assets/quiz-templates/health/health-12.jpg b/src/assets/quiz-templates/health/health-12.jpg index 3107437f..740c993a 100644 Binary files a/src/assets/quiz-templates/health/health-12.jpg and b/src/assets/quiz-templates/health/health-12.jpg differ diff --git a/src/assets/quiz-templates/health/health-13.jpg b/src/assets/quiz-templates/health/health-13.jpg index ed2be7fb..d2269c3b 100644 Binary files a/src/assets/quiz-templates/health/health-13.jpg and b/src/assets/quiz-templates/health/health-13.jpg differ diff --git a/src/assets/quiz-templates/health/health-14.jpg b/src/assets/quiz-templates/health/health-14.jpg index 5298f25c..7a7a5f16 100644 Binary files a/src/assets/quiz-templates/health/health-14.jpg and b/src/assets/quiz-templates/health/health-14.jpg differ diff --git a/src/assets/quiz-templates/health/health-15.jpg b/src/assets/quiz-templates/health/health-15.jpg index d2ca84c6..5f99c2f0 100644 Binary files a/src/assets/quiz-templates/health/health-15.jpg and b/src/assets/quiz-templates/health/health-15.jpg differ diff --git a/src/assets/quiz-templates/health/health-16.jpg b/src/assets/quiz-templates/health/health-16.jpg index 7f8163c6..46604ce2 100644 Binary files a/src/assets/quiz-templates/health/health-16.jpg and b/src/assets/quiz-templates/health/health-16.jpg differ diff --git a/src/assets/quiz-templates/health/health-17.jpg b/src/assets/quiz-templates/health/health-17.jpg index a9621787..3bceb2e4 100644 Binary files a/src/assets/quiz-templates/health/health-17.jpg and b/src/assets/quiz-templates/health/health-17.jpg differ diff --git a/src/assets/quiz-templates/health/health-18.jpg b/src/assets/quiz-templates/health/health-18.jpg index 4225df96..92585809 100644 Binary files a/src/assets/quiz-templates/health/health-18.jpg and b/src/assets/quiz-templates/health/health-18.jpg differ diff --git a/src/assets/quiz-templates/health/health-19.jpg b/src/assets/quiz-templates/health/health-19.jpg index e2707907..cb8ae48e 100644 Binary files a/src/assets/quiz-templates/health/health-19.jpg and b/src/assets/quiz-templates/health/health-19.jpg differ diff --git a/src/assets/quiz-templates/health/health-2.jpg b/src/assets/quiz-templates/health/health-2.jpg index 1ee282a7..77b4268f 100644 Binary files a/src/assets/quiz-templates/health/health-2.jpg and b/src/assets/quiz-templates/health/health-2.jpg differ diff --git a/src/assets/quiz-templates/health/health-20.jpg b/src/assets/quiz-templates/health/health-20.jpg index c99d10cd..ed728e87 100644 Binary files a/src/assets/quiz-templates/health/health-20.jpg and b/src/assets/quiz-templates/health/health-20.jpg differ diff --git a/src/assets/quiz-templates/health/health-3.jpg b/src/assets/quiz-templates/health/health-3.jpg index 22c0ec91..ffea8aab 100644 Binary files a/src/assets/quiz-templates/health/health-3.jpg and b/src/assets/quiz-templates/health/health-3.jpg differ diff --git a/src/assets/quiz-templates/health/health-4.jpg b/src/assets/quiz-templates/health/health-4.jpg index 204d518f..be64980c 100644 Binary files a/src/assets/quiz-templates/health/health-4.jpg and b/src/assets/quiz-templates/health/health-4.jpg differ diff --git a/src/assets/quiz-templates/health/health-5.jpg b/src/assets/quiz-templates/health/health-5.jpg index 6fe60567..d30be18c 100644 Binary files a/src/assets/quiz-templates/health/health-5.jpg and b/src/assets/quiz-templates/health/health-5.jpg differ diff --git a/src/assets/quiz-templates/health/health-6.jpg b/src/assets/quiz-templates/health/health-6.jpg index 6b742ba6..42f2bdfa 100644 Binary files a/src/assets/quiz-templates/health/health-6.jpg and b/src/assets/quiz-templates/health/health-6.jpg differ diff --git a/src/assets/quiz-templates/health/health-7.jpg b/src/assets/quiz-templates/health/health-7.jpg index 25a40b9a..6a3bd7cb 100644 Binary files a/src/assets/quiz-templates/health/health-7.jpg and b/src/assets/quiz-templates/health/health-7.jpg differ diff --git a/src/assets/quiz-templates/health/health-8.jpg b/src/assets/quiz-templates/health/health-8.jpg index f777831f..c6e15882 100644 Binary files a/src/assets/quiz-templates/health/health-8.jpg and b/src/assets/quiz-templates/health/health-8.jpg differ diff --git a/src/assets/quiz-templates/health/health-9.jpg b/src/assets/quiz-templates/health/health-9.jpg index fdb1d6b0..20f6feaf 100644 Binary files a/src/assets/quiz-templates/health/health-9.jpg and b/src/assets/quiz-templates/health/health-9.jpg differ diff --git a/src/assets/quiz-templates/production/production-1.jpg b/src/assets/quiz-templates/production/production-1.jpg index 552e5424..ccd60634 100644 Binary files a/src/assets/quiz-templates/production/production-1.jpg and b/src/assets/quiz-templates/production/production-1.jpg differ diff --git a/src/assets/quiz-templates/production/production-10.jpg b/src/assets/quiz-templates/production/production-10.jpg index da3b0e6d..27b3c012 100644 Binary files a/src/assets/quiz-templates/production/production-10.jpg and b/src/assets/quiz-templates/production/production-10.jpg differ diff --git a/src/assets/quiz-templates/production/production-2.jpg b/src/assets/quiz-templates/production/production-2.jpg index ff72fd2d..9c2bac45 100644 Binary files a/src/assets/quiz-templates/production/production-2.jpg and b/src/assets/quiz-templates/production/production-2.jpg differ diff --git a/src/assets/quiz-templates/production/production-3.jpg b/src/assets/quiz-templates/production/production-3.jpg index 48861a81..c18fd143 100644 Binary files a/src/assets/quiz-templates/production/production-3.jpg and b/src/assets/quiz-templates/production/production-3.jpg differ diff --git a/src/assets/quiz-templates/production/production-4.jpg b/src/assets/quiz-templates/production/production-4.jpg index 7bc8fb01..2beabe11 100644 Binary files a/src/assets/quiz-templates/production/production-4.jpg and b/src/assets/quiz-templates/production/production-4.jpg differ diff --git a/src/assets/quiz-templates/production/production-5.jpg b/src/assets/quiz-templates/production/production-5.jpg index 587d05a3..b3e8b4ab 100644 Binary files a/src/assets/quiz-templates/production/production-5.jpg and b/src/assets/quiz-templates/production/production-5.jpg differ diff --git a/src/assets/quiz-templates/production/production-6.jpg b/src/assets/quiz-templates/production/production-6.jpg index e0316fdb..6cc3c1f2 100644 Binary files a/src/assets/quiz-templates/production/production-6.jpg and b/src/assets/quiz-templates/production/production-6.jpg differ diff --git a/src/assets/quiz-templates/production/production-7.jpg b/src/assets/quiz-templates/production/production-7.jpg index 4381c548..2be25935 100644 Binary files a/src/assets/quiz-templates/production/production-7.jpg and b/src/assets/quiz-templates/production/production-7.jpg differ diff --git a/src/assets/quiz-templates/production/production-8.jpg b/src/assets/quiz-templates/production/production-8.jpg index fd9095f6..ee448645 100644 Binary files a/src/assets/quiz-templates/production/production-8.jpg and b/src/assets/quiz-templates/production/production-8.jpg differ diff --git a/src/assets/quiz-templates/production/production-9.jpg b/src/assets/quiz-templates/production/production-9.jpg index 9c7599f3..79d11bc4 100644 Binary files a/src/assets/quiz-templates/production/production-9.jpg and b/src/assets/quiz-templates/production/production-9.jpg differ diff --git a/src/assets/quiz-templates/real-estate/real-estate-1.jpg b/src/assets/quiz-templates/real-estate/real-estate-1.jpg index bb2bee4a..61221e50 100644 Binary files a/src/assets/quiz-templates/real-estate/real-estate-1.jpg and b/src/assets/quiz-templates/real-estate/real-estate-1.jpg differ diff --git a/src/assets/quiz-templates/real-estate/real-estate-10.jpg b/src/assets/quiz-templates/real-estate/real-estate-10.jpg index d3056e71..ae9142b3 100644 Binary files a/src/assets/quiz-templates/real-estate/real-estate-10.jpg and b/src/assets/quiz-templates/real-estate/real-estate-10.jpg differ diff --git a/src/assets/quiz-templates/real-estate/real-estate-2.jpg b/src/assets/quiz-templates/real-estate/real-estate-2.jpg index 2e888341..3cef868c 100644 Binary files a/src/assets/quiz-templates/real-estate/real-estate-2.jpg and b/src/assets/quiz-templates/real-estate/real-estate-2.jpg differ diff --git a/src/assets/quiz-templates/real-estate/real-estate-3.jpg b/src/assets/quiz-templates/real-estate/real-estate-3.jpg index 4138b906..dff6b582 100644 Binary files a/src/assets/quiz-templates/real-estate/real-estate-3.jpg and b/src/assets/quiz-templates/real-estate/real-estate-3.jpg differ diff --git a/src/assets/quiz-templates/real-estate/real-estate-4.jpg b/src/assets/quiz-templates/real-estate/real-estate-4.jpg index a127edae..1c82b32d 100644 Binary files a/src/assets/quiz-templates/real-estate/real-estate-4.jpg and b/src/assets/quiz-templates/real-estate/real-estate-4.jpg differ diff --git a/src/assets/quiz-templates/real-estate/real-estate-5.jpg b/src/assets/quiz-templates/real-estate/real-estate-5.jpg index cc166feb..a10cd50b 100644 Binary files a/src/assets/quiz-templates/real-estate/real-estate-5.jpg and b/src/assets/quiz-templates/real-estate/real-estate-5.jpg differ diff --git a/src/assets/quiz-templates/real-estate/real-estate-6.jpg b/src/assets/quiz-templates/real-estate/real-estate-6.jpg index 37956278..b0c611b8 100644 Binary files a/src/assets/quiz-templates/real-estate/real-estate-6.jpg and b/src/assets/quiz-templates/real-estate/real-estate-6.jpg differ diff --git a/src/assets/quiz-templates/real-estate/real-estate-7.jpg b/src/assets/quiz-templates/real-estate/real-estate-7.jpg index 2d2b5f9b..05a86888 100644 Binary files a/src/assets/quiz-templates/real-estate/real-estate-7.jpg and b/src/assets/quiz-templates/real-estate/real-estate-7.jpg differ diff --git a/src/assets/quiz-templates/real-estate/real-estate-8.jpg b/src/assets/quiz-templates/real-estate/real-estate-8.jpg index dc04f3a8..50bda904 100644 Binary files a/src/assets/quiz-templates/real-estate/real-estate-8.jpg and b/src/assets/quiz-templates/real-estate/real-estate-8.jpg differ diff --git a/src/assets/quiz-templates/real-estate/real-estate-9.jpg b/src/assets/quiz-templates/real-estate/real-estate-9.jpg index 52166193..4ae92901 100644 Binary files a/src/assets/quiz-templates/real-estate/real-estate-9.jpg and b/src/assets/quiz-templates/real-estate/real-estate-9.jpg differ diff --git a/src/assets/quiz-templates/repair/repair-1.jpg b/src/assets/quiz-templates/repair/repair-1.jpg index 955aaa4c..98071988 100644 Binary files a/src/assets/quiz-templates/repair/repair-1.jpg and b/src/assets/quiz-templates/repair/repair-1.jpg differ diff --git a/src/assets/quiz-templates/repair/repair-10.jpg b/src/assets/quiz-templates/repair/repair-10.jpg index d5fb0a01..97bf0857 100644 Binary files a/src/assets/quiz-templates/repair/repair-10.jpg and b/src/assets/quiz-templates/repair/repair-10.jpg differ diff --git a/src/assets/quiz-templates/repair/repair-2.jpg b/src/assets/quiz-templates/repair/repair-2.jpg index 2dcc183c..eb0ca58b 100644 Binary files a/src/assets/quiz-templates/repair/repair-2.jpg and b/src/assets/quiz-templates/repair/repair-2.jpg differ diff --git a/src/assets/quiz-templates/repair/repair-3.jpg b/src/assets/quiz-templates/repair/repair-3.jpg index 4d458251..1111144f 100644 Binary files a/src/assets/quiz-templates/repair/repair-3.jpg and b/src/assets/quiz-templates/repair/repair-3.jpg differ diff --git a/src/assets/quiz-templates/repair/repair-4.jpg b/src/assets/quiz-templates/repair/repair-4.jpg index 1559a542..76183493 100644 Binary files a/src/assets/quiz-templates/repair/repair-4.jpg and b/src/assets/quiz-templates/repair/repair-4.jpg differ diff --git a/src/assets/quiz-templates/repair/repair-5.jpg b/src/assets/quiz-templates/repair/repair-5.jpg index 5a27a6c4..fe5cae0b 100644 Binary files a/src/assets/quiz-templates/repair/repair-5.jpg and b/src/assets/quiz-templates/repair/repair-5.jpg differ diff --git a/src/assets/quiz-templates/repair/repair-6.jpg b/src/assets/quiz-templates/repair/repair-6.jpg index 5e44c5b9..b29d1f63 100644 Binary files a/src/assets/quiz-templates/repair/repair-6.jpg and b/src/assets/quiz-templates/repair/repair-6.jpg differ diff --git a/src/assets/quiz-templates/repair/repair-7.jpg b/src/assets/quiz-templates/repair/repair-7.jpg index f58f34c0..6ac6daba 100644 Binary files a/src/assets/quiz-templates/repair/repair-7.jpg and b/src/assets/quiz-templates/repair/repair-7.jpg differ diff --git a/src/assets/quiz-templates/repair/repair-8.jpg b/src/assets/quiz-templates/repair/repair-8.jpg index 7a07141e..27702cd8 100644 Binary files a/src/assets/quiz-templates/repair/repair-8.jpg and b/src/assets/quiz-templates/repair/repair-8.jpg differ diff --git a/src/assets/quiz-templates/repair/repair-9.jpg b/src/assets/quiz-templates/repair/repair-9.jpg index a0a44e86..86c0ddc2 100644 Binary files a/src/assets/quiz-templates/repair/repair-9.jpg and b/src/assets/quiz-templates/repair/repair-9.jpg differ diff --git a/src/assets/quiz-templates/research/research-1.jpg b/src/assets/quiz-templates/research/research-1.jpg index c2880274..769fc845 100644 Binary files a/src/assets/quiz-templates/research/research-1.jpg and b/src/assets/quiz-templates/research/research-1.jpg differ diff --git a/src/assets/quiz-templates/research/research-10.jpg b/src/assets/quiz-templates/research/research-10.jpg index 302be762..ae96f110 100644 Binary files a/src/assets/quiz-templates/research/research-10.jpg and b/src/assets/quiz-templates/research/research-10.jpg differ diff --git a/src/assets/quiz-templates/research/research-2.jpg b/src/assets/quiz-templates/research/research-2.jpg index db853cd9..ef08ff45 100644 Binary files a/src/assets/quiz-templates/research/research-2.jpg and b/src/assets/quiz-templates/research/research-2.jpg differ diff --git a/src/assets/quiz-templates/research/research-3.jpg b/src/assets/quiz-templates/research/research-3.jpg index a9a7cf02..90268cfb 100644 Binary files a/src/assets/quiz-templates/research/research-3.jpg and b/src/assets/quiz-templates/research/research-3.jpg differ diff --git a/src/assets/quiz-templates/research/research-4.jpg b/src/assets/quiz-templates/research/research-4.jpg index a2060d11..950f348b 100644 Binary files a/src/assets/quiz-templates/research/research-4.jpg and b/src/assets/quiz-templates/research/research-4.jpg differ diff --git a/src/assets/quiz-templates/research/research-5.jpg b/src/assets/quiz-templates/research/research-5.jpg index 84cb8e6c..5c3a6fbf 100644 Binary files a/src/assets/quiz-templates/research/research-5.jpg and b/src/assets/quiz-templates/research/research-5.jpg differ diff --git a/src/assets/quiz-templates/research/research-6.jpg b/src/assets/quiz-templates/research/research-6.jpg index 3a3c4894..7d7a07c7 100644 Binary files a/src/assets/quiz-templates/research/research-6.jpg and b/src/assets/quiz-templates/research/research-6.jpg differ diff --git a/src/assets/quiz-templates/research/research-7.jpg b/src/assets/quiz-templates/research/research-7.jpg index 02ec0b83..b7cb3ac8 100644 Binary files a/src/assets/quiz-templates/research/research-7.jpg and b/src/assets/quiz-templates/research/research-7.jpg differ diff --git a/src/assets/quiz-templates/research/research-8.jpg b/src/assets/quiz-templates/research/research-8.jpg index 06cf702c..5146c5d6 100644 Binary files a/src/assets/quiz-templates/research/research-8.jpg and b/src/assets/quiz-templates/research/research-8.jpg differ diff --git a/src/assets/quiz-templates/research/research-9.jpg b/src/assets/quiz-templates/research/research-9.jpg index 884cb602..fbab01b3 100644 Binary files a/src/assets/quiz-templates/research/research-9.jpg and b/src/assets/quiz-templates/research/research-9.jpg differ diff --git a/src/assets/quiz-templates/services/service-1.jpg b/src/assets/quiz-templates/services/service-1.jpg index 51a36fb4..50aa3dcf 100644 Binary files a/src/assets/quiz-templates/services/service-1.jpg and b/src/assets/quiz-templates/services/service-1.jpg differ diff --git a/src/assets/quiz-templates/services/service-10.jpg b/src/assets/quiz-templates/services/service-10.jpg index a2303dff..095d4741 100644 Binary files a/src/assets/quiz-templates/services/service-10.jpg and b/src/assets/quiz-templates/services/service-10.jpg differ diff --git a/src/assets/quiz-templates/services/service-11.jpg b/src/assets/quiz-templates/services/service-11.jpg index 15111b28..f0c10880 100644 Binary files a/src/assets/quiz-templates/services/service-11.jpg and b/src/assets/quiz-templates/services/service-11.jpg differ diff --git a/src/assets/quiz-templates/services/service-2.jpg b/src/assets/quiz-templates/services/service-2.jpg index 08140977..25d92401 100644 Binary files a/src/assets/quiz-templates/services/service-2.jpg and b/src/assets/quiz-templates/services/service-2.jpg differ diff --git a/src/assets/quiz-templates/services/service-3.jpg b/src/assets/quiz-templates/services/service-3.jpg index 96b87209..166c1d05 100644 Binary files a/src/assets/quiz-templates/services/service-3.jpg and b/src/assets/quiz-templates/services/service-3.jpg differ diff --git a/src/assets/quiz-templates/services/service-4.jpg b/src/assets/quiz-templates/services/service-4.jpg index a04654e3..04eb2fed 100644 Binary files a/src/assets/quiz-templates/services/service-4.jpg and b/src/assets/quiz-templates/services/service-4.jpg differ diff --git a/src/assets/quiz-templates/services/service-5.jpg b/src/assets/quiz-templates/services/service-5.jpg index 8879f78e..e48e3458 100644 Binary files a/src/assets/quiz-templates/services/service-5.jpg and b/src/assets/quiz-templates/services/service-5.jpg differ diff --git a/src/assets/quiz-templates/services/service-6.jpg b/src/assets/quiz-templates/services/service-6.jpg index aabcbbe4..80e30429 100644 Binary files a/src/assets/quiz-templates/services/service-6.jpg and b/src/assets/quiz-templates/services/service-6.jpg differ diff --git a/src/assets/quiz-templates/services/service-7.jpg b/src/assets/quiz-templates/services/service-7.jpg index 2abf2b63..30da9153 100644 Binary files a/src/assets/quiz-templates/services/service-7.jpg and b/src/assets/quiz-templates/services/service-7.jpg differ diff --git a/src/assets/quiz-templates/services/service-8.jpg b/src/assets/quiz-templates/services/service-8.jpg index 20d3bb74..0418c1f9 100644 Binary files a/src/assets/quiz-templates/services/service-8.jpg and b/src/assets/quiz-templates/services/service-8.jpg differ diff --git a/src/assets/quiz-templates/services/service-9.jpg b/src/assets/quiz-templates/services/service-9.jpg index 26556403..10a48e27 100644 Binary files a/src/assets/quiz-templates/services/service-9.jpg and b/src/assets/quiz-templates/services/service-9.jpg differ diff --git a/src/assets/quiz-templates/tourism/tourism-1.jpg b/src/assets/quiz-templates/tourism/tourism-1.jpg index f4c788be..97f029c5 100644 Binary files a/src/assets/quiz-templates/tourism/tourism-1.jpg and b/src/assets/quiz-templates/tourism/tourism-1.jpg differ diff --git a/src/assets/quiz-templates/tourism/tourism-10.jpg b/src/assets/quiz-templates/tourism/tourism-10.jpg index c11ab435..b3738812 100644 Binary files a/src/assets/quiz-templates/tourism/tourism-10.jpg and b/src/assets/quiz-templates/tourism/tourism-10.jpg differ diff --git a/src/assets/quiz-templates/tourism/tourism-2.jpg b/src/assets/quiz-templates/tourism/tourism-2.jpg index c6628bc7..00c9c0b2 100644 Binary files a/src/assets/quiz-templates/tourism/tourism-2.jpg and b/src/assets/quiz-templates/tourism/tourism-2.jpg differ diff --git a/src/assets/quiz-templates/tourism/tourism-3.jpg b/src/assets/quiz-templates/tourism/tourism-3.jpg index 895d366c..ba7d6220 100644 Binary files a/src/assets/quiz-templates/tourism/tourism-3.jpg and b/src/assets/quiz-templates/tourism/tourism-3.jpg differ diff --git a/src/assets/quiz-templates/tourism/tourism-4.jpg b/src/assets/quiz-templates/tourism/tourism-4.jpg index 863b593f..3f06b324 100644 Binary files a/src/assets/quiz-templates/tourism/tourism-4.jpg and b/src/assets/quiz-templates/tourism/tourism-4.jpg differ diff --git a/src/assets/quiz-templates/tourism/tourism-5.jpg b/src/assets/quiz-templates/tourism/tourism-5.jpg index 86913e09..3b884cb8 100644 Binary files a/src/assets/quiz-templates/tourism/tourism-5.jpg and b/src/assets/quiz-templates/tourism/tourism-5.jpg differ diff --git a/src/assets/quiz-templates/tourism/tourism-6.jpg b/src/assets/quiz-templates/tourism/tourism-6.jpg index 40912313..ef0a98fb 100644 Binary files a/src/assets/quiz-templates/tourism/tourism-6.jpg and b/src/assets/quiz-templates/tourism/tourism-6.jpg differ diff --git a/src/assets/quiz-templates/tourism/tourism-7.jpg b/src/assets/quiz-templates/tourism/tourism-7.jpg index 25efa443..e0e36094 100644 Binary files a/src/assets/quiz-templates/tourism/tourism-7.jpg and b/src/assets/quiz-templates/tourism/tourism-7.jpg differ diff --git a/src/assets/quiz-templates/tourism/tourism-8.jpg b/src/assets/quiz-templates/tourism/tourism-8.jpg index a76a4437..92414710 100644 Binary files a/src/assets/quiz-templates/tourism/tourism-8.jpg and b/src/assets/quiz-templates/tourism/tourism-8.jpg differ diff --git a/src/assets/quiz-templates/tourism/tourism-9.jpg b/src/assets/quiz-templates/tourism/tourism-9.jpg index 7db92d83..a7914ff8 100644 Binary files a/src/assets/quiz-templates/tourism/tourism-9.jpg and b/src/assets/quiz-templates/tourism/tourism-9.jpg differ diff --git a/src/index.tsx b/src/index.tsx index 3e3fe6e1..86b5737e 100755 --- a/src/index.tsx +++ b/src/index.tsx @@ -17,6 +17,8 @@ import CloseIcon from "@icons/CloseBold"; import type { SnackbarKey } from "notistack"; import { CheckFastlink } from "@ui_kit/CheckFastlink"; +import { ErrorBoundary } from "react-error-boundary"; +import { handleComponentError } from "./utils/handleComponentError"; moment.locale("ru"); polyfillCountryFlagEmojis(); @@ -36,6 +38,8 @@ const snackbarAction = (snackbarId: SnackbarKey) => ( ); +const ApologyPage = () =>

Что-то пошло не так

+ const root = createRoot(document.getElementById("root")!); root.render( @@ -60,7 +64,13 @@ root.render( style={{ backgroundColor: lightTheme.palette.brightPurple.main }} > - + + + + diff --git a/src/pages/ContactFormPage/NewField/NewFieldParent.tsx b/src/pages/ContactFormPage/NewField/NewFieldParent.tsx index d44da31b..b28127cf 100644 --- a/src/pages/ContactFormPage/NewField/NewFieldParent.tsx +++ b/src/pages/ContactFormPage/NewField/NewFieldParent.tsx @@ -60,7 +60,7 @@ export default function NewFieldParent({ value={quiz.config.formContact.fields[defaultValue].text} placeholder={placeholderHelp} text={""} - maxLength={20} + maxLength={150} /> @@ -75,7 +75,7 @@ export default function NewFieldParent({ value={quiz.config.formContact.fields[defaultValue].innerText} placeholder={placeholderField} text={""} - maxLength={20} + maxLength={150} /> diff --git a/src/pages/IntegrationsPage/IntegrationsModal/Amo/useAmoIntegration.ts b/src/pages/IntegrationsPage/IntegrationsModal/Amo/useAmoIntegration.ts index 6afafbd2..e420f921 100644 --- a/src/pages/IntegrationsPage/IntegrationsModal/Amo/useAmoIntegration.ts +++ b/src/pages/IntegrationsPage/IntegrationsModal/Amo/useAmoIntegration.ts @@ -128,10 +128,6 @@ export const useAmoIntegration = ({ isModalOpen, isTryRemoveAccount, quizID, que }) } - console.log("got questions") - console.log(gottenQuestions) - console.log("settingsResponse") - console.log(settingsResponse.FieldsRule) if (key === "Contact") { const MAP = settingsResponse.FieldsRule[key as QuestionKeys].ContactRuleMap diff --git a/src/pages/Questions/Emoji/Emoji.tsx b/src/pages/Questions/Emoji/Emoji.tsx index 81bc34f0..e7c0df86 100644 --- a/src/pages/Questions/Emoji/Emoji.tsx +++ b/src/pages/Questions/Emoji/Emoji.tsx @@ -9,6 +9,7 @@ import { AnswerDraggableList } from "../AnswerDraggableList"; import ButtonsOptions from "../QuestionOptions/ButtonsLayout/ButtonsOptions"; import EmojiAnswerItem from "./EmojiAnswerItem/EmojiAnswerItem"; import SwitchEmoji from "./switchEmoji"; +import Emoji3 from '@emoji-mart/react'; interface Props { question: QuizQuestionEmoji; @@ -132,6 +133,11 @@ export default function Emoji({ question, openBranchingPage, setOpenBranchingPag switchState={switchState} question={question} /> + + + ); } diff --git a/src/pages/Questions/QuestionOptions/SliderOptions/SliderOptions.tsx b/src/pages/Questions/QuestionOptions/SliderOptions/SliderOptions.tsx index 63c10e19..3535cfbb 100644 --- a/src/pages/Questions/QuestionOptions/SliderOptions/SliderOptions.tsx +++ b/src/pages/Questions/QuestionOptions/SliderOptions/SliderOptions.tsx @@ -16,6 +16,9 @@ interface Props { openBranchingPage: boolean; setOpenBranchingPage: (a: boolean) => void; } +function ReplaceToNotStartZero (x: number) { + return(Number(x.toString().replace(/^0+/, '') || '0')) +} export default function SliderOptions({ question, openBranchingPage, setOpenBranchingPage }: Props) { const theme = useTheme(); @@ -29,7 +32,7 @@ export default function SliderOptions({ question, openBranchingPage, setOpenBran setStartError(""); updateQuestion(question.id, (question) => { - question.content.start = value; + question.content.start = ReplaceToNotStartZero(value); }); }, 5000); @@ -37,9 +40,19 @@ export default function SliderOptions({ question, openBranchingPage, setOpenBran setStepError(""); updateQuestion(question.id, (question) => { - question.content.step = value; + question.content.step = ReplaceToNotStartZero(value); }); }, 5000); + const updateStepsDebounced = useDebouncedCallback((value: string) => { + console.log("value") + console.log(value) + console.log(value.toString()) + console.log("ReplaceToNotStartZero(Number(value)) _____________________________________") + console.log(ReplaceToNotStartZero(Number(value))) + updateQuestion(question.id, (question) => { + question.content.step = ReplaceToNotStartZero(Number(value)); + }); + }, 5000); const calculateValues = () => { const { step, start } = question.content; @@ -117,8 +130,9 @@ export default function SliderOptions({ question, openBranchingPage, setOpenBran value={question.content.range.split("—")[0]} onChange={({ target }) => { updateQuestion(question.id, (question) => { - question.content.range = `${target.value}—${question.content.range.split("—")[1]}`; + question.content.range = `${Number(target.value)}—${question.content.range.split("—")[1]}`; }); + // if (/^0\d+$/.test(target.value.toString())) updateStepsDebounced(target.value); }} onBlur={calculateValues} /> @@ -131,8 +145,9 @@ export default function SliderOptions({ question, openBranchingPage, setOpenBran value={question.content.range.split("—")[1]} onChange={({ target }) => { updateQuestion(question.id, (question) => { - question.content.range = `${question.content.range.split("—")[0]}—${target.value}`; + question.content.range = `${question.content.range.split("—")[0]}—${Number(target.value)}`; }); + // if (/^0\d+$/.test(target.value.toString())) updateStepsDebounced(target.value); }} onBlur={calculateValues} /> diff --git a/src/pages/Questions/UploadVideoModal.tsx b/src/pages/Questions/UploadVideoModal.tsx index a992dda1..a032d245 100644 --- a/src/pages/Questions/UploadVideoModal.tsx +++ b/src/pages/Questions/UploadVideoModal.tsx @@ -94,6 +94,7 @@ export default function UploadVideoModal({ open, onClose, video, onUpload }: Hel onChange={({ target }) => { if (target.files?.length) { onUpload(URL.createObjectURL(target.files[0] || " ")); + onClose() } }} hidden diff --git a/src/pages/ResultPage/cards/EmailSettingsCard.tsx b/src/pages/ResultPage/cards/EmailSettingsCard.tsx index 0d74c171..1768ed58 100644 --- a/src/pages/ResultPage/cards/EmailSettingsCard.tsx +++ b/src/pages/ResultPage/cards/EmailSettingsCard.tsx @@ -118,7 +118,7 @@ export const EmailSettingsCard = ({ quizExpand }: Props) => { { updateQuiz(quiz.id, (quiz) => { quiz.config.resultInfo.theme = target.value; diff --git a/src/pages/Tariffs/Tariffs.tsx b/src/pages/Tariffs/Tariffs.tsx index 24f1bc0e..49b63c1e 100644 --- a/src/pages/Tariffs/Tariffs.tsx +++ b/src/pages/Tariffs/Tariffs.tsx @@ -74,7 +74,7 @@ function TariffPage() { const tariffsList: Tariff[] = []; let page = 2 const [tariffsResponse, tariffsResponseError] = await getTariffs(page - 1); - +console.log(tariffsResponse) if (tariffsResponseError || !tariffsResponse) { return tariffsList; } @@ -182,7 +182,7 @@ function TariffPage() { inCart(); }; - const filteredTariffs = tariffs.filter((tariff) => { + const filteredTariffs = tariffs.filter((tariff, i) => { return ( tariff.privileges[0].serviceKey === "squiz" && !tariff.isDeleted && diff --git a/src/pages/Tariffs/tariffsUtils/createTariffElements.tsx b/src/pages/Tariffs/tariffsUtils/createTariffElements.tsx index 704dd138..7aad4952 100644 --- a/src/pages/Tariffs/tariffsUtils/createTariffElements.tsx +++ b/src/pages/Tariffs/tariffsUtils/createTariffElements.tsx @@ -17,6 +17,8 @@ export const createTariffElements = ( cc?: boolean, icon?: ReactNode ) => { + console.log("start work createTariffElements") + console.log("filteredTariffs ", filteredTariffs) const tariffElements = filteredTariffs .filter((tariff) => tariff.privileges.length > 0) .map((tariff, index) => { diff --git a/src/pages/createQuize/QuizGallery/QuizTemplateCard.tsx b/src/pages/createQuize/QuizGallery/QuizTemplateCard.tsx index b1ce6f8e..88b0fb82 100644 --- a/src/pages/createQuize/QuizGallery/QuizTemplateCard.tsx +++ b/src/pages/createQuize/QuizGallery/QuizTemplateCard.tsx @@ -52,6 +52,7 @@ export const QuizTemplateCard = ({ }} > { const user = useUserStore((state) => state.user?._id); - const ticket = useTicketStore( - (state) => state[user ? "authData" : "unauthData"], - ); + const ticket = useTicketStore(state => state[user ? "authData" : "unauthData"]); + //Запись SEE в учётник const { isActiveSSETab, updateSSEValue } = useSSETab( "ticket", addOrUpdateUnauthMessages, @@ -192,40 +192,13 @@ export default () => { const sendMessage = async (messageField: string) => { if (!messageField || ticket.isMessageSending) return false; + setSseEnabled(true); - let successful = false; setIsMessageSending(true); - if (!ticket.sessionData?.ticketId) { - const [data, createError] = await createTicket( - messageField, - Boolean(user), - ); - if (createError || !data) { - successful = false; - - enqueueSnackbar(createError); - } else { - successful = true; - - setTicketData({ ticketId: data.Ticket, sessionId: data.sess }); - } - - setIsMessageSending(false); - } else { - const [_, sendTicketMessageError] = await sendTicketMessage( - ticket.sessionData?.ticketId, - messageField, - ); - successful = true; - - if (sendTicketMessageError) { - successful = false; - enqueueSnackbar(sendTicketMessageError); - } - setIsMessageSending(false); - } + let successful = await selectSendingMethod({messageField}); + setIsMessageSending(false); return successful; }; const sendFile = async (file: File) => { diff --git a/src/ui_kit/FloatingSupportChat/useTechnicalSupport.ts b/src/ui_kit/FloatingSupportChat/useTechnicalSupport.ts new file mode 100644 index 00000000..21430c7e --- /dev/null +++ b/src/ui_kit/FloatingSupportChat/useTechnicalSupport.ts @@ -0,0 +1,266 @@ +import { sendTicketMessage, shownMessage } from "@/api/ticket"; +import { useSSETab } from "@/utils/hooks/useSSETab"; +import { parseAxiosError } from "@/utils/parse-error"; +import { TicketMessage, createTicket, useSSESubscription, useTicketMessages, useTicketsFetcher, sendFile as sf } from "@frontend/kitui"; + +import { + addOrUpdateUnauthMessages, + cleanAuthTicketData, + cleanUnauthTicketData, + setIsMessageSending, + setTicketData, + setUnauthIsPreventAutoscroll, + setUnauthTicketMessageFetchState, + useTicketStore, +} from "@root/ticket"; +import { enqueueSnackbar } from "notistack"; +import { useCallback, useEffect, useMemo, useState } from "react"; + +interface Props { + userId?: string; + +} + +type ModalWarningType = + | "errorType" + | "errorSize" + | "picture" + | "video" + | "audio" + | "document" + | null; +const MAX_FILE_SIZE = 419430400; +const ACCEPT_SEND_FILE_TYPES_MAP = [ + ".jpeg", + ".jpg", + ".png", + ".mp4", + ".doc", + ".docx", + ".pdf", + ".txt", + ".xlsx", + ".csv", +] as const; +export default ({ userId }:Props) => { + const ticket = useTicketStore((state) => state[userId ? "authData" : "unauthData"]); + + const { isActiveSSETab, updateSSEValue } = useSSETab( + "ticket", + addOrUpdateUnauthMessages, + ); + + const [modalWarningType, setModalWarningType] = + useState(null); + const [isChatOpened, setIsChatOpened] = useState(false); + const [sseEnabled, setSseEnabled] = useState(true); + + const handleChatClickOpen = () => { + setIsChatOpened(true); + }; + const handleChatClickClose = () => { + setIsChatOpened(false); + }; + const handleChatClickSwitch = () => { + setIsChatOpened((state) => !state); + }; + + const getGreetingMessage: TicketMessage = useMemo(() => { + const workingHoursMessage = + "Здравствуйте, задайте ваш вопрос и наш оператор вам ответит в течение 10 минут"; + const offHoursMessage = + "Здравствуйте, задайте ваш вопрос и наш оператор вам ответит в течение 10 минут"; + const date = new Date(); + const currentHourUTC = date.getUTCHours(); + const MscTime = 3; // Москва UTC+3; + const moscowHour = (currentHourUTC + MscTime) % 24; + const greetingMessage = + moscowHour >= 3 && moscowHour < 10 + ? offHoursMessage + : workingHoursMessage; + + return { + created_at: new Date().toISOString(), + files: [], + id: "111", + message: greetingMessage, + request_screenshot: "", + session_id: "greetingMessage", + shown: { me: 1 }, + ticket_id: "111", + user_id: "greetingMessage", + }; + }, [isChatOpened]); + + useTicketsFetcher({ + url: `${process.env.REACT_APP_DOMAIN}/heruvym/v1.0.0/getTickets`, + ticketsPerPage: 10, + ticketApiPage: 0, + onSuccess: (result) => { + if (result.data?.length) { + const currentTicket = result.data.find( + ({ origin }) => !origin.includes("/support"), + ); + + if (!currentTicket) { + return; + } + + setTicketData({ + ticketId: currentTicket.id, + sessionId: currentTicket.sess, + }); + } + }, + onError: (error: Error) => { + const message = parseAxiosError(error); + if (message) enqueueSnackbar(message); + }, + onFetchStateChange: () => {}, + enabled: Boolean(userId), + }); + + useTicketMessages({ + url: `${process.env.REACT_APP_DOMAIN}/heruvym/v1.0.0/getMessages`, + isUnauth: true, + ticketId: ticket.sessionData?.ticketId, + messagesPerPage: ticket.messagesPerPage, + messageApiPage: ticket.apiPage, + onSuccess: useCallback((messages) => { + addOrUpdateUnauthMessages(messages); + }, []), + onError: useCallback((error: Error) => { + if (error.name === "CanceledError") { + return; + } + + const [message] = parseAxiosError(error); + if (message) enqueueSnackbar(message); + }, []), + onFetchStateChange: setUnauthTicketMessageFetchState, + }); + + useSSESubscription({ + enabled: + sseEnabled && isActiveSSETab && Boolean(ticket.sessionData?.sessionId), + url: `${process.env.REACT_APP_DOMAIN}/heruvym/v1.0.0/ticket?ticket=${ticket.sessionData?.ticketId}&s=${ticket.sessionData?.sessionId}`, + onNewData: (ticketMessages) => { + const isTicketClosed = ticketMessages.some( + (message) => message.session_id === "close", + ); + if (isTicketClosed) { + cleanAuthTicketData(); + addOrUpdateUnauthMessages([getGreetingMessage]); + if (!userId) { + cleanUnauthTicketData(); + localStorage.removeItem("unauth-ticket"); + } + return; + } + updateSSEValue(ticketMessages); + addOrUpdateUnauthMessages(ticketMessages); + }, + onDisconnect: useCallback(() => { + setUnauthIsPreventAutoscroll(false); + setSseEnabled(false); + }, []), + marker: "ticket", + }); + + useEffect(() => { + cleanAuthTicketData(); + setSseEnabled(true); + }, [userId]); + + useEffect(() => { + if (isChatOpened) { + const newMessages = ticket.messages.filter( + ({ shown }) => shown?.me !== 1, + ); + + newMessages.map(async ({ id }) => { + await shownMessage(id); + }); + } + }, [isChatOpened, ticket.messages]); + + const sendMessage = async (messageField: string) => { + if (!messageField || ticket.isMessageSending) return false; + setSseEnabled(true); + let successful = false; + setIsMessageSending(true); + if (!ticket.sessionData?.ticketId) { + const [data, createError] = await createTicket( + messageField, + Boolean(userId), + ); + + if (createError || !data) { + successful = false; + + enqueueSnackbar(createError); + } else { + successful = true; + + setTicketData({ ticketId: data.Ticket, sessionId: data.sess }); + } + + setIsMessageSending(false); + } else { + const [_, sendTicketMessageError] = await sendTicketMessage( + ticket.sessionData?.ticketId, + messageField, + ); + successful = true; + + if (sendTicketMessageError) { + successful = false; + enqueueSnackbar(sendTicketMessageError); + } + setIsMessageSending(false); + } + + return successful; + }; + const sendFile = async (file: File) => { + if (file === undefined) return true; + + let ticketId = ticket.sessionData?.ticketId; + if (!ticket.sessionData?.ticketId) { + const [data, createError] = await createTicket("", Boolean(userId)); + ticketId = data?.Ticket; + + if (createError || !data) { + enqueueSnackbar(createError); + } else { + setTicketData({ ticketId: data.Ticket, sessionId: data.sess }); + } + + setIsMessageSending(false); + } + + if (ticketId !== undefined) { + if (file.size > MAX_FILE_SIZE) return setModalWarningType("errorSize"); + + const [_, sendFileError] = await sf(ticketId, file); + + if (sendFileError) { + enqueueSnackbar(sendFileError); + } + + return true; + } + }; + + return { + isChatOpened, + handleChatClickOpen, + handleChatClickClose, + handleChatClickSwitch, + sendMessage, + sendFile, + modalWarningType, + setModalWarningType, + getGreetingMessage + }; +}; \ No newline at end of file diff --git a/src/ui_kit/FloatingSupportChat/utils.ts b/src/ui_kit/FloatingSupportChat/utils.ts new file mode 100644 index 00000000..e6e45f18 --- /dev/null +++ b/src/ui_kit/FloatingSupportChat/utils.ts @@ -0,0 +1,55 @@ +import { sendTicketMessage } from "@/api/ticket"; +import { setTicketData, useTicketStore } from "@/stores/ticket"; +import { useUserStore } from "@root/user"; +import { createTicket, sendFile as sendFileRequest } from "@api/ticket"; +import { enqueueSnackbar } from "notistack"; + +interface SelectSendingMethod { + messageField: string; + isSnackbar?: boolean; + systemError?: boolean; + + } +export const selectSendingMethod = async ({messageField, isSnackbar = true, systemError = false}: SelectSendingMethod) => { + console.log("click") + const user = useUserStore.getState().user?._id; + const ticket = useTicketStore.getState()[user ? "authData" : "unauthData"]; + console.log(ticket) + + console.log("click 2") + let successful = false; + if (!(window.location.hostname == 'localhost' && systemError)) { //предупреждать о системных ошибках вне локалхост + if (!ticket.sessionData?.ticketId) { + console.log("autorisated 2") + const [data, createError] = await createTicket( + messageField, + Boolean(user), + systemError, + ); + + if (createError || !data) { + successful = false; + + if (isSnackbar) enqueueSnackbar(createError); + } else { + successful = true; + + setTicketData({ ticketId: data.Ticket, sessionId: data.sess }); + } + + } else { + const [_, sendTicketMessageError] = await sendTicketMessage( + ticket.sessionData?.ticketId, + messageField, + systemError, + ); + successful = true; + + if (sendTicketMessageError) { + successful = false; + if (isSnackbar) enqueueSnackbar(sendTicketMessageError); + } + } + } + return successful; +} \ No newline at end of file diff --git a/src/ui_kit/MediaSelectionAndDisplay.tsx b/src/ui_kit/MediaSelectionAndDisplay.tsx index 4aeeaab3..6e73289c 100644 --- a/src/ui_kit/MediaSelectionAndDisplay.tsx +++ b/src/ui_kit/MediaSelectionAndDisplay.tsx @@ -19,9 +19,9 @@ import UploadBox from "@ui_kit/UploadBox"; import UploadIcon from "@icons/UploadIcon"; import InfoIcon from "@icons/InfoIcon"; -import imge from "@/assets/card-1.png" import { CropModalInit } from "./Modal/CropModal"; import { AnyTypedQuizQuestion } from "@frontend/squzanswerer"; +import UploadVideoModal from "@/pages/Questions/UploadVideoModal"; interface Iprops { question: AnyTypedQuizQuestion; @@ -35,11 +35,12 @@ export const MediaSelectionAndDisplay: FC = ({ question, cropAspectRatio, }) => { + const theme = useTheme(); + const [isVideoUploadDialogOpen, setIsVideoUploadDialogOpen] = useState(false); const [pictureUploding, setPictureUploading] = useState(false); const [backgroundUploding, setBackgroundUploading] = useState(false); const [openCropModal, setOpenCropModal] = useState(false); const quizQid = useCurrentQuiz()?.qid; - const theme = useTheme(); const [isImageUploadOpen, openImageUploadModal, closeImageUploadModal] = useDisclosure(); async function handleImageUpload(file: File) { @@ -84,7 +85,7 @@ export const MediaSelectionAndDisplay: FC = ({ }); } - setBackgroundUploading(false); + setTimeout(() => {setBackgroundUploading(false)},7000); } return ( @@ -151,6 +152,17 @@ export const MediaSelectionAndDisplay: FC = ({ onClose={closeImageUploadModal} handleImageChange={handleImageUpload} /> + setIsVideoUploadDialogOpen(false)} + onUpload={(s:string) => { + handleVideoUpload(s); + setTimeout(() => {setBackgroundUploading(false)},5000); + } + } + video={question.content.video} + /> + ; + +function queueErrorRequest(error: ComponentError) { + errorsQueue.push(error); + + clearTimeout(timeoutId); + timeoutId = setTimeout(() => { + sendErrorsToServer(); + }, 1000); +} + +async function sendErrorsToServer() { + // makeRequest({ + // url: "", + // method: "POST", + // body: errorsQueue, + // useToken: true, + // }); + selectSendingMethod({ + messageField: `Fake-sending ${errorsQueue.length} errors to server ${JSON.stringify(errorsQueue)}`, + isSnackbar: false, + systemError: true + }); +// errorsQueue = []; +} diff --git a/yarn.lock b/yarn.lock index cfa9c20a..5d75174a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1337,7 +1337,7 @@ debug "^3.1.0" lodash.once "^4.1.1" -"@emoji-mart/data@^1.1.2": +"@emoji-mart/data@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@emoji-mart/data/-/data-1.2.1.tgz#0ad70c662e3bc603e23e7d98413bd1e64c4fcb6c" integrity sha512-no2pQMWiBy6gpBEiqGeU77/bFejDqUTRY7KX+0+iur13op3bqUsXdnwoZs6Xb1zbv0gAj5VvS1PWoUUckSr5Dw== @@ -1513,7 +1513,7 @@ resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.2.tgz#d8bae93ac8b815b2bd7a98078cf91e2724ef11e5" integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw== -"@frontend/kitui@^1.0.86": +"@frontend/kitui@^1.0.87": version "1.0.86" resolved "https://penahub.gitlab.yandexcloud.net/api/v4/projects/21/packages/npm/@frontend/kitui/-/@frontend/kitui-1.0.86.tgz#03a56b99403b62810134f3d7da01ea3fc8cc4f7f" integrity sha1-A6VrmUA7YoEBNPPX2gHqP8jMT38=