(js) Fix issues with the mail advanced search
- fixed loading of headers when scrolling the virtual repeater; - fixed viewing a single message; - fixed search from a mailbox that contains subfolders.
This commit is contained in:
parent
e30fb0d1fb
commit
47ab4b837c
|
@ -10,7 +10,6 @@
|
|||
function MailboxController($state, $timeout, $mdDialog, stateAccounts, stateAccount, stateMailbox, encodeUriFilter, focus, Dialog, Account, Mailbox) {
|
||||
var vm = this, messageDialog = null;
|
||||
|
||||
if (!Mailbox.$virtualMode)
|
||||
Mailbox.selectedFolder = stateMailbox;
|
||||
|
||||
vm.service = Mailbox;
|
||||
|
|
|
@ -68,7 +68,15 @@
|
|||
}
|
||||
|
||||
function startAdvancedSearch() {
|
||||
var root, mailboxes = [];
|
||||
var root, mailboxes = [],
|
||||
_visit = function(folders) {
|
||||
_.each(folders, function(o) {
|
||||
mailboxes.push(o);
|
||||
if (o.children && o.children.length > 0) {
|
||||
_visit(o.children);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
vm.virtualMailbox = new VirtualMailbox(vm.accounts[0]);
|
||||
|
||||
|
@ -84,9 +92,8 @@
|
|||
if (angular.isDefined(vm.search.mailbox)) {
|
||||
root = vm.accounts[0].$getMailboxByPath(vm.search.mailbox);
|
||||
mailboxes.push(root);
|
||||
|
||||
if (vm.search.subfolders && root.children.length)
|
||||
mailboxes.push(root.children);
|
||||
_visit(root.children);
|
||||
}
|
||||
else {
|
||||
mailboxes = vm.accounts[0].$flattenMailboxes();
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
}
|
||||
},
|
||||
resolve: {
|
||||
stateMailbox: function(Mailbox) { return Mailbox.selectedFolder; }
|
||||
stateMailbox: stateVirtualMailbox
|
||||
}
|
||||
})
|
||||
.state('mail.account.virtualMailbox.message', {
|
||||
|
@ -62,7 +62,7 @@
|
|||
}
|
||||
},
|
||||
resolve: {
|
||||
stateMailbox: stateVirtualMailbox,
|
||||
stateMailbox: stateVirtualMailboxOfMessage,
|
||||
stateMessage: stateMessage
|
||||
}
|
||||
})
|
||||
|
@ -175,6 +175,7 @@
|
|||
function stateMailbox(Mailbox, $stateParams, stateAccount, decodeUriFilter) {
|
||||
var mailboxId = decodeUriFilter($stateParams.mailboxId),
|
||||
_find;
|
||||
|
||||
// Recursive find function
|
||||
_find = function(mailboxes) {
|
||||
var mailbox = _.find(mailboxes, function(o) {
|
||||
|
@ -192,7 +193,6 @@
|
|||
|
||||
if (Mailbox.$virtualMode)
|
||||
return Mailbox.selectedFolder;
|
||||
//return $q.when(Mailbox.selectedFolder);
|
||||
|
||||
return _find(stateAccount.$mailboxes);
|
||||
}
|
||||
|
@ -216,19 +216,39 @@
|
|||
// return stateAccount.$newMessage();
|
||||
// }
|
||||
|
||||
stateVirtualMailbox.$inject = ['Mailbox', '$stateParams'];
|
||||
function stateVirtualMailbox(Mailbox, $stateParams) {
|
||||
/**
|
||||
* Return a VirtualMailbox instance
|
||||
* @ngInject
|
||||
*/
|
||||
stateVirtualMailbox.$inject = ['$q', 'Mailbox'];
|
||||
function stateVirtualMailbox($q, Mailbox) {
|
||||
if (Mailbox.$virtualMode)
|
||||
return Mailbox.selectedFolder;
|
||||
else
|
||||
return $q.reject("No virtual mailbox defined");
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a Mailbox instance from a VirtualMailbox instance
|
||||
* @ngInject
|
||||
*/
|
||||
stateVirtualMailboxOfMessage.$inject = ['$q', 'Mailbox', 'decodeUriFilter', '$stateParams'];
|
||||
function stateVirtualMailboxOfMessage($q, Mailbox, decodeUriFilter, $stateParams) {
|
||||
var mailboxId = decodeUriFilter($stateParams.mailboxId);
|
||||
|
||||
if (Mailbox.$virtualMode)
|
||||
return _.find(Mailbox.selectedFolder.$mailboxes, function(mailboxObject) {
|
||||
return mailboxObject.path == $stateParams.mailboxId;
|
||||
return mailboxObject.path == mailboxId;
|
||||
});
|
||||
else
|
||||
return $q.reject("No virtual mailbox defined for message");
|
||||
}
|
||||
|
||||
/**
|
||||
* @ngInject
|
||||
*/
|
||||
stateMessage.$inject = ['Mailbox', 'encodeUriFilter', '$stateParams', '$state', 'stateMailbox', 'stateMessages'];
|
||||
function stateMessage(Mailbox, encodeUriFilter, $stateParams, $state, stateMailbox, stateMessages) {
|
||||
stateMessage.$inject = ['Mailbox', 'encodeUriFilter', '$stateParams', '$state', 'stateMailbox'];
|
||||
function stateMessage(Mailbox, encodeUriFilter, $stateParams, $state, stateMailbox) {
|
||||
var message;
|
||||
|
||||
message = _.find(stateMailbox.$messages, function(messageObject) {
|
||||
|
@ -256,10 +276,14 @@
|
|||
/**
|
||||
* @ngInject
|
||||
*/
|
||||
runBlock.$inject = ['$rootScope'];
|
||||
function runBlock($rootScope) {
|
||||
runBlock.$inject = ['$rootScope', '$log', '$state'];
|
||||
function runBlock($rootScope, $log, $state) {
|
||||
$rootScope.$on('$stateChangeError', function(event, toState, toParams, fromState, fromParams, error) {
|
||||
$log.error(error);
|
||||
$state.go('mail');
|
||||
});
|
||||
$rootScope.$on('$routeChangeError', function(event, current, previous, rejection) {
|
||||
console.error(event, current, previous, rejection);
|
||||
$log.error(event, current, previous, rejection);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -89,7 +89,7 @@
|
|||
_.each(this.$mailboxes, function(mailbox) {
|
||||
search = search.then(function() {
|
||||
if (_this.$isLoading) {
|
||||
console.log("searching mailbox " + mailbox.path);
|
||||
VirtualMailbox.$log.debug("searching mailbox " + mailbox.path);
|
||||
return mailbox.$filter( {sort: "date", asc: false, match: match}, params);
|
||||
}
|
||||
});
|
||||
|
@ -99,7 +99,7 @@
|
|||
};
|
||||
|
||||
VirtualMailbox.prototype.stopSearch = function() {
|
||||
console.log("stopping search...");
|
||||
VirtualMailbox.$log.debug("stopping search...");
|
||||
this.$isLoading = false;
|
||||
};
|
||||
|
||||
|
@ -138,6 +138,7 @@
|
|||
for (k = 0; k < mailbox.$messages.length; i++, k++) {
|
||||
message = mailbox.$messages[k];
|
||||
if (i == index) {
|
||||
if (mailbox.$loadMessage(message.uid))
|
||||
return message;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue