import axios from 'axios'; import reduce from 'image-blob-reduce'; import { useContext } from 'react'; import { AccountAvatar } from '../components/account'; 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 { CheckBox, ColorPicker, IconLabelButton, Vierkant } from '../components/ui'; import EditOutlinedIcon from '@material-ui/icons/EditOutlined'; import ExitToAppOutlinedIcon from '@material-ui/icons/ExitToAppOutlined'; 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 }; } export default function SettingsPage() { var { preferences, updatePreference } = useContext(PreferencesContext); return (
Instellingen

Account

{ var file = event.target.files[0]; if (!file) return; var reader = new FileReader(); reader.onload = uploadNewProfileImage; reader.readAsDataURL(file); }} />
} />

Gebruikersnaam

Hier staat hij dan

} /> } />

Email

******@example.com

} />

Wachtwoord

Kleuren

Schijfjes

Achtergrond

updatePreference({ 'darkMode': state })} />

Donkere modus

Standaard spelregels

Uitloggen

} text='Uitloggen' href='/logout' />
); }