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.
99 lines
2.7 KiB
99 lines
2.7 KiB
3 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();
|
||
|
}
|
||
|
}
|