diff --git a/client/js/avatar.js b/client/js/avatar.js
index 20de6a0..19af54f 100644
--- a/client/js/avatar.js
+++ b/client/js/avatar.js
@@ -17,10 +17,16 @@ function loadAvatarsItems() {
// loadHats();
}
+function getCurrentlyWornShirtId() {
+ const currentlyWearing = $('#currently-wearing [data-type="shirt"]');
+ return currentlyWearing.length > 0 ? currentlyWearing.data('id') : null;
+}
+
let currentPage = 1;
let totalPages = 1;
function loadShirts(page = 1) {
const token = localStorage.getItem('token');
+ const currentlyWornShirtId = getCurrentlyWornShirtId();
console.log('Loading shirts for user, page:', page);
$.ajax({
@@ -31,7 +37,7 @@ function loadShirts(page = 1) {
},
success: function (res) {
console.log('Shirts loaded successfully:', res.shirts);
- displayUserShirts(res.shirts);
+ displayUserShirts(res.shirts, currentlyWornShirtId);
updatePagination(res.currentPage, res.totalPages);
totalPages = res.totalPages;
},
@@ -44,7 +50,7 @@ function loadShirts(page = 1) {
});
}
-function displayUserShirts(shirts) {
+function displayUserShirts(shirts, currentlyWornShirtId) {
const container = $('#shirts-container');
container.empty();
@@ -72,14 +78,15 @@ function displayUserShirts(shirts) {
console.error('Invalid shirt object:', shirt);
return;
}
+ const isWearing = shirt._id === currentlyWornShirtId;
const shirtHtml = generateItemHtml(
shirt.Name,
shirt.ThumbnailLocation,
shirt.creator ? shirt.creator.username : 'Unknown',
shirt._id,
'shirt',
- shirt.creator && shirt.creator._id === currentUserId ? 'Created' : 'Owned'
-
+ shirt.creator && shirt.creator._id === currentUserId ? 'Created' : 'Owned',
+ isWearing
);
container.append(shirtHtml);
});
@@ -137,15 +144,15 @@ function generatePageNumbers(currentPage, totalPages) {
function Pagination() {
$('#pagination-container').on('click', 'a', function (e) {
e.preventDefault();
- const page = parseInt($(this).data('page'));
- if (page && page !== currentPage && page >= 1 && page <= totalPages) {
+ const page = $(this).data('page');
+ if (page >= 1 && page <= totalPages) {
currentPage = page;
loadShirts(currentPage);
}
});
}
-function generateItemHtml(name, imageSrc, creator, id, type, ownership) {
+function generateItemHtml(name, imageSrc, creator, id, type, ownership, isWearing) {
return `
@@ -156,7 +163,9 @@ function generateItemHtml(name, imageSrc, creator, id, type, ownership) {
${name}
Creator: ${creator}
Status: ${ownership}
-
+
@@ -201,7 +210,9 @@ function wearItem(type, itemId) {
updateCurrentlyWearing(type, response.avatar[type]);
updateWearButton(type, itemId, true);
showAlert('success', `Wore your ${type} successfully.`);
- // saveAvatarSelection(type, itemId);
+ $('.wear-item').removeClass('btn-success').addClass('btn-primary').text('Wear');
+ $(`.wear-item[data-id="${itemId}"]`).removeClass('btn-primary').addClass('btn-success').text('Wearing');
+
},
error: function (xhr, status, error) {
console.error(`Error wearing ${type}:`, error);
@@ -216,6 +227,32 @@ function wearItem(type, itemId) {
});
}
+function removeItem(type) {
+ const token = localStorage.getItem('token');
+
+ $.ajax({
+ url: '/api/avatar',
+ method: 'PUT',
+ headers: {
+ Authorization: `Bearer ${token}`,
+ 'Content-Type': 'application/json',
+ },
+ data: JSON.stringify({ type: type, itemId: null }), // Indicate unwearing
+ success: function (response) {
+ console.log('Avatar updated successfully.');
+ $(`#avatar-${type}`).attr('src', '');
+ $(`#currently-wearing [data-type="${type}"]`).remove();
+ updateWearButton(type, null, false);
+ showAlert('info', `Unwore your ${type}.`);
+ $('.wear-item').removeClass('btn-success').addClass('btn-primary').text('Wear');
+ },
+ error: function (xhr, status, error) {
+ console.error('Error unwearing item:', error);
+ showAlert('danger', 'Error unwearing the item. Please try again later.');
+ },
+ });
+}
+
function updateAvatarDisplay(type, item) {
switch (type) {
case 'shirt':
@@ -232,6 +269,7 @@ function updateAvatarDisplay(type, item) {
}
+
function updateCurrentlyWearing(type, item) {
const container = $('#currently-wearing');
container.find(`[data-type="${type}"]`).remove();
@@ -256,38 +294,13 @@ function updateCurrentlyWearing(type, item) {
}
}
-function removeItem(type) {
- const token = localStorage.getItem('token');
-
- $.ajax({
- url: '/api/avatar',
- method: 'PUT',
- headers: {
- Authorization: `Bearer ${token}`,
- 'Content-Type': 'application/json',
- },
- data: JSON.stringify({ type: type, itemId: null }), // Indicate unwearing
- success: function (response) {
- console.log('Avatar updated successfully.');
- $(`#avatar-${type}`).attr('src', '');
- $(`#currently-wearing [data-type="${type}"]`).remove();
- updateWearButton(type, null, false);
- showAlert('info', `Unwore your ${type}.`);
- // saveAvatarSelection(type, null);
- },
- error: function (xhr, status, error) {
- console.error('Error unwearing item:', error);
- showAlert('danger', 'Error unwearing the item. Please try again later.');
- },
- });
-}
-
function updateWearButton(type, itemId, isWearing) {
- const wearButton = $(`.wear-item[data-type="${type}"]`);
- wearButton.removeClass('btn-success').addClass('btn-primary').text('Wear');
+ const wearButtons = $(`.wear-item[data-type="${type}"]`);
+ wearButtons.removeClass('btn-success').addClass('btn-primary').text('Wear');
if (isWearing && itemId) {
- wearButton.removeClass('btn-primary').addClass('btn-success').text('Wearing');
+ const wearingButton = wearButtons.filter(`[data-id="${itemId}"]`);
+ wearingButton.removeClass('btn-primary').addClass('btn-success').text('Wearing');
}
}