web-manager 3.2.0 → 3.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +67 -11
- package/package.json +1 -1
package/index.js
CHANGED
@@ -172,14 +172,29 @@ function Manager() {
|
|
172
172
|
});
|
173
173
|
|
174
174
|
// Mouse leave event
|
175
|
-
document.addEventListener('mouseleave', function() {
|
175
|
+
document.addEventListener('mouseleave', function () {
|
176
176
|
showExitPopup(self);
|
177
177
|
});
|
178
178
|
|
179
179
|
// Window blur event
|
180
|
-
window.addEventListener('blur', function() {
|
180
|
+
window.addEventListener('blur', function () {
|
181
181
|
showExitPopup(self);
|
182
182
|
});
|
183
|
+
|
184
|
+
// Re-focus events
|
185
|
+
window.addEventListener('focus', function () {
|
186
|
+
refreshNewVersion(self);
|
187
|
+
});
|
188
|
+
window.addEventListener('online', function () {
|
189
|
+
refreshNewVersion(self);
|
190
|
+
});
|
191
|
+
setInterval(function () {
|
192
|
+
refreshNewVersion(self);
|
193
|
+
}, self.properties.meta.environment === 'development'
|
194
|
+
? 1000
|
195
|
+
: (1000 * 60 * 60 * 24 * 7)
|
196
|
+
);
|
197
|
+
|
183
198
|
}
|
184
199
|
|
185
200
|
function _authStateHandler(self, user) {
|
@@ -415,7 +430,7 @@ function Manager() {
|
|
415
430
|
message: 'Get 15% off your purchase of our <strong>Premium plans</strong>. <br><br> Get access to all features and unlimited usage.',
|
416
431
|
okButton: {
|
417
432
|
text: 'Claim 15% Discount',
|
418
|
-
link: '/pricing?utm_source=
|
433
|
+
link: '/pricing?utm_source=exit-popup&utm_medium=popup&utm_campaign={pathname}',
|
419
434
|
},
|
420
435
|
},
|
421
436
|
},
|
@@ -545,8 +560,11 @@ function Manager() {
|
|
545
560
|
var pagePathname = window.location.pathname;
|
546
561
|
var redirect = false;
|
547
562
|
|
548
|
-
|
549
|
-
|
563
|
+
var previousUTMTimestamp = new Date(store.get('utm.timestamp', 0));
|
564
|
+
var UTMDifferenceInHours = (new Date() - previousUTMTimestamp) / 36e5;
|
565
|
+
|
566
|
+
self.properties.page.queryString.forEach(function (value, key) {
|
567
|
+
if (key.startsWith('utm_') && UTMDifferenceInHours > 72) {
|
550
568
|
store.set('utm.tags.' + key, value);
|
551
569
|
store.set('utm.timestamp', new Date().toISOString());
|
552
570
|
}
|
@@ -1082,17 +1100,19 @@ function Manager() {
|
|
1082
1100
|
function showExitPopup(self) {
|
1083
1101
|
var exitPopupSettings = self.properties.options.exitPopup;
|
1084
1102
|
|
1085
|
-
if (!exitPopupSettings.enabled)
|
1103
|
+
if (!exitPopupSettings.enabled) {
|
1104
|
+
return;
|
1105
|
+
};
|
1086
1106
|
|
1087
1107
|
var lastTriggered = new Date(storage.get('exitPopup.lastTriggered', 0));
|
1088
1108
|
var now = new Date();
|
1089
1109
|
var diff = now - lastTriggered;
|
1090
1110
|
|
1091
|
-
if (diff < exitPopupSettings.config.timeout)
|
1111
|
+
if (diff < exitPopupSettings.config.timeout) {
|
1112
|
+
return;
|
1113
|
+
};
|
1092
1114
|
|
1093
1115
|
showBootstrapModal(exitPopupSettings);
|
1094
|
-
|
1095
|
-
storage.set('exitPopup.lastTriggered', now.toISOString());
|
1096
1116
|
}
|
1097
1117
|
|
1098
1118
|
function showBootstrapModal(exitPopupSettings) {
|
@@ -1100,7 +1120,9 @@ function Manager() {
|
|
1100
1120
|
? exitPopupSettings.config.handler()
|
1101
1121
|
: true;
|
1102
1122
|
|
1103
|
-
if (!proceed) {
|
1123
|
+
if (!proceed) {
|
1124
|
+
return;
|
1125
|
+
}
|
1104
1126
|
|
1105
1127
|
var $el = document.getElementById('modal-exit-popup');
|
1106
1128
|
try {
|
@@ -1113,15 +1135,49 @@ function Manager() {
|
|
1113
1135
|
var $okButton = $el.querySelector('.modal-footer .btn-primary');
|
1114
1136
|
var config = exitPopupSettings.config;
|
1115
1137
|
|
1138
|
+
var link = config.okButton.link
|
1139
|
+
.replace(/{pathname}/ig, window.location.pathname)
|
1140
|
+
|
1116
1141
|
$title.innerHTML = config.title;
|
1117
1142
|
$message.innerHTML = config.message;
|
1118
1143
|
$okButton.innerHTML = config.okButton.text;
|
1119
|
-
$okButton.setAttribute('href',
|
1144
|
+
$okButton.setAttribute('href', link);
|
1145
|
+
|
1146
|
+
storage.set('exitPopup.lastTriggered', new Date().toISOString());
|
1120
1147
|
} catch (e) {
|
1121
1148
|
console.warn(e);
|
1122
1149
|
}
|
1123
1150
|
}
|
1124
1151
|
|
1152
|
+
function refreshNewVersion(self) {
|
1153
|
+
console.log('refreshNewVersion()');
|
1154
|
+
|
1155
|
+
fetch('/@output/build/build.json' + '?cb=' + new Date().getTime())
|
1156
|
+
.then(function (res) {
|
1157
|
+
if (res.ok) {
|
1158
|
+
return res.json();
|
1159
|
+
} else {
|
1160
|
+
throw new Error('Bad response');
|
1161
|
+
}
|
1162
|
+
})
|
1163
|
+
.then(function (data) {
|
1164
|
+
var buildTime = new Date(data['npm-build'].timestamp_utc);
|
1165
|
+
var startTime = self.properties.page.startTime;
|
1166
|
+
|
1167
|
+
if (buildTime > startTime) {
|
1168
|
+
// console.log('refreshNewVersion(): Refreshing...');
|
1169
|
+
|
1170
|
+
window.onbeforeunload = function () {
|
1171
|
+
return undefined;
|
1172
|
+
}
|
1173
|
+
window.location.reload(true);
|
1174
|
+
}
|
1175
|
+
})
|
1176
|
+
.catch(function (e) {
|
1177
|
+
console.error(e);
|
1178
|
+
})
|
1179
|
+
}
|
1180
|
+
|
1125
1181
|
/*
|
1126
1182
|
EXTERNAL LIBS
|
1127
1183
|
*/
|
package/package.json
CHANGED