A.L.E.C wrote:
>
> But current behaviour is inconsistent. When you have a message opened
> (show action) you will be not informed when new mail will arrive,
> because keep-alive is not update counters on folders list. You must go
> back to messages list. When working with preview pane counters are
> updated, so I don't see problem to do this also in non-messages-list mode.
I agree. We should call check-recent whenever this.gui_objects.mailboxlist
is available. Currently it's only done when this.gui_objects.messagelist is
there.
> Thomas, the point is that getunread is called too often when working
> without preview pane. It's called after each show action and that's
> performance issue what I'm talking about. When messages list is open
> only check-recent is called. So I think we can remove getunread calls
> also from show action. It's not problem for me, I use preview mode, but
> something is not right here.
OK, then I suggest to use the cached messagecount value when loading the
page and only call getunread if in list mode:
Index: program/include/main.inc
===================================================================
--- program/include/main.inc (revision 1296)
+++ program/include/main.inc (working copy)
@@ -1811,6 +1811,10 @@
}
}
+ // add unread message count display
+ if ($unread = $IMAP->messagecount($folder['id'], 'UNSEEN', false))
+ $foldername .= sprintf(' (%d)', $unread);
+
// make folder name safe for ids and class names
$folder_id = preg_replace('/[^A-Za-z0-9\-_]/', '', $folder['id']);
$class_name = preg_replace('/[^a-z0-9\-_]/', '', $folder_class ?
$folder_class : strtolower($folder['id']));
Index: program/js/app.js
===================================================================
--- program/js/app.js (revision 1296)
+++ program/js/app.js (working copy)
@@ -226,7 +226,8 @@
if (this.gui_objects.mailboxlist)
{
this.gui_objects.folderlist = this.gui_objects.mailboxlist;
- this.http_request('getunread', '');
+ if (!this.env.action)
+ this.http_request('getunread', '');
}
// ask user to send MDN
@@ -355,7 +356,7 @@
// start interval for keep-alive/recent_check signal
this.start_keepalive = function()
{
- if (this.env.keep_alive && !this.env.framed && this.task=='mail' &&
this.gui_objects.messagelist)
+ if (this.env.keep_alive && !this.env.framed && this.task=='mail' &&
this.gui_objects.mailboxlist)
this._int = setInterval(function(){ ref.check_for_recent(); },
this.env.keep_alive * 1000);
else if (this.env.keep_alive && !this.env.framed && this.task!='login')
this._int = setInterval(function(){ ref.send_keep_alive(); },
this.env.keep_alive * 1000);
This can make the page-load slow if one has disabled caching. Then building
the folder list will request the unread count from IMAP for each folder.
Maybe a
if ($IMAP->caching_enabled) could help here.
What do you think? Could this change solve your problems? If yes, I'll
commit the above changes to trunk.
~Thomas
_______________________________________________
List info: http://lists.roundcube.net/dev/