Ok, coming closer…
In previous post I had indeed added the authenticated() call… (complete main.js)
Moralis.initialize("vhR4GZ2i8OuLrZz5yNm7FX77sh8VG9VFT4DBtE6O"); // Application id from moralis.io
Moralis.serverURL = "https://lscfractqgvk.moralis.io:2053/server"; //Server url from moralis.io
const userConnectButton = document.getElementById("btnConnect");
const userProfileButton = document.getElementById("btnUserInfo");
const userInfo = document.getElementById("userInfo");
const userUsernameField = document.getElementById("txtusername");
const userEmailField = document.getElementById("txtEmail");
const userAvatarImg = document.getElementById("imgAvatar");
const userAvatarFile = document.getElementById("fileAvatar");
hideElement = (element) => element.style.display = "none";
showElement = (element) => element.style.display = "block";
initUser = async () => {
console.log("initUser: start");
const user = await Moralis.User.current();
console.log("initUser: current=", user);
if (user) {
console.log("initUser: user is already authenticated");
console.log(user);
hideElement(userConnectButton);
showElement(userProfileButton);
} else {
console.log("initUser: ask user to sign message to authenticate");
const user = await Moralis.Web3.authenticate();
console.log("initUser: authenticated user=", user);
const currentUser = Moralis.User.current();
console.log("initUser: current=", currentUser);
showElement(userConnectButton);
hideElement(userProfileButton);
}
}
login = async () => {
console.log("login");
try {
await Moralis.Web3.authenticate();
initUser();
} catch(error) {
alert(error);
}
}
logout = async () => {
console.log("logout");
await Moralis.User.logOut();
hideElement(userInfo);
initUser();
}
openUserInfo = async () => {
console.log("Open user info");
const user = await Moralis.User.current();
console.log(user)
if (user) {
userEmailField.value = (user.get('email') ?? ""); // not undefined
userUsernameField.value = user.get('username');
const userAvatar = user.get('avatar');
if (userAvatar) {
userAvatarImg.src = userAvatar.url();
showElement(userAvatarImg);
} else {
hideElement(userAvatarImg);
}
showElement(userInfo);
} else {
login();
}
}
saveUserInfo = async () => {
user.set('username', userUsernameField.value); // throws error for duplicates..!
user.set('email', userEmailField.value);
if (userAvatarFile.files.length > 0) {
const avatar = new Moralis.File("avatar.jpg", userAvatarFile.files[0]); // simple only for jpg..
user.set('avatar', avatar);
}
await user.save();
alert("User info saved successfully!");
openUserInfo();
}
init = async () => {
console.log("init");
hideElement(userInfo);
window.web3 = await Moralis.Web3.enable();
initUser();
}
userConnectButton.onclick = login;
userProfileButton.onclick = openUserInfo;
document.getElementById("btnCloseUserInfo").onclick = () => hideElement(userInfo);
document.getElementById("btnLogout").onclick = logout;
document.getElementById("btnSaveUserInfo").onclick = saveUserInfo;
init();
and with a new server i get : “_objCount: 1” after that authentication (!)
and the id has the value of the objectId of the user record in servers Dashboard!
But… username is still empty… (not in Dasboards user record.
Console output…
I see inside initUser: always true part is taken, since we have a valid user object (!), but only Id is filled, not the other fields…
So the “Moralis.Web3.authenticate();” never called…
If i change initUser to
initUser = async () => {
console.log("initUser: start");
var user = await Moralis.User.current();
console.log("initUser: 1 current=", user);
user = await Moralis.Web3.authenticate();
console.log("initUser: 2 current=", user);
if (user) {
console.log("initUser: user is already authenticated");
console.log(user);
hideElement(userConnectButton);
showElement(userProfileButton);
} else {
console.log("initUser: ask user to sign message to authenticate");
user = await Moralis.Web3.authenticate();
console.log("initUser: authenticated user=", user);
const currentUser = Moralis.User.current();
console.log("initUser: current=", currentUser);
showElement(userConnectButton);
hideElement(userProfileButton);
}
}
The authentication is done, but still no data…
Continueing find out what’s still wrong… ?!