import React, { useEffect, useState } from 'react' import { useCookies } from 'react-cookie' import { useSnapshot } from 'valtio' 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) // Cookies const [accountCookies] = useCookies(['account']) const [userCookies, setUserCookies] = useCookies(['user']) const headers = (accountCookies.account != null) ? { headers: { 'Authorization': `Bearer ${accountCookies.account.access_token}` } } : {} // State const [open, setOpen] = useState(false) const [picture, setPicture] = useState('') const [language, setLanguage] = useState('') const [privateProfile, setPrivateProfile] = useState(false) // Refs const pictureSelect = React.createRef() const languageSelect = React.createRef() const privateSelect = React.createRef() useEffect(() => { if (userCookies.user) setPicture(userCookies.user.picture) if (userCookies.user) setLanguage(userCookies.user.language) }, [userCookies]) 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 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, private: privateProfile } } api.endpoints.users.update(accountCookies.account.user_id, object, headers) .then(response => { const user = response.data.user const cookieObj = { picture: user.picture.picture, element: user.picture.element, language: user.language, } setUserCookies('user', cookieObj, { path: '/'}) accountState.account.language = user.language accountState.account.user = { id: user.id, username: user.username, picture: user.picture.picture, element: user.picture.element } setOpen(false) }) } function openChange(open: boolean) { setOpen(open) } return (
  • Settings
  • event.preventDefault() }>
    Account Settings @{account.user?.username}
    i.filename === picture)?.element}`}> Profile preview

    Hide your profile and prevent your grids from showing up in collections

    ) } export default AccountModal