web-manager 2.1.22 → 2.1.28
Sign up to get free protection for your applications and to get access to all the features.
- package/index.js +64 -21
- package/lib/account.js +50 -41
- package/lib/dom.js +21 -16
- package/package.json +3 -3
package/index.js
CHANGED
@@ -240,6 +240,17 @@ function Manager() {
|
|
240
240
|
user.getIdToken(false)
|
241
241
|
.then(function(token) {
|
242
242
|
var done;
|
243
|
+
// fetch('https://us-central1-' + This.properties.options.libraries.firebase_app.config.projectId + '.cloudfunctions.net/bm_api', {
|
244
|
+
// method: 'POST',
|
245
|
+
// body: JSON.stringify({
|
246
|
+
// authenticationToken: token,
|
247
|
+
// command: 'signup-handler',
|
248
|
+
// payload: {
|
249
|
+
// newsletterSignUp: domLib.select('.auth-newsletter-input').getValue(),
|
250
|
+
// affiliateCode: This.storage().get('auth.affiliateCode', '')
|
251
|
+
// }
|
252
|
+
// }),
|
253
|
+
// })
|
243
254
|
fetch('https://us-central1-' + This.properties.options.libraries.firebase_app.config.projectId + '.cloudfunctions.net/bm_signUpHandler', {
|
244
255
|
method: 'POST',
|
245
256
|
body: JSON.stringify({
|
@@ -525,6 +536,7 @@ function Manager() {
|
|
525
536
|
libraries: {
|
526
537
|
firebase_app: {
|
527
538
|
enabled: true,
|
539
|
+
load: false,
|
528
540
|
config: {
|
529
541
|
apiKey: '',
|
530
542
|
authDomain: '',
|
@@ -536,13 +548,16 @@ function Manager() {
|
|
536
548
|
}
|
537
549
|
},
|
538
550
|
firebase_firestore: {
|
539
|
-
enabled: true
|
551
|
+
enabled: true,
|
552
|
+
load: false,
|
540
553
|
},
|
541
554
|
firebase_messaging: {
|
542
|
-
enabled: true
|
555
|
+
enabled: true,
|
556
|
+
load: false,
|
543
557
|
},
|
544
558
|
firebase_auth: {
|
545
559
|
enabled: true,
|
560
|
+
load: false,
|
546
561
|
},
|
547
562
|
lazysizes: {
|
548
563
|
enabled: true
|
@@ -1201,12 +1216,11 @@ function Manager() {
|
|
1201
1216
|
// if (typeof window.firebase !== 'undefined') {
|
1202
1217
|
// return resolve();
|
1203
1218
|
// }
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1219
|
+
var setting = options.libraries.firebase_app
|
1220
|
+
if (setting.enabled === true) {
|
1221
|
+
function _post() {
|
1207
1222
|
// This.log('Loaded Firebase.');
|
1208
|
-
window.
|
1209
|
-
window.app = firebase.initializeApp(options.libraries.firebase_app.config);
|
1223
|
+
window.app = firebase.initializeApp(setting.config);
|
1210
1224
|
|
1211
1225
|
Promise.all([
|
1212
1226
|
load_firebase_auth(This, options),
|
@@ -1215,8 +1229,19 @@ function Manager() {
|
|
1215
1229
|
])
|
1216
1230
|
.then(resolve)
|
1217
1231
|
.catch(reject);
|
1218
|
-
|
1219
|
-
|
1232
|
+
}
|
1233
|
+
if (setting.load) {
|
1234
|
+
setting.load()
|
1235
|
+
_post()
|
1236
|
+
} else {
|
1237
|
+
import('firebase/app')
|
1238
|
+
.then(function(mod) {
|
1239
|
+
window.firebase = mod.default;
|
1240
|
+
_post()
|
1241
|
+
})
|
1242
|
+
.catch(reject);
|
1243
|
+
}
|
1244
|
+
return resolve()
|
1220
1245
|
} else {
|
1221
1246
|
return resolve();
|
1222
1247
|
}
|
@@ -1229,10 +1254,16 @@ function Manager() {
|
|
1229
1254
|
// if (typeof utilities.get(window, 'firebase.auth', undefined) !== 'undefined') {
|
1230
1255
|
// return resolve();
|
1231
1256
|
// }
|
1232
|
-
|
1233
|
-
|
1234
|
-
.
|
1235
|
-
|
1257
|
+
var setting = options.libraries.firebase_auth;
|
1258
|
+
if (setting.enabled === true) {
|
1259
|
+
if (setting.load) {
|
1260
|
+
setting.load()
|
1261
|
+
resolve()
|
1262
|
+
} else {
|
1263
|
+
import('firebase/auth')
|
1264
|
+
.then(resolve)
|
1265
|
+
.catch(reject);
|
1266
|
+
}
|
1236
1267
|
} else {
|
1237
1268
|
return resolve();
|
1238
1269
|
}
|
@@ -1246,10 +1277,16 @@ function Manager() {
|
|
1246
1277
|
// if (typeof utilities.get(window, 'firebase.firestore', undefined) !== 'undefined') {
|
1247
1278
|
// return resolve();
|
1248
1279
|
// }
|
1249
|
-
|
1250
|
-
|
1251
|
-
.
|
1252
|
-
|
1280
|
+
var setting = options.libraries.firebase_firestore;
|
1281
|
+
if (setting.enabled === true) {
|
1282
|
+
if (setting.load) {
|
1283
|
+
setting.load()
|
1284
|
+
resolve()
|
1285
|
+
} else {
|
1286
|
+
import('firebase/firestore')
|
1287
|
+
.then(resolve)
|
1288
|
+
.catch(reject);
|
1289
|
+
}
|
1253
1290
|
} else {
|
1254
1291
|
return resolve();
|
1255
1292
|
}
|
@@ -1261,10 +1298,16 @@ function Manager() {
|
|
1261
1298
|
// if (typeof utilities.get(window, 'firebase.messaging', undefined) !== 'undefined') {
|
1262
1299
|
// return resolve();
|
1263
1300
|
// }
|
1264
|
-
|
1265
|
-
|
1266
|
-
.
|
1267
|
-
|
1301
|
+
var setting = options.libraries.firebase_messaging;
|
1302
|
+
if (setting.enabled === true) {
|
1303
|
+
if (setting.load) {
|
1304
|
+
setting.load()
|
1305
|
+
resolve()
|
1306
|
+
} else {
|
1307
|
+
import('firebase/messaging')
|
1308
|
+
.then(resolve)
|
1309
|
+
.catch(reject);
|
1310
|
+
}
|
1268
1311
|
} else {
|
1269
1312
|
return resolve();
|
1270
1313
|
}
|
package/lib/account.js
CHANGED
@@ -158,14 +158,14 @@ Account.prototype.resolve = function (account, options) {
|
|
158
158
|
firebase.firestore().doc('users/' + currentUser.uid)
|
159
159
|
.get()
|
160
160
|
.then(function (doc) {
|
161
|
-
return resolve(_resolveAccount(
|
161
|
+
return resolve(self._resolveAccount(currentUser, doc.data(), options));
|
162
162
|
})
|
163
163
|
.catch(reject)
|
164
164
|
} else {
|
165
165
|
if (!currentUser) {
|
166
166
|
return reject(new Error('No currently authenticated user'))
|
167
167
|
}
|
168
|
-
return resolve(_resolveAccount(
|
168
|
+
return resolve(self._resolveAccount(currentUser, account, options));
|
169
169
|
}
|
170
170
|
});
|
171
171
|
}
|
@@ -190,7 +190,8 @@ function getMonth(date) {
|
|
190
190
|
return monthNames[date.getMonth()];
|
191
191
|
}
|
192
192
|
|
193
|
-
function
|
193
|
+
Account.prototype._resolveAccount = function (currentUser, account, options) {
|
194
|
+
var self = this;
|
194
195
|
account = account || {};
|
195
196
|
options = options || {};
|
196
197
|
|
@@ -224,49 +225,17 @@ function _resolveAccount(self, currentUser, account, options) {
|
|
224
225
|
|
225
226
|
var planExpireDate = new Date(account.plan.expires.timestamp);
|
226
227
|
var now = new Date();
|
227
|
-
var daysTillExpire = Math.floor((
|
228
|
+
var daysTillExpire = Math.floor((planExpireDate - now) / 86400000);
|
228
229
|
let difference = (planExpireDate.getTime() - now.getTime())/(24*3600*1000);
|
229
230
|
var startDate = new Date(account.plan.payment.startDate.timestamp);
|
231
|
+
var planIsActive = difference > -1 && account.plan.id !== defaultPlanId;
|
230
232
|
|
231
|
-
|
232
|
-
// var apiLinkURL = isDevelopment ? 'http://localhost:5000/discord-link' : 'https://api.{{ site.brand.name }}.com/discord-link';
|
233
|
-
// var apiUnlinkURL = isDevelopment ? 'http://localhost:5000/discord-unlink' : 'https://api.{{ site.brand.name }}.com/discord-unlink';
|
234
|
-
var cancelURL = isDevelopment ? 'http://localhost:4001/cancel/' : 'https://itwcreativeworks.com/portal/account/manage/';
|
235
|
-
|
236
|
-
var billingSubscribeBtn = dom.select('.auth-billing-subscribe-btn');
|
237
|
-
var billingUpdateBtn = dom.select('.auth-billing-update-btn');
|
238
|
-
var billingPlanId = dom.select('.auth-billing-plan-id-element');
|
239
|
-
var billingFrequencyEl = dom.select('.auth-billing-frequency-element');
|
240
|
-
var billingStartDateEl = dom.select('.auth-billing-start-date-element');
|
241
|
-
var billingExpirationDateEl = dom.select('.auth-billing-expiration-date-element');
|
242
|
-
var updateURL = new URL(cancelURL);
|
243
|
-
var currentURL = new URL(window.location.href);
|
244
|
-
|
245
|
-
billingSubscribeBtn.setAttribute('hidden', true);
|
246
|
-
billingUpdateBtn.setAttribute('hidden', true);
|
247
|
-
|
248
|
-
if (difference > -1 && account.plan.id !== defaultPlanId) {
|
233
|
+
if (planIsActive) {
|
249
234
|
account.plan.id = account.plan.id;
|
250
|
-
updateURL.searchParams.set('appName', utilities.get(self.Manager, 'properties.global.brand.name', 'Unknown'));
|
251
|
-
updateURL.searchParams.set('supportUrl', currentURL.origin + '/support');
|
252
|
-
updateURL.searchParams.set('supportEmail', utilities.get(self.Manager, 'properties.contact.emailSupport', 'unknown@email.com'));
|
253
|
-
updateURL.searchParams.set('userEmail', currentUser.email);
|
254
|
-
updateURL.searchParams.set('userId', currentUser.uid);
|
255
|
-
updateURL.searchParams.set('orderId', account.plan.payment.orderId);
|
256
|
-
updateURL.searchParams.set('resourceId', account.plan.payment.resourceId);
|
257
|
-
billingUpdateBtn.removeAttribute('hidden').setAttribute('href', updateURL.toString());
|
258
235
|
} else {
|
259
236
|
account.plan.id = defaultPlanId;
|
260
|
-
billingSubscribeBtn.removeAttribute('hidden');
|
261
237
|
}
|
262
238
|
|
263
|
-
billingPlanId.setInnerHTML(uppercase(account.plan.id));
|
264
|
-
billingFrequencyEl.setInnerHTML(account.plan.id !== defaultPlanId ? ' (billed ' + uppercase(account.plan.payment.frequency) + ')' : '');
|
265
|
-
billingStartDateEl.setInnerHTML(account.plan.id !== defaultPlanId ? ' - Purchased ' + getMonth(startDate) + ' ' + startDate.getDate() + ', ' + startDate.getFullYear() : '');
|
266
|
-
billingExpirationDateEl.setInnerHTML(account.plan.id !== defaultPlanId && daysTillExpire < 366
|
267
|
-
? '<i class="fas fa-exclamation-triangle mr-1"></i> Expires in ' + daysTillExpire + ' days '
|
268
|
-
: '');
|
269
|
-
|
270
239
|
// Resolve oAuth2
|
271
240
|
account.oauth2 = account.oauth2 || {};
|
272
241
|
account.oauth2.discord = account.oauth2.discord || {};
|
@@ -280,10 +249,50 @@ function _resolveAccount(self, currentUser, account, options) {
|
|
280
249
|
account.roles.vip = account.roles.vip === true || account.roles.vip === 'true';
|
281
250
|
account.roles.promoExempt = account.roles.promoExempt === true || account.roles.promoExempt === 'true';
|
282
251
|
|
283
|
-
self.properties = account;
|
284
|
-
|
285
252
|
// Set UI elements
|
286
|
-
|
253
|
+
try {
|
254
|
+
var isDevelopment = utilities.get(self.Manager, 'properties.meta.environment', '') === 'development';
|
255
|
+
// var apiLinkURL = isDevelopment ? 'http://localhost:5000/discord-link' : 'https://api.{{ site.brand.name }}.com/discord-link';
|
256
|
+
// var apiUnlinkURL = isDevelopment ? 'http://localhost:5000/discord-unlink' : 'https://api.{{ site.brand.name }}.com/discord-unlink';
|
257
|
+
var cancelURL = isDevelopment ? 'http://localhost:4001/cancel/' : 'https://itwcreativeworks.com/portal/account/manage/';
|
258
|
+
|
259
|
+
var billingSubscribeBtn = dom.select('.auth-billing-subscribe-btn');
|
260
|
+
var billingUpdateBtn = dom.select('.auth-billing-update-btn');
|
261
|
+
var billingPlanId = dom.select('.auth-billing-plan-id-element');
|
262
|
+
var billingFrequencyEl = dom.select('.auth-billing-frequency-element');
|
263
|
+
var billingStartDateEl = dom.select('.auth-billing-start-date-element');
|
264
|
+
var billingExpirationDateEl = dom.select('.auth-billing-expiration-date-element');
|
265
|
+
var updateURL = new URL(cancelURL);
|
266
|
+
var currentURL = new URL(window.location.href);
|
267
|
+
|
268
|
+
billingSubscribeBtn.setAttribute('hidden', true);
|
269
|
+
billingUpdateBtn.setAttribute('hidden', true);
|
270
|
+
|
271
|
+
if (planIsActive) {
|
272
|
+
updateURL.searchParams.set('appName', utilities.get(self.Manager, 'properties.global.brand.name', 'Unknown'));
|
273
|
+
updateURL.searchParams.set('supportUrl', currentURL.origin + '/support');
|
274
|
+
updateURL.searchParams.set('supportEmail', utilities.get(self.Manager, 'properties.contact.emailSupport', 'unknown@email.com'));
|
275
|
+
updateURL.searchParams.set('userEmail', currentUser.email);
|
276
|
+
updateURL.searchParams.set('userId', currentUser.uid);
|
277
|
+
updateURL.searchParams.set('orderId', account.plan.payment.orderId);
|
278
|
+
updateURL.searchParams.set('resourceId', account.plan.payment.resourceId);
|
279
|
+
billingUpdateBtn.removeAttribute('hidden').setAttribute('href', updateURL.toString());
|
280
|
+
} else {
|
281
|
+
billingSubscribeBtn.removeAttribute('hidden');
|
282
|
+
}
|
283
|
+
|
284
|
+
billingPlanId.setInnerHTML(uppercase(account.plan.id));
|
285
|
+
billingFrequencyEl.setInnerHTML(account.plan.id !== defaultPlanId ? ' (billed ' + uppercase(account.plan.payment.frequency) + ')' : '');
|
286
|
+
billingStartDateEl.setInnerHTML(account.plan.id !== defaultPlanId ? ' - Purchased ' + getMonth(startDate) + ' ' + startDate.getDate() + ', ' + startDate.getFullYear() : '');
|
287
|
+
billingExpirationDateEl.setInnerHTML(account.plan.id !== defaultPlanId && daysTillExpire < 366
|
288
|
+
? '<i class="fas fa-exclamation-triangle mr-1"></i> Expires in ' + daysTillExpire + ' days '
|
289
|
+
: '');
|
290
|
+
|
291
|
+
_setAuthItem('.auth-apikey-element', utilities.get(account, 'api.privateKey', 'n/a'))
|
292
|
+
} catch (e) {
|
293
|
+
console.error('Unable to set DOM elements', e);
|
294
|
+
}
|
295
|
+
self.properties = account;
|
287
296
|
|
288
297
|
return self.properties;
|
289
298
|
}
|
package/lib/dom.js
CHANGED
@@ -250,22 +250,27 @@ Dom.prototype.exists = function() {
|
|
250
250
|
}
|
251
251
|
|
252
252
|
Dom.loadScript = function(options, callback) {
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
253
|
+
return new Promise(function(resolve, reject) {
|
254
|
+
options = options || {};
|
255
|
+
options.async = (typeof options.async === 'undefined') ? false : options.async;
|
256
|
+
options.crossorigin = (typeof options.crossorigin === 'undefined') ? false : options.crossorigin;
|
257
|
+
var s = document.createElement('script');
|
258
|
+
s.src = options.src;
|
259
|
+
s.async = options.async;
|
260
|
+
if (options.crossorigin) {
|
261
|
+
s.setAttribute('crossorigin','*');
|
262
|
+
}
|
263
|
+
s.onload = function() {
|
264
|
+
if (callback) { callback(); }
|
265
|
+
return resolve();
|
266
|
+
};
|
267
|
+
s.onerror = function() {
|
268
|
+
var error = new Error('Failed to load script ' + options.src);
|
269
|
+
if (callback) { callback(error); }
|
270
|
+
return reject(error);
|
271
|
+
};
|
272
|
+
document.head.appendChild(s);
|
273
|
+
});
|
269
274
|
}
|
270
275
|
|
271
276
|
Dom.select = function(selector, options) {
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "web-manager",
|
3
|
-
"version": "2.1.
|
3
|
+
"version": "2.1.28",
|
4
4
|
"description": "Easily access important variables such as the query string, current domain, and current page in a single object.",
|
5
5
|
"main": "index.js",
|
6
6
|
"scripts": {
|
@@ -23,9 +23,9 @@
|
|
23
23
|
},
|
24
24
|
"homepage": "https://itwcreativeworks.com",
|
25
25
|
"dependencies": {
|
26
|
-
"@sentry/browser": "^6.
|
26
|
+
"@sentry/browser": "^6.15.0",
|
27
27
|
"cookieconsent": "^3.1.1",
|
28
28
|
"firebase": "^8.10.0",
|
29
29
|
"lazysizes": "^5.3.2"
|
30
30
|
}
|
31
|
-
}
|
31
|
+
}
|