feat: add custom avatar functionality (#248)

Co-authored-by: Dante Bradshaw <plansuperior@gmail.com>
This commit is contained in:
Miguel Ribeiro
2024-03-24 16:12:44 +01:00
committed by GitHub
co-authored by Dante Bradshaw
parent 40bcf3485e
commit 1dbebd3918
22 changed files with 387 additions and 41 deletions
+56 -7
View File
@@ -12,10 +12,61 @@ function closeAvatarSelect() {
avatarSelect.classList.remove("is-open");
}
function changeAvatar(number) {
document.getElementById("avatarImg").src = "images/avatars/" + number + ".svg";
document.getElementById("avatarUser").value = number;
closeAvatarSelect();
document.querySelectorAll('.avatar-option').forEach((avatar) => {
avatar.addEventListener("click", () => {
changeAvatar(avatar.src);
document.getElementById('avatarUser').value = avatar.getAttribute('data-src');
closeAvatarSelect();
})
});
function changeAvatar(src) {
document.getElementById("avatarImg").src = src;
}
function successfulUpload(field, msg) {
var reader = new FileReader();
if (field.files.length === 0) {
return;
}
if (! ['image/jpeg', 'image/png', 'image/gif', 'image/jtif', 'image/webp'].includes(field.files[0]['type'])) {
showErrorMessage(msg);
return;
}
reader.onload = function() {
changeAvatar(reader.result);
};
reader.readAsDataURL(field.files[0]);
closeAvatarSelect();
}
function deleteAvatar(path) {
fetch('/endpoints/user/delete_avatar.php', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ avatar: path }),
})
.then(response => response.json())
.then(data => {
if (data.success) {
var avatarContainer = document.querySelector(`.avatar-container[data-src="${path}"]`);
if (avatarContainer) {
avatarContainer.remove();
}
showSuccessMessage();
} else {
showErrorMessage();
}
})
.catch((error) => {
console.error('Error:', error);
});
}
function addMemberButton(memberId) {
@@ -681,7 +732,6 @@ function deletePaymentMethod(paymentId) {
}
function savePaymentMethodsSorting() {
console.log("should save");
const paymentMethods = document.getElementById('payments-list');
const paymentMethodIds = Array.from(paymentMethods.children).map(paymentMethod => paymentMethod.dataset.paymentid);
@@ -733,8 +783,7 @@ document.addEventListener('DOMContentLoaded', function() {
.then(response => response.json())
.then(data => {
if (data.success) {
var newAvatar = document.getElementById("avatarUser").value;
document.getElementById("avatar").src = "images/avatars/" + newAvatar + ".svg";
document.getElementById("avatar").src = document.getElementById("avatarImg").src;
var newUsername = document.getElementById("username").value;
document.getElementById("user").textContent = newUsername;
showSuccessMessage(data.message);