var endpoint;
var browserStr = navigator.userAgent.toLowerCase();
var browser='unknown';
if((browserStr.indexOf("opera") != -1) || (browserStr.indexOf('opr') != -1) ){
browser ='opera';
}else if(browserStr.indexOf("ubrowser") != -1 ) {
browser ='ucbrowser';
} else if(browserStr.indexOf("chrome") != -1 ){
browser ='chrome';
}else if(browserStr.indexOf("safari") != -1){
browser ='safari';
}else if(browserStr.indexOf("firefox") != -1 ) {
browser ='firefox';
}else if((browserStr.indexOf("msie") != -1 ) || (!!document.documentMode == true )) {
browser ='ie';
}else{
browser ='unknown';
}
function store_subscription(subscription){
if (typeof subscription == 'undefined') {
console.log("subecription denied/ignored");
return;
}
endpoint = subscription.endpoint;
var post = new XMLHttpRequest();
post.open('POST', '/register_subs.php');
endpointSections = endpoint.split('/');
subscriptionId = endpointSections[endpointSections.length - 1];
var curUrl = encodeURI(window.location.href);
var refUrl = encodeURI(document.referrer);
var jsn = subscription.toJSON(); //ref=> https://developer.mozilla.org/en-US/docs/Web/API/PushSubscription
var params = "endpoint=" + endpoint;
params += "&subscriptionId=" + subscriptionId;
params += "&browser=" + browser;
params += "&curUrl=" + curUrl;
params += "&refUrl=" + refUrl;
params += "&p256dh=" + jsn.keys.p256dh;
params += "&auth=" + jsn.keys.auth;
console.log("saved data: "+params);
post.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
post.send(params);
return;
}
function Unsubscribe() {
if(confirm("Are you sure to unsubscribe?")){
navigator.serviceWorker.getRegistration()
.then(function(registration) {
registration.unregister().then(function(e){
console.log('user unsubscribed', e);
});
});
return true;
}else{
return false;
}
}
function addShadow(){
$('html, body').css({overflow: 'hidden', height: '100%'});
var docHeight = $(document).height();
$("#overlay").height(docHeight).show();
if(browser =='opera'){
$("#overlay").css("padding-left","45%").css("padding-top","170px")
}
}
function removeShadow(){
$("#overlay").hide();
$('html, body').css({overflow: 'auto', height: 'auto'});
}
function setCookie(cookieName, value, expDays) {
var expDate = new Date();
expDate.setDate(expDate.getDate() + expDays);
var c_value = escape(value) + ((expDays == null) ? "" : "; expires=" + expDate.toUTCString());
document.cookie = cookieName + "=" + c_value+"; path=/";
}
navigator.serviceWorker.register('/service-worker.js')
.then(function(registration) {
if(registration.installing) {
console.log('Service worker installing');
} else if(registration.waiting) {
console.log('Waiting to respond the Service worker');
} else if(registration.active) {
console.log('Service worker active');
}
return registration.pushManager.getSubscription()
.then(function(subscription) {
//addShadow();
if(browser =='ucbrowser'){
// removeShadow();
}
return registration.pushManager.subscribe({ userVisibleOnly: true })
.then(function(subscription) {
console.log('subsciption : ',subscription);
//removeShadow();
endpoint = subscription.endpoint;
if(endpoint.length >50){
var jsn = subscription.toJSON();
setCookie('endpoint', endpoint, null);
setCookie('browser', browser, null);
setCookie('auth', jsn.keys.auth, null);
setCookie('p256dh', jsn.keys.p256dh, null);
}
return store_subscription(subscription);
})
.catch(function(e) {
if (Notification.permission === 'denied') {
console.warn('The user has blocked notifications.');
}else if(e.code == 0){
console.log("user closed/ignored the subscription request");
}else{
console.warn('Error during pushManager.subscribe()', e);
}
//removeShadow();
return e;
})
})
});