[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[sup-talk] [PATCH 1/4] factor saving out of thread/message classes



---
 lib/sup/index.rb                   |    7 +++++++
 lib/sup/message.rb                 |    5 +----
 lib/sup/modes/thread-index-mode.rb |    2 +-
 lib/sup/thread.rb                  |    2 +-
 4 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/lib/sup/index.rb b/lib/sup/index.rb
index ff03f19..5d8d714 100644
--- a/lib/sup/index.rb
+++ b/lib/sup/index.rb
@@ -172,6 +172,13 @@ class BaseIndex
   def parse_query s
     unimplemented
   end
+
+  def save_thread t
+    t.each_dirty_message do |m|
+      update_message_state m 
+      m.clear_dirty
+    end
+  end
 end
 
 index_name = ENV['SUP_INDEX'] || $config[:index] || DEFAULT_INDEX
diff --git a/lib/sup/message.rb b/lib/sup/message.rb
index a147c42..95ae050 100644
--- a/lib/sup/message.rb
+++ b/lib/sup/message.rb
@@ -182,11 +182,8 @@ class Message
   ## don't tempt me.
   def sanitize_message_id mid; mid.gsub(/(\s|[^\000-\177])+/, "")[0..254] end
 
-  def save_state index
-    return unless @dirty
-    index.update_message_state self
+  def clear_dirty
     @dirty = false
-    true
   end
 
   def has_label? t; @labels.member? t; end
diff --git a/lib/sup/modes/thread-index-mode.rb b/lib/sup/modes/thread-index-mode.rb
index 12a76f9..370903a 100644
--- a/lib/sup/modes/thread-index-mode.rb
+++ b/lib/sup/modes/thread-index-mode.rb
@@ -477,7 +477,7 @@ EOS
       BufferManager.say("Saving threads...") do |say_id|
         dirty_threads.each_with_index do |t, i|
           BufferManager.say "Saving modified thread #{i + 1} of #{dirty_threads.length}...", say_id
-          t.save_state Index
+          Index.save_thread t
         end
       end
     end
diff --git a/lib/sup/thread.rb b/lib/sup/thread.rb
index 2300305..3fdf1f6 100644
--- a/lib/sup/thread.rb
+++ b/lib/sup/thread.rb
@@ -112,7 +112,7 @@ class Thread
 
   def set_labels l; each { |m, *o| m && m.labels = l }; end
   def has_label? t; any? { |m, *o| m && m.has_label?(t) }; end
-  def save_state index; each { |m, *o| m && m.save_state(index) }; end
+  def each_dirty_message; each { |m, *o| m && m.dirty? && yield(m) }; end
 
   def direct_participants
     map { |m, *o| [m.from] + m.to if m }.flatten.compact.uniq
-- 
1.6.4.2

_______________________________________________
sup-talk mailing list
sup-talk@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-talk