toasts timer increased to 5s. Add animation to the toast Add toast for like and favorite actions fixed the deal card design added a opening animation to modal
71 lines
1.8 KiB
JavaScript
71 lines
1.8 KiB
JavaScript
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);
|
|
}
|
|
}
|
|
|
|
document.like = like;
|
|
document.favorite = favorite;
|