feat: fucking explode i hate this
All checks were successful
ci/woodpecker/push/build-and-publish Pipeline was successful

This commit is contained in:
JustTemmie 2025-06-01 20:19:04 +02:00
parent 622abc9155
commit 0ddddd210e
Signed by: justtemmie
SSH key fingerprint: SHA256:nBO+OwpTkd8LYhe38PIqdxmDvkIg9Vw2EbrRZM97dkU
2 changed files with 25 additions and 33 deletions

View file

@ -1,5 +1,6 @@
<template> <template>
<div> <div>
<input id="hidden-pfp-uploader" type="file" accept="image/*" style="display: none;">
<h1>My Account</h1> <h1>My Account</h1>
<div class="profile-and-user-data-fields"> <div class="profile-and-user-data-fields">
@ -52,21 +53,18 @@ const saveChanges = async () => {
try { try {
const formData = new FormData() const formData = new FormData()
if (new_pfp_file) { const upload_field = document.getElementById("hidden-pfp-uploader")
formData.append('avatar', new_pfp_file, new_pfp_file.name) if (upload_field.files?.length && upload_field.files.length > 0) {
new_pfp_file = null console.log(upload_field.files[0])
formData.append("avatar", upload_field.files[0])
} }
// oh lord praise deep seek v3 const bytes = new TextEncoder().encode(JSON.stringify({
const jsonBlob = new Blob(
[JSON.stringify({
display_name: user.display_name, display_name: user.display_name,
username: user.username, username: user.username,
pronouns: user.pronouns, pronouns: user.pronouns,
})], }));
{ type: 'application/json' } formData.append("json", new Blob([bytes], { type: "application/json" }));
);
formData.append('json', jsonBlob, 'data.json');
await fetchWithApi("/me", { await fetchWithApi("/me", {
method: "PATCH", method: "PATCH",
@ -91,29 +89,23 @@ const removeAvatar = async () => {
} }
const changeAvatar = async () => { const changeAvatar = async () => {
try { const upload_field: HTMLInputElement = document.getElementById("hidden-pfp-uploader")
let input = document.createElement('input');
input.type = 'file';
input.accept = 'image/*';
input.onchange = async(e) => { // upload_field.onchange = async(e) => {
const file = e.target.files?.[0]; // console.log(upload_field.files)
if (!file) return; // if (upload_field.files?.length && upload_field.files.length > 0) {
// const file = upload_field.files[0];
// if (!file) return;
new_pfp_file = file; // const reader = new FileReader();
// reader.onload = (e) => {
// user.avatar = e?.target?.result;
// };
// reader.readAsDataURL(file);
// }
// }
const reader = new FileReader(); upload_field?.click()
reader.onload = (e) => {
user.avatar = e?.target?.result;
};
reader.readAsDataURL(file);
}
input.oncancel = () => alert("cancelled upload!");
input.click();
} catch (err) {
console.error('User canceled or error:', err);
}
} }
const resetPassword = async () => { const resetPassword = async () => {

View file

@ -4,14 +4,14 @@
<div id="sidebar"> <div id="sidebar">
<h4>(Search bar here)</h4> <h4>(Search bar here)</h4>
<ul> <ul>
<template v-for="category in categories" :key="category.display_name"> <div v-for="category in categories" :key="category.display_name">
<h2>{{ category.display_name }}</h2> <h2>{{ category.display_name }}</h2>
<li v-for="page in category.pages" :key="page.display_name" @click="selectCategory(category, page)" <li v-for="page in category.pages" :key="page.display_name" @click="selectCategory(category, page)"
:class="{ 'sidebar-focus': selectedPage === page.display_name }"> :class="{ 'sidebar-focus': selectedPage === page.display_name }">
{{ page.display_name }} {{ page.display_name }}
</li> </li>
<span class="spacer"></span> <span class="spacer"></span>
</template> </div>
<ButtonScary text="Log Out" :callback=logout></ButtonScary> <ButtonScary text="Log Out" :callback=logout></ButtonScary>
</ul> </ul>