diff --git a/src/App.tsx b/src/App.tsx
index c71f16e7..036f0f64 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -42,6 +42,7 @@ import {
} from "@root/user";
import { enqueueSnackbar } from "notistack";
import PrivateRoute from "@ui_kit/PrivateRoute";
+import FloatingSupportChat from "@ui_kit/FloatingSupportChat/FloatingSupportChat";
import { Restore } from "./pages/auth/Restore";
@@ -49,6 +50,7 @@ import { isAxiosError } from "axios";
import { useEffect, useLayoutEffect, useRef } from "react";
import RecoverPassword from "./pages/auth/RecoverPassword";
import OutdatedLink from "./pages/auth/OutdatedLink";
+
export function useUserAccountFetcher({
onError,
onNewUserAccount,
@@ -181,6 +183,7 @@ export default function App() {
return (
<>
+
{location.state?.backgroundLocation && (
} />
diff --git a/src/api/ticket.ts b/src/api/ticket.ts
new file mode 100644
index 00000000..111755fb
--- /dev/null
+++ b/src/api/ticket.ts
@@ -0,0 +1,46 @@
+import { makeRequest } from "@frontend/kitui";
+import { parseAxiosError } from "../utils/parse-error";
+
+import { SendTicketMessageRequest } from "@frontend/kitui";
+
+const apiUrl = process.env.REACT_APP_DOMAIN + "/heruvym";
+
+export async function sendTicketMessage(
+ ticketId: string,
+ message: string,
+): Promise<[null, string?]> {
+ try {
+ const sendTicketMessageResponse = await makeRequest<
+ SendTicketMessageRequest,
+ null
+ >({
+ url: `${apiUrl}/send`,
+ method: "POST",
+ useToken: true,
+ body: { ticket: ticketId, message: message, lang: "ru", files: [] },
+ });
+
+ return [sendTicketMessageResponse];
+ } catch (nativeError) {
+ const [error] = parseAxiosError(nativeError);
+
+ return [null, `Не удалось отправить сообщение. ${error}`];
+ }
+}
+
+export async function shownMessage(id: string): Promise<[null, string?]> {
+ try {
+ const shownMessageResponse = await makeRequest<{ id: string }, null>({
+ url: apiUrl + "/shown",
+ method: "POST",
+ useToken: true,
+ body: { id },
+ });
+
+ return [shownMessageResponse];
+ } catch (nativeError) {
+ const [error] = parseAxiosError(nativeError);
+
+ return [null, `Не удалось прочесть сообщение. ${error}`];
+ }
+}
diff --git a/src/assets/icons/SendIcon.tsx b/src/assets/icons/SendIcon.tsx
index 9a0f999b..ff96b1d5 100755
--- a/src/assets/icons/SendIcon.tsx
+++ b/src/assets/icons/SendIcon.tsx
@@ -1,4 +1,10 @@
-export default function SendIcon() {
+import { CSSProperties } from "react";
+
+interface Props {
+ style?: CSSProperties;
+}
+
+export default function SendIcon({ style }: Props) {
return (