dealhub/resources/js/interaction.js
kusowl 688fd02e26 chore(UI Improvements): made all pages in broker panel full width
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
2026-01-19 14:11:52 +05:30

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;