You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.4 KiB
90 lines
2.4 KiB
4 years ago
|
class Accounts {
|
||
|
constructor() {
|
||
|
this._localStorage = window.localStorage
|
||
|
this._userWrapper = document.querySelector("#user-wrapper")
|
||
|
this._accountsList = document.querySelector("#users-dropdown")
|
||
|
this._accountsButton = document.querySelector("#users-button")
|
||
|
this._defaultUser = null
|
||
|
this._usersObject = null
|
||
|
this._init()
|
||
|
}
|
||
|
|
||
|
getDefaultUserName() {
|
||
|
return this._defaultUser.username
|
||
|
}
|
||
|
|
||
|
_setAccountDefault() {
|
||
|
let input = this._userWrapper.querySelector("input")
|
||
|
if (this._defaultUser.username != "") {
|
||
|
//input.classList.add("hide")
|
||
|
input.value = this._defaultUser.username
|
||
|
} else {
|
||
|
input.value = ""
|
||
|
}
|
||
|
if (this._usersObject.length > 0) {
|
||
|
this._accountsButton.classList.remove("hide")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
_updateOnStartup() {
|
||
|
var username = ""
|
||
|
if (this._usersObject.length > 0) {
|
||
|
username = this._localStorage.getItem("defaultUser") || this._usersObject[0].username
|
||
|
}
|
||
|
var user = this._usersObject.find((val) => {return val.username === username})
|
||
|
if (user === undefined) {
|
||
|
this._defaultUser = {username: "", display_name: ""}
|
||
|
} else {
|
||
|
this._defaultUser = user
|
||
|
}
|
||
|
this._setAccountDefault()
|
||
|
}
|
||
|
|
||
|
_setAccountList() {
|
||
|
var dropdown = this._accountsList.querySelector(".dropdown")
|
||
|
dropdown.innerHTML = ""
|
||
|
|
||
|
for (let i = 0; i < this._usersObject.length; i++) {
|
||
|
var name = this._usersObject[i].display_name
|
||
|
var li = document.createElement("li")
|
||
|
var button = document.createElement("button")
|
||
|
button.type = "button"
|
||
|
button.innerText = name
|
||
|
button.addEventListener("click", () => {
|
||
|
this._updateDefaults(this._usersObject[i])
|
||
|
this._setAccountDefault()
|
||
|
//authenticate.startAuthentication()
|
||
|
})
|
||
|
|
||
|
li.appendChild(button)
|
||
|
dropdown.appendChild(li)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
_setButton() {
|
||
|
var dropdown = this._accountsList.querySelector(".dropdown")
|
||
|
document.querySelector("#screen").addEventListener("click", (ev) => {
|
||
|
if (ev.target == this._accountsButton || ev.target.parentElement == this._accountsButton) {
|
||
|
dropdown.classList.toggle("hide")
|
||
|
} else
|
||
|
if (ev.target != this._accountsList && ev.target.closest(".dropdown") == null) {
|
||
|
dropdown.classList.add("hide")
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
_updateDefaults(userObject) {
|
||
|
if (!userObject) return
|
||
|
this._defaultUser = userObject
|
||
|
|
||
|
this._localStorage.setItem("defaultUser", this._defaultUser.username)
|
||
|
}
|
||
|
|
||
|
_init() {
|
||
|
this._usersObject = lightdm.users
|
||
|
this._updateOnStartup()
|
||
|
this._setAccountList()
|
||
|
this._setButton()
|
||
|
}
|
||
|
}
|