web-manager 3.2.38 → 3.2.40

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. package/index.js +38 -14
  2. package/lib/account.js +43 -5
  3. package/package.json +2 -2
package/index.js CHANGED
@@ -707,14 +707,14 @@ function Manager() {
707
707
  Manager.prototype.auth = function() {
708
708
  var self = this;
709
709
  var firebaseActive = typeof firebase !== 'undefined';
710
- var erel = '.auth-error-message-element';
710
+ var $error = select('.auth-error-message-element');
711
711
 
712
712
  function _displayError(msg) {
713
713
  console.error(msg);
714
- select(erel).show().setInnerHTML(msg);
714
+ $error.show().setInnerHTML(msg);
715
715
  }
716
716
  function _preDisplayError() {
717
- select(erel).hide().setInnerHTML('');
717
+ $error.hide().setInnerHTML('');
718
718
  }
719
719
 
720
720
  function setAuthButtonDisabled(button, status) {
@@ -727,15 +727,33 @@ function Manager() {
727
727
  }
728
728
  }
729
729
 
730
- function resolveAuthInput(existing, mode, input) {
731
- var authSelector = '.auth-';
732
- var inputSelector = authSelector + input + '-input';
733
- var formSelector = authSelector + mode + '-form ';
734
- var result = existing || select(formSelector + inputSelector).getValue() || select(inputSelector).getValue();
730
+ function selectAuthInput(mode, input) {
731
+ var prefix = '.auth-';
732
+ var inputSelector = prefix + input + '-input';
733
+ var formSelector = prefix + mode + '-form ';
734
+ var formInput = select(formSelector + inputSelector);
735
+ var input = select(inputSelector);
736
+
737
+ return formInput.exists() ? formInput : input;
738
+ }
739
+
740
+ function resolveAuthInputValue(existing, mode, input) {
741
+ var result = existing || selectAuthInput(mode, input).getValue();
735
742
 
736
743
  return input === 'email' ? result.trim().toLowerCase() : result;
737
744
  }
738
745
 
746
+ function uxHandler(email, password, passwordConfirm, mode) {
747
+ if (!email) {
748
+ selectAuthInput(mode, 'email').get(0).focus();
749
+ } else {
750
+ selectAuthInput(mode, 'password').get(0).focus();
751
+ if (mode === 'signup') {
752
+ selectAuthInput(mode, 'password-confirm').get(0).focus();
753
+ }
754
+ }
755
+ }
756
+
739
757
  return {
740
758
  isAuthenticated: function () {
741
759
  return firebaseActive ? !!firebase.auth().currentUser : false;
@@ -778,11 +796,14 @@ function Manager() {
778
796
  // self.log('Signin attempt: ', method, email, password);
779
797
  if (method === 'email') {
780
798
  // email = (email || select('.auth-email-input').getValue()).trim().toLowerCase();
781
- email = resolveAuthInput(email, mode, 'email');
799
+ email = resolveAuthInputValue(email, mode, 'email');
782
800
  // password = password || select('.auth-password-input').getValue();
783
- password = resolveAuthInput(password, mode, 'password');
801
+ password = resolveAuthInputValue(password, mode, 'password');
784
802
  // console.log('Signin attempt: ', method, email, password);
785
803
 
804
+ // Handler
805
+ uxHandler(email, password, undefined, mode);
806
+
786
807
  // signinButtonDisabled(true);
787
808
  setAuthButtonDisabled(mode, true);
788
809
 
@@ -832,13 +853,16 @@ function Manager() {
832
853
 
833
854
  if (method === 'email') {
834
855
  // email = (email || select('.auth-email-input').getValue()).trim().toLowerCase();
835
- email = resolveAuthInput(email, mode, 'email');
856
+ email = resolveAuthInputValue(email, mode, 'email');
836
857
  // password = password || select('.auth-password-input').getValue();
837
- password = resolveAuthInput(password, mode, 'password');
858
+ password = resolveAuthInputValue(password, mode, 'password');
838
859
  // passwordConfirm = passwordConfirm || select('.auth-password-confirm-input').getValue();
839
- passwordConfirm = resolveAuthInput(passwordConfirm, mode, 'password-confirm');
860
+ passwordConfirm = resolveAuthInputValue(passwordConfirm, mode, 'password-confirm');
840
861
  // console.log('Signup attempt: ', method, email, password, passwordConfirm);
841
862
 
863
+ // Handler
864
+ uxHandler(email, password, passwordConfirm, mode);
865
+
842
866
  if (password === passwordConfirm) {
843
867
  // signupButtonDisabled(true);
844
868
  setAuthButtonDisabled(mode, true);
@@ -883,7 +907,7 @@ function Manager() {
883
907
  // self.log('forgot()');
884
908
  var mode = 'forgot';
885
909
  // email = email || select('.auth-email-input').getValue();
886
- email = resolveAuthInput(email, mode, 'email')
910
+ email = resolveAuthInputValue(email, mode, 'email')
887
911
 
888
912
  // forgotButtonDisabled(true);
889
913
  setAuthButtonDisabled(mode, true);
package/lib/account.js CHANGED
@@ -240,6 +240,9 @@ Account.prototype._resolveAccount = function (firebaseUser, account, options) {
240
240
  console.log('++++++account', JSON.stringify(account, null, 2));
241
241
  console.log('++++++options', JSON.stringify(options, null, 2));
242
242
 
243
+ // @@@DEVELOPER
244
+ // account.plan = {};
245
+
243
246
  // Resolve auth
244
247
  account.auth = account.auth || {};
245
248
  account.auth.uid = account.auth.uid || firebaseUser.uid || null;
@@ -262,6 +265,17 @@ Account.prototype._resolveAccount = function (firebaseUser, account, options) {
262
265
  account.plan.trial.expires.timestamp = new Date(account.plan.trial.expires.timestamp || 0).toISOString()
263
266
  account.plan.trial.expires.timestampUNIX = Math.round(new Date(account.plan.trial.expires.timestamp || 0).getTime() / 1000);
264
267
 
268
+ // @@@DEVELOPER
269
+ // account.plan.id = 'basic';
270
+ // account.plan.trial = {
271
+ // activated: false,
272
+ // expires: {
273
+ // timestamp: new Date('2024-04-23T00:07:29.183Z').toISOString(),
274
+ // timestampUNIX: Math.round(new Date('2024-04-23T00:07:29.183Z').getTime() / 1000),
275
+ // }
276
+ // }
277
+ // account.plan.status = 'suspended';
278
+
265
279
  account.plan.limits = account.plan.limits || {};
266
280
  // account.plan.devices = account.plan.devices || 1;
267
281
 
@@ -324,6 +338,8 @@ Account.prototype._resolveAccount = function (firebaseUser, account, options) {
324
338
  account.plan.id = defaultPlanId;
325
339
  }
326
340
 
341
+ var isBasicPlan = account.plan.id === defaultPlanId;
342
+
327
343
  // Resolve oAuth2
328
344
  account.oauth2 = account.oauth2 || {};
329
345
  // account.oauth2.google = account.oauth2.google || {};
@@ -331,7 +347,6 @@ Account.prototype._resolveAccount = function (firebaseUser, account, options) {
331
347
 
332
348
  // Resolve roles
333
349
  account.roles = account.roles || {};
334
- // account.roles.betaTester = account.plan.id === defaultPlanId ? false : account.roles.betaTester === true || account.roles.betaTester === 'true';
335
350
  account.roles.betaTester = account.roles.betaTester === true || account.roles.betaTester === 'true';
336
351
  account.roles.developer = account.roles.developer === true || account.roles.developer === 'true';
337
352
  account.roles.admin = account.roles.admin === true || account.roles.admin === 'true';
@@ -397,9 +412,9 @@ Account.prototype._resolveAccount = function (firebaseUser, account, options) {
397
412
  account.personal.gender = account.personal.gender || '';
398
413
 
399
414
  account.personal.location = account.personal.location || {};
400
- account.personal.location.city = account.personal.location.city || '';
401
415
  account.personal.location.country = account.personal.location.country || '';
402
416
  account.personal.location.region = account.personal.location.region || '';
417
+ account.personal.location.city = account.personal.location.city || '';
403
418
 
404
419
  account.personal.name = account.personal.name || {};
405
420
  account.personal.name.first = account.personal.name.first || '';
@@ -418,6 +433,8 @@ Account.prototype._resolveAccount = function (firebaseUser, account, options) {
418
433
  var billingUpdateBtn = self.dom.select('.auth-billing-update-btn');
419
434
  var billingPlanId = self.dom.select('.auth-billing-plan-id-element');
420
435
  var billingFrequencyEl = self.dom.select('.auth-billing-frequency-element');
436
+ var billingStatusEl = self.dom.select('.auth-billing-status-element');
437
+ var billingStatusColorEl = self.dom.select('.auth-billing-status-color-element');
421
438
  var billingStartDateEl = self.dom.select('.auth-billing-start-date-element');
422
439
  var billingExpirationDateEl = self.dom.select('.auth-billing-expiration-date-element');
423
440
  var billingSuspendedMessageEl = self.dom.select('.auth-billing-suspended-message-element');
@@ -488,11 +505,32 @@ Account.prototype._resolveAccount = function (firebaseUser, account, options) {
488
505
  .setInnerHTML('<i class="fas fa-gift mr-1"></i> Your free trial expires in ' + daysTillTrialExpire + ' days');
489
506
  }
490
507
 
508
+ // Change the status to 'failed' if the plan is suspended because room temperature IQ people think 'suspended' means 'cancelled'
509
+ var visibleStatus = uppercase(account.plan.status === 'suspended' ? 'failed payment' : account.plan.status);
510
+ // If user is on trial, start date is trial exp date
511
+ var visibleStartDate = account.plan.trial.activated ? account.plan.trial.expires.timestamp : account.plan.payment.startDate.timestamp;
512
+ if (isBasicPlan) {
513
+ // Set as start of this month
514
+ visibleStartDate = new Date(now.getFullYear(), now.getMonth(), 1).toISOString();
515
+ }
516
+ var visibleFrequency = account.plan.payment.frequency === 'unknown' ? 'monthly' : account.plan.payment.frequency;
517
+
491
518
  // Update billing UI
492
519
  billingPlanId.setInnerHTML(splitDashesAndUppercase(account.plan.id));
493
- billingFrequencyEl.setInnerHTML(account.plan.id !== defaultPlanId ? ' (billed ' + uppercase(account.plan.payment.frequency) + ')' : '');
494
- billingStartDateEl.setInnerHTML(account.plan.id !== defaultPlanId ? ' - Purchased ' + getMonth(startDate) + ' ' + startDate.getDate() + ', ' + startDate.getFullYear() : '');
495
- billingExpirationDateEl.setInnerHTML(account.plan.id !== defaultPlanId && daysTillExpire < 366
520
+ billingFrequencyEl.setInnerHTML(visibleFrequency);
521
+ billingStatusEl.setInnerHTML(visibleStatus);
522
+ billingStatusColorEl
523
+ .removeClass('bg-soft-success').removeClass('bg-soft-danger').removeClass('bg-soft-warning')
524
+ .removeClass('text-success').removeClass('text-danger').removeClass('text-warning')
525
+ if (account.plan.status === 'active') {
526
+ billingStatusColorEl.addClass('bg-soft-success').addClass('text-success');
527
+ } else {
528
+ billingStatusColorEl.addClass('bg-soft-danger').addClass('text-danger');
529
+ }
530
+ billingStartDateEl.setInnerHTML(new Date(visibleStartDate).toLocaleString(undefined, {
531
+ weekday: 'long', year: 'numeric', month: 'long', day: 'numeric',
532
+ }));
533
+ billingExpirationDateEl.setInnerHTML(isBasicPlan && daysTillExpire < 366
496
534
  ? '<i class="fas fa-exclamation-triangle mr-1"></i> Expires in ' + daysTillExpire + ' days '
497
535
  : '');
498
536
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "web-manager",
3
- "version": "3.2.38",
3
+ "version": "3.2.40",
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": {
@@ -36,4 +36,4 @@
36
36
  "firebase": "^9.23.0",
37
37
  "lazysizes": "^5.3.2"
38
38
  }
39
- }
39
+ }