mirror of
https://github.com/moparisthebest/mail
synced 2025-02-07 10:30:18 -05:00
refactor email dao for prototype style and also use spaces instead of tabs
This commit is contained in:
parent
2186d20a7c
commit
553320adc8
@ -10,10 +10,18 @@ define(['underscore', 'cryptoLib/util', 'js/crypto/crypto', 'js/dao/lawnchair-da
|
|||||||
var EmailDAO = function(cloudstorage, keychain, imapClient, smtpClient) {
|
var EmailDAO = function(cloudstorage, keychain, imapClient, smtpClient) {
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
self._cloudstorage = cloudstorage;
|
||||||
|
self._keychain = keychain;
|
||||||
|
self._imapClient = imapClient;
|
||||||
|
self._smtpClient = smtpClient;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inits all dependencies
|
* Inits all dependencies
|
||||||
*/
|
*/
|
||||||
self.init = function(account, password, callback) {
|
EmailDAO.prototype.init = function(account, password, callback) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
self.account = account;
|
self.account = account;
|
||||||
|
|
||||||
// validate email address
|
// validate email address
|
||||||
@ -26,8 +34,8 @@ define(['underscore', 'cryptoLib/util', 'js/crypto/crypto', 'js/dao/lawnchair-da
|
|||||||
}
|
}
|
||||||
|
|
||||||
// login IMAP client if existent
|
// login IMAP client if existent
|
||||||
if (imapClient) {
|
if (self._imapClient) {
|
||||||
imapClient.login(function() {
|
self._imapClient.login(function() {
|
||||||
console.log('logged into imap.');
|
console.log('logged into imap.');
|
||||||
initKeychain();
|
initKeychain();
|
||||||
});
|
});
|
||||||
@ -40,7 +48,7 @@ define(['underscore', 'cryptoLib/util', 'js/crypto/crypto', 'js/dao/lawnchair-da
|
|||||||
jsonDB.init(emailAddress);
|
jsonDB.init(emailAddress);
|
||||||
|
|
||||||
// call getUserKeyPair to read/sync keypair with devicestorage/cloud
|
// call getUserKeyPair to read/sync keypair with devicestorage/cloud
|
||||||
keychain.getUserKeyPair(emailAddress, function(err, storedKeypair) {
|
self._keychain.getUserKeyPair(emailAddress, function(err, storedKeypair) {
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
return;
|
return;
|
||||||
@ -65,7 +73,7 @@ define(['underscore', 'cryptoLib/util', 'js/crypto/crypto', 'js/dao/lawnchair-da
|
|||||||
|
|
||||||
if (generatedKeypair) {
|
if (generatedKeypair) {
|
||||||
// persist newly generated keypair
|
// persist newly generated keypair
|
||||||
keychain.putUserKeyPair(generatedKeypair, callback);
|
self._keychain.putUserKeyPair(generatedKeypair, callback);
|
||||||
} else {
|
} else {
|
||||||
callback();
|
callback();
|
||||||
}
|
}
|
||||||
@ -76,7 +84,9 @@ define(['underscore', 'cryptoLib/util', 'js/crypto/crypto', 'js/dao/lawnchair-da
|
|||||||
/**
|
/**
|
||||||
* Fetch an email with the following id
|
* Fetch an email with the following id
|
||||||
*/
|
*/
|
||||||
self.getItem = function(folderName, itemId) {
|
EmailDAO.prototype.getItem = function(folderName, itemId) {
|
||||||
|
var self = this;
|
||||||
|
|
||||||
var folder = self.account.get('folders').where({
|
var folder = self.account.get('folders').where({
|
||||||
name: folderName
|
name: folderName
|
||||||
})[0];
|
})[0];
|
||||||
@ -91,8 +101,9 @@ define(['underscore', 'cryptoLib/util', 'js/crypto/crypto', 'js/dao/lawnchair-da
|
|||||||
* @param offset [Number] The offset of items to fetch (0 is the last stored item)
|
* @param offset [Number] The offset of items to fetch (0 is the last stored item)
|
||||||
* @param num [Number] The number of items to fetch (null means fetch all)
|
* @param num [Number] The number of items to fetch (null means fetch all)
|
||||||
*/
|
*/
|
||||||
self.listItems = function(folderName, offset, num, callback) {
|
EmailDAO.prototype.listItems = function(folderName, offset, num, callback) {
|
||||||
var collection, folder;
|
var self = this,
|
||||||
|
collection, folder;
|
||||||
|
|
||||||
// check if items are in memory already (account.folders model)
|
// check if items are in memory already (account.folders model)
|
||||||
folder = self.account.get('folders').where({
|
folder = self.account.get('folders').where({
|
||||||
@ -142,8 +153,9 @@ define(['underscore', 'cryptoLib/util', 'js/crypto/crypto', 'js/dao/lawnchair-da
|
|||||||
* Synchronize a folder's items from the cloud to the device-storage
|
* Synchronize a folder's items from the cloud to the device-storage
|
||||||
* @param folderName [String] The name of the folder e.g. 'inbox'
|
* @param folderName [String] The name of the folder e.g. 'inbox'
|
||||||
*/
|
*/
|
||||||
self.syncFromCloud = function(folderName, callback) {
|
EmailDAO.prototype.syncFromCloud = function(folderName, callback) {
|
||||||
var folder, already, pubkeyIds = [];
|
var self = this,
|
||||||
|
folder, already, pubkeyIds = [];
|
||||||
|
|
||||||
// fetch most recent date
|
// fetch most recent date
|
||||||
this.listItems(folderName, 0, 1, function(err, localItems) {
|
this.listItems(folderName, 0, 1, function(err, localItems) {
|
||||||
@ -172,7 +184,7 @@ define(['underscore', 'cryptoLib/util', 'js/crypto/crypto', 'js/dao/lawnchair-da
|
|||||||
|
|
||||||
function startSync(filter) {
|
function startSync(filter) {
|
||||||
// fetch items from the cloud
|
// fetch items from the cloud
|
||||||
cloudstorage.listEncryptedItems('email', self.account.get('emailAddress'), folderName + filter, function(err, encryptedList) {
|
self._cloudstorage.listEncryptedItems('email', self.account.get('emailAddress'), folderName + filter, function(err, encryptedList) {
|
||||||
// return if an error occured
|
// return if an error occured
|
||||||
if (err) {
|
if (err) {
|
||||||
callback({
|
callback({
|
||||||
@ -207,7 +219,7 @@ define(['underscore', 'cryptoLib/util', 'js/crypto/crypto', 'js/dao/lawnchair-da
|
|||||||
});
|
});
|
||||||
|
|
||||||
// fetch public keys from keychain
|
// fetch public keys from keychain
|
||||||
keychain.getPublicKeys(pubkeyIds, function(err, senderPubkeys) {
|
self._keychain.getPublicKeys(pubkeyIds, function(err, senderPubkeys) {
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
return;
|
return;
|
||||||
@ -239,8 +251,9 @@ define(['underscore', 'cryptoLib/util', 'js/crypto/crypto', 'js/dao/lawnchair-da
|
|||||||
/**
|
/**
|
||||||
* Send a plaintext Email to the user's outbox in the cloud
|
* Send a plaintext Email to the user's outbox in the cloud
|
||||||
*/
|
*/
|
||||||
self.sendEmail = function(email, callback) {
|
EmailDAO.prototype.sendEmail = function(email, callback) {
|
||||||
var userId = self.account.get('emailAddress');
|
var self = this,
|
||||||
|
userId = self.account.get('emailAddress');
|
||||||
|
|
||||||
// validate email addresses
|
// validate email addresses
|
||||||
var invalidRecipient;
|
var invalidRecipient;
|
||||||
@ -271,7 +284,7 @@ define(['underscore', 'cryptoLib/util', 'js/crypto/crypto', 'js/dao/lawnchair-da
|
|||||||
var recipient = email.to[0].address;
|
var recipient = email.to[0].address;
|
||||||
|
|
||||||
// check if receiver has a public key
|
// check if receiver has a public key
|
||||||
keychain.getReveiverPublicKey(recipient, function(err, receiverPubkey) {
|
self._keychain.getReveiverPublicKey(recipient, function(err, receiverPubkey) {
|
||||||
if (err) {
|
if (err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
return;
|
return;
|
||||||
@ -312,18 +325,17 @@ define(['underscore', 'cryptoLib/util', 'js/crypto/crypto', 'js/dao/lawnchair-da
|
|||||||
}
|
}
|
||||||
|
|
||||||
function send(email) {
|
function send(email) {
|
||||||
if (smtpClient) {
|
if (self._smtpClient) {
|
||||||
// send email directly client side
|
// send email directly client side
|
||||||
smtpClient.send(email, callback);
|
self._smtpClient.send(email, callback);
|
||||||
} else {
|
} else {
|
||||||
// send email via cloud service
|
// send email via cloud service
|
||||||
cloudstorage.deliverEmail(email, userId, recipient, function(err) {
|
self._cloudstorage.deliverEmail(email, userId, recipient, function(err) {
|
||||||
callback(err);
|
callback(err);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// helper functions
|
// helper functions
|
||||||
|
Loading…
Reference in New Issue
Block a user