diff options
Diffstat (limited to 'StoneIsland/platforms/android/assets/www/js/lib/etc/push.js')
| -rwxr-xr-x | StoneIsland/platforms/android/assets/www/js/lib/etc/push.js | 83 |
1 files changed, 54 insertions, 29 deletions
diff --git a/StoneIsland/platforms/android/assets/www/js/lib/etc/push.js b/StoneIsland/platforms/android/assets/www/js/lib/etc/push.js index da63fdd1..082692ec 100755 --- a/StoneIsland/platforms/android/assets/www/js/lib/etc/push.js +++ b/StoneIsland/platforms/android/assets/www/js/lib/etc/push.js @@ -2,28 +2,38 @@ var push = (function(){ var push = { settings: {}, disabled: false } var pushPlugin push.init = function(){ - if (device.platform !== "ios") { + if (! ('device' in window) || (device.platform || "").toLowerCase() !== "ios") { + console.log("push disabled") push.disabled = true return } - pushPlugin = PushNotification.init({ - ios: { - alert: true, - badge: true, - sound: false, - clearBadge: true, - }, - }) - console.log("push init") - PushNotification.hasPermission(push.did_initialize) - pushPlugin.on('registration', push.got_registration) - pushPlugin.on('notification', push.got_push_notification) + window.FirebasePlugin.hasPermission(function(data){ + push.did_initialize() + }) + + window.FirebasePlugin.getToken(function(token) { + push.got_registration(token); + }, function(error) { + console.error(error); + }); + + window.FirebasePlugin.onTokenRefresh(function(token) { + // save this server-side and use it to push notifications to this device + push.got_registration(token); + }, function(error) { + console.error(error); + }); + + // PushNotification.hasPermission(push.did_initialize) } push.did_initialize = function(data) { + console.log(data) if (! data.isEnabled) { + console.log("push did not initialize") + window.FirebasePlugin.grantPermission() return } console.log("push did initialize") @@ -41,8 +51,8 @@ var push = (function(){ push.subscribe("store") } } - push.got_registration = function(data){ - var registrationId = data.registrationId + push.got_registration = function(token){ + var registrationId = token var oldRegistrationId = localStorage.getItem("yoox.registrationId") console.log(registrationId, oldRegistrationId) @@ -62,12 +72,12 @@ var push = (function(){ channel: channel, platform: device.platform, } - pushPlugin.subscribe(channel, function(){ + window.FirebasePlugin.subscribe(channel, function(){ console.log("subscribed to", channel) }) $.ajax({ method: "POST", - url: "https://stone.sup.land/_services/push/add", + url: push.url('add'), data: data, contentType: 'application/x-www-form-urlencoded; charset=UTF-8', success: function(){ @@ -88,40 +98,55 @@ var push = (function(){ } $.ajax({ method: "POST", - url: "https://stone.sup.land/_services/push/remove", + url: push.url('remove'), data: data, contentType: 'application/x-www-form-urlencoded; charset=UTF-8', success: function(){ + window.FirebasePlugin.unsubscribe(channel) console.log("unsubscribed from", channel) cb && cb() }, error: push.error, }) } + push.url = function(key){ + return sdk.cms() + '/_services/push/' + key + } push.got_push_notification = function(push_obj) { - // alert('We received this push notification: ' + JSON.stringify(push_obj)); + // console.log('We received this push notification: ' + JSON.stringify(push_obj)); + app.blog.refresh() + + push_obj.additionalData = push_obj.additionalData || {} + + var is_hub = true try { - var is_hub = JSON.stringify(push_obj || {}).match(/hub/i) - if (is_hub) { - app.intro.$alert.show().html("[ HUB UPDATED ]") - } - else { - auth.clear_cart() - app.intro.$alert.show().html("[ STORE UPDATED ]") - } + is_hub = JSON.stringify(push_obj || {}).match(/hub/i) } catch (e) { + } + + if (is_hub) { app.intro.$alert.show().html("[ HUB UPDATED ]") } + else if (! push_obj.additionalData.url) { + auth.clear_cart() + app.intro.$alert.show().html("[ STORE UPDATED ]") + } if (push_obj.additionalData.foreground === false) { // TODO: route the user to the uri in push_obj - pushPlugin.finish(function(){}, function(){}) + // pushPlugin.finish(function(){}, function(){}) + if (push_obj.additionalData.url) { + app.router.go(push_obj.additionalData.url) + } + } + else if (is_hub) { + app.router.go("hub") } else { - app.route("intro") + app.router.go("intro") } } push.error = function(e){ |
