]> git.cworth.org Git - sup/blobdiff - lib/sup/modes/resume-mode.rb
Merge branch 'index-locking' into next
[sup] / lib / sup / modes / resume-mode.rb
index a1e273c115237e6304d8063d039b6a4f02ac796a..b1c69fc1dc2f35fe1eea2350b21873e6c08470e9 100644 (file)
@@ -1,33 +1,46 @@
 module Redwood
 
-class ResumeMode < ComposeMode
+class ResumeMode < EditMessageMode
   def initialize m
-    super()
-    @id = m.id
-    @header, @body = parse_file m.draft_filename
-    @header.delete "Date"
-    @header["Message-Id"] = gen_message_id # generate a new'n
-    regen_text
-    @sent = false
+    @m = m
+    @safe = false
+
+    header, body = parse_file m.draft_filename
+    header.delete "Date"
+
+    super :header => header, :body => body, :have_signature => true
+  end
+
+  def killable?
+    return true if @safe
+
+    case BufferManager.ask_yes_or_no "Discard draft?"
+    when true
+      DraftManager.discard @m
+      BufferManager.flash "Draft discarded."
+      true
+    when false
+      if edited?
+        DraftManager.write_draft { |f| write_message f, false }
+        DraftManager.discard @m
+        BufferManager.flash "Draft saved."
+      end
+      true
+    else
+      false
+    end
   end
 
   def send_message
     if super
-      DraftManager.discard @id 
-      @sent = true
+      DraftManager.discard @m 
+      @safe = true
     end
   end
 
-  def cleanup
-    unless @sent
-      if BufferManager.ask_yes_or_no "discard draft?"
-        DraftManager.discard @id
-        BufferManager.flash "Draft discarded."
-      else
-        BufferManager.flash "Draft saved."
-      end
-      super
-    end
+  def save_as_draft
+    @safe = true
+    DraftManager.discard @m if super
   end
 end