fictioneer/js/checkmarks.min.js
Tetrakern e4de35c3de Remove wp.i18n JS script and uses
That just included several render-blocking scripts for little benefit.
2024-03-09 15:15:46 +01:00

1 line
3.4 KiB
JavaScript

var fcn_checkmarks,fcn_userCheckmarksTimeout;function fcn_initializeCheckmarks(a){const t=a.detail.data.checkmarks;!1!==t&&(Array.isArray(t.data)&&0===t.data.length&&(t.data={}),fcn_checkmarks=t,fcn_updateCheckmarksView(),localStorage.removeItem("fcnBookshelfContent"),_$$("button.checkmark").forEach((a=>{a.addEventListener("click",(a=>{fcn_clickCheckmark(a.currentTarget)}))})))}function fcn_toggleCheckmark(a,t,e=null,c=null,s="toggle"){const r=fcn_getUserData();if(fcn_checkmarks&&r.checkmarks){if(localStorage.removeItem("fcnBookshelfContent"),"toggle"===s&&JSON.stringify(fcn_checkmarks.data[a])!==JSON.stringify(r.checkmarks.data[a]))return fcn_checkmarks=r.checkmarks,fcn_showNotification(fictioneer_tl.notification.checkmarksResynchronized),void fcn_updateCheckmarksView();if(fcn_checkmarks.data.hasOwnProperty(a)||(fcn_checkmarks.data[a]=[]),r.checkmarks.data.hasOwnProperty(a)||(r.checkmarks.data[a]=[]),e&&"progress"===t&&!fcn_checkmarks.data[a].includes(e)&&fcn_checkmarks.data[a].push(e),e&&"chapter"===t)if(!fcn_checkmarks.data[a].includes(e)&&"unset"!==s||"set"===s)fcn_checkmarks.data[a].push(e),c&&(c.classList.add("marked"),c.setAttribute("aria-checked",!0));else{fcn_removeItemOnce(fcn_checkmarks.data[a],e),c&&(c.classList.remove("marked"),c.setAttribute("aria-checked",!1)),fcn_removeItemOnce(fcn_checkmarks.data[a],a);const t=_$('button[data-type="story"]');t&&(t.classList.remove("marked"),t.setAttribute("aria-checked",!1))}if("story"===t){const t=(fcn_checkmarks.data[a].includes(a)||"unset"===s)&&"set"!==s;fcn_checkmarks.data[a]=[],t||(_$$("button.checkmark").forEach((t=>{fcn_checkmarks.data[a].push(parseInt(t.dataset.id))})),fcn_checkmarks.data[a].includes(a)||fcn_checkmarks.data[a].push(a))}fcn_checkmarks.data[a]=fcn_checkmarks.data[a].filter(((a,t,e)=>e.indexOf(a)==t)),r.checkmarks.data[a]=fcn_checkmarks.data[a],r.lastLoaded=0,fcn_setUserData(r),fcn_updateCheckmarksView(),clearTimeout(fcn_userCheckmarksTimeout),fcn_userCheckmarksTimeout=setTimeout((()=>{fcn_updateCheckmarks(a,fcn_checkmarks.data[a])}),fictioneer_ajax.post_debounce_rate)}}function fcn_clickCheckmark(a){fcn_toggleCheckmark(parseInt(a.dataset.storyId),a.dataset.type,parseInt(a.dataset.id),a)}function fcn_updateCheckmarks(a,t=null){t=t||fcn_getUserData().checkmarks.data[a],fcn_ajaxPost({action:"fictioneer_ajax_set_checkmark",fcn_fast_ajax:1,story_id:a,update:t.join(" ")}).then((a=>{a.data.error&&fcn_showNotification(a.data.error,3,"warning")})).catch((a=>{a.status&&a.statusText&&fcn_showNotification(`${a.status}: ${a.statusText}`,5,"warning")}))}function fcn_updateCheckmarksView(){const a=fcn_getUserData(),t=a.checkmarks;if(!t)return;const e=parseInt(fcn_inlineStorage.storyId);if(e){const c=t.data.hasOwnProperty(e)&&t.data[e].includes(e);if(c){let c=!1;_$$("button.checkmark").forEach((a=>{const s=parseInt(a.dataset.id);t.data[e].includes(s)||(t.data[e].push(s),c=!0)})),c&&(a.checkmarks=t,fcn_setUserData(a),fcn_updateCheckmarks(e,t.data[e]))}_$$$("ribbon-read")?.classList.toggle("hidden",!c)}_$$("button.checkmark").forEach((a=>{const e=parseInt(a.dataset.storyId);if(t.data.hasOwnProperty(e)){const c=t.data[e].includes(parseInt(a.dataset.id));a.classList.toggle("marked",c),a.setAttribute("aria-checked",c)}})),_$$(".card").forEach((a=>{const e=parseInt(a.dataset.storyId),c=t.data.hasOwnProperty(e)&&(t.data[e].includes(parseInt(a.dataset.checkId))||t.data[e].includes(e));a.classList.toggle("has-checkmark",c)}))}document.addEventListener("fcnUserDataReady",(a=>{fcn_initializeCheckmarks(a)}));