import { _favoritedPlaces, limits } from "@/utils/storage"; import { expireCache } from "@/utils/utilities"; const placeID = window.location.pathname.split('/')[2]; export async function favoritedPlaces() { let placeIDs = await _favoritedPlaces.getValue(); const titleCard = document.getElementById; const button = document.createElement('button'); button.classList.add('btn', 'btn-primary', 'btn-sm'); button.style.position = 'absolute'; button.style.top = '0'; button.style.right = '0'; button.style.margin = '4px'; button.style.fontSize = '1.3em'; button.innerHTML = ` `; const update = function() { button.classList.value = 'btn btn-primary btn-sm'; button.disabled = false; if (placeIDs.indexOf(placeID) == -1) { // Not Pinned if (placeIDs.length >= limits.favoritedPlaces) { button.disabled = true; } button.children[0].classList.value = 'fa-regular fa-star'; } else { // Pinned button.children[0].classList.value = 'fa-duotone fa-star'; } }; button.addEventListener('mouseenter', function() { if (placeIDs.indexOf(placeID) != -1) { button.classList.add('btn-danger'); button.classList.remove('btn-primary'); button.children[0].classList.add('fa-star-half-stroke'); button.children[0].classList.remove('fa-star'); }; }); button.addEventListener('mouseleave', function() { if (placeIDs.indexOf(placeID) != -1) { button.classList.add('btn-primary'); button.classList.remove('btn-danger'); button.children[0].classList.add('fa-star'); button.children[0].classList.remove('fa-star-half-stroke'); }; }); update(); document.querySelector('h1.my-0')!.parentElement!.appendChild(button); button.addEventListener('click', function() { if (placeIDs.indexOf(placeID) == -1) { placeIDs.push(placeID); } else { placeIDs.splice(placeIDs.indexOf(placeID), 1); } expireCache('favoritedPlaces'); _favoritedPlaces.setValue(placeIDs); update(); }); storage.watch>('sync:favoritedPlaces', (value, previous) => { placeIDs = value!; }); }