]> git.cworth.org Git - sup/blobdiff - lib/sup/draft.rb
handle keycode 127 like KEY_BACKSPACE
[sup] / lib / sup / draft.rb
index e33e4791d128804448a39ef653f9d312d83e0bd2..81c00445f764278ae5e298862c7ca9d567bcce2b 100644 (file)
@@ -23,20 +23,20 @@ class DraftManager
     @source.each do |thisoffset, theselabels|
       m = Message.new :source => @source, :source_info => thisoffset, :labels => theselabels
       Index.sync_message m
-      UpdateManager.relay self, :add, m
+      UpdateManager.relay self, :added, m
       my_message = m if thisoffset == offset
     end
 
     my_message
   end
 
-  def discard mid
-    docid, entry = Index.load_entry_for_id mid
-    raise ArgumentError, "can't find entry for draft: #{mid.inspect}" unless entry
-    raise ArgumentError, "not a draft: source id #{entry[:source_id].inspect}, should be #{DraftManager.source_id.inspect} for #{mid.inspect} / docno #{docid}" unless entry[:source_id].to_i == DraftManager.source_id
+  def discard m
+    docid, entry = Index.load_entry_for_id m.id
+    raise ArgumentError, "can't find entry for draft: #{m.id.inspect}" unless entry
+    raise ArgumentError, "not a draft: source id #{entry[:source_id].inspect}, should be #{DraftManager.source_id.inspect} for #{m.id.inspect} / docno #{docid}" unless entry[:source_id].to_i == DraftManager.source_id
     Index.drop_entry docid
     File.delete @source.fn_for_offset(entry[:source_info])
-    UpdateManager.relay self, :delete, mid
+    UpdateManager.relay self, :single_message_deleted, m
   end
 end
 
@@ -47,7 +47,7 @@ class DraftLoader < Source
   def initialize cur_offset=0
     dir = Redwood::DRAFT_DIR
     Dir.mkdir dir unless File.exists? dir
-    super "draft://#{dir}", cur_offset, true, false
+    super DraftManager.source_name, cur_offset, true, false
     @dir = dir
   end
 
@@ -99,12 +99,14 @@ class DraftLoader < Source
     ret
   end
 
-  def raw_full_message offset
-    ret = ""
-    File.open fn_for_offset(offset) do |f|
-      ret += l until f.eof?
+  def each_raw_message_line offset
+    File.open(fn_for_offset(offset)) do |f|
+      yield f.gets until f.eof?
     end
-    ret
+  end
+
+  def raw_message offset
+    IO.readlines(fn_for_offset(offset)).join
   end
 
   def start_offset; 0; end