Display a message for users whose have wallet:: but not profile::

This commit is contained in:
Gustavo Maximiliano Cortez 2014-10-29 16:21:44 -03:00
parent bfdfc68d83
commit 2c07ad6dd7
7 changed files with 94 additions and 8 deletions

View File

@ -2,7 +2,9 @@
angular.module('copayApp.controllers').controller('CreateProfileController', function($scope, $rootScope, $location, notification, controllerUtils, pluginManager, identityService) { angular.module('copayApp.controllers').controller('CreateProfileController', function($scope, $rootScope, $location, notification, controllerUtils, pluginManager, identityService) {
controllerUtils.redirIfLogged(); controllerUtils.redirIfLogged();
$scope.retreiving = false; $scope.retreiving = true;
identityService.check($scope);
$scope.createProfile = function(form) { $scope.createProfile = function(form) {
if (form && form.$invalid) { if (form && form.$invalid) {

View File

@ -2,7 +2,9 @@
angular.module('copayApp.controllers').controller('HomeController', function($scope, $rootScope, $location, notification, controllerUtils, pluginManager, identityService) { angular.module('copayApp.controllers').controller('HomeController', function($scope, $rootScope, $location, notification, controllerUtils, pluginManager, identityService) {
controllerUtils.redirIfLogged(); controllerUtils.redirIfLogged();
$scope.retreiving = false; $scope.retreiving = true;
identityService.check($scope);
$scope.openProfile = function(form) { $scope.openProfile = function(form) {
if (form && form.$invalid) { if (form && form.$invalid) {

View File

@ -59,8 +59,12 @@ function Identity(opts) {
this.wallets = opts.wallets || {}; this.wallets = opts.wallets || {};
}; };
Identity.getStoragePrefix = function() {
return 'profile::';
};
Identity.getKeyForEmail = function(email) { Identity.getKeyForEmail = function(email) {
return 'profile::' + bitcore.util.sha256ripe160(email).toString('hex'); return Identity.getStoragePrefix() + bitcore.util.sha256ripe160(email).toString('hex');
}; };
Identity.prototype.getId = function() { Identity.prototype.getId = function() {
@ -482,6 +486,19 @@ Identity.prototype.addWallet = function(wallet, cb) {
this.storage.setItem(wallet.getStorageKey(), wallet.toObj(), cb); this.storage.setItem(wallet.getStorageKey(), wallet.toObj(), cb);
}; };
/**
* check if any profile exists on storage
* @param opts.storageOpts
* @param cb
*/
Identity.checkIfExistsAny = function(opts, cb) {
var storage = opts.storage || opts.pluginManager.get('DB');
storage.getFirst(Identity.getStoragePrefix(), {
onlyKey: true
}, function(err, v, k) {
return cb(k ? true : false);
});
};
/** /**
* @desc Checks if a version is compatible with the current version * @desc Checks if a version is compatible with the current version

View File

@ -165,14 +165,32 @@ Wallet.COPAYER_PAIR_LIMITS = {
12: 1, 12: 1,
}; };
Wallet.getStoragePrefix = function() {
return 'wallet::';
};
Wallet.getStorageKey = function(str) { Wallet.getStorageKey = function(str) {
return 'wallet::' + str; return Wallet.getStoragePrefix() + str;
}; };
Wallet.prototype.getStorageKey = function() { Wallet.prototype.getStorageKey = function() {
return Wallet.getStorageKey(this.getId()); return Wallet.getStorageKey(this.getId());
}; };
/**
* check if any wallet exists on storage
* @param opts.storageOpts
* @param cb
*/
Wallet.checkIfExistsAny = function(opts, cb) {
var storage = opts.storage || opts.pluginManager.get('DB');
storage.getFirst(Wallet.getStoragePrefix(), {
onlyKey: true
}, function(err, v, k) {
return cb(k ? true : false);
});
};
/* for stubbing */ /* for stubbing */
Wallet._newInsight = function(opts) { Wallet._newInsight = function(opts) {
return new Insight(opts); return new Insight(opts);

View File

@ -78,9 +78,13 @@ InsightStorage.prototype.clear = function(callback) {
}; };
InsightStorage.prototype.allKeys = function(callback) { InsightStorage.prototype.allKeys = function(callback) {
// NOOP // TODO: compatibility with localStorage
// TODO: Add functionality? return callback(null);
callback(); };
InsightStorage.prototype.getFirst = function(prefix, opts, callback) {
// TODO: compatibility with localStorage
return callback(null, true, true);
}; };
module.exports = InsightStorage; module.exports = InsightStorage;

View File

@ -1,4 +1,5 @@
'use strict'; 'use strict';
var _ = require('lodash');
function LocalStorage() { function LocalStorage() {
this.type = 'DB'; this.type = 'DB';
@ -51,4 +52,28 @@ LocalStorage.prototype.allKeys = function(cb) {
return cb(null, ret); return cb(null, ret);
}; };
LocalStorage.prototype.getFirst = function(prefix, opts, cb) {
opts = opts || {};
var that = this;
this.allKeys(function(err, allKeys) {
var keys = _.filter(allKeys, function(k) {
if ((k === prefix) || k.indexOf(prefix) === 0) return true;
});
if (keys.length === 0)
return cb(new Error('not found'));
if (opts.onlyKey)
return cb(null, null, keys[0]);
that.getItem(keys[0], function(err, data) {
if (err) {
return cb(err);
}
return cb(null, data, keys[0]);
});
});
};
module.exports = LocalStorage; module.exports = LocalStorage;

View File

@ -4,6 +4,24 @@ angular.module('copayApp.services')
.factory('identityService', function($rootScope, $location, pluginManager, controllerUtils) { .factory('identityService', function($rootScope, $location, pluginManager, controllerUtils) {
var root = {}; var root = {};
root.check = function (scope) {
copay.Identity.checkIfExistsAny({
pluginManager: pluginManager,
}, function(anyProfile) {
copay.Wallet.checkIfExistsAny({
pluginManager: pluginManager,
}, function(anyWallet) {
scope.retreiving = false;
scope.anyProfile = anyProfile ? true : false;
scope.anyWallet = anyWallet ? true : false;
if (!scope.anyProfile) {
$location.path('/createProfile');
}
});
});
};
root.create = function(scope, form) { root.create = function(scope, form) {
var iden = copay.Identity.create({ var iden = copay.Identity.create({
email: form.email.$modelValue, email: form.email.$modelValue,
@ -60,7 +78,7 @@ angular.module('copayApp.services')
} }
scope.loading = false; scope.loading = false;
}); });
} };
return root; return root;
}); });