Your IP : 216.73.216.224


Current Path : /var/www/html/media/com_akeebabackup/js/
Upload File :
Current File : /var/www/html/media/com_akeebabackup/js/WebPush.min.js

((e,s,r)=>{class o{options={};constructor(e){this.options=e}#e(e){for(var r=(e+"=".repeat((4-e.length%4)%4)).replace(/-/g,"+").replace(/_/g,"/"),o=s.atob(r),t=new Uint8Array(o.length),n=0;n<o.length;++n)t[n]=o.charCodeAt(n);return t}disableInterface(){e.querySelector(this.options.subscribeButton).classList.add("d-none","disabled"),e.querySelector(this.options.unsubscribeButton).classList.add("d-none","disabled"),e.querySelector(this.options.unavailableInfo).classList.remove("d-none"),e.getElementById("webPushDetails").classList.add("d-none")}registerServiceWorker(){console.debug("[Web Push] Preparing to register a Service Worker.");const e=this.options.workerUri;return e?r.serviceWorker.register(e).then(e=>(console.log("[Web Push] Service worker successfully registered."),e)).catch(e=>(console.error("[Web Push] Unable to register Service Worker.",e),null)):(console.error("[Web Push] The backend provided no Service Worker URI. Cannot proceed."),null)}askPermission(){return new Promise((e,s)=>{console.debug("[Web Push] Requesting permission.");const r=Notification.requestPermission(s=>{e(s)});r&&r.then(e,s)}).then(e=>{if("granted"!==e)throw console.error("[Web Push] Permission for push notifications was NOT granted."),new Error("We were not granted permission.");return console.log("[Web Push] Permission for push notifications was granted."),!0})}subscribeUserToPush(){console.debug("[Web Push] Preparing to subscribe the user.");const e=this.options.workerUri,s=this.options.vapidKeys?.publicKey;return e?(s||console.error("[Web Push] The backend provided no VAPID public Key. Cannot proceed."),r.serviceWorker.register(e).then(e=>{const r={userVisibleOnly:!0,applicationServerKey:this.#e(s)};return e.pushManager.subscribe(r)}).then(e=>(console.log("[Web Push] Received PushSubscription"),console.debug(JSON.stringify(e)),e))):(console.error("[Web Push] The backend provided no Service Worker URI. Cannot proceed."),null)}saveUserSubscription(e){console.log("[Web Push] About to send the user subscription information to the backend.");const s=this.options.subscribeUri;if(!s)return console.error("[Web Push] The backend provided no subscription registration URL. Cannot proceed."),null;const r=new FormData;return r.append("subscription",JSON.stringify(e)),fetch(s,{method:"POST",headers:{"X-CSRF-Token":Joomla.getOptions("csrf.token")},body:r}).then(e=>{if(!e.ok)throw console.error(`[Web Push] Server returned HTTP error ${e.status}. Cannot proceed.`),new Error(`Server returned HTTP error ${e.status}.`);return e.json()}).then(e=>{if(!e||!e.success){console.error(`[Web Push] Server returned invalid data: ${e}. Cannot proceed.`);throw new Error("Bad response from server. "+(e?.error??""))}})}isUserSubscribed(e){e.pushManager.getSubscription().then(e=>{let r;r=e?new CustomEvent("onAkeebaBackupWebPushSubscribed",{detail:{subscription:e}}):new CustomEvent("onAkeebaBackupWebPushNotSubscribed"),s.dispatchEvent(r)}).catch(e=>{if(r.appVersion.includes("Safari"))return console.error("[Web Push] Safari does not yet support Web Push (even if it is enabled as an experimental feature)"),void this.disableInterface();console.error("[Web Push] Cannot get push subscription status",e)})}onSubscribeClick(e){var r;e.target.classList.add("disabled"),this.askPermission().then(e=>this.subscribeUserToPush()).then(e=>null===e?null:(r=e,this.saveUserSubscription(e))).then(()=>{e.target.classList.remove("disabled");const o=new CustomEvent("onAkeebaBackupWebPushSubscribed",{detail:{subscription:r}});s.dispatchEvent(o)}).catch(s=>{e.target.classList.remove("disabled"),Joomla.renderMessages({error:[s.message]})})}onUnsubscribeClick(e){const r=this,o=e.target;this.registerServiceWorker().then(e=>{o.classList.add("disabled"),e.pushManager.getSubscription().then(e=>{e.unsubscribe().then(t=>{if(!t)return o.classList.remove("disabled"),e;!function(e){console.log("[Web Push] About to send the user unsubscription information to the backend.");const t=r.options.unsubscribeUri;if(!t)return console.log(r.options),console.error("[Web Push] The backend provided no unsubscription registration URL. Cannot proceed."),null;const n=JSON.stringify(e),i=new FormData;i.append("subscription",n),fetch(t,{method:"POST",headers:{"X-CSRF-Token":Joomla.getOptions("csrf.token")},body:i}).then(e=>{if(!e.ok)throw console.error(`[Web Push] Server returned HTTP error ${e.status}. Cannot proceed.`),new Error(`Server returned HTTP error ${e.status}.`);return e.json()}).then(r=>{if(!r||!r.success)throw console.error(`[Web Push] Server returned invalid data: ${r}. Cannot proceed.`),new Error("Bad response from server.");o.classList.remove("disabled");const t=new CustomEvent("onAkeebaBackupWebPushNotSubscribed",{detail:{subscription:e}});s.dispatchEvent(t)}).catch(e=>{o.classList.remove("disabled"),Joomla.renderMessages({error:[e.message]})})}(e)})}).catch(e=>{o.classList.remove("disabled"),Joomla.renderMessages({error:[e.message]})})})}init(){console.debug("[Web Push] Initialising"),this.options.subscribeButton||console.warn("[Web Push] The backend provided no element to trigger the user subscription process. Abort.");const o=e.querySelector(this.options.subscribeButton);if(o)return"serviceWorker"in r&&"PushManager"in s?(s.addEventListener("onAkeebaBackupWebPushSubscribed",s=>{console.debug("[Web Push] The user is already subscribed.");const r=e.querySelector(this.options.unsubscribeButton);o&&o.classList.add("d-none","disabled"),r&&(r.classList.remove("d-none","disabled"),r.addEventListener("click",e=>{this.onUnsubscribeClick(e)}))}),s.addEventListener("onAkeebaBackupWebPushNotSubscribed",s=>{console.debug("[Web Push] The user is not yet subscribed.");const r=e.querySelector(this.options.unsubscribeButton);r&&r.classList.add("d-none","disabled"),o&&(o.classList.remove("d-none","disabled"),o.addEventListener("click",e=>{this.onSubscribeClick(e)}))}),this.registerServiceWorker().then(e=>{this.isUserSubscribed(e)}),this):(console.warn("[Web Push] The browser is incompatible with the Web Push standard."),void this.disableInterface());console.info("[Web Push] The element to trigger the user subscription process does not exist.")}}if(Joomla.getOptions("akeeba.webPush")??1){new o(Joomla.getOptions("com_akeebabackup.webPush")??{}).init()}})(document,window,navigator);
//# sourceMappingURL=WebPush.min.js.map