Fiat2Crypto with Moralis
Connect wallet
Profile
<div id="userInfo">
<h4>User Profile</h4>
<input type="text" id="txtUsername" required placeholder="Enter username">
<input type="text" id="txtEmail" placeholder="Enter Email">
<small>Optional</small>
<img width="50" height="50" src="" id="imgAvatar" alt="User avatar">
<label for="fileAvatar">Select Avatar</label>
<input type="file" id="fileAvatar">
<button id="btnLogout">Log out</button>
<button id="btnCloseUserInfo">Close</button>
<button id="btnSaveUserInfo">Save</button>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/web3.min.js"></script>
<script src="https://unpkg.com/[email protected]/dist/moralis.js"></script>
<script type="text/javascript" src="js/main.js"></script>
main.js:
Moralis.initialize(âjVc2O4nKwUFfmuCCebrK1nqlIhMCzdLs07OhcPgHâ);
Moralis.serverURL = âhttps://0praksgszywd.moralis.io:2053/serverâ;
init = async () => {
hideElement(userInfo);
window.web3 = await Moralis.Web3.enable();
Moralis.Web3.getSigningData = () => âMy custom messageâ;
//Dows not work: window.web3.getSigningData = () => âMy custom messageâ;
initUser();
}
initUser = async () => {
if (await Moralis.User.current()) {
hideElement(userConnectButton); //If user is already logged in we do not need to show connect button
showElement(userProfileButton);
}
else {
showElement(userConnectButton);
hideElement(userProfileButton);
}
}
login = async () => {
try {
let user = await Moralis.Web3.authenticate(); //Bring up Metamask and Sign in to Moralis
console.log(âUeer ETH Address:â , user.get(âethAddressâ));
initUser();
}catch (error) {
console.log(error);
}
}
logout = async () => {
await Moralis.User.logOut();
hideElement(userInfo);
initUser();
}
openUserInfo = async () => {
user = await Moralis.User.current();
if(user) {
const email = user.get(âemailâ);
if(email) {
userEmailField.value = email;
} else {
userEmailField.value = ââ;
}
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(âemailâ, userEmailField.value);
user.set(âusernameâ, userUsernameField.value);
if(userAvatarFile.files.length > 0){
const file = userAvatarFile.files[0];
const name = "photo.jpg";
const avatar = new Moralis.File(name, file);
user.set('avatar', avatar);
}
try {
await user.save();
}catch (err) {
console.log(err);
}
console.log("User Info saved successfully");
openUserInfo();
}
hideElement = (element) => element.style.display = ânoneâ;
showElement = (element) => element.style.display = âblockâ;
const userConnectButton = document.getElementById(âbtnConnectâ);
userConnectButton.onclick = login;
const userProfileButton = document.getElementById(âbtnUserInfoâ);
userProfileButton.onclick = openUserInfo;
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â);
document.getElementById(âbtnCloseUserInfoâ).onclick = () => hideElement(userInfo);
document.getElementById(âbtnLogoutâ).onclick = logout;
document.getElementById(âbtnSaveUserInfoâ).onclick = saveUserInfo;
init();
Moralis.Web3.authenticate().then(function (user) {
console.log(user.get(âethAddressâ));
})