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