sup

A curses threads-with-tags style email client

sup.git

git clone https://supmua.dev/git/sup/

lib/sup/modes/compose_mode.rb (1692B) - raw

      1 # encoding: utf-8
      2 
      3 module Redwood
      4 
      5 class ComposeMode < EditMessageMode
      6   def initialize opts={}
      7     header = {}
      8     header["From"] = (opts[:from] || AccountManager.default_account).full_address
      9     header["To"] = opts[:to].map { |p| p.full_address }.join(", ") if opts[:to]
     10     header["Cc"] = opts[:cc].map { |p| p.full_address }.join(", ") if opts[:cc]
     11     header["Bcc"] = opts[:bcc].map { |p| p.full_address }.join(", ") if opts[:bcc]
     12     header["Subject"] = opts[:subj] if opts[:subj]
     13     header["References"] = opts[:refs].map { |r| "<#{r}>" }.join(" ") if opts[:refs]
     14     header["In-Reply-To"] = opts[:replytos].map { |r| "<#{r}>" }.join(" ") if opts[:replytos]
     15 
     16     super :header => header, :body => (opts[:body] || [])
     17   end
     18 
     19   def default_edit_message
     20     edited = super
     21     BufferManager.kill_buffer self.buffer unless edited
     22     edited
     23   end
     24 
     25   def self.spawn_nicely opts={}
     26     from = opts[:from] || (BufferManager.ask_for_account(:account, "From (default #{AccountManager.default_account.email}): ") or return if $config[:ask_for_from])
     27     to = opts[:to] || (BufferManager.ask_for_contacts(:people, "To: ", [opts[:to_default]]) or return if ($config[:ask_for_to] != false))
     28     cc = opts[:cc] || (BufferManager.ask_for_contacts(:people, "Cc: ") or return if $config[:ask_for_cc])
     29     bcc = opts[:bcc] || (BufferManager.ask_for_contacts(:people, "Bcc: ") or return if $config[:ask_for_bcc])
     30     subj = opts[:subj] || (BufferManager.ask(:subject, "Subject: ") or return if $config[:ask_for_subject])
     31 
     32     mode = ComposeMode.new :from => from, :to => to, :cc => cc, :bcc => bcc, :subj => subj
     33     BufferManager.spawn "New Message", mode
     34     mode.default_edit_message
     35   end
     36 end
     37 
     38 end