From b1bc03b74b651de1e0ed119d5a6e61b12934312a Mon Sep 17 00:00:00 2001 From: Tankred Hase Date: Fri, 3 May 2013 16:09:13 +0200 Subject: [PATCH] Sending email from client works --- src/js/app-router.js | 9 +++++-- src/js/dao/email-dao.js | 3 +++ src/js/view/compose-view.js | 53 +++++++++++++++++++++++++++++++++++-- src/tpl/compose.html | 8 +++--- 4 files changed, 65 insertions(+), 8 deletions(-) diff --git a/src/js/app-router.js b/src/js/app-router.js index c22b4b7..bc0282d 100644 --- a/src/js/app-router.js +++ b/src/js/app-router.js @@ -29,8 +29,13 @@ this.changePage(loginView); }, - compose: function() { - var composeView = new app.view.ComposeView(); + compose: function(to, reSubject, reBody) { + var composeView = new app.view.ComposeView({ + to: to, + reSubject: reSubject, + reBody: reBody, + dao: this.emailDao + }); this.changePage(composeView); }, diff --git a/src/js/dao/email-dao.js b/src/js/dao/email-dao.js index 357a31d..46c3109 100644 --- a/src/js/dao/email-dao.js +++ b/src/js/dao/email-dao.js @@ -239,6 +239,9 @@ app.dao.EmailDAO = function(_, crypto, devicestorage, cloudstorage, naclCrypto, this.sendEmail = function(email, callback) { var userId = this.account.get('emailAddress'); + // generate a new UUID for the new email + email.set('id', util.UUID()); + cloudstorage.putEncryptedItem(email, 'email', userId, 'outbox', function(err) { callback(err); }); diff --git a/src/js/view/compose-view.js b/src/js/view/compose-view.js index b274bb1..1431730 100644 --- a/src/js/view/compose-view.js +++ b/src/js/view/compose-view.js @@ -3,14 +3,63 @@ app.view.ComposeView = Backbone.View.extend({ - initialize: function() { + initialize: function(args) { this.template = _.template(app.util.tpl.get('compose')); + this.dao = args.dao; }, render: function(eventName) { - $(this.el).html(this.template()); + var self = this, + page = $(this.el); + + page.html(this.template()); + + page.find('#sendBtn').on('vmousedown', function() { + self.sendEmail(); + }); + return this; + }, + + /** + * Send an email via the email dao + */ + sendEmail: function() { + var self = this, + page = $(this.el); + + $.mobile.loading('show', { + text: 'sending...', + textVisible: true + }); + + // validate recipients + var to = page.find('#toInput').val().replace(/\s/g, '').split(/[,;]/); + if (!to || to.length < 1) { + window.alert('Seperate recipients with a comma!'); + return; + } + + var signature = '\n\nSent with https://mail.whiteout.io - get your mailbox for end-2-end encrypted messaging!'; + + var email = new app.model.Email({ + from: self.dao.account.get('emailAddress'), + to: to, + subject: page.find('#subjectInput').val(), + body: page.find('#bodyTextarea').val() + signature + }); + + self.dao.sendEmail(email, function(err) { + $.mobile.loading('hide'); + if (err) { + window.alert(JSON.stringify(err)); + return; + } + + //window.history.back(); + }); } + }); }()); \ No newline at end of file diff --git a/src/tpl/compose.html b/src/tpl/compose.html index b3a926d..ad08243 100644 --- a/src/tpl/compose.html +++ b/src/tpl/compose.html @@ -1,11 +1,11 @@

New Mail

- +
- - - + + +
\ No newline at end of file