mirror of
https://github.com/moparisthebest/mail
synced 2024-08-13 16:43:47 -04:00
cf1f60fbf9
* add spinners to all login pages * use inline error messages in all form instead of scope.onError * create newsletter service
93 lines
2.2 KiB
JavaScript
93 lines
2.2 KiB
JavaScript
'use strict';
|
|
|
|
var appController = require('../app-controller');
|
|
|
|
var LoginInitialCtrl = function($scope, $location, $routeParams, newsletter) {
|
|
if (!appController._emailDao && !$routeParams.dev) {
|
|
$location.path('/'); // init app
|
|
return;
|
|
}
|
|
|
|
if (appController._emailDao) {
|
|
var emailDao = appController._emailDao,
|
|
emailAddress = emailDao._account.emailAddress;
|
|
}
|
|
|
|
var termsMsg = 'You must accept the Terms of Service to continue.',
|
|
states = {
|
|
IDLE: 1,
|
|
PROCESSING: 2,
|
|
DONE: 3
|
|
};
|
|
|
|
$scope.state.ui = states.IDLE; // initial state
|
|
|
|
//
|
|
// scope functions
|
|
//
|
|
|
|
/**
|
|
* Continue to key import screen
|
|
*/
|
|
$scope.importKey = function() {
|
|
if (!$scope.agree) {
|
|
displayError(new Error(termsMsg));
|
|
return;
|
|
}
|
|
|
|
$scope.errMsg = undefined;
|
|
|
|
// sing up to newsletter
|
|
newsletter.signup(emailAddress, $scope.newsletter);
|
|
// go to key import
|
|
$location.path('/login-new-device');
|
|
};
|
|
|
|
/**
|
|
* Continue to keygen
|
|
*/
|
|
$scope.generateKey = function() {
|
|
if (!$scope.agree) {
|
|
displayError(new Error(termsMsg));
|
|
return;
|
|
}
|
|
|
|
$scope.errMsg = undefined;
|
|
|
|
// sing up to newsletter
|
|
newsletter.signup(emailAddress, $scope.newsletter);
|
|
// go to set keygen screen
|
|
$scope.setState(states.PROCESSING);
|
|
|
|
emailDao.unlock({
|
|
passphrase: undefined // generate key without passphrase
|
|
}, function(err) {
|
|
if (err) {
|
|
displayError(err);
|
|
return;
|
|
}
|
|
|
|
appController._auth.storeCredentials(function(err) {
|
|
if (err) {
|
|
displayError(err);
|
|
return;
|
|
}
|
|
|
|
$location.path('/desktop');
|
|
$scope.$apply();
|
|
});
|
|
});
|
|
};
|
|
|
|
$scope.setState = function(state) {
|
|
$scope.state.ui = state;
|
|
};
|
|
|
|
function displayError(err) {
|
|
$scope.setState(states.IDLE);
|
|
$scope.errMsg = err.errMsg || err.message;
|
|
$scope.$apply();
|
|
}
|
|
};
|
|
|
|
module.exports = LoginInitialCtrl; |