mirror of
https://github.com/Casvt/MIND.git
synced 2026-02-19 11:54:46 -05:00
141 lines
4.5 KiB
JavaScript
141 lines
4.5 KiB
JavaScript
const settingsEls = {
|
|
settings: {
|
|
showClock: document.querySelector('#clock-input'),
|
|
locale: document.querySelector('#locale-input'),
|
|
defaultService: document.querySelector('#default-service-input'),
|
|
},
|
|
editAccount: {
|
|
start: document.querySelector("#start-edit-account"),
|
|
dialog: document.querySelector("#edit-account-dialog"),
|
|
form: document.querySelector("#edit-account-form"),
|
|
close: document.querySelector("#close-edit-account"),
|
|
inputContainers: {
|
|
username: document.querySelector("#edit-account-form .checked-input-container:has(input[type='text'])")
|
|
},
|
|
inputs: {
|
|
username: document.querySelector("#edit-account-username-input"),
|
|
password: document.querySelector("#edit-account-password-input")
|
|
},
|
|
errors: {
|
|
usernameInvalid: document.querySelector('#edit-invalid-username-error'),
|
|
usernameTaken: document.querySelector('#edit-taken-username-error')
|
|
}
|
|
},
|
|
deleteAccount: {
|
|
dialog: document.querySelector('#delete-user-dialog'),
|
|
close: document.querySelector('#close-delete-user'),
|
|
confirm: document.querySelector('#confirm-delete-user'),
|
|
button: document.querySelector('#delete-account-button')
|
|
}
|
|
}
|
|
|
|
function loadSettings() {
|
|
const values = getLocalStorage()
|
|
settingsEls.settings.locale.value = values['locale']
|
|
settingsEls.settings.showClock.value = values['show_clock']
|
|
// Default Service is handled by notification.fillNotificationSelection()
|
|
}
|
|
|
|
function updateLocale() {
|
|
setLocalStorage({'locale': settingsEls.settings.locale.value})
|
|
fillLibrary(reminderTypes.reminder)
|
|
setupClock()
|
|
}
|
|
|
|
function updateDefaultService() {
|
|
setLocalStorage({'default_service': parseInt(settingsEls.settings.defaultService.value)})
|
|
// Add window is handled by show.showAdd()
|
|
}
|
|
|
|
function updateClockSetting() {
|
|
setLocalStorage({'show_clock': settingsEls.settings.showClock.value})
|
|
setupClock()
|
|
}
|
|
|
|
function openEditAccount() {
|
|
settingsEls.editAccount.inputContainers.username.classList.remove('error-input-container')
|
|
hide([settingsEls.editAccount.errors.usernameInvalid, settingsEls.editAccount.errors.usernameTaken])
|
|
settingsEls.editAccount.inputs.username.value = ''
|
|
settingsEls.editAccount.inputs.password.value = ''
|
|
|
|
settingsEls.editAccount.dialog.showModal()
|
|
}
|
|
|
|
function closeEditAccount() {
|
|
settingsEls.editAccount.dialog.close()
|
|
}
|
|
|
|
function editAccount() {
|
|
settingsEls.editAccount.inputContainers.username.classList.remove('error-input-container')
|
|
hide([settingsEls.editAccount.errors.usernameInvalid, settingsEls.editAccount.errors.usernameTaken])
|
|
|
|
const data = {}
|
|
|
|
if (settingsEls.editAccount.inputs.username.value !== '')
|
|
data.new_username = settingsEls.editAccount.inputs.username.value
|
|
|
|
if (settingsEls.editAccount.inputs.password.value !== '')
|
|
data.new_password = settingsEls.editAccount.inputs.password.value
|
|
|
|
if (Object.keys(data).length === 0) {
|
|
// Nothing changed
|
|
closeEditAccount()
|
|
return
|
|
}
|
|
|
|
sendAPI("PUT", "/user", {}, data)
|
|
.then(json => {
|
|
closeEditAccount()
|
|
})
|
|
.catch(e => {
|
|
e.json().then(e => {
|
|
if (e.error === 'UsernameInvalid') {
|
|
settingsEls.editAccount.errors.usernameInvalid.innerText = e.result.reason
|
|
hide([], [settingsEls.editAccount.errors.usernameInvalid])
|
|
settingsEls.editAccount.inputContainers.username.classList.add('error-input-container')
|
|
|
|
} else if (e.error === 'UsernameTaken') {
|
|
hide([], [settingsEls.editAccount.errors.usernameTaken])
|
|
settingsEls.editAccount.inputContainers.username.classList.add('error-input-container')
|
|
|
|
} else {
|
|
console.log(e)
|
|
}
|
|
})
|
|
})
|
|
}
|
|
|
|
function deleteAccount() {
|
|
sendAPI("DELETE", "/user")
|
|
.then(response => {
|
|
window.location.href = `${urlPrefix}/`
|
|
})
|
|
}
|
|
|
|
loadSettings()
|
|
|
|
settingsEls.settings.showClock.onchange = e => updateClockSetting()
|
|
settingsEls.settings.locale.onchange = e => updateLocale()
|
|
settingsEls.settings.defaultService.onchange = e => updateDefaultService()
|
|
settingsEls.deleteAccount.button.onclick = e =>
|
|
settingsEls.deleteAccount.dialog.showModal()
|
|
|
|
settingsEls.editAccount.start.onclick = e => openEditAccount()
|
|
settingsEls.editAccount.dialog.onclick = e => {
|
|
if (e.target === e.currentTarget) {
|
|
e.stopPropagation()
|
|
closeEditAccount()
|
|
}
|
|
}
|
|
settingsEls.editAccount.form.action = 'javascript:editAccount()'
|
|
settingsEls.editAccount.close.onclick = e => closeEditAccount()
|
|
|
|
settingsEls.deleteAccount.dialog.onclick = e => {
|
|
if (e.target === e.currentTarget) {
|
|
e.stopPropagation()
|
|
settingsEls.deleteAccount.dialog.close()
|
|
}
|
|
}
|
|
settingsEls.deleteAccount.close.onclick = e => settingsEls.deleteAccount.dialog.close()
|
|
settingsEls.deleteAccount.confirm.onclick = e => deleteAccount()
|