From 08e4b0c39e75e06be3a0dfe9f8fd7376343919a0 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Mon, 9 Feb 2026 19:15:22 +0000 Subject: [PATCH] remove unused --- .../components/AddMemberMenu/index.jsx | 74 --- .../AddTeamMember/hooks/useAddTeamMember.jsx | 48 -- .../components/AddTeamMember/index.jsx | 213 --------- .../Account/components/PasswordPanel.jsx | 302 ------------ .../Pages/Account/components/ProfilePanel.jsx | 437 ------------------ .../Pages/Account/components/TeamPanel.jsx | 353 -------------- client/src/Pages/Account/old.jsx | 99 ---- 7 files changed, 1526 deletions(-) delete mode 100644 client/src/Pages/Account/components/AddMemberMenu/index.jsx delete mode 100644 client/src/Pages/Account/components/AddTeamMember/hooks/useAddTeamMember.jsx delete mode 100644 client/src/Pages/Account/components/AddTeamMember/index.jsx delete mode 100644 client/src/Pages/Account/components/PasswordPanel.jsx delete mode 100644 client/src/Pages/Account/components/ProfilePanel.jsx delete mode 100644 client/src/Pages/Account/components/TeamPanel.jsx delete mode 100644 client/src/Pages/Account/old.jsx diff --git a/client/src/Pages/Account/components/AddMemberMenu/index.jsx b/client/src/Pages/Account/components/AddMemberMenu/index.jsx deleted file mode 100644 index 96bea3522..000000000 --- a/client/src/Pages/Account/components/AddMemberMenu/index.jsx +++ /dev/null @@ -1,74 +0,0 @@ -import { useState } from "react"; -import Button from "@mui/material/Button"; -import Menu from "@mui/material/Menu"; -import MenuItem from "@mui/material/MenuItem"; -import { useTheme } from "@emotion/react"; -import Icon from "@/Components/v1/Icon"; -import { useTranslation } from "react-i18next"; -import Proptypes from "prop-types"; - -const AddMemberMenu = ({ handleInviteOpen, handleIsRegisterOpen }) => { - const [anchorEl, setAnchorEl] = useState(null); - const open = Boolean(anchorEl); - const { t } = useTranslation(); - const theme = useTheme(); - const handleClick = (event) => { - setAnchorEl(event.currentTarget); - }; - const handleClose = () => { - setAnchorEl(null); - }; - - return ( - <> - - - { - handleClose(); - handleInviteOpen(); - }} - > - {t("teamPanel.inviteTeamMember")} - - { - handleClose(); - handleIsRegisterOpen(true); - }} - > - {t("teamPanel.register")} - - - - ); -}; - -AddMemberMenu.propTypes = { - handleInviteOpen: Proptypes.func.isRequired, - handleIsRegisterOpen: Proptypes.func.isRequired, -}; - -export default AddMemberMenu; diff --git a/client/src/Pages/Account/components/AddTeamMember/hooks/useAddTeamMember.jsx b/client/src/Pages/Account/components/AddTeamMember/hooks/useAddTeamMember.jsx deleted file mode 100644 index 1237777ff..000000000 --- a/client/src/Pages/Account/components/AddTeamMember/hooks/useAddTeamMember.jsx +++ /dev/null @@ -1,48 +0,0 @@ -import { useState } from "react"; -import { newOrChangedCredentials } from "../../../../../Validation/validation.js"; -import { useTranslation } from "react-i18next"; -const useAddTeamMember = () => { - const { t } = useTranslation(); - const [errors, setErrors] = useState({}); - - const clearErrors = () => setErrors({}); - - const validateFields = (name, value, formData) => { - const { error } = newOrChangedCredentials.validate( - { [name]: value }, - { abortEarly: false, context: { password: formData.password } } - ); - - setErrors((prev) => ({ - ...prev, - [name]: error?.details?.[0]?.message || "", - })); - }; - - const validateForm = (formData, role) => { - const { error } = newOrChangedCredentials.validate(formData, { - abortEarly: false, - context: { password: formData.password }, - }); - const formErrors = {}; - if (error) { - for (const err of error.details) { - formErrors[err.path[0]] = err.message; - } - } - if (!role[0] || role.length === 0) { - formErrors.role = t( - "teamPanel.registerTeamMember.auth.common.inputs.role.errors.empty" - ); - } - if (Object.keys(formErrors).length > 0) { - setErrors(formErrors); - return false; - } - setErrors({}); - return true; - }; - - return { errors, setErrors, clearErrors, validateFields, validateForm }; -}; -export default useAddTeamMember; diff --git a/client/src/Pages/Account/components/AddTeamMember/index.jsx b/client/src/Pages/Account/components/AddTeamMember/index.jsx deleted file mode 100644 index e5280af16..000000000 --- a/client/src/Pages/Account/components/AddTeamMember/index.jsx +++ /dev/null @@ -1,213 +0,0 @@ -import { Button, Stack } from "@mui/material"; -import { GenericDialog } from "@/Components/v1/Dialog/genericDialog.jsx"; -import TextInput from "@/Components/v1/Inputs/TextInput/index.jsx"; -import Select from "@/Components/v1/Inputs/Select/index.jsx"; -import { useGetInviteToken } from "../../../../Hooks/inviteHooks.js"; -import { useTheme } from "@emotion/react"; -import { useTranslation } from "react-i18next"; -import { createToast } from "../../../../Utils/toastUtils.jsx"; -import { useState } from "react"; -import PasswordTooltip from "../../../Auth/components/PasswordTooltip.jsx"; -import useAddTeamMember from "./hooks/useAddTeamMember.jsx"; -import usePasswordFeedback from "../../../Auth/hooks/usePasswordFeedback.jsx"; -import { PasswordEndAdornment } from "@/Components/v1/Inputs/TextInput/Adornments/index.jsx"; -import PropTypes from "prop-types"; - -const INITIAL_FORM_STATE = { - firstName: "", - lastName: "", - email: "", - password: "", - confirm: "", - teamId: "", -}; - -const INITIAL_ROLE_STATE = ["user"]; -const AddTeamMember = ({ handleIsRegisterOpen, isRegisterOpen, onMemberAdded }) => { - const theme = useTheme(); - const { t } = useTranslation(); - const { errors, setErrors, clearErrors, validateFields, validateForm } = - useAddTeamMember(); - const { feedback, handlePasswordFeedback } = usePasswordFeedback(); - const [getInviteToken, clearToken, isLoading, error, token, addTeamMember] = - useGetInviteToken(); - const [form, setForm] = useState(INITIAL_FORM_STATE); - const [role, setRole] = useState(INITIAL_ROLE_STATE); - const [isLoadingSubmit, setIsLoadingSubmit] = useState(false); - const closeAddMemberModal = () => { - handleIsRegisterOpen(false); - setForm(INITIAL_FORM_STATE); - setRole(INITIAL_ROLE_STATE); - clearErrors(); - clearToken(); - }; - - const onChange = (e) => { - let { name, value } = e.target; - if (name === "email") value = value.toLowerCase(); - const updatedForm = { ...form, [name]: value }; - validateFields(name, value, updatedForm); - setForm(updatedForm); - - if (name === "password" || name === "confirm") { - handlePasswordFeedback(updatedForm, name, value, form, errors, setErrors); - } - }; - - const onsubmitAddMember = async (event) => { - event.preventDefault(); - if (!validateForm(form, role)) return; - try { - setIsLoadingSubmit(true); - await addTeamMember(form, role); - createToast({ - body: t("teamPanel.registerToast.success"), - }); - onMemberAdded(); - closeAddMemberModal(); - } catch (error) { - const errorMsg = error.response?.data?.msg || error.message || "unknownError"; - createToast({ - type: "error", - body: t(errorMsg), - }); - } finally { - setIsLoadingSubmit(false); - } - }; - const tErr = (key) => (key ? t([`teamPanel.registerTeamMember.${key}`, key]) : ""); - return ( - <> - - - - - - - - - setToInvite((prev) => ({ - ...prev, - role: [event.target.value], - })) - } - items={[ - { _id: "admin", name: t("roles.admin") }, - { _id: "user", name: t("roles.teamMember") }, - ]} - /> - {token && {t("teamPanel.inviteLink")}} - {token && ( - - )} - - - - - - - - ); -}; - -TeamPanel.propTypes = { - // No props are being passed to this component, hence no specific PropTypes are defined. -}; - -export default TeamPanel; diff --git a/client/src/Pages/Account/old.jsx b/client/src/Pages/Account/old.jsx deleted file mode 100644 index 3bf480336..000000000 --- a/client/src/Pages/Account/old.jsx +++ /dev/null @@ -1,99 +0,0 @@ -import { useState } from "react"; -import PropTypes from "prop-types"; -import { useNavigate } from "react-router-dom"; -import { useSelector } from "react-redux"; -import { Box, Tab, useTheme } from "@mui/material"; -import CustomTabList from "@/Components/v1/Tab/index.jsx"; -import TabContext from "@mui/lab/TabContext"; -import ProfilePanel from "./components/ProfilePanel.jsx"; -import PasswordPanel from "./components/PasswordPanel.jsx"; -import TeamPanel from "./components/TeamPanel.jsx"; -import { useTranslation } from "react-i18next"; - -/** - * Account component renders a settings page with tabs for Profile, Password, and Team settings. - * @param {string} [props.open] - Specifies the initially open tab: 'profile', 'password', or 'team'. - * @returns {JSX.Element} - */ -const Account = ({ open = "profile" }) => { - const theme = useTheme(); - const navigate = useNavigate(); - const [focusedTab, setFocusedTab] = useState(null); // Track focused tab - const tab = open; - const handleTabChange = (event, newTab) => { - navigate(`/account/${newTab}`); - }; - const { user } = useSelector((state) => state.auth); - const { t } = useTranslation(); - - const requiredRoles = ["superadmin", "admin"]; - let tabList = [ - { name: t("menu.profile"), value: "profile" }, - { name: t("menu.password"), value: "password" }, - { name: t("menu.team"), value: "team" }, - ]; - - const hideTeams = !requiredRoles.some((role) => user.role.includes(role)); - - if (hideTeams) { - tabList = [ - { name: t("menu.profile"), value: "profile" }, - { name: t("menu.password"), value: "password" }, - ]; - } - - // Remove password for demo - if (user.role.includes("demo")) { - tabList = [{ name: t("menu.profile"), value: "profile" }]; - } - - const handleKeyDown = (event) => { - const currentIndex = tabList.findIndex((item) => item.value === tab); - if (event.key === "Tab") { - const nextIndex = (currentIndex + 1) % tabList.length; - setFocusedTab(tabList[nextIndex].value); - } else if (event.key === "Enter") { - event.preventDefault(); - navigate(`/account/${focusedTab}`); - } - }; - - const handleFocus = (tabName) => { - setFocusedTab(tabName); - }; - - return ( - - - - {tabList.map((item, index) => ( - handleFocus(item.value)} - tabIndex={index} - /> - ))} - - - - {!hideTeams && } - - - ); -}; - -Account.propTypes = { - open: PropTypes.oneOf(["profile", "password", "team"]), -}; - -export default Account;