diff --git a/src/js/app-controller.js b/src/js/app-controller.js index be17d2c..6c3471d 100644 --- a/src/js/app-controller.js +++ b/src/js/app-controller.js @@ -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, diff --git a/src/js/controller/message-list.js b/src/js/controller/message-list.js index 13af01f..479db24 100644 --- a/src/js/controller/message-list.js +++ b/src/js/controller/message-list.js @@ -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; }); \ No newline at end of file diff --git a/test/new-unit/app-controller-test.js b/test/new-unit/app-controller-test.js index 4b528c2..596cc89 100644 --- a/test/new-unit/app-controller-test.js +++ b/test/new-unit/app-controller-test.js @@ -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(); }); }); });