import { motion, LayoutGroup } from "motion/react";
import { useAtom } from "jotai";
import { useState, useEffect } from "react";
import Logo from "../assets/logo.svg";
import { AdminUserFRequest, classUserFRequest } from "../trash/req_mgr";
import {
BiCalendar,
BiCalendarEdit,
BiExit,
BiPencil,
BiTime,
BiTrash,
BiX,
} from "react-icons/bi";
import { formatDate, parseApiDate } from "../trash/dengi";
import {
DengiYesOrNoDialog,
TextPreloader,
// CoolMouseBg
} from "../trash/trash-components";
import { TableEditor } from "../trash/editorTable";
import { ifstyle } from "../trash/helpers";
import { API_BASE_URL } from "../App";
import { useWebHaptics } from "web-haptics/react";
export default function EditorPage(props) {
const [classId, _setUserId] = useAtom(props.classIDAtom);
const [adminId, _setAdminId] = useAtom(props.adminAtom);
const [pickmeMode, _setPickmeMode] = useAtom(props.pickmeModeAtom);
const [route, setRoute] = useAtom(props.routeAtom);
const dateRaw = props.secondPathSegment(route);
useEffect(() => {
if (
dateRaw == "" ||
adminId == "" ||
!RegExp(/\d{2}-\d{2}-\d{2}$/gm).test(dateRaw)
) {
props.setsetRoute(setRoute, "/app");
}
}, [dateRaw]);
const date = parseApiDate(dateRaw);
const [userFrNames, setUserFrNames] = useState({
admin: false,
class: false,
});
useEffect(() => {
(async () => {
let cancelled = false;
const promises = [];
if (classId !== "")
// TODO: rewrite this bullshit into one pretty request
promises.push(
props.dengi_cash.withCacheAsync(`userfr-${classId}`, async () =>
classUserFRequest(API_BASE_URL, classId),
),
);
else promises.push(Promise.resolve([0]));
if (adminId !== "")
promises.push(
props.dengi_cash.withCacheAsync(`adminfr-${adminId}`, async () =>
AdminUserFRequest(API_BASE_URL, adminId),
),
);
else promises.push(Promise.resolve([0]));
Promise.all(promises).then(([classRes, adminRes]) => {
if (cancelled) return;
const classF = classRes[0] === 1 ? classRes[1].userclassname : false;
const adminF = adminRes[0] === 1 ? adminRes[1].adminName : false;
setUserFrNames({ admin: adminF, class: classF });
});
return () => {
cancelled = true;
};
})();
}, [classId, adminId]);
// on rerenderr
useEffect(() => {
// console.log("editor cache clean");
props.dengi_cash.delete(
"editor_schedule",
"editor_changes",
"editor_rings",
);
}, []); // clean on full rerender
const { trigger } = useWebHaptics();
// tabs
const tabs = [
[
<>