async function like(button, id) { // Instant feedback for user let likeBtns = button.querySelectorAll('.like'); let likeBadge = document.getElementById("likeBadge".concat(id)); toggleHidden(likeBtns); // Check if user liked the deal let isLiked = button.classList.contains('liked'); updateLikeCount(likeBadge, isLiked ? -1 : 1) ; button.classList.toggle('liked') try { let response = await axios.post('/like/' + id); if (response.status !== 200) { // Revert the ui toggleHidden(likeBtns); } } catch (e) { toggleHidden(likeBtns); console.error(e); } } async function favorite(e, id) { // Instant feedback for user let favoriteBtns = e.querySelectorAll('.favorite'); toggleHidden(favoriteBtns); try { let response = await axios.post('/favorite/' + id); if (response.status !== 200) { // Revert the ui toggleHidden(favoriteBtns); } } catch (e) { toggleHidden(favoriteBtns); console.error(e); } } function toggleHidden(nodelist) { nodelist.forEach((node) => node.classList.toggle('hidden')) } function updateLikeCount(badge, change){ try{ let likeCount = Math.max(parseInt( badge.dataset.count) + change, 0) badge.querySelector('p').innerText = likeCount; badge.dataset.count = likeCount.toString(); } catch(e) { console.error(e); } } document.like = like; document.favorite = favorite;