Archive of RubyForge sup-talk mailing list
 help / color / mirror / Atom feed
From: itaylor@uark.edu (Ian Taylor)
Subject: [sup-talk] [PATCH] Fix for imap based sources
Date: Thu, 01 Nov 2007 20:14:55 -0400	[thread overview]
Message-ID: <1193962132-sup-5058@silver> (raw)
In-Reply-To: <47206F23.6080400@quintic.co.uk>

Excerpts from Marcus Williams's message of Thu Oct 25 06:25:39 -0400 2007:
> Hi -
> 
> Apply this one at your peril. This patch makes the unread status
> correct on sources that arent mbox - unfortunately I cant test on
> Maildir so if someone wants to confirm it still works that would be
> good :)
> 
> If you implement a new source, it means you now have to add a
> marked_read? method to your source as well. Argument is a message id.
> message.rb now calls this when source_marked_read is called.
> 
> It also fixes what I think is a bug in the imap sup source - the imap
> "/Seen" flag means a message has been read from the way I interpret the
> RFC, the "/Recent" flag is what you need to check for "unreadness".
> 
> This fixes my problem with imap (in that all new messages were getting
> marked as read). To get just this fix all you have to do is replace Seen
> for Recent in the imap.rb. The line currently looks like:
> 
> labels = { :Seen => :unread,
> 
> and it should be
> 
> labels = { :Recent => :unread,
> 
> 
> 
> Marcus

That doesn't seem quite right to me. The RFC seems to state that the
'Recent' flag is more of a notification that this is the first session
to see the message.

What about this instead?

      labels = { :Flagged => :starred,                                                                                                                                                                              
                 :Deleted => :deleted                                                                                                                                                                               
               }.inject(@labels) do |cur, (imap, sup)|                                                                                                                                                              
        cur + (state[:flags].include?(imap) ? [sup] : [])                                                                                                                                                           
      end
      labels += [:unread] unless state[:flags].include?(:Seen)

Seems like we want to tag it as unread if it isn't marked as 'Seen'.

-- 
Ian Taylor


  reply	other threads:[~2007-11-02  0:14 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-25 10:25 Marcus Williams
2007-11-02  0:14 ` Ian Taylor [this message]
2007-11-02  1:19   ` Colin Bell
     [not found] <0ae09eda00048831@IMSS-WIN>
2007-10-25 12:35 ` Marcus Williams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1193962132-sup-5058@silver \
    --to=itaylor@uark.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox