From cf8a12c75c48d00268c64f6406a988c06ea50850 Mon Sep 17 00:00:00 2001 From: Tankred Hase Date: Wed, 4 Sep 2013 21:01:32 +0200 Subject: [PATCH] list email in new ui works, remove command pattern bloat from app-controller --- src/js/app-controller.js | 81 +--------------------------- src/js/controller/message-list.js | 42 +++++++++------ test/new-unit/app-controller-test.js | 78 +++------------------------ 3 files changed, 37 insertions(+), 164 deletions(-) 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(); }); }); });