commit 6119bb9b65371c8fa7a9e0895b35be1207822aa1
parent ce8d41af569f94b9992fb9fe866e94dc8d5d8da5
Author: Rich Lane <rlane@club.cc.cmu.edu>
Date: Tue, 29 Dec 2009 17:38:02 -0800
factor saving out of thread/message classes
Diffstat:
4 files changed, 10 insertions(+), 6 deletions(-)
diff --git 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
@@ -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
@@ -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
@@ -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