From 7b844aa218048f01a5b43000e55e29b11db458ca Mon Sep 17 00:00:00 2001 From: Tankred Hase Date: Fri, 11 Oct 2013 23:02:37 +0200 Subject: [PATCH 1/2] login to imap in login view --- src/js/controller/login.js | 11 +++++++++- src/js/controller/mail-list.js | 39 ++------------------------------- src/js/controller/navigation.js | 2 +- 3 files changed, 13 insertions(+), 39 deletions(-) diff --git a/src/js/controller/login.js b/src/js/controller/login.js index 180b71e..164e086 100644 --- a/src/js/controller/login.js +++ b/src/js/controller/login.js @@ -21,13 +21,22 @@ define(function(require) { }); function login(password, callback) { + // get OAuth token from chrome appController.fetchOAuthToken(password, function(err) { if (err) { console.error(err); return; } - callback(); + // login to imap backend + appController._emailDao.imapLogin(function(err) { + if (err) { + console.error(err); + return; + } + + callback(); + }); }); } diff --git a/src/js/controller/mail-list.js b/src/js/controller/mail-list.js index 08a6df4..fd15b95 100644 --- a/src/js/controller/mail-list.js +++ b/src/js/controller/mail-list.js @@ -7,8 +7,7 @@ define(function(require) { var MailListCtrl = function($scope) { var offset = 0, - num = 100, - loggedIn = false; + num = 100; emailDao = appController._emailDao; @@ -80,41 +79,12 @@ define(function(require) { folder: getFolder().path, offset: offset, num: num - }, function() { - if (loggedIn) { - // user is already logged in - sync(); - return; - } - // login to imap - loginImap(function() { - loggedIn = true; - sync(); - }); - }); - - function sync() { + }, function sync() { updateStatus('Syncing ...'); $scope.$apply(); // sync imap folder to local db $scope.synchronize(); - } - } - - function loginImap(callback) { - updateStatus('Login ...'); - $scope.$apply(); - - emailDao.imapLogin(function(err) { - if (err) { - console.log(err); - updateStatus('Error on login!'); - $scope.$apply(); - return; - } - - callback(); }); } @@ -189,11 +159,6 @@ define(function(require) { function markAsRead(email) { email.unread = false; - // only update imap state if user is logged in - if (!loggedIn) { - return; - } - emailDao.imapMarkMessageRead({ folder: getFolder().path, uid: email.uid diff --git a/src/js/controller/navigation.js b/src/js/controller/navigation.js index a936aa5..124613f 100644 --- a/src/js/controller/navigation.js +++ b/src/js/controller/navigation.js @@ -11,7 +11,7 @@ define(function(require) { initFolders(function(folders) { $scope.folders = folders; - $scope.apply(); + $scope.$apply(); // select inbox as the current folder on init $scope.openFolder($scope.folders[0]); }); From d99c7acb50d4a25c288de3b87fe97c7f38e498a2 Mon Sep 17 00:00:00 2001 From: Tankred Hase Date: Fri, 11 Oct 2013 23:27:55 +0200 Subject: [PATCH 2/2] fix ui init and only mark email as read if manually selected --- src/js/controller/mail-list.js | 11 +++++++++-- src/js/controller/navigation.js | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/js/controller/mail-list.js b/src/js/controller/mail-list.js index fd15b95..c108f41 100644 --- a/src/js/controller/mail-list.js +++ b/src/js/controller/mail-list.js @@ -7,7 +7,8 @@ define(function(require) { var MailListCtrl = function($scope) { var offset = 0, - num = 100; + num = 100, + firstSelect = true; emailDao = appController._emailDao; @@ -72,6 +73,7 @@ define(function(require) { // function initList() { + firstSelect = true; updateStatus('Read cache ...'); // list messaged from local db @@ -157,8 +159,13 @@ define(function(require) { } function markAsRead(email) { - email.unread = false; + // don't mark top selected email automatically + if (firstSelect) { + firstSelect = false; + return; + } + email.unread = false; emailDao.imapMarkMessageRead({ folder: getFolder().path, uid: email.uid diff --git a/src/js/controller/navigation.js b/src/js/controller/navigation.js index 124613f..0d8c1a7 100644 --- a/src/js/controller/navigation.js +++ b/src/js/controller/navigation.js @@ -11,9 +11,9 @@ define(function(require) { initFolders(function(folders) { $scope.folders = folders; - $scope.$apply(); // select inbox as the current folder on init $scope.openFolder($scope.folders[0]); + $scope.$apply(); }); //