]> git.cworth.org Git - sup/blobdiff - lib/sup/sent.rb
per-source short-circuit in sup-sync-back if there are no relevant messages
[sup] / lib / sup / sent.rb
index 44c1200cc15fbfe3ab840fb673e346fc58041078..b4a57ec259ecade31aefdd97cb35f1d174076319 100644 (file)
@@ -10,42 +10,40 @@ class SentManager
     self.class.i_am_the_instance self
   end
 
-  def self.source_name; "sent"; end
+  def self.source_name; "sup://sent"; end
   def self.source_id; 9998; end
-  def new_source; @source = SentLoader.new @fn; end
+  def new_source; @source = Recoverable.new SentLoader.new; end
 
   def write_sent_message date, from_email
     need_blank = File.exists?(@fn) && !File.zero?(@fn)
     File.open(@fn, "a") do |f|
-      if need_blank
-        @source.increment_offset if @source.offset == f.tell
-        f.puts
-      end
+      f.puts if need_blank
       f.puts "From #{from_email} #{date}"
       yield f
     end
     @source.each do |offset, labels|
-      m = Message.new @source, offset, labels
-      Index.add_message m
-      UpdateManager.relay :add, m
+      m = Message.new :source => @source, :source_info => offset, :labels => @source.labels
+      Index.sync_message m
+      UpdateManager.relay self, :add, m
     end
   end
 end
 
 class SentLoader < MBox::Loader
-  def initialize filename, end_offset=0
-    File.open(filename, "w") { } unless File.exists? filename
-    super filename, end_offset, true, true
+  yaml_properties :cur_offset
+
+  def initialize cur_offset=0
+    @filename = Redwood::SENT_FN
+    File.open(@filename, "w") { } unless File.exists? @filename
+    super "mbox://" + @filename, cur_offset, true, true
   end
 
-  def increment_offset; @end_offset += 1; end
-  def offset; @end_offset; end
-  def id; SentManager.source_id; end
-  def to_s; SentManager.source_name; end
+  def file_path; @filename end
 
+  def uri; SentManager.source_name; end
+  def to_s; SentManager.source_name; end
+  def id; SentManager.source_id; end
   def labels; [:sent, :inbox]; end
 end
 
-Redwood::register_yaml(SentLoader, %w(filename end_offset))
-
 end