import { useEffect, useState } from "react"
import { Box, Button, SxProps, Theme, Typography, useMediaQuery, useTheme } from "@mui/material"
import InputTextfield from "@components/InputTextfield"
import PasswordInput from "@components/passwordInput"
import UserFields from "./UserFields"
import SectionWrapper from "@components/SectionWrapper"
import { openDocumentsDialog, sendUserData, setSettingsField, useUserStore } from "@root/stores/user"
import UnderlinedButtonWithIcon from "@root/components/UnderlinedButtonWithIcon"
import UploadIcon from "@root/components/icons/UploadIcon"
import DocumentsDialog from "./DocumentsDialog/DocumentsDialog"
import EyeIcon from "@root/components/icons/EyeIcon"
import { cardShadow } from "@root/utils/theme"
import { getMessageFromFetchError } from "@frontend/kitui"
import { enqueueSnackbar } from "notistack"
import { VerificationStatus } from "@root/model/account"
import { verify } from "./helper"
import { withErrorBoundary } from "react-error-boundary"
import { handleComponentError } from "@root/utils/handleComponentError"
import { OnChangeLoginPassword } from "./onChangeLoginPassword"
function AccountSettings() {
const theme = useTheme()
const upMd = useMediaQuery(theme.breakpoints.up("md"))
const upSm = useMediaQuery(theme.breakpoints.up("sm"))
const isTablet = useMediaQuery(theme.breakpoints.down(1000))
const isMobile = useMediaQuery(theme.breakpoints.down(600))
const { settingsFields, user } = useUserStore((state) => state)
const verificationStatus = useUserStore((state) => state.verificationStatus)
const verificationType = useUserStore((state) => state.verificationType)
const comment = useUserStore((state) => state.comment)
const userId = useUserStore((state) => state.userId) ?? ""
const [onChangeTypeLP, setOnChangeTypeLP] = useState<"email" | "password" | "all" | "">("")
const [readySend, setReadySend] = useState(false)
const [loginPasswordFocus, setLoginPasswordFocus] = useState(false)
const okLP = () => {
const ready = readySend
if (ready) {
handleSendDataClick()
}
setReadySend(false)
setOnChangeTypeLP("")
}
const cancelLP = () => {
const type = onChangeTypeLP
setOnChangeTypeLP("")
setReadySend(false)
console.log(type)
if (type === "email" && user?.email !== settingsFields.email.value) setSettingsField("email", user?.email || "")
if (type === "password") setSettingsField("password", "")
if (type === "all") {
setSettingsField("email", user?.email || "")
setSettingsField("password", "")
}
}
// useEffect(() => {
// verify(userId)
// }, [])
const textFieldProps = {
gap: upMd ? "16px" : "10px",
color: "#F2F3F7",
bold: true,
}
const trySendData = () => {
console.log("клик по сохранить")
if (user?.email !== settingsFields.email.value && settingsFields.password.value.length > 0) {
setReadySend(true)
setOnChangeTypeLP("all")
return
}
if (user?.email !== settingsFields.email.value) {
setReadySend(true)
setOnChangeTypeLP("email")
return
}
if (settingsFields.password.value.length > 0) {
setReadySend(true)
setOnChangeTypeLP("password")
return
}
handleSendDataClick()
}
function handleSendDataClick() {
sendUserData()
.then(() => {
enqueueSnackbar("Информация обновлена")
})
.catch((error) => {
const message = getMessageFromFetchError(error)
if (message) enqueueSnackbar(message)
})
}
return (
Настройки аккаунта
Статус
{verificationStatus === VerificationStatus.NOT_VERIFICATED && (
<>
}
sx={{ mt: "55px" }}
ButtonProps={{
onClick: () => openDocumentsDialog("juridical"),
}}
>
Загрузить документы для юр лиц
}
sx={{ mt: "15px" }}
ButtonProps={{
onClick: () => openDocumentsDialog("nko"),
}}
>
Загрузить документы для НКО
>
)}
{verificationStatus === VerificationStatus.VERIFICATED && (
}
sx={{ mt: "55px" }}
ButtonProps={{
onClick: () => openDocumentsDialog(verificationType),
}}
>
Посмотреть свою верификацию
)}
{comment && {comment}
}
)
}
export default withErrorBoundary(AccountSettings, {
fallback: Ошибка при отображении настроек аккаунта,
onError: handleComponentError,
})
const verificationStatusData: Record = {
verificated: { text: "Верификация пройдена", color: "#0D9F00" },
waiting: { text: "В ожидании верификации", color: "#F18956" },
notVerificated: { text: "Не верифицирован", color: "#E02C2C" },
}
function VerificationIndicator({
verificationStatus,
sx,
}: {
verificationStatus: VerificationStatus;
sx?: SxProps;
}) {
return (
{verificationStatusData[verificationStatus].text}
)
}