class Login extends HTMLElement {
static get observedAttributes() {
return ['firstname', 'surname'];
}
clickCheck(){
console.log('login.clickCheck');
if(this.checkbox.checked){
this.createAccountButton.disabled = false;
}else{
this.createAccountButton.disabled = true;
}
}
createAccount() {
console.log('login.createAccount');
/* where to make a data call for points/events */
let sr = this.shadowRoot
var firstname = sr.getElementById('firstname').innerHTML;
var surname = sr.getElementById('surname').innerHTML;
var email = sr.getElementById('email').innerHTML;
var phoneview = document.getElementById("phoneview");
var mobileview = phoneview.getMobileView();
this.MODE = this.getAttribute('mode')
let previousMobileView = mobileview.innerHTML
mobileview.innerHTML = "";
// create loading spinner first
var element = document.createElement('loading-spinner-element');
element.setAttribute("status", "Creating account...")
mobileview.appendChild(element)
createAccountAppId(firstname, surname, firstname + "" + surname, email, (json) => {
console.log(json)
if (json.status == "user created successfully") {
element.setAttribute("status", "Logging in...")
let usernamepassword = firstname + "" + surname
loginWithAppId(usernamepassword, usernamepassword, (jsonWithTokens) => {
// when creation of account
// and login complete, create the profile
element.setAttribute("status", "Creating user profile...")
createProfile(jsonWithTokens.access_token, success => {
// then show account view
if (success) {
this.createTransactionsView(firstname, surname)
}
// else edge case when failed to create user profile
})
// edge case when unable to sign in
})
} else {
// edge case when failed to register with app id
element.setAttribute("status", json.message)
setTimeout(() => {
mobileview.innerHTML = previousMobileView
}, 2000)
}
})
}
createTransactionsView(firstname, surname) {
var accountinfo ={
firstname:firstname,
surname: surname
}
var fullname = accountinfo.firstname + ' ' + accountinfo.surname
var phoneview = document.getElementById("phoneview");
var mobileview = phoneview.getMobileView();
let element = document.createElement('transactions-element')
element.setAttribute('name', fullname);
element.setAttribute('mode', this.MODE);
mobileview.innerHTML = "";
mobileview.appendChild(element);
localStorage.setItem("loyaltyname", fullname);
phoneview.showNavigation();
}
constructor() {
// Always call super first in constructor
super();
let template = document.getElementById('loginview');
let templateContent = template.content;
const shadow = this.attachShadow({mode: 'open'})
.appendChild(templateContent.cloneNode(true));
var sr = this.shadowRoot;
this.checkbox = sr.getElementById('gdprcheck');
this.checkbox.addEventListener('click', e => {
this.clickCheck();
});
this.createAccountButton = sr.getElementById('createAccountButton');
this.createAccountButton.addEventListener('click', e =>{
this.createAccount();
});
}
connectedCallback(){
var ids = ['firstname', 'surname', 'password', 'username', 'email'];
var sr = this.shadowRoot;
var customElement = this;
ids.forEach(function(id){
var element = sr.getElementById(id);
var data = customElement.getAttribute(id);
element.innerHTML = data;
})
let firstnameDiv = sr.getElementById('firstname')
let surnameDiv = sr.getElementById('surname')
let usernameDiv = sr.getElementById('username')
let passwordDiv = sr.getElementById('password')
let emailDiv = sr.getElementById('email')
firstnameDiv.addEventListener('input', function () {
usernameDiv.innerHTML = this.innerHTML + surnameDiv.innerHTML
passwordDiv.innerHTML = this.innerHTML.replace(/./g,'*') + surnameDiv.innerHTML.replace(/./g,'*')
emailDiv.innerHTML = this.innerHTML + "@" + surnameDiv.innerHTML + ".org"
})
surnameDiv.addEventListener('input', function () {
usernameDiv.innerHTML = firstnameDiv.innerHTML + this.innerHTML
passwordDiv.innerHTML = firstnameDiv.innerHTML.replace(/./g,'*') + this.innerHTML.replace(/./g,'*')
emailDiv.innerHTML = firstnameDiv.innerHTML + "@" + this.innerHTML + ".org"
})
}
}
try {
customElements.define('login-element', Login);
} catch (err) {
const h3 = document.createElement('h3')
h3.innerHTML = err
document.body.appendChild(h3)
}