mirror of
https://github.com/moparisthebest/mail
synced 2024-11-29 20:32:15 -05:00
read email with and without attachment works in ui
This commit is contained in:
parent
fa3abc3487
commit
88b7252696
@ -157,7 +157,9 @@ define(function(require) {
|
|||||||
*/
|
*/
|
||||||
EmailDAO.prototype.imapGetMessage = function(options, callback) {
|
EmailDAO.prototype.imapGetMessage = function(options, callback) {
|
||||||
var self = this,
|
var self = this,
|
||||||
message;
|
expectedItems,
|
||||||
|
itemCounter = 0,
|
||||||
|
message, attachments = [];
|
||||||
|
|
||||||
// validate options
|
// validate options
|
||||||
if (!options.folder || !options.uid) {
|
if (!options.folder || !options.uid) {
|
||||||
@ -169,10 +171,29 @@ define(function(require) {
|
|||||||
|
|
||||||
function messageReady(err, gottenMessage) {
|
function messageReady(err, gottenMessage) {
|
||||||
message = gottenMessage;
|
message = gottenMessage;
|
||||||
|
itemCounter++;
|
||||||
|
// remember how many items should be fetched before the callback fires
|
||||||
|
expectedItems = (message.attachments instanceof Array) ? message.attachments.length + 1 : 1;
|
||||||
|
check();
|
||||||
}
|
}
|
||||||
|
|
||||||
function attachmentReady(err, attmt) {
|
function attachmentReady(err, gottenAttachment) {
|
||||||
message.parsedAttachment = attmt;
|
// parse uint8array to base to make it serializable for postMessage
|
||||||
|
gottenAttachment.base64 = btoa(gottenAttachment.uint8Array);
|
||||||
|
delete gottenAttachment.uint8Array;
|
||||||
|
|
||||||
|
attachments.push(gottenAttachment);
|
||||||
|
itemCounter++;
|
||||||
|
check();
|
||||||
|
}
|
||||||
|
|
||||||
|
function check() {
|
||||||
|
// go for another round you don't yet know how mich to fetch or you haven't fetch enough
|
||||||
|
if (!expectedItems || itemCounter < expectedItems) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
message.attachments = (attachments.length > 0) ? attachments : undefined;
|
||||||
callback(null, message);
|
callback(null, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,6 +172,24 @@ define(function(require) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should parse message body without attachement', function(done) {
|
||||||
|
var uid = 415;
|
||||||
|
|
||||||
|
imapClientStub.getMessage.yields(null, {
|
||||||
|
uid: uid
|
||||||
|
});
|
||||||
|
emailDao.imapGetMessage({
|
||||||
|
folder: 'INBOX',
|
||||||
|
uid: uid
|
||||||
|
}, function(err, message) {
|
||||||
|
expect(imapClientStub.getMessage.calledOnce).to.be.true;
|
||||||
|
expect(err).to.not.exist;
|
||||||
|
expect(message.uid).to.equal(uid);
|
||||||
|
expect(message.attachments).to.not.exist;
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
it('should parse message body and attachement', function(done) {
|
it('should parse message body and attachement', function(done) {
|
||||||
var uid = 415,
|
var uid = 415,
|
||||||
newImapClientStub = {
|
newImapClientStub = {
|
||||||
@ -179,7 +197,8 @@ define(function(require) {
|
|||||||
};
|
};
|
||||||
sinon.stub(newImapClientStub, 'getMessage', function(options, messageReady, attachmentReady) {
|
sinon.stub(newImapClientStub, 'getMessage', function(options, messageReady, attachmentReady) {
|
||||||
messageReady(null, {
|
messageReady(null, {
|
||||||
uid: uid
|
uid: uid,
|
||||||
|
attachments: ['file.txt']
|
||||||
});
|
});
|
||||||
attachmentReady(null, {
|
attachmentReady(null, {
|
||||||
uint8Array: new Uint8Array(42)
|
uint8Array: new Uint8Array(42)
|
||||||
@ -194,7 +213,7 @@ define(function(require) {
|
|||||||
expect(newImapClientStub.getMessage.calledOnce).to.be.true;
|
expect(newImapClientStub.getMessage.calledOnce).to.be.true;
|
||||||
expect(err).to.not.exist;
|
expect(err).to.not.exist;
|
||||||
expect(message.uid).to.equal(uid);
|
expect(message.uid).to.equal(uid);
|
||||||
expect(message.parsedAttachment.uint8Array.length).to.equal(42);
|
expect(message.attachments[0].base64).to.exist;
|
||||||
emailDao._imapClient = imapClientStub;
|
emailDao._imapClient = imapClientStub;
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user