bind the link with the view deal button show the total redirection count reflect the total redirect count immediately add arch test so that dump statements are not left out
88 lines
2.4 KiB
JavaScript
88 lines
2.4 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);
|
|
}
|
|
}
|
|
|
|
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;
|