]> git.cworth.org Git - sup/commitdiff
Merge branch 'xapian-updates'
authorWilliam Morgan <wmorgan-sup@masanjin.net>
Fri, 4 Sep 2009 17:28:10 +0000 (13:28 -0400)
committerWilliam Morgan <wmorgan-sup@masanjin.net>
Fri, 4 Sep 2009 17:28:10 +0000 (13:28 -0400)
1  2 
lib/sup/message.rb
lib/sup/xapian_index.rb

Simple merge
index dbf66431bc263ada5420b9a981f766c9ca5675d4,b5acc0f09e5f36b461e4f3d8e0ba441fe8af4f76..1395601367ef49fdebb9ef5019a82a07a0c83ca3
@@@ -66,33 -71,21 +71,25 @@@ class XapianIndex < BaseInde
      source = SourceManager[entry[:source_id]]
      raise "invalid source #{entry[:source_id]}" unless source
  
-     mk_addrs = lambda { |l| l.map { |e,n| "#{n} <#{e}>" } * ', ' }
-     mk_refs = lambda { |l| l.map { |r| "<#{r}>" } * ' ' }
-     fake_header = {
-       'message-id' => entry[:message_id],
-       'date' => Time.at(entry[:date]),
-       'subject' => entry[:subject],
-       'from' => mk_addrs[[entry[:from]]],
-       'to' => mk_addrs[entry[:to]],
-       'cc' => mk_addrs[entry[:cc]],
-       'bcc' => mk_addrs[entry[:bcc]],
-       'reply-tos' => mk_refs[entry[:replytos]],
-       'references' => mk_refs[entry[:refs]],
-      }
-       m = Message.new :source => source, :source_info => entry[:source_info],
-                   :labels => entry[:labels],
-                   :snippet => entry[:snippet]
-       m.parse_header fake_header
-       m
+     m = Message.new :source => source, :source_info => entry[:source_info],
+                     :labels => entry[:labels], :snippet => entry[:snippet]
+     mk_person = lambda { |x| Person.new(*x.reverse!) }
+     entry[:from] = mk_person[entry[:from]]
+     entry[:to].map!(&mk_person)
+     entry[:cc].map!(&mk_person)
+     entry[:bcc].map!(&mk_person)
+     m.load_from_index! entry
+     m
    end
  
 +  def add_message m; sync_message m end
 +  def update_message m; sync_message m end
 +  def update_message_state m; sync_message m end
 +
    def sync_message m, opts={}
-     entry = synchronize { @entries[m.id] }
+     entry = synchronize { get_entry m.id }
      snippet = m.snippet
      entry ||= {}
      labels = m.labels
        :replytos => (entry[:replytos] || m.replytos),
      }
  
 -    m.labels.each { |l| LabelManager << l }
 +    labels.each { |l| LabelManager << l }
  
      synchronize do
-       index_message m, opts
-       union_threads([m.id] + m.refs + m.replytos)
-       @entries[m.id] = d
+       index_message m, d, opts
      end
      true
    end