1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
var push = (function(){
var push = { settings: {} }
var pushPlugin
push.init = function(){
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)
}
push.did_initialize = function(data) {
if (! data.isEnabled) {
return
}
console.log("push did initialize")
var hub_status = localStorage.getItem("yoox.push_hub")
var store_status = localStorage.getItem("yoox.push_store")
push.settings.requested = localStorage.getItem("yoox.push_requested") == "true"
push.settings.hub = hub_status == "true"
push.settings.store = store_status == "true"
if (! hub_status || hub_status == "true") {
push.subscribe("hub")
}
if (! store_status || store_status == "true") {
push.subscribe("store")
}
}
push.got_registration = function(data){
var registrationId = data.registrationId
var oldRegistrationId = localStorage.getItem("yoox.registrationId")
console.log(registrationId, oldRegistrationId)
if (registrationId !== oldRegistrationId || ! push.settings.requested) {
localStorage.setItem("yoox.registrationId", registrationId)
push.subscribe("hub", function(){
push.subscribe("store")
})
}
}
push.subscribe = function(channel, cb){
push.settings[channel] = true
localStorage.setItem("yoox.push_" + channel, "true")
var data = {
registrationId: localStorage.getItem("yoox.registrationId"),
channel: channel,
platform: device.platform,
}
pushPlugin.subscribe(channel, function(){
console.log("subscribed to", channel)
})
$.ajax({
method: "POST",
url: "https://stone.sup.land/_services/push/add",
data: data,
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
success: function(){
console.log("subscribed to", channel)
cb && cb()
},
error: push.error,
})
}
push.unsubscribe = function(channel, cb){
push.settings[channel] = false
localStorage.setItem("yoox.push_" + channel, "false")
var data = {
registrationId: localStorage.getItem("yoox.registrationId"),
channel: channel,
platform: device.platform,
}
$.ajax({
method: "POST",
url: "https://stone.sup.land/_services/push/remove",
data: data,
contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
success: function(){
console.log("unsubscribed from", channel)
cb && cb()
},
error: push.error,
})
}
push.got_push_notification = function(push_obj) {
// alert('We received this push notification: ' + JSON.stringify(push_obj));
app.blog.refresh()
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 ]")
}
}
catch (e) {
app.intro.$alert.show().html("[ HUB UPDATED ]")
}
if (push_obj.additionalData.foreground === false) {
// TODO: route the user to the uri in push_obj
pushPlugin.finish(function(){}, function(){})
}
else {
app.route("intro")
}
}
push.error = function(e){
console.log("push error")
}
return push
})()
|