import React, { useEffect, useState } from "react"; import { getCookie } from "cookies-next"; import { useRouter } from "next/router"; import { useSnapshot } from "valtio"; import { useTranslation } from "next-i18next"; import * as Dialog from "@radix-ui/react-dialog"; import * as Switch from "@radix-ui/react-switch"; import api from "~utils/api"; import { accountState } from "~utils/accountState"; import { pictureData } from "~utils/pictureData"; import Button from "~components/Button"; import CrossIcon from "~public/icons/Cross.svg"; import "./index.scss"; const AccountModal = () => { const { account } = useSnapshot(accountState); const router = useRouter(); const { t } = useTranslation("common"); const locale = router.locale && ["en", "ja"].includes(router.locale) ? router.locale : "en"; // Cookies const cookie = getCookie("account"); const headers = {}; // cookies.account != null // ? { // headers: { // Authorization: `Bearer ${cookies.account.access_token}`, // }, // } // : {} // State const [open, setOpen] = useState(false); const [picture, setPicture] = useState(""); const [language, setLanguage] = useState(""); const [gender, setGender] = useState(0); const [privateProfile, setPrivateProfile] = useState(false); // Refs const pictureSelect = React.createRef(); const languageSelect = React.createRef(); const genderSelect = React.createRef(); const privateSelect = React.createRef(); // useEffect(() => { // if (cookies.user) setPicture(cookies.user.picture) // if (cookies.user) setLanguage(cookies.user.language) // if (cookies.user) setGender(cookies.user.gender) // }, [cookies]) const pictureOptions = pictureData .sort((a, b) => (a.name.en > b.name.en ? 1 : -1)) .map((item, i) => { return ( ); }); function handlePictureChange(event: React.ChangeEvent) { if (pictureSelect.current) setPicture(pictureSelect.current.value); } function handleLanguageChange(event: React.ChangeEvent) { if (languageSelect.current) setLanguage(languageSelect.current.value); } function handleGenderChange(event: React.ChangeEvent) { if (genderSelect.current) setGender(parseInt(genderSelect.current.value)); } function handlePrivateChange(checked: boolean) { setPrivateProfile(checked); } function update(event: React.FormEvent) { event.preventDefault(); const object = { user: { picture: picture, element: pictureData.find((i) => i.filename === picture)?.element, language: language, gender: gender, private: privateProfile, }, }; // api.endpoints.users // .update(cookies.account.user_id, object, headers) // .then((response) => { // const user = response.data.user // const cookieObj = { // picture: user.picture.picture, // element: user.picture.element, // gender: user.gender, // language: user.language, // } // setCookies("user", cookieObj, { path: "/" }) // accountState.account.user = { // id: user.id, // username: user.username, // picture: user.picture.picture, // element: user.picture.element, // gender: user.gender, // } // setOpen(false) // changeLanguage(user.language) // }) } function changeLanguage(newLanguage: string) { // if (newLanguage !== router.locale) { // setCookies("NEXT_LOCALE", newLanguage, { path: "/" }) // router.push(router.asPath, undefined, { locale: newLanguage }) // } } function openChange(open: boolean) { setOpen(open); } return (
  • {t("menu.settings")}
  • event.preventDefault()} >
    {t("modals.settings.title")} @{account.user?.username}
    i.filename === picture)?.element }`} > Profile preview

    {t("modals.settings.descriptions.private")}

    ); }; export default AccountModal;