138 lines
4.6 KiB
JavaScript
138 lines
4.6 KiB
JavaScript
function completeHandler(event) {
|
|
console.log("completed upload");
|
|
console.log(event.target.responseText);
|
|
setuser() // skipqc
|
|
}
|
|
|
|
function errorHandler(event) {
|
|
console.log("error during upload");
|
|
console.log(event.target.responseText);
|
|
}
|
|
|
|
function progressHandler(event) {
|
|
console.log("progressing upload");
|
|
console.log("Uploaded " + event.loaded + " bytes of " + event.total);
|
|
console.log(event.target.responseText);
|
|
}
|
|
|
|
/**
|
|
* upload avatar to the server
|
|
* @return {undefined} no return value
|
|
*/
|
|
function uploadFile() {
|
|
const file = document.getElementById("avatarUpl").files[0];
|
|
console.log(file);
|
|
const formdata = new FormData();
|
|
formdata.append("avatar", file);
|
|
const ajax = new XMLHttpRequest();
|
|
ajax.upload.addEventListener("progress", progressHandler, false);
|
|
ajax.addEventListener("load", completeHandler, false);
|
|
ajax.addEventListener("error", errorHandler, false);
|
|
ajax.addEventListener("abort", errorHandler, false);
|
|
ajax.open("POST", "/api/setavatar");
|
|
ajax.send(formdata);
|
|
|
|
document.getElementById("avatarUplButton").style = "display:none;";
|
|
}
|
|
|
|
function logout() {
|
|
location.assign('/logout')
|
|
}
|
|
|
|
async function setuser() {
|
|
let user = await (await fetch("/api/getuser")).json();
|
|
let username
|
|
let bio
|
|
let avatar
|
|
username = user["username"];
|
|
bio = user["bio"]
|
|
avatar = user["avatar"]
|
|
if(user["error"])username=user["error"];
|
|
if(user["error"])bio=user["error"];
|
|
if(!bio)bio="wow such empty"
|
|
if(avatar) {
|
|
avatar = "/avatars/"+avatar
|
|
} else {
|
|
avatar = "/images/default_avatar.png"
|
|
}
|
|
document.getElementById("user").innerText = `User: ${username}`;
|
|
document.getElementById("bio").placeholder = decodeURIComponent(bio);
|
|
document.getElementById("avatarimg").src = avatar;
|
|
document.getElementById("avatarUpl").addEventListener("change", function(){
|
|
document.getElementById("avatarUplButton").style = "";
|
|
})
|
|
document.getElementById("avatarUplButton").addEventListener("click",uploadFile);
|
|
}
|
|
|
|
/**
|
|
* sets user bio
|
|
* @param {string} str - bio to set
|
|
* @return {promise} api response
|
|
*/
|
|
function sendBio(str) {
|
|
if(document.getElementById("bio").placeholder !== str && str !== "") {
|
|
document.getElementById("bio").placeholder = str
|
|
return post("/api/setBio",{"Bio":str}) // skipqc
|
|
}
|
|
return ""
|
|
}
|
|
|
|
async function bioChanger() {
|
|
document.getElementById("bio").disabled = !document.getElementById("bio").disabled
|
|
document.getElementById("changeBio").innerText = (document.getElementById("bio").disabled && "Change Bio") || "Submit"
|
|
if(document.getElementById("bio").disabled) {
|
|
let response = await sendBio(document.getElementById("bio").value)
|
|
console.log(response);
|
|
document.getElementById("userstyle").innerHTML = '::placeholder {color: white;} #bio {border: 0px solid black; color:white;}'
|
|
}
|
|
else
|
|
{
|
|
document.getElementById("userstyle").innerHTML = '::placeholder {color: white;} #bio {border: 2px solid gray; color:white;}'
|
|
}
|
|
}
|
|
|
|
|
|
async function changePW() {
|
|
if(window.confirm("Are you sure that you want to change your Password?")){
|
|
let re = await (await post("/api/changePW",{"currentPW":document.getElementById("currentPW_pw").value,"newPW":document.getElementById("newPW").value})).json() // skipqc
|
|
document.getElementById("response_pw").innerText = re["error"] || re["success"]
|
|
document.getElementById("response_pw").style="color:green"
|
|
if(re["error"]) {
|
|
document.getElementById("response_pw").style="color:red"
|
|
}
|
|
document.getElementById("currentPW").value = ""
|
|
document.getElementById("newPW").value = ""
|
|
|
|
setuser()
|
|
}
|
|
}
|
|
|
|
async function changeUsername() {
|
|
if(window.confirm("Are you sure that you want to change your Username?")){
|
|
// skipqc
|
|
let re = await (await post("/api/changeUsername",{"currentPW":document.getElementById("currentPW_us").value.toString(),"newUsername":document.getElementById("newUsername").value})).json()
|
|
document.getElementById("response_us").innerText = re["error"] || re["success"]
|
|
document.getElementById("response_us").style="color:green"
|
|
if(re["error"]) {
|
|
document.getElementById("response_us").style="color:red"
|
|
}
|
|
document.getElementById("currentPW").value = ""
|
|
document.getElementById("newUsername").value = ""
|
|
setuser()
|
|
}
|
|
}
|
|
|
|
|
|
async function setAllowCCR() {
|
|
const ACCR = document.getElementById("ACCR_checkbox").checked
|
|
const settingname = "ACCR" //Allow Cross-Channel reply (see #22 )
|
|
|
|
let r = await(await post("/api/settings",{setting: settingname, value: ACCR})).json() // skipqc
|
|
|
|
if(r.status == "error") {
|
|
alert("Couldn't change setting")
|
|
console.log(r.code)
|
|
} else if(r.status == "success") {
|
|
//changed setting
|
|
}
|
|
} |