import axios from 'axios'; import reduce from 'image-blob-reduce'; import { useContext, useEffect, useState } from 'react'; import * as cookie from 'react-cookies'; import { userInfo } from '../api/api'; import { AccountAvatar } from '../components/account'; import { DialogBox } from '../components/dialogBox'; import { Footer } from '../components/footer'; import { CurrentGameSettings } from '../components/gameSettings'; import { NavBar } from '../components/navbar'; import { CenteredPage, PageTitle } from '../components/page'; import PreferencesContext from '../components/preferencesContext'; import ThemePicker from '../components/themes'; import { Button, CheckBox, ColorPicker, IconLabelButton, Input, Vierkant } from '../components/ui'; import EditOutlinedIcon from '@material-ui/icons/EditOutlined'; import PublishOutlinedIcon from '@material-ui/icons/PublishOutlined'; import VisibilityOutlinedIcon from '@material-ui/icons/VisibilityOutlined'; async function uploadNewProfileImage() { if (!this.result) return; var result = this.result.split(';'); var mimeType = result[0].substr(5); if (!['image/png', 'image/jpeg'].includes(mimeType)) return; var blob = await (await fetch(this.result)).blob(); var image = await new reduce().toBlob(blob, { max: 256 }); var reader = new FileReader(); reader.readAsBinaryString(image); reader.onload = async () => { await axios.request({ method: 'post', url: `/api/user/avatar`, headers: { 'content-type': 'image/png' }, data: btoa(reader.result as string), }); window.location.reload(); // TODO: this is straight garbage }; } function EditImportantThingDialog(props: { thing: 'username' | 'email'; hidden?: boolean; setHidden?: () => void; }) { var lang = { 'username': { name: 'Gebruikersnaam', new: 'Nieuwe gebruikersnaam', }, 'email': { name: 'Email', new: 'Nieuw email-adres', }, }[props.thing]; var title = lang.name + ' aanpassen'; return !props.hidden &&