From: William Morgan Date: Fri, 4 Sep 2009 17:28:10 +0000 (-0400) Subject: Merge branch 'xapian-updates' X-Git-Url: https://git.notmuchmail.org/git?a=commitdiff_plain;h=46f8e5116f38c8248fdc8553db18f8d2132a1f46;p=sup Merge branch 'xapian-updates' --- 46f8e5116f38c8248fdc8553db18f8d2132a1f46 diff --cc lib/sup/xapian_index.rb index dbf6643,b5acc0f..1395601 --- a/lib/sup/xapian_index.rb +++ b/lib/sup/xapian_index.rb @@@ -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 @@@ -114,12 -107,10 +111,10 @@@ :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