159 lines
5.1 KiB
JavaScript
159 lines
5.1 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
|
|
}
|
|
}
|