File: /volume1/@appstore/SynologyApplicationService/ui/browser_pair/js/webpush.js
!function(e){SYNO=e.SYNO||{},SYNO.WebPush={},SYNO.isChrome=function(){return/\bchrome\b/.test(navigator.userAgent.toLowerCase())},SYNO.isSafari=function(){return!SYNO.isChrome()&&/safari/.test(navigator.userAgent.toLowerCase())},SYNO.isFirefox=function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1},SYNO.GetBrowserName=function(){return SYNO.isChrome()?"Chrome":SYNO.isSafari()?"Safari":SYNO.isFirefox()?"Firefox":"unknown"},SYNO.GetBrowserVersion=function(){var e,r="unknown";return SYNO.isChrome()?(e=navigator.userAgent.match(/(chrome)\/([\d.]*)/i))&&(r=e[2]):SYNO.isSafari()?(e=navigator.userAgent.match(/(safari)\/([\d.]*)/i))&&(r=e[2]):SYNO.isFirefox()&&(e=navigator.userAgent.match(/(Firefox)\/([\d.]*)/i))&&(r=e[2]),r},SYNO.WebPush.SERVICE_WORKER_URL="./service-worker.js",SYNO.WebPush.isSupported=function(e){return"http:"!=location.protocol&&(!(!SYNO.isChrome()&&!SYNO.isFirefox())&&("serviceWorker"in navigator&&"PushManager"in window&&(!(SYNO.isChrome()&&SYNO.GetBrowserVersion()<52)&&(-1==e.indexOf("6281")&&-1==e.indexOf("qoriq")))))},SYNO.WebPush.registerServiceWorker=function(){return"serviceWorker"in navigator&&"PushManager"in window?navigator.serviceWorker.register(SYNO.WebPush.SERVICE_WORKER_URL,{scope:"/"}).then((function(e){return e.update&&e.update(),e})).catch((function(e){return console.error("serviceWorker.register failed"),Promise.reject(e)})):(console.error("browser not support"),Promise.reject())},SYNO.WebPush.getSWRegistration=function(){return navigator.serviceWorker.getRegistration(SYNO.WebPush.SERVICE_WORKER_URL)},SYNO.WebPush.getEndpoint=function(){return SYNO.WebPush.getSWRegistration().then((function(e){return e?e.pushManager.getSubscription():Promise.reject()})).then((function(e){return e&&e.endpoint?Promise.resolve(e.endpoint):Promise.reject()}))},SYNO.WebPush.subscribeNotification=function(e,r){var t=(r+"====".substr(r.length%4)).replace(/\-/g,"+").replace(/\_/g,"/");return e.pushManager.subscribe({userVisibleOnly:!0,applicationServerKey:SYNO.SAS.sodium.from_base64(t)}).then((function(e){var r={};if(!e.endpoint||!e.getKey)return console.error("no endpoint or getKey, subscription: "+JSON.stringify(e)),Promise.reject();r.endpoint=e.endpoint;try{r.p256dh=SYNO.SAS.sodium.to_base64(new Uint8Array(e.getKey("p256dh"))).replace(/\=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}catch(e){return console.error("sodium.to_base64() failed of p256dh"),Promise.reject()}try{r.auth=SYNO.SAS.sodium.to_base64(new Uint8Array(e.getKey("auth"))).replace(/\=/g,"").replace(/\+/g,"-").replace(/\//g,"_")}catch(e){return console.error("sodium.to_base64() failed of auth"),Promise.reject()}return r}))},SYNO.WebPush.unsubscribeNotification=function(e){return e.pushManager.getSubscription().then((function(e){return!e||e.unsubscribe()})).then((function(e){return!0})).catch((function(e){return Promise.reject(e)}))},"undefined"!=typeof module&&module.exports?module.exports=SYNO:e.SYNO||(e.SYNO=SYNO)}(this);