The call to @messages[mid] was a mistake because @messages is a SavingHash.
This was inserting spurious entries into @messages, which then caused
ThreadSet#relevant? to return true for any non-first messages in a thread (the
first one would be falsely added to @messages)
@thread_by_subj = thread_by_subj
end
- def thread_for_id mid; (c = @messages[mid]) && c.root.thread end
+ def thread_for_id mid; @messages.member?(mid) && @messages[mid].root.thread end
def contains_id? id; @messages.member?(id) && !@messages[id].empty? end
def thread_for m; thread_for_id m.id end
def contains? m; contains_id? m.id end