]> git.cworth.org Git - sup/blob - lib/sup/sent.rb
6ef9050be9f9c015050e3356dc6b3b4fd3d2ec6f
[sup] / lib / sup / sent.rb
1 module Redwood
2
3 class SentManager
4   include Singleton
5
6   attr_accessor :source
7   def initialize fn
8     @fn = fn
9     @source = nil
10     self.class.i_am_the_instance self
11   end
12
13   def self.source_name; "sent"; end
14   def self.source_id; 9998; end
15   def new_source; @source = SentLoader.new @fn; end
16
17   def write_sent_message date, from_email
18     need_blank = File.exists?(@fn) && !File.zero?(@fn)
19     File.open(@fn, "a") do |f|
20       f.puts if need_blank
21       f.puts "From #{from_email} #{date}"
22       yield f
23     end
24     @source.each do |offset, labels|
25       m = Message.new @source, offset, labels
26       Index.add_message m
27       UpdateManager.relay :add, m
28     end
29   end
30 end
31
32 class SentLoader < MBox::Loader
33   def initialize filename, end_offset=0
34     File.open(filename, "w") { } unless File.exists? filename
35     super filename, end_offset, true, true
36   end
37
38   def id; SentManager.source_id; end
39   def to_s; SentManager.source_name; end
40
41   def labels; [:sent, :inbox]; end
42 end
43
44 Redwood::register_yaml(SentLoader, %w(filename end_offset))
45
46 end