Olá pessoal, tudo bom?
Para treinar meus conhecimentos estou desenvolvendo um projeto paralelo, usando JS Vanilla e Firebase, mas estou encontrando um problema que simplesmente não consigo resolver.
Em resumo, preciso gerar uma informação em uma página (login.html) e utilizá-la em outra (dashboard.html).
Após realizar o login e fazer a autenticação via Firebase, recebo um objeto que utilizo para popular uma outra classe:
validaLogin(loginId, senhaId){
this.loginId = loginId.value;
this.senhaId = senhaId.value;
firebase.auth().signInWithEmailAndPassword(this.loginId,this.senhaId)
.then(
info => {
this.getUserInfo(info.user.email)
console.log(info.user.email)
window.location = "dashboard.html";
}
)
.catch(function(error){
alert(error.message)
});
}
getUserInfo(userEmail){
this.users.on('value', function(users){
users.forEach(user => {
if(user.val().email == userEmail){
let userInfo = new UserInfo(user.val());
}
});
});
}
class UserInfo{
constructor(object){
this.userName;
this.object = object;
this.validaInfo();
}
validaInfo(){
let nomeUsuario = this.object.name;
this.setUserName(nomeUsuario);
}
setUserName(userName){
this.userName = userName;
}
getUserName(){
return this.userName;
}
}
Na página de Login funciona tudo certo, porém, ao chegar na Dashboard, onde seria necessário chamar o getUserName() as informações não ficam disponíveis.
A única forma que eu consegui foi através de sessionStorage, declarando o userName e chamando na Dashboard (o que, acredito, não é o correto). Pesquisei também sobre os conceitos de Singleton mas não entendi direito se seria o caso de utilizar nesse problema.
Alguém consegue me ajudar com esse problema que já me gastou mais de 2 semanas rs?
Obrigada!