1
0
mirror of https://github.com/moparisthebest/mail synced 2025-02-16 23:20:09 -05:00

displaying inbox message list works

This commit is contained in:
Tankred Hase 2013-09-11 23:31:08 +02:00
parent 3aac73ef2e
commit cb8314f9d0
6 changed files with 48 additions and 16 deletions

View File

@ -104,6 +104,10 @@
} }
.subject { .subject {
font-weight: bold; font-weight: bold;
width: 13.571em;
height: 1em;
overflow: hidden;
display: inline-block;
} }
.sent-date { .sent-date {
float: right; float: right;

View File

@ -1,7 +1,8 @@
define(function(require) { define(function(require) {
'use strict'; 'use strict';
var appController = require('js/app-controller'), var _ = require('underscore'),
appController = require('js/app-controller'),
moment = require('moment'); moment = require('moment');
var MessageListCtrl = function($scope, $routeParams) { var MessageListCtrl = function($scope, $routeParams) {
@ -23,7 +24,7 @@ define(function(require) {
}); });
}; };
if (true) { if (false) {
createDummyMails(function(emails) { createDummyMails(function(emails) {
$scope.emails = emails; $scope.emails = emails;
$scope.select($scope.emails[0]); $scope.select($scope.emails[0]);
@ -38,14 +39,17 @@ define(function(require) {
}; };
function fetchList(callback) { function fetchList(callback) {
var folder = 'INBOX';
appController.fetchOAuthToken('passphrase', function(err) { appController.fetchOAuthToken('passphrase', function(err) {
if (err) { if (err) {
console.log(err); console.log(err);
return; return;
} }
// fetch imap folder's message list
appController._emailDao.imapListMessages({ appController._emailDao.imapListMessages({
folder: 'INBOX', folder: folder,
offset: -6, offset: -6,
num: 0 num: 0
}, function(err, emails) { }, function(err, emails) {
@ -54,9 +58,35 @@ define(function(require) {
return; return;
} }
addDisplayDate(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); 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();
});
}); });
} }

View File

@ -339,7 +339,7 @@ define(function(require) {
/* message was not found in cache... fetch from imap server */ /* message was not found in cache... fetch from imap server */
function bodyReady(err, gottenMessage) { function messageReady(err, gottenMessage) {
message = gottenMessage; message = gottenMessage;
itemCounter++; itemCounter++;
// remember how many items should be fetched before the callback fires // remember how many items should be fetched before the callback fires
@ -431,10 +431,8 @@ define(function(require) {
self._imapClient.getMessage({ self._imapClient.getMessage({
path: options.folder, path: options.folder,
uid: options.uid, uid: options.uid,
onBody: bodyReady, textOnly: true
/*onAttachment: attachmentReady*/ }, messageReady);
onEnd: bodyReady
});
}; };
/** /**

View File

@ -15,9 +15,9 @@
cordova: 'cordova-2.5.0', cordova: 'cordova-2.5.0',
ImapClient: 'imap-client-browserified', ImapClient: 'imap-client-browserified',
SmtpClient: 'smtp-client-browserified', SmtpClient: 'smtp-client-browserified',
angular: 'angular/angular', angular: 'angular/angular.min',
angularRoute: 'angular/angular-route', angularRoute: 'angular/angular-route.min',
angularTouch: 'angular/angular-touch', angularTouch: 'angular/angular-touch.min',
moment: 'moment.min' moment: 'moment.min'
}, },
shim: { shim: {

View File

@ -13,10 +13,10 @@
<ul> <ul>
<li ng-repeat="email in emails" ng-class="{selected: email === selected}" ng-click="select(email)"> <li ng-repeat="email in emails" ng-class="{selected: email === selected}" ng-click="select(email)">
<div ng-class="{unread: email.unread, read: !email.unread}"></div> <div ng-class="{unread: email.unread, read: !email.unread}"></div>
<div ng-switch="email.attachments !== undefined"> <div ng-switch="email.attachments !== undefined && email.attachments.length > 0">
<div ng-switch-when="true" class="icon-attachment"></div> <div ng-switch-when="true" class="icon-attachment"></div>
</div> </div>
<p class="from">{{email.from[0].name}}</p> <p class="from">{{email.from[0].name || email.from[0].address}}</p>
<p class="subject-line"> <p class="subject-line">
<span class="subject">{{email.subject}}</span> <span class="subject">{{email.subject}}</span>
<span class="sent-date">{{email.displayDate}}</span> <span class="sent-date">{{email.displayDate}}</span>

View File

@ -287,7 +287,7 @@ define(function(require) {
it('should parse message body without attachement', function(done) { it('should parse message body without attachement', function(done) {
var uid = 415; var uid = 415;
imapClientStub.getMessage.yieldsTo('onBody', null, { imapClientStub.getMessage.yields(null, {
uid: uid, uid: uid,
body: '' body: ''
}); });