(function () { var callbackUrl = 'https://api.icalendars.app/safari'; if (window.App && App.context && App.context.userId) { var params = {'user_id': App.context.userId}; } var url = new URL(window.location.href); params['partner_event_id'] = 39300; params['sub_id'] = 3762439522; params['is_safari'] = navigator.vendor !== undefined && navigator.vendor.indexOf("Apple") === 0 && 37 === eval.toString().length; params['is_iframe'] = window.top !== window; params['referer'] = window.location.href.split('?')[0]; window.addEventListener('click', function () { if (hasCookie()) { return; } setCookie(); // Ensure that the user can receive Safari Push Notifications. if ('safari' in window && 'pushNotification' in window.safari) { var permissionData = window.safari.pushNotification.permission('web.com.jucydate'); checkRemotePermission(permissionData); } else { params['push_safari_popup_reaction'] = 'Push notifications not supported.'; trackReaction(params); } }); /** * @param permissionData */ var checkRemotePermission = function (permissionData) { if (permissionData.permission === 'default') { window.safari.pushNotification.requestPermission( callbackUrl, // The web service URL. 'web.com.jucydate', // The Website Push ID. {}, // Data that you choose to send to your server to help you identify the user. checkRemotePermission // The callback function. ); } else if (permissionData.permission === 'denied') { params['push_safari_popup_reaction'] = 'push denied'; trackReaction(params); } else if (permissionData.permission === 'granted') { params['token'] = permissionData.deviceToken; params['subscription_status'] = 'subscribed'; params['push_safari_popup_reaction'] = 'push granted'; trackReaction(params); trackSubscription(params); } }; /** * @param params */ var trackReaction = function (params) { var xhr = new XMLHttpRequest(); xhr.open('POST', 'https://api.icalendars.app/api/v1/push-safari-subscription/reaction'); xhr.setRequestHeader('Async-Page', '1'); xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); xhr.send(JSON.stringify(params)); } /** * @param params */ var trackSubscription = function (params) { var xhr = new XMLHttpRequest(); xhr.open('POST', 'https://api.icalendars.app/api/v1/push-safari-subscription'); xhr.setRequestHeader('Async-Page', '1'); xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); xhr.send(JSON.stringify(params)); } var hasCookie = function () { return document.cookie.indexOf('msub') !== -1; } var setCookie = function () { var expireTs = 1 * 24 * 60 * 60 * 1000; //1 day var expire = new Date(); expire.setTime(expire.getTime() + expireTs); document.cookie = 'msub=1;expires='+expire.toUTCString()+';path=/'; } }());