109 lines
3.2 KiB
JavaScript
Executable File
109 lines
3.2 KiB
JavaScript
Executable File
class Welcome extends HTMLElement {
|
|
|
|
constructor() {
|
|
|
|
super();
|
|
|
|
console.log('INITIALIZING WELCOME VIEW');
|
|
|
|
let template = document.getElementById('welcomeview');
|
|
let templateContent = template.content;
|
|
|
|
const shadow = this.attachShadow({mode: 'open'})
|
|
.appendChild(templateContent.cloneNode(true));
|
|
|
|
}
|
|
|
|
connectedCallback() {
|
|
|
|
let sr = this.shadowRoot;
|
|
|
|
let selectUserInput = sr.getElementById("usernameselect")
|
|
let signinButton = sr.getElementById("signin")
|
|
|
|
var phoneview = document.getElementById("phoneview");
|
|
var mobileview = phoneview.getMobileView();
|
|
|
|
if (loyalty.getCookie('access_token') != "" && loyalty.getCookie('id_token') != "") {
|
|
let id_object = loyalty.parseJwt(loyalty.getCookie('id_token'))
|
|
console.log(id_object)
|
|
|
|
var accountinfo = {
|
|
firstname: id_object.given_name,
|
|
surname: id_object.family_name
|
|
}
|
|
|
|
var fullname = accountinfo.firstname + ' ' + accountinfo.surname
|
|
|
|
mobileview.innerHTML = "";
|
|
|
|
let element = document.createElement('transactions-element')
|
|
element.setAttribute('name', fullname);
|
|
mobileview.appendChild(element);
|
|
|
|
localStorage.setItem("loyaltyname", fullname);
|
|
|
|
phoneview.showNavigation();
|
|
} else {
|
|
getAllUsers((users) => {
|
|
users.forEach(user => {
|
|
var option = document.createElement("option");
|
|
option.text = user
|
|
selectUserInput.add(option)
|
|
});
|
|
})
|
|
}
|
|
|
|
signinButton.addEventListener("click", e => {
|
|
this.signin(selectUserInput.value, selectUserInput.value)
|
|
})
|
|
}
|
|
|
|
|
|
signin(username, password) {
|
|
let sr = this.shadowRoot;
|
|
|
|
var mobileview = sr.host.parentElement;
|
|
mobileview.innerHTML = "";
|
|
|
|
// create loading spinner first
|
|
var element = document.createElement('loading-spinner-element');
|
|
element.setAttribute("status", "Logging in...")
|
|
mobileview.appendChild(element)
|
|
|
|
loginWithAppId(username, password, (jsonWebToken) => {
|
|
// when login complete,
|
|
// re-initialize app?
|
|
new Loyalty(this.mode);
|
|
let id_object = loyalty.parseJwt(jsonWebToken.id_token)
|
|
console.log(id_object)
|
|
|
|
var accountinfo = {
|
|
firstname: id_object.given_name,
|
|
surname: id_object.family_name
|
|
}
|
|
|
|
var fullname = accountinfo.firstname + ' ' + accountinfo.surname
|
|
|
|
mobileview.innerHTML = "";
|
|
|
|
let element = document.createElement('transactions-element')
|
|
element.setAttribute('name', fullname);
|
|
mobileview.appendChild(element);
|
|
|
|
localStorage.setItem("loyaltyname", fullname);
|
|
|
|
phoneview.showNavigation();
|
|
// edge case when unable to sign in
|
|
})
|
|
}
|
|
}
|
|
|
|
try {
|
|
customElements.define('welcome-element', Welcome);
|
|
} catch (err) {
|
|
const h3 = document.createElement('h3')
|
|
h3.innerHTML = err
|
|
document.body.appendChild(h3)
|
|
}
|