web-manager 2.1.24 → 2.1.29
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 +64 -21
- package/lib/account.js +62 -48
- package/lib/dom.js +2 -2
- package/package.json +2 -2
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
@@ -3,17 +3,21 @@
|
|
3
3
|
var dom;
|
4
4
|
var utilities;
|
5
5
|
|
6
|
-
function Account() {
|
6
|
+
function Account(init) {
|
7
7
|
var self = this;
|
8
|
+
init = init || {};
|
8
9
|
self.properties = {};
|
9
|
-
|
10
|
-
dom = self.Manager.dom();
|
11
|
-
utilities = self.Manager.utilities();
|
12
|
-
|
13
10
|
self.accountPageInitialized = false;
|
14
11
|
|
15
|
-
|
16
|
-
self.
|
12
|
+
try {
|
13
|
+
dom = init.dom || self.Manager.dom();
|
14
|
+
utilities = init.utilities || self.Manager.utilities();
|
15
|
+
|
16
|
+
if (new URL(window.location.href).pathname.includes('account')) {
|
17
|
+
self.initializeAccountPage();
|
18
|
+
}
|
19
|
+
} catch (e) {
|
20
|
+
console.error('Failed to initialize libraries');
|
17
21
|
}
|
18
22
|
|
19
23
|
// var pastDate = new Date(0);
|
@@ -158,14 +162,14 @@ Account.prototype.resolve = function (account, options) {
|
|
158
162
|
firebase.firestore().doc('users/' + currentUser.uid)
|
159
163
|
.get()
|
160
164
|
.then(function (doc) {
|
161
|
-
return resolve(_resolveAccount(
|
165
|
+
return resolve(self._resolveAccount(currentUser, doc.data(), options));
|
162
166
|
})
|
163
167
|
.catch(reject)
|
164
168
|
} else {
|
165
169
|
if (!currentUser) {
|
166
170
|
return reject(new Error('No currently authenticated user'))
|
167
171
|
}
|
168
|
-
return resolve(_resolveAccount(
|
172
|
+
return resolve(self._resolveAccount(currentUser, account, options));
|
169
173
|
}
|
170
174
|
});
|
171
175
|
}
|
@@ -190,7 +194,9 @@ function getMonth(date) {
|
|
190
194
|
return monthNames[date.getMonth()];
|
191
195
|
}
|
192
196
|
|
193
|
-
function
|
197
|
+
Account.prototype._resolveAccount = function (currentUser, account, options) {
|
198
|
+
var self = this;
|
199
|
+
currentUser = currentUser || {};
|
194
200
|
account = account || {};
|
195
201
|
options = options || {};
|
196
202
|
|
@@ -224,49 +230,17 @@ function _resolveAccount(self, currentUser, account, options) {
|
|
224
230
|
|
225
231
|
var planExpireDate = new Date(account.plan.expires.timestamp);
|
226
232
|
var now = new Date();
|
227
|
-
var daysTillExpire = Math.floor((
|
233
|
+
var daysTillExpire = Math.floor((planExpireDate - now) / 86400000);
|
228
234
|
let difference = (planExpireDate.getTime() - now.getTime())/(24*3600*1000);
|
229
235
|
var startDate = new Date(account.plan.payment.startDate.timestamp);
|
236
|
+
var planIsActive = difference > -1 && account.plan.id !== defaultPlanId;
|
230
237
|
|
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) {
|
238
|
+
if (planIsActive) {
|
249
239
|
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
240
|
} else {
|
259
241
|
account.plan.id = defaultPlanId;
|
260
|
-
billingSubscribeBtn.removeAttribute('hidden');
|
261
242
|
}
|
262
243
|
|
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
244
|
// Resolve oAuth2
|
271
245
|
account.oauth2 = account.oauth2 || {};
|
272
246
|
account.oauth2.discord = account.oauth2.discord || {};
|
@@ -280,10 +254,50 @@ function _resolveAccount(self, currentUser, account, options) {
|
|
280
254
|
account.roles.vip = account.roles.vip === true || account.roles.vip === 'true';
|
281
255
|
account.roles.promoExempt = account.roles.promoExempt === true || account.roles.promoExempt === 'true';
|
282
256
|
|
283
|
-
self.properties = account;
|
284
|
-
|
285
257
|
// Set UI elements
|
286
|
-
|
258
|
+
try {
|
259
|
+
var isDevelopment = utilities.get(self.Manager, 'properties.meta.environment', '') === 'development';
|
260
|
+
// var apiLinkURL = isDevelopment ? 'http://localhost:5000/discord-link' : 'https://api.{{ site.brand.name }}.com/discord-link';
|
261
|
+
// var apiUnlinkURL = isDevelopment ? 'http://localhost:5000/discord-unlink' : 'https://api.{{ site.brand.name }}.com/discord-unlink';
|
262
|
+
var cancelURL = isDevelopment ? 'http://localhost:4001/cancel/' : 'https://itwcreativeworks.com/portal/account/manage/';
|
263
|
+
|
264
|
+
var billingSubscribeBtn = dom.select('.auth-billing-subscribe-btn');
|
265
|
+
var billingUpdateBtn = dom.select('.auth-billing-update-btn');
|
266
|
+
var billingPlanId = dom.select('.auth-billing-plan-id-element');
|
267
|
+
var billingFrequencyEl = dom.select('.auth-billing-frequency-element');
|
268
|
+
var billingStartDateEl = dom.select('.auth-billing-start-date-element');
|
269
|
+
var billingExpirationDateEl = dom.select('.auth-billing-expiration-date-element');
|
270
|
+
var updateURL = new URL(cancelURL);
|
271
|
+
var currentURL = new URL(window.location.href);
|
272
|
+
|
273
|
+
billingSubscribeBtn.setAttribute('hidden', true);
|
274
|
+
billingUpdateBtn.setAttribute('hidden', true);
|
275
|
+
|
276
|
+
if (planIsActive) {
|
277
|
+
updateURL.searchParams.set('appName', utilities.get(self.Manager, 'properties.global.brand.name', 'Unknown'));
|
278
|
+
updateURL.searchParams.set('supportUrl', currentURL.origin + '/support');
|
279
|
+
updateURL.searchParams.set('supportEmail', utilities.get(self.Manager, 'properties.contact.emailSupport', 'unknown@email.com'));
|
280
|
+
updateURL.searchParams.set('userEmail', currentUser.email);
|
281
|
+
updateURL.searchParams.set('userId', currentUser.uid);
|
282
|
+
updateURL.searchParams.set('orderId', account.plan.payment.orderId);
|
283
|
+
updateURL.searchParams.set('resourceId', account.plan.payment.resourceId);
|
284
|
+
billingUpdateBtn.removeAttribute('hidden').setAttribute('href', updateURL.toString());
|
285
|
+
} else {
|
286
|
+
billingSubscribeBtn.removeAttribute('hidden');
|
287
|
+
}
|
288
|
+
|
289
|
+
billingPlanId.setInnerHTML(uppercase(account.plan.id));
|
290
|
+
billingFrequencyEl.setInnerHTML(account.plan.id !== defaultPlanId ? ' (billed ' + uppercase(account.plan.payment.frequency) + ')' : '');
|
291
|
+
billingStartDateEl.setInnerHTML(account.plan.id !== defaultPlanId ? ' - Purchased ' + getMonth(startDate) + ' ' + startDate.getDate() + ', ' + startDate.getFullYear() : '');
|
292
|
+
billingExpirationDateEl.setInnerHTML(account.plan.id !== defaultPlanId && daysTillExpire < 366
|
293
|
+
? '<i class="fas fa-exclamation-triangle mr-1"></i> Expires in ' + daysTillExpire + ' days '
|
294
|
+
: '');
|
295
|
+
|
296
|
+
_setAuthItem('.auth-apikey-element', utilities.get(account, 'api.privateKey', 'n/a'))
|
297
|
+
} catch (e) {
|
298
|
+
console.error('Unable to set DOM elements', e);
|
299
|
+
}
|
300
|
+
self.properties = account;
|
287
301
|
|
288
302
|
return self.properties;
|
289
303
|
}
|
package/lib/dom.js
CHANGED
@@ -261,12 +261,12 @@ Dom.loadScript = function(options, callback) {
|
|
261
261
|
s.setAttribute('crossorigin','*');
|
262
262
|
}
|
263
263
|
s.onload = function() {
|
264
|
-
callback();
|
264
|
+
if (callback) { callback(); }
|
265
265
|
return resolve();
|
266
266
|
};
|
267
267
|
s.onerror = function() {
|
268
268
|
var error = new Error('Failed to load script ' + options.src);
|
269
|
-
callback(error);
|
269
|
+
if (callback) { callback(error); }
|
270
270
|
return reject(error);
|
271
271
|
};
|
272
272
|
document.head.appendChild(s);
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "web-manager",
|
3
|
-
"version": "2.1.
|
3
|
+
"version": "2.1.29",
|
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": {
|
@@ -28,4 +28,4 @@
|
|
28
28
|
"firebase": "^8.10.0",
|
29
29
|
"lazysizes": "^5.3.2"
|
30
30
|
}
|
31
|
-
}
|
31
|
+
}
|