1
0
mirror of https://github.com/moparisthebest/mail synced 2024-08-13 16:43:47 -04:00

refactor email dao for prototype style and also use spaces instead of tabs

This commit is contained in:
Tankred Hase 2013-08-16 20:50:47 +02:00
parent 2186d20a7c
commit 553320adc8

View File

@ -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