async function getUserList() {
const response = await fetch('/api/users/list');
const userListObj = await response.json(); // Assuming the response is in JSON format
console.log(userListObj)
return userListObj;
}
async function registerNewUser() {
let handle = String($("#newUserHandle").val());
let name = String($("#newUserName").val());
let password = String($("#newUserPassword").val());
let passwordConfirm = String($("#newUserPasswordConfirm").val());
if (handle.length < 4) {
alert('Username must be at least 4 characters long');
return;
}
if (password.length < 8) {
alert('Password must be at least 8 characters long');
return;
}
if (password !== passwordConfirm) {
alert("Passwords don't match!")
return
}
const newUser = {
handle: handle,
name: name || 'Anonymous',
password: password,
};
try {
const response = await $.ajax({
url: '/api/users/create',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(newUser),
});
console.log(response);
if (response.handle) {
console.log('saw user created successfully')
alert('New user created!')
$("#userSelectBlock").empty()
populateUserList()
$("#userListBlock").show()
$("#registerNewUserBlock").hide()
$("#registerNewUserBlock input").val('')
}
} catch (error) {
console.error('Error creating new user:', error);
alert(error.responseText)
}
}
export async function populateUserList() {
const userList = await getUserList();
const registerNewUserButtonHTML = `
`
const newUserRegisterationHTML = `
`
const userSelectHTML = `
Select User
This is merely a test.
Click a user, and then click Login to proceed.
${newUserRegisterationHTML}
`;
// Add login screen
$('#loader').append(userSelectHTML);
const parentDiv = $('#userList');
userList.forEach(user => {
const userDiv = $('')
.attr('id', `userSelect-${user.handle}`)
.attr('data-foruser', user.name)
.addClass('userSelect menu_button flex-container flexFlowCol');
const avatarImg = $('
')
.addClass('avatar')
.attr('src', user.avatar);
userDiv.append(avatarImg);
const userName = $('').text(user.name);
userDiv.append(userName);
parentDiv.append(userDiv);
});
parentDiv.append(registerNewUserButtonHTML)
$(".userSelect").off('click').on("click", function () {
let selectedUserName = $(this).data('foruser')
$('.userSelect').removeClass('avatar-container selected')
$(this).addClass('avatar-container selected')
console.log(selectedUserName)
$("#passwordHeaderText").text(`Enter password for ${selectedUserName}`)
$("#passwordEntryBlock").show()
});
$("#registerNewUserButton").off('click').on('click', function () {
$("#userListBlock").hide()
$("#registerNewUserBlock").show()
})
$("#newUserRegisterFinalizeButton").off('click').on('click', registerNewUser)
$("#newUserRegisterCancelButton").off('click').on('click', function () {
$("#userListBlock").show()
$("#registerNewUserBlock").hide()
})
$("#loginButton").off('click').on('click', function () {
$('#loader')
.animate({ opacity: 0 }, 300, function () {
// Insert user handle/password verification code here
//.finally:
$('#loader').remove();
});
});
}