"use client"; import { useRouter, useSearchParams } from "next/navigation"; import { useCallback, useEffect, useMemo, useState } from "react"; import SearchResults, { Column } from "../SearchResults"; // import { TeamResult } from "@/app/api/team"; import { useTranslation } from "react-i18next"; import { Button, Stack, Tab, Tabs, TabsProps, Typography } from "@mui/material"; import { CreateTeamInputs, saveTeam } from "@/app/api/team/actions"; import { FieldErrors, FormProvider, SubmitHandler, useForm, useFormContext, } from "react-hook-form"; import { Check, Close, Error } from "@mui/icons-material"; import { StaffResult } from "@/app/api/staff"; import { CreateGroupInputs, auth, fetchAuth, saveGroup } from "@/app/api/group/actions"; import { UserGroupResult } from "@/app/api/group"; import { UserResult } from "@/app/api/user"; import GroupInfo from "./GroupInfo"; import AuthorityAllocation from "./AuthorityAllocation"; import UserAllocation from "./UserAllocation"; interface Props { groups: UserGroupResult[]; // auths: auth[]; users: UserResult[]; } const EditUserGroup: React.FC = ({ groups, users }) => { // console.log(users) const { t } = useTranslation(); const [serverError, setServerError] = useState(""); const formProps = useForm(); const searchParams = useSearchParams(); const id = parseInt(searchParams.get("id") || "0"); const router = useRouter(); const [tabIndex, setTabIndex] = useState(0); const [auths, setAuths] = useState(); const errors = formProps.formState.errors; const handleTabChange = useCallback>( (_e, newValue) => { setTabIndex(newValue); }, [] ); const hasErrorsInTab = ( tabIndex: number, errors: FieldErrors ) => { switch (tabIndex) { case 0: return Object.keys(errors).length > 0; default: false; } }; const onSubmit = useCallback>( async (data) => { try { console.log(data); const tempData = { ...data, removeUserIds: data.removeUserIds ?? [], removeAuthIds: data.removeAuthIds ?? [], id: id } console.log(tempData) await saveGroup(tempData); router.replace("/settings/group"); } catch (e) { console.log(e); setServerError(t("An error has occurred. Please try again later.")); } }, [router] ); useEffect(() => { const thisGroup = groups.filter((item) => item.id === id)[0]; const addUserIds = users.filter((item) => item.groupId === id).map((data) => data.id) let addAuthIds: number[] = [] fetchAuth("group", id).then((data) => { setAuths(data.records) addAuthIds = data.records.filter((data) => data.v === 1).map((data) => data.id).sort((a, b) => a - b); formProps.reset({ name: thisGroup.name, description: thisGroup.description, addAuthIds: addAuthIds, addUserIds: addUserIds, }); }); // console.log(auths) }, [groups, users]); return ( <> {t("Edit User Group")} ) : undefined } iconPosition="end" /> {serverError && ( {serverError} )} {tabIndex === 0 && } {tabIndex === 1 && } {tabIndex === 2 && } ); }; export default EditUserGroup;