From cb8314f9d05fbf058cd3cead9fe1b6815ad1c142 Mon Sep 17 00:00:00 2001 From: Tankred Hase Date: Wed, 11 Sep 2013 23:31:08 +0200 Subject: [PATCH] displaying inbox message list works --- src/css/message-list.scss | 4 ++++ src/js/controller/message-list.js | 40 +++++++++++++++++++++++++++---- src/js/dao/email-dao.js | 8 +++---- src/require-config.js | 6 ++--- src/tpl/message-list.html | 4 ++-- test/new-unit/email-dao-test.js | 2 +- 6 files changed, 48 insertions(+), 16 deletions(-) diff --git a/src/css/message-list.scss b/src/css/message-list.scss index b1bcb06..4c93488 100644 --- a/src/css/message-list.scss +++ b/src/css/message-list.scss @@ -104,6 +104,10 @@ } .subject { font-weight: bold; + width: 13.571em; + height: 1em; + overflow: hidden; + display: inline-block; } .sent-date { float: right; diff --git a/src/js/controller/message-list.js b/src/js/controller/message-list.js index a3dd655..98401de 100644 --- a/src/js/controller/message-list.js +++ b/src/js/controller/message-list.js @@ -1,7 +1,8 @@ define(function(require) { 'use strict'; - var appController = require('js/app-controller'), + var _ = require('underscore'), + appController = require('js/app-controller'), moment = require('moment'); var MessageListCtrl = function($scope, $routeParams) { @@ -23,7 +24,7 @@ define(function(require) { }); }; - if (true) { + if (false) { createDummyMails(function(emails) { $scope.emails = emails; $scope.select($scope.emails[0]); @@ -38,14 +39,17 @@ define(function(require) { }; function fetchList(callback) { + var folder = 'INBOX'; + appController.fetchOAuthToken('passphrase', function(err) { if (err) { console.log(err); return; } + // fetch imap folder's message list appController._emailDao.imapListMessages({ - folder: 'INBOX', + folder: folder, offset: -6, num: 0 }, function(err, emails) { @@ -54,8 +58,34 @@ define(function(require) { return; } - addDisplayDate(emails); - callback(emails); + // fetch message bodies + fetchBodies(emails, folder, function(messages) { + addDisplayDate(messages); + callback(messages); + }); + }); + }); + } + + function fetchBodies(messageList, folder, callback) { + var emails = []; + + var after = _.after(messageList.length, function() { + callback(emails); + }); + + _.each(messageList, function(messageItem) { + appController._emailDao.imapGetMessage({ + folder: folder, + uid: messageItem.uid + }, function(err, message) { + if (err) { + console.log(err); + return; + } + + emails.push(message); + after(); }); }); } diff --git a/src/js/dao/email-dao.js b/src/js/dao/email-dao.js index 1c27660..a91aabb 100644 --- a/src/js/dao/email-dao.js +++ b/src/js/dao/email-dao.js @@ -339,7 +339,7 @@ define(function(require) { /* message was not found in cache... fetch from imap server */ - function bodyReady(err, gottenMessage) { + function messageReady(err, gottenMessage) { message = gottenMessage; itemCounter++; // remember how many items should be fetched before the callback fires @@ -431,10 +431,8 @@ define(function(require) { self._imapClient.getMessage({ path: options.folder, uid: options.uid, - onBody: bodyReady, - /*onAttachment: attachmentReady*/ - onEnd: bodyReady - }); + textOnly: true + }, messageReady); }; /** diff --git a/src/require-config.js b/src/require-config.js index 62727dd..09d8aab 100644 --- a/src/require-config.js +++ b/src/require-config.js @@ -15,9 +15,9 @@ cordova: 'cordova-2.5.0', ImapClient: 'imap-client-browserified', SmtpClient: 'smtp-client-browserified', - angular: 'angular/angular', - angularRoute: 'angular/angular-route', - angularTouch: 'angular/angular-touch', + angular: 'angular/angular.min', + angularRoute: 'angular/angular-route.min', + angularTouch: 'angular/angular-touch.min', moment: 'moment.min' }, shim: { diff --git a/src/tpl/message-list.html b/src/tpl/message-list.html index 6446038..3c0b2eb 100644 --- a/src/tpl/message-list.html +++ b/src/tpl/message-list.html @@ -13,10 +13,10 @@