From 9367a2178fb5a732416f4ede6ed2ef9a6b60d247 Mon Sep 17 00:00:00 2001 From: nflnkr <105123049+nflnkr@users.noreply.github.com> Date: Mon, 29 Jan 2024 14:16:21 +0300 Subject: [PATCH] mirror changes from main --- src/api/quizRelase.ts | 198 ++++++++++++++++++++++++++---------------- 1 file changed, 124 insertions(+), 74 deletions(-) diff --git a/src/api/quizRelase.ts b/src/api/quizRelase.ts index ebe8b12..237e604 100644 --- a/src/api/quizRelase.ts +++ b/src/api/quizRelase.ts @@ -1,98 +1,148 @@ -import { makeRequest } from "@frontend/kitui"; +import axios from "axios"; -export function getData(quizId: string) { - return makeRequest({ - url: `https://s.hbpn.link/answer/settings`, - body: { - quiz_id: quizId, - limit: 100, - page: 0, - need_config: true, +import type { AxiosError } from "axios"; +import type { GetDataResponse } from "../model/settingsData"; - }, +let SESSIONS = ""; + +export const publicationMakeRequest = ({ url, body }: any) => { + console.log(body); + return axios(url, { + //@ts-ignore + data: body, + headers: { + "X-Sessionkey": SESSIONS, + "Content-Type": "multipart/form-data", + }, + method: "POST", + }); +}; + +export async function getData(quizId: string): Promise<{ + data: GetDataResponse | null; + isRecentlyCompleted: boolean; + error?: string; +}> { + const QID = + process.env.NODE_ENV === "production" + ? window.location.pathname.replace(/\//g, "") + : "ef836ff8-35b1-4031-9acf-af5766bac2b2"; + + try { + const { data, headers } = await axios( + `https://s.hbpn.link/answer/settings`, + { method: "POST", - }); + // headers, + data: JSON.stringify({ + quiz_id: quizId, + limit: 100, + page: 0, + need_config: true, + }), + } + ); + const sessions = JSON.parse(localStorage.getItem("sessions") || "{}"); + + if (typeof sessions[QID] === "number") { + // unix время. Если меньше суток прошло - выводить ошибку, иначе пустить дальше + if (Date.now() - sessions[QID] < 86400000) { + return { data, isRecentlyCompleted: true }; + } + } + + SESSIONS = headers["x-sessionkey"]; + + return { data, isRecentlyCompleted: false }; + } catch (nativeError) { + const error = nativeError as AxiosError; + + return { data: null, isRecentlyCompleted: false, error: error.message }; + } } export function sendAnswer({ questionId, body, qid }: any) { - const formData = new FormData(); -console.log(qid) - const answers = [{ - question_id: questionId, - content: body, //тут массив с ответом - }] - formData.append("answers", JSON.stringify(answers)); - formData.append("qid", qid); + const formData = new FormData(); + console.log(qid); + const answers = [ + { + question_id: questionId, + content: body, //тут массив с ответом + }, + ]; + formData.append("answers", JSON.stringify(answers)); + formData.append("qid", qid); - return makeRequest({ - url: `https://s.hbpn.link/answer/answer`, - body: formData, - method: "POST", - }); + return publicationMakeRequest({ + url: `https://s.hbpn.link/answer/answer`, + body: formData, + method: "POST", + }); } //body ={file, filename} export function sendFile({ questionId, body, qid }: any) { - const formData = new FormData(); + console.log(body); + const formData = new FormData(); - const fd: any = { - question_id: questionId, - content: body.name, - } + const answers: any = [ + { + question_id: questionId, + content: "file:" + body.name, + }, + ]; - fd[body.name] = body.file //target.files[0] + formData.append("answers", JSON.stringify(answers)); + formData.append(body.name, body.file); + formData.append("qid", qid); - const answers = [fd] - formData.append("answers", JSON.stringify(answers)); - formData.append("qid", qid); - - return makeRequest({ - url: `https://s.hbpn.link/answer/answer`, - body: formData, - method: "POST", - }); + return publicationMakeRequest({ + url: `https://s.hbpn.link/answer/answer`, + body: formData, + method: "POST", + }); } - const fields = [ - "name", - "email", - "phone", - "adress", - "telegram", - "wechat", - "viber", - "vk", - "skype", - "whatsup", - "messenger", - "text" -] + "name", + "email", + "phone", + "adress", + "telegram", + "wechat", + "viber", + "vk", + "skype", + "whatsup", + "messenger", + "text", +]; //форма контактов export function sendFC({ questionId, body, qid }: any) { - const formData = new FormData(); + const formData = new FormData(); - // const keysBody = Object.keys(body) - // const content:any = {} - // fields.forEach((key) => { - // if (keysBody.includes(key)) content[key] = body.key - // }) + // const keysBody = Object.keys(body) + // const content:any = {} + // fields.forEach((key) => { + // if (keysBody.includes(key)) content[key] = body.key + // }) + const answers = [ + { + question_id: questionId, + content: JSON.stringify(body), + result: true, + qid, + }, + ]; - const answers = [{ - question_id: questionId, - content: JSON.stringify(body), - result: true, - qid - }] + formData.append("answers", JSON.stringify(answers)); + formData.append("qid", qid); - formData.append("answers", JSON.stringify(answers)); - formData.append("qid", qid); - - return makeRequest({ - url: `https://s.hbpn.link/answer/answer`, - body: formData, - method: "POST", - }); -} \ No newline at end of file + return publicationMakeRequest({ + url: `https://s.hbpn.link/answer/answer`, + body: formData, + method: "POST", + }); +}