import React, { useState } from "react"; import InputCom from "../../components/Helpers/Inputs/InputCom/index"; import LoadingSpinner from "../Spinners/LoadingSpinner"; import GroupMemberTable from "./GroupMemberTable"; import EmailValidator from "../../lib/EmailValidator"; import { apiConst } from "../../lib/apiConst"; import usersService from "../../services/UsersService"; export default function MemberList({ groupList, selectedGroup, setUpdateList, }) { const api = new usersService(); const [fields, setFields] = useState({ firstname: "", lastname: "", email: "", }); const handleFieldsChange = ({ target: { name, value } }) => { setFields((prev) => ({ ...prev, [name]: value })); // let error = requestState?.errors?.indexOf(name) //// checks if the input field was in error array and removes it when the input changes // if(error >= 0){ // let oldErrorArr = requestState.errors // let newErrorArr = oldErrorArr.splice(error, 1) // setRequestState(prev => ({...prev, errors:oldErrorArr})) // } if (value == "") { setRequestState({ loading: false, status: false, message: "", data: [], errors: [name], }); } else { let error = requestState?.errors?.indexOf(name); //// checks if the input field was in error array and removes it when the input changes if (error >= 0) { let oldErrorArr = requestState.errors; let newErrorArr = oldErrorArr.splice(error, 1); setRequestState((prev) => ({ ...prev, errors: oldErrorArr })); } } if (name == "email") { //checks if email is a valid email address let regEx = /^[^0-9][a-zA-Z0-9._%+-]+@[a-zA-Z]+(\.[a-zA-Z]+)+$/; if (!EmailValidator(value)) { setRequestState({ loading: false, status: false, message: "", data: [], errors: ["email"], }); } } }; const [requestState, setRequestState] = useState({ loading: false, status: false, message: "", data: [], errors: ["email", "firstname", "lastname"], }); const addMember = () => { // let errors = Object.keys(fields).filter((item) => { // CHECKS FOR EMPTY STRINGS // if(typeof item == 'string' && fields[item] === ''){ // return item // } // }) // if(errors.length){ // setRequestState({ // loading: false, // status: false, // message: '', // data: [], // errors: [...errors] // }) // return // } //checks if email is a valid email address let regEx = /^[^0-9][a-zA-Z0-9._%+-]+@[a-zA-Z]+(\.[a-zA-Z]+)+$/; if (!EmailValidator(fields.email)) { setRequestState({ loading: false, status: false, message: "Email is invalid", data: [], errors: [], }); return setTimeout(() => { setRequestState({ loading: false, status: false, message: "", data: [], errors: [], }); }, 3000); } setRequestState({ loading: true, status: false, message: "", data: [], errors: [], }); const requestData = { firstname: fields.firstname, lastname: fields.lastname, email: fields.email, group_id: selectedGroup?.id, action: apiConst.WRENCHBOARD_JOB_GROUP_MEMBER, }; api .groupMemberAdd(requestData) .then((response) => { let { status, data } = response; if (status != 200 || data?.internal_return < 0) { setRequestState({ loading: false, status: false, message: "Unable to add member", data: [], errors: [], }); return; } setRequestState({ loading: false, status: true, message: "Member added", data: [], errors: [], }); setTimeout(() => { // trigger group page reload setUpdateList((prev) => !prev); setRequestState({ loading: false, status: false, message: "", data: [], errors: [], }); }, 3000); }) .catch((error) => { setRequestState({ loading: false, status: false, message: "Something went wrong, try again", data: [], errors: [], }); }) .finally(() => { setTimeout(() => { setRequestState({ loading: false, status: false, message: "", data: [], errors: [], }); setFields({ firstname: "", lastname: "", email: "", }); }, 3000); }); }; return ( <>
{groupList && groupList.length < 1 ? ( <>

You Currently Do not have any Group, Please Add Group

) : ( <>

{selectedGroup?.name}

{requestState.loading ? ( ) : ( )}
{!requestState.loading && requestState.message && (

{requestState.message}

)}
{selectedGroup?.data?.length < 1 ? (

No Member Found, Please Add

) : ( )}
)}
); }