mirror of
https://github.com/moparisthebest/mail
synced 2025-02-07 02:20:14 -05:00
list email in new ui works, remove command pattern bloat from app-controller
This commit is contained in:
parent
1259d0c160
commit
cf8a12c75c
@ -34,84 +34,7 @@ define(function(require) {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Executes a number of commands
|
||||
*/
|
||||
self.execute = function(cmd, args, callback) {
|
||||
if (cmd === 'login') {
|
||||
// login user
|
||||
fetchOAuthToken(args.password, function(err, userId) {
|
||||
callback({
|
||||
err: err,
|
||||
userId: userId
|
||||
});
|
||||
});
|
||||
|
||||
} else if (cmd === 'listFolders') {
|
||||
// list folders in users mailbox
|
||||
self._emailDao.imapListFolders(function(err, folders) {
|
||||
callback({
|
||||
err: err,
|
||||
folders: folders
|
||||
});
|
||||
});
|
||||
|
||||
} else if (cmd === 'syncEmails') {
|
||||
// self._emailDao.syncFromCloud(args.folder, function(err) {
|
||||
// callback({
|
||||
// err: err
|
||||
// });
|
||||
// });
|
||||
|
||||
// Syncing to local storage is not yet supported for imap
|
||||
callback({
|
||||
err: 'Not yet implemented!'
|
||||
});
|
||||
|
||||
} else if (cmd === 'listEmails') {
|
||||
// list emails from folder
|
||||
self._emailDao.imapListMessages(args, function(err, emails) {
|
||||
callback({
|
||||
err: err,
|
||||
emails: emails
|
||||
});
|
||||
});
|
||||
|
||||
} else if (cmd === 'getEmail') {
|
||||
// list emails from folder
|
||||
self._emailDao.imapGetMessage({
|
||||
folder: args.folder,
|
||||
uid: args.messageId
|
||||
}, function(err, email) {
|
||||
callback({
|
||||
err: err,
|
||||
email: email
|
||||
});
|
||||
});
|
||||
|
||||
} else if (cmd === 'sendEmail') {
|
||||
// list emails from folder
|
||||
self._emailDao.smtpSend(args.email, function(err) {
|
||||
callback({
|
||||
err: err
|
||||
});
|
||||
});
|
||||
|
||||
} else {
|
||||
// error: invalid message from sandbox
|
||||
callback({
|
||||
err: {
|
||||
errMsg: 'Invalid message posted from sandbox!'
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Helper methods
|
||||
//
|
||||
|
||||
function fetchOAuthToken(password, callback) {
|
||||
self.fetchOAuthToken = function(password, callback) {
|
||||
// get OAuth Token from chrome
|
||||
chrome.identity.getAuthToken({
|
||||
'interactive': true
|
||||
@ -139,7 +62,7 @@ define(function(require) {
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
self.login = function(userId, password, token, callback) {
|
||||
var auth, imapOptions, smtpOptions,
|
||||
|
@ -1,28 +1,40 @@
|
||||
define(function() {
|
||||
define(function(require) {
|
||||
'use strict';
|
||||
|
||||
var Email = function(unread) {
|
||||
this.from = [{
|
||||
name: 'Whiteout Support',
|
||||
address: 'support@whiteout.io'
|
||||
}]; // sender address
|
||||
this.to = [{
|
||||
address: 'max.musterman@gmail.com'
|
||||
}]; // list of receivers
|
||||
this.unread = unread;
|
||||
this.sentDate = '7:23 PM';
|
||||
this.subject = "Welcome Max"; // Subject line
|
||||
this.body = "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy."; // plaintext body
|
||||
};
|
||||
var appController = require('js/app-controller');
|
||||
|
||||
var MessageListCtrl = function($scope) {
|
||||
$scope.folderName = 'Inbox';
|
||||
$scope.emails = [new Email(true), new Email(true), new Email(false), new Email(false), new Email(false), new Email(false)];
|
||||
|
||||
$scope.select = function(email) {
|
||||
$scope.selected = email;
|
||||
};
|
||||
|
||||
fetchList(function(err, emails) {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
return;
|
||||
}
|
||||
|
||||
$scope.emails = emails;
|
||||
$scope.$apply();
|
||||
});
|
||||
};
|
||||
|
||||
function fetchList(callback) {
|
||||
appController.fetchOAuthToken('passphrase', function(err) {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
return;
|
||||
}
|
||||
|
||||
appController._emailDao.imapListMessages({
|
||||
folder: 'INBOX',
|
||||
offset: -6,
|
||||
num: 0
|
||||
}, callback);
|
||||
});
|
||||
}
|
||||
|
||||
return MessageListCtrl;
|
||||
});
|
@ -49,76 +49,14 @@ define(function(require) {
|
||||
});
|
||||
});
|
||||
|
||||
describe('execute', function() {
|
||||
describe('login', function() {
|
||||
it('should work', function(done) {
|
||||
controller.execute('login', {
|
||||
password: appControllerTest.passphrase
|
||||
}, function(resArgs) {
|
||||
expect(resArgs.err).to.not.exist;
|
||||
expect(resArgs.userId).to.equal(appControllerTest.user);
|
||||
expect($.ajax.calledOnce).to.be.true;
|
||||
expect(window.chrome.identity.getAuthToken.calledOnce).to.be.true;
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('sendEmail', function() {
|
||||
it('should work', function(done) {
|
||||
controller._emailDao.smtpSend.yields();
|
||||
controller.execute('sendEmail', {
|
||||
password: appControllerTest.passphrase
|
||||
}, function(resArgs) {
|
||||
expect(resArgs.err).to.not.exist;
|
||||
expect(controller._emailDao.smtpSend.calledOnce).to.be.true;
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('listFolders', function() {
|
||||
it('should work', function(done) {
|
||||
controller._emailDao.imapListFolders.yields(null, ['inbox', 'sent']);
|
||||
controller.execute('listFolders', {
|
||||
password: appControllerTest.passphrase
|
||||
}, function(resArgs) {
|
||||
expect(resArgs.err).to.not.exist;
|
||||
expect(resArgs.folders[1]).to.equal('sent');
|
||||
expect(controller._emailDao.imapListFolders.calledOnce).to.be.true;
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('listEmails', function() {
|
||||
it('should work', function(done) {
|
||||
controller._emailDao.imapListMessages.yields(null, []);
|
||||
controller.execute('listEmails', {
|
||||
folder: 'INBOX',
|
||||
offset: 0,
|
||||
num: 10
|
||||
}, function(resArgs) {
|
||||
expect(resArgs.err).to.not.exist;
|
||||
expect(resArgs.emails).to.a('Array');
|
||||
expect(controller._emailDao.imapListMessages.calledOnce).to.be.true;
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe('getEmail', function() {
|
||||
it('should work', function(done) {
|
||||
controller._emailDao.imapGetMessage.yields(null, {});
|
||||
controller.execute('getEmail', {
|
||||
folder: 'INBOX',
|
||||
messageId: 415
|
||||
}, function(resArgs) {
|
||||
expect(resArgs.err).to.not.exist;
|
||||
expect(resArgs.email).to.a('Object');
|
||||
expect(controller._emailDao.imapGetMessage.calledOnce).to.be.true;
|
||||
done();
|
||||
});
|
||||
describe('login', function() {
|
||||
it('should work', function(done) {
|
||||
controller.fetchOAuthToken(appControllerTest.passphrase, function(err, userId) {
|
||||
expect(err).to.not.exist;
|
||||
expect(userId).to.equal(appControllerTest.user);
|
||||
expect($.ajax.calledOnce).to.be.true;
|
||||
expect(window.chrome.identity.getAuthToken.calledOnce).to.be.true;
|
||||
done();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user