Jake Vanderwerf
13 hours ago f16cb88a3218ac7bb32e43f0e0a2542d35c7a01b
1
(()=>{class e{constructor(){let e=window.jvbStore.register("favourites",{storeName:"favourites",keyPath:"id",endpoint:"favourites",headers:{"X-Action-Nonce":window.auth.getNonce("favourites")},indexes:[{name:"content",keyPath:"content"},{name:"listId",keyPath:"listId"}],TTL:36e4,showLoading:!1,filters:{user:window.auth.getUser(),content:"all",order:"desc",orderby:"date",page:1,all:!0}});this.queue={add:new Map,remove:new Map},this.store=e.favourites,this.store.subscribe(((e,t)=>{e}))}toggleFavourite(e){if(!window.auth.getUser())return void(window.location.href=jvbSettings.redirect+"&action=register&type=favourites");e.classList.toggle("favourited");const t=e.classList.contains("favourited")?"add":"remove",o=e.classList.contains("favourited")?`Added ${e.dataset.type} to favourites.`:`Removed ${e.dataset.type} from favourites.`;window.jvbA11y.announce(o),e.innerHTML=jvbSettings.icons[e.classList.contains("favourited")?"heart-filled":"heart"],this.checkQueue(t,{target_id:e.dataset.id,action:t,type:e.dataset.type}),window.debouncer.schedule("favourites",this.postFavourites.bind(this),200)}checkQueue(e,t){switch(e){case"add":this.queue.remove.has(t.target_id)&&this.queue.remove.delete(t.target_id),this.queue.add.set(t.target_id,t);break;case"remove":this.queue.add.has(t.target_id)&&this.queue.add.delete(t.target_id),this.queue.remove.set(t.target_id,t);break;default:return}}async postFavourites(){console.log(this.queue,"Posting favourites");const e=await window.auth.fetch(`${jvbSettings.api}favourites`,{method:"POST",headers:{"X-Action-Nonce":window.auth.getNonce("favourites")},body:{user:window.auth.getUser(),...this.queue}});if(e.ok){console.log("Posted favourites - clearing queue");for(let e of this.queue.add.entries())await this.store.setItem(e.target_id,e);for(let e of this.queue.remove.entries())await this.store.delete(e.target_id);this.queue.add.clear(),this.queue.remove.clear()}else console.log(await e.json(),"Something went wrong"),window.debouncer.schedule("favourites",this.postFavourites.bind(this),200)}isFavourited(e,t){const o=`${this.userId}_${e}_${t}`;return void 0!==this.store.get(o)}}document.addEventListener("DOMContentLoaded",(function(){window.jvbFavourites=!1,window.auth.subscribe((t=>{"auth-loaded"===t&&(window.jvbFavourites=new e)}))})),window.toggleFavourite=function(e){window.jvbFavourites()?window.jvbFavourites.toggleFavourite(e):console.log("No Favourites Loaded")},window.isFavourited=function(e,t){if(window.jvbFavourites())return window.jvbFavourites.isFavourited(e,t);console.log("No Favourites Loaded")}})();