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/

Reply via email to