mail/src/js/controller/login-initial.js

121 lines
3.3 KiB
JavaScript
Raw Normal View History

2013-10-21 07:10:42 -04:00
define(function(require) {
'use strict';
var appController = require('js/app-controller');
2013-10-21 07:10:42 -04:00
var LoginInitialCtrl = function($scope, $location, $routeParams) {
if (!appController._emailDao && !$routeParams.dev) {
$location.path('/'); // init app
return;
}
2013-10-23 11:17:36 -04:00
var emailDao = appController._emailDao,
states, termsMsg = 'You must accept the Terms of Service to continue.';
2013-10-23 11:17:36 -04:00
2013-11-11 07:28:05 -05:00
states = {
2013-10-23 11:17:36 -04:00
IDLE: 1,
2014-09-12 11:11:05 -04:00
PROCESSING: 2,
DONE: 3
2013-10-23 11:17:36 -04:00
};
2013-11-11 07:28:05 -05:00
$scope.state.ui = states.IDLE; // initial state
2013-10-23 11:17:36 -04:00
//
// scope functions
//
2013-10-21 07:10:42 -04:00
2014-07-31 15:39:43 -04:00
/**
* Continue to key import screen
*/
$scope.importKey = function() {
if (!$scope.state.agree) {
$scope.onError({
message: termsMsg
});
return;
}
2014-07-31 15:39:43 -04:00
// sing up to newsletter
$scope.signUpToNewsletter();
// go to key import
$location.path('/login-new-device');
};
2014-07-31 15:39:43 -04:00
/**
2014-09-12 11:11:05 -04:00
* Continue to keygen
2014-07-31 15:39:43 -04:00
*/
2014-09-12 11:11:05 -04:00
$scope.generateKey = function() {
if (!$scope.state.agree) {
$scope.onError({
message: termsMsg
});
return;
}
2014-07-31 15:39:43 -04:00
// sing up to newsletter
$scope.signUpToNewsletter();
2014-09-12 11:11:05 -04:00
// go to set keygen screen
$scope.setState(states.PROCESSING);
setTimeout(function() {
emailDao.unlock({
passphrase: undefined // generate key without passphrase
}, function(err) {
if (err) {
$scope.setState(states.IDLE);
$scope.onError(err);
return;
}
appController._auth.storeCredentials(function(err) {
if (err) {
return $scope.onError(err);
}
$location.path('/desktop');
$scope.$apply();
});
});
}, 500);
};
2014-07-31 15:39:43 -04:00
/**
* [signUpToNewsletter description]
* @param {Function} callback (optional)
*/
$scope.signUpToNewsletter = function(callback) {
if (!$scope.state.newsletter) {
return;
}
var address = emailDao._account.emailAddress;
var uri = 'https://whiteout.us8.list-manage.com/subscribe/post?u=52ea5a9e1be9e1d194f184158&id=6538e8f09f';
var formData = new FormData();
formData.append('EMAIL', address);
formData.append('b_52ea5a9e1be9e1d194f184158_6538e8f09f', '');
var xhr = new XMLHttpRequest();
xhr.open('post', uri, true);
xhr.onload = function() {
if (callback) {
callback(null, xhr);
}
};
xhr.onerror = function(err) {
if (callback) {
callback(err);
}
};
xhr.send(formData);
};
$scope.setState = function(state) {
2013-11-11 07:28:05 -05:00
$scope.state.ui = state;
};
2013-10-21 07:10:42 -04:00
};
return LoginInitialCtrl;
2013-10-23 11:17:36 -04:00
});