import {showToast} from "./toast.js"; 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) { showToast(response.data.message) // Revert the ui toggleHidden(likeBtns); } else{ showToast(response.data.message) } } catch (e) { showToast(e.response.data.message) 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) { showToast(response.data.message) // Revert the ui toggleHidden(favoriteBtns); }else{ showToast(response.data.message); } } catch (e) { showToast(e.response.data.message) 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); } } function redirect(url, id){ window.open(url, '_blank'); let redirectBadge = document.getElementById("redirectBadge".concat(id)); updateRedirectCount(redirectBadge, 1); // increment the count in ui } function updateRedirectCount(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; document.redirect = redirect;