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 && ;
}
export default function SettingsPage() {
useEffect(() => {
var loggedIn = !!cookie.load('token');
if (!loggedIn) window.location.href = '/';
}, []);
var { preferences, updatePreference } = useContext(PreferencesContext);
var [userInfo, setUserInfo] = useState();
var [emailVisible, setEmailVisible] = useState(false);
var [editUsernameDiagVisisble, setEditUsernameDiagVisisble] = useState(false);
var [editEmailDiagVisisble, setEditEmailDiagVisisble] = useState(false);
useEffect(() => {
axios.request({
url: `/api/user/info`,
}).then(req => {
setUserInfo(req.data);
}).catch(err => {
console.error(err);
});
}, []);
return (
Instellingen
Account
{
var file = event.target.files[0];
if (!file) return;
var reader = new FileReader();
reader.onload = uploadNewProfileImage;
reader.readAsDataURL(file);
}}
/>