]> git.cworth.org Git - sup/commitdiff
thread snippet improvement: display snippet of first unread message, or last snippet...
authorwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Mon, 26 Nov 2007 21:31:40 +0000 (21:31 +0000)
committerwmorgan <wmorgan@5c8cc53c-5e98-4d25-b20a-d8db53a31250>
Mon, 26 Nov 2007 21:31:40 +0000 (21:31 +0000)
git-svn-id: svn://rubyforge.org/var/svn/sup/trunk@724 5c8cc53c-5e98-4d25-b20a-d8db53a31250

lib/sup/thread.rb

index 722ba344bb5343fd345214329fc92f046e2ab693..d4593035336134736a63f11322cd81948ee9dc10 100644 (file)
@@ -86,8 +86,12 @@ class Thread
   def dirty?; any? { |m, *o| m && m.dirty? }; end
   def date; map { |m, *o| m.date if m }.compact.max; end
   def snippet
-    last_m, last_stuff = select { |m, *o| m && m.snippet && !m.snippet.empty? }.sort_by { |m, *o| m.date }.last
-    last_m ? last_m.snippet : ""
+    with_snippets = select { |m, *o| m && m.snippet && !m.snippet.empty? }
+    first_unread, * = with_snippets.select { |m, *o| m.has_label?(:unread) }.sort_by { |m, *o| m.date }.first
+    return first_unread.snippet if first_unread
+    last_read, * = with_snippets.sort_by { |m, *o| m.date }.last
+    return last_read.snippet if last_read
+    ""
   end
   def authors; map { |m, *o| m.from if m }.compact.uniq; end