diff --git a/AquaNet/src/pages/User/Settings.svelte b/AquaNet/src/pages/User/Settings.svelte index 0f6c6854..04b14dab 100644 --- a/AquaNet/src/pages/User/Settings.svelte +++ b/AquaNet/src/pages/User/Settings.svelte @@ -6,6 +6,7 @@ import { USER } from "../../libs/sdk"; import StatusOverlays from "../../components/StatusOverlays.svelte"; import Icon from "@iconify/svelte"; + import { IMG_HOST } from "../../libs/config.js"; USER.ensureLoggedIn() @@ -22,13 +23,15 @@ ] // Fetch user data - USER.me().then(m => { + const getMe = () => USER.me().then(m => { me = m values = fields.map(([field]) => me[field as keyof UserMe]) }).catch(e => error = e.message) + getMe() let values = Array(fields.length).fill('') let changed: string[] = [] + let pfpField: HTMLInputElement function submit(field: string, value: string) { if (submitting) return @@ -39,6 +42,17 @@ }).catch(e => error = e.message).finally(() => submitting = "") } + function uploadPfp(file: File) { + if (submitting) return + submitting = 'profilePicture' + + USER.uploadPfp(file).then(() => { + me.profilePicture = file.name + // reload + getMe() + }).catch(e => error = e.message).finally(() => submitting = "") + } + const passwordAction = (node: HTMLInputElement, whether: boolean) => { if (whether) node.type = 'password' } @@ -47,6 +61,21 @@

Profile Settings

+
+ +
+ {#if me && me.profilePicture} + Profile + {:else} + + {/if} +
+ pfpField.files && uploadPfp(pfpField.files[0])} /> +
+ {#each fields as [field, name], i (field)}