update user profile stuff

This commit is contained in:
MathMan05 2024-08-08 14:32:19 -05:00
parent 3eaa1c425e
commit ae76f2636e
11 changed files with 544 additions and 182 deletions

View file

@ -1,12 +1,12 @@
import { Guild } from "./guild.js";
import { Direct } from "./direct.js";
import { Voice } from "./audio.js";
import { User } from "./user.js";
import { Fullscreen } from "./fullscreen.js";
import { setTheme } from "./login.js";
import { SnowFlake } from "./snowflake.js";
import { Message } from "./message.js";
import { Member } from "./member.js";
import { Settings } from "./settings.js";
import { MarkDown } from "./markdown.js";
const wsCodesRetry = new Set([4000, 4003, 4005, 4007, 4008, 4009]);
class Localuser {
lastSequence = null;
@ -636,71 +636,67 @@ class Localuser {
typingtext.classList.add("hidden");
}
}
genusersettings() {
const hypotheticalProfile = document.createElement("div");
let file = null;
let newprouns = null;
let newbio = null;
let hypouser = this.user.clone();
function regen() {
hypotheticalProfile.textContent = "";
const hypoprofile = hypouser.buildprofile(-1, -1);
hypotheticalProfile.appendChild(hypoprofile);
}
regen();
this.usersettings = new Fullscreen(["hdiv",
["vdiv",
["fileupload", "upload pfp:", function (e) {
console.log(this.files[0]);
file = this.files[0];
const blob = URL.createObjectURL(this.files[0]);
hypouser.avatar = blob;
hypouser.hypotheticalpfp = true;
regen();
}],
["textbox", "Pronouns:", this.user.pronouns, function (e) {
console.log(this.value);
hypouser.pronouns = this.value;
newprouns = this.value;
regen();
}],
["mdbox", "Bio:", this.user.bio.rawString, function (e) {
console.log(this.value);
hypouser.bio = this.value;
newbio = this.value;
regen();
}],
["button", "update user content:", "submit", () => {
if (file !== null) {
this.updatepfp(file);
}
if (newprouns !== null) {
this.updatepronouns(newprouns);
}
if (newbio !== null) {
this.updatebio(newbio);
}
}],
["select", "Theme:", ["Dark", "Light", "WHITE"], e => {
localStorage.setItem("theme", ["Dark", "Light", "WHITE"][e.target.selectedIndex]);
setTheme();
}, ["Dark", "Light", "WHITE"].indexOf(localStorage.getItem("theme"))],
["select", "Notification sound:", Voice.sounds, e => {
Voice.setNotificationSound(Voice.sounds[e.target.selectedIndex]);
Voice.noises(Voice.sounds[e.target.selectedIndex]);
}, Voice.sounds.indexOf(Voice.getNotificationSound())]
],
["vdiv",
["html", hypotheticalProfile]
]
], _ => { }, function () {
console.log(this);
hypouser = this.user.clone();
showusersettings() {
const settings = new Settings("Settings");
this.usersettings = settings;
{
const userOptions = settings.addButton("User Settings", { ltr: true });
const hypotheticalProfile = document.createElement("div");
let file = null;
let newpronouns = null;
let newbio = null;
let hypouser = this.user.clone();
function regen() {
hypotheticalProfile.textContent = "";
const hypoprofile = hypouser.buildprofile(-1, -1);
hypotheticalProfile.appendChild(hypoprofile);
}
regen();
file = null;
newprouns = null;
newbio = null;
}.bind(this));
const settingsLeft = userOptions.addOptions("");
const settingsRight = userOptions.addOptions("");
settingsRight.addHTMLArea(hypotheticalProfile);
const finput = settingsLeft.addFileInput("Upload pfp:", _ => {
if (file) {
this.updatepfp(file);
}
});
finput.watchForChange(_ => {
if (_.length) {
file = _[0];
const blob = URL.createObjectURL(file);
hypouser.avatar = blob;
hypouser.hypotheticalpfp = true;
regen();
}
});
const pronounbox = settingsLeft.addTextInput("Pronouns", _ => {
if (newpronouns) {
this.updatepronouns(newpronouns);
}
}, { initText: this.user.pronouns });
pronounbox.watchForChange(_ => {
hypouser.pronouns = _;
newpronouns = _;
regen();
});
const bioBox = settingsLeft.addMDInput("Bio:", _ => {
if (newbio) {
this.updatebio(newbio);
}
}, { initText: this.user.bio.rawString });
bioBox.watchForChange(_ => {
newbio = _;
hypouser.bio = new MarkDown(_, this);
regen();
});
}
settings.show();
}
/**
@deprecated
This should be made to not be used anymore
**/
genusersettings() {
const connectionContainer = document.createElement("div");
connectionContainer.id = "connection-container";
this.userConnections = new Fullscreen(["html",
@ -942,7 +938,8 @@ class Localuser {
//---------- resolving members code -----------
waitingmembers = new Map();
async resolvemember(id, guildid) {
console.warn("this function is currently non-functional, either due to a bug in the client or the server, it's currently unclear, use at your own risk");
console.warn("this function is currently non-functional due to it not being implemented in the server");
throw new Error("Not implemented on the server side and not fully implemented, do not use");
if (!this.waitingmembers.has(guildid)) {
this.waitingmembers.set(guildid, new Map());
}