1 line
3.4 KiB
JavaScript
1 line
3.4 KiB
JavaScript
var fcn_checkmarks,fcn_userCheckmarksTimeout;function fcn_initializeCheckmarks(a){const e=a.detail.data.checkmarks;!1!==e&&(Array.isArray(e.data)&&0===e.data.length&&(e.data={}),fcn_checkmarks=e,fcn_updateCheckmarksView(),localStorage.removeItem("fcnBookshelfContent"),_$$("button.checkmark").forEach((a=>{a.addEventListener("click",(a=>{fcn_clickCheckmark(a.currentTarget)}))})))}function fcn_toggleCheckmark(a,e,c=null,t=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(__("Checkmarks re-synchronized.","fictioneer")),void fcn_updateCheckmarksView();if(fcn_checkmarks.data.hasOwnProperty(a)||(fcn_checkmarks.data[a]=[]),r.checkmarks.data.hasOwnProperty(a)||(r.checkmarks.data[a]=[]),c&&"progress"===e&&!fcn_checkmarks.data[a].includes(c)&&fcn_checkmarks.data[a].push(c),c&&"chapter"===e)if(!fcn_checkmarks.data[a].includes(c)&&"unset"!==s||"set"===s)fcn_checkmarks.data[a].push(c),t&&(t.classList.add("marked"),t.ariaChecked=!0);else{fcn_removeItemOnce(fcn_checkmarks.data[a],c),t&&(t.classList.remove("marked"),t.ariaChecked=!1),fcn_removeItemOnce(fcn_checkmarks.data[a],a);const e=_$('button[data-type="story"]');e&&(e.classList.remove("marked"),e.ariaChecked=!1)}if("story"===e){const e=(fcn_checkmarks.data[a].includes(a)||"unset"===s)&&"set"!==s;fcn_checkmarks.data[a]=[],e||(_$$("button.checkmark").forEach((e=>{fcn_checkmarks.data[a].push(parseInt(e.dataset.id))})),fcn_checkmarks.data[a].includes(a)||fcn_checkmarks.data[a].push(a))}fcn_checkmarks.data[a]=fcn_checkmarks.data[a].filter(((a,e,c)=>c.indexOf(a)==e)),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,e=null){e=e||fcn_getUserData().checkmarks.data[a],fcn_ajaxPost({action:"fictioneer_ajax_set_checkmark",fcn_fast_ajax:1,story_id:a,update:e.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(),e=a.checkmarks;if(!e)return;const c=parseInt(fcn_inlineStorage.storyId);if(c){const t=e.data.hasOwnProperty(c)&&e.data[c].includes(c);if(t){let t=!1;_$$("button.checkmark").forEach((a=>{const s=parseInt(a.dataset.id);e.data[c].includes(s)||(e.data[c].push(s),t=!0)})),t&&(a.checkmarks=e,fcn_setUserData(a),fcn_updateCheckmarks(c,e.data[c]))}_$$$("ribbon-read")?.classList.toggle("hidden",!t)}_$$("button.checkmark").forEach((a=>{const c=parseInt(a.dataset.storyId);if(!e.data.hasOwnProperty(c))return;const t=e.data[c].includes(parseInt(a.dataset.id));a.classList.toggle("marked",t),a.ariaChecked=t})),_$$(".card").forEach((a=>{const c=parseInt(a.dataset.storyId),t=e.data.hasOwnProperty(c)&&(e.data[c].includes(parseInt(a.dataset.checkId))||e.data[c].includes(c));a.classList.toggle("has-checkmark",t)}))}document.addEventListener("fcnUserDataReady",(a=>{fcn_initializeCheckmarks(a)})); |