From 16b5054ea297acc00536c0cfe5ef5951df515b25 Mon Sep 17 00:00:00 2001 From: Brendon Duncan Date: Tue, 5 Jun 2018 11:34:14 +1200 Subject: [PATCH] Now including app version is profile. --- src/js/models/profile.js | 20 ++++++++++++++++---- src/js/services/profileService.js | 2 +- src/js/services/storageService.js | 7 +++++-- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/js/models/profile.js b/src/js/models/profile.js index ac4b4828c..7690d1c2d 100644 --- a/src/js/models/profile.js +++ b/src/js/models/profile.js @@ -9,12 +9,12 @@ function Profile() { this.version = '1.0.0'; }; -Profile.create = function(opts) { - opts = opts || {}; +Profile.create = function(appVersion) { var x = new Profile(); + x.appVersion = appVersion; x.createdOn = Date.now(); - x.credentials = opts.credentials || []; + x.credentials = []; x.disclaimerAccepted = true; x.checked = {}; return x; @@ -23,6 +23,7 @@ Profile.create = function(opts) { Profile.fromObj = function(obj) { var x = new Profile(); + x.appVersion = obj.appVersion; x.createdOn = obj.createdOn; x.credentials = obj.credentials; x.disclaimerAccepted = obj.disclaimerAccepted; @@ -69,10 +70,12 @@ Profile.prototype.isDeviceChecked = function(ua) { Profile.prototype.merge = function(other) { var newCredentials = []; + var otherCredentialsLength = other.credentials.length; + var thisProfile = this; other.credentials.forEach(function(otherCredential) { var credentialExists = false; - this.credentials.forEach(function(thisCredential) { + thisProfile.credentials.forEach(function(thisCredential) { if (otherCredential.walletId === thisCredential.walletId) { credentialExists = true; } @@ -85,6 +88,15 @@ Profile.prototype.merge = function(other) { Array.prototype.push.apply(this.credentials, newCredentials); }; +/** + * It's a simple operation, but it means that all the profile logic stays + * in this file. + * @param {string} appVersion - ie "4.11.0" + */ +Profile.prototype.setAppVersion = function(appVersion) { + this.appVersion = appVersion; +} + Profile.prototype.setChecked = function(ua, walletId) { if (this.checkedUA != ua) { this.checkedUA = ua; diff --git a/src/js/services/profileService.js b/src/js/services/profileService.js index dac88169f..25f2a6852 100644 --- a/src/js/services/profileService.js +++ b/src/js/services/profileService.js @@ -706,7 +706,7 @@ angular.module('copayApp.services') configService.get(function(err) { if (err) $log.debug(err); - var p = Profile.create(); + var p = Profile.create(appConfigService.version); storageService.storeNewProfile(p, function(err) { if (err) return cb(err); root.bindProfile(p, function(err) { diff --git a/src/js/services/storageService.js b/src/js/services/storageService.js index be9637652..2dc3d7511 100644 --- a/src/js/services/storageService.js +++ b/src/js/services/storageService.js @@ -1,6 +1,6 @@ 'use strict'; angular.module('copayApp.services') - .factory('storageService', function(logHeader, fileStorageService, localStorageService, sjcl, $log, lodash, platformInfo, secureStorageService, $timeout) { + .factory('storageService', function(appConfigService, logHeader, fileStorageService, localStorageService, sjcl, $log, lodash, platformInfo, secureStorageService, $timeout) { var root = {}; var storage; @@ -136,11 +136,14 @@ angular.module('copayApp.services') * @param {getProfileCallback} cb */ function _migrateProfiles(oldProfile, secureProfile, cb) { - var newProfile = oldProfile; + var newProfile; if (secureProfile) { secureProfile.merge(oldProfile); newProfile = secureProfile; + } else { + newProfile = oldProfile; + newProfile.setAppVersion(appConfigService.version); } root.storeNewProfile(newProfile, function(storeErr) {