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
_______________________________________________
sup-talk mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/sup-talk

Reply via email to