From: William Morgan Date: Mon, 24 Aug 2009 22:44:13 +0000 (-0400) Subject: Merge branch 'after-add-message-hook' into next X-Git-Url: https://git.notmuchmail.org/git?a=commitdiff_plain;h=67214e30d648ac9351b9898f8e1587d065264787;p=sup Merge branch 'after-add-message-hook' into next Conflicts: lib/sup/poll.rb --- 67214e30d648ac9351b9898f8e1587d065264787 diff --cc lib/sup/poll.rb index 46fe5c5,fb3aacf..e8da557 --- a/lib/sup/poll.rb +++ b/lib/sup/poll.rb @@@ -137,22 -144,31 +143,26 @@@ EO begin return if source.done? || source.has_errors? + messages = [] - source.each do |offset, default_labels| + source.each do |offset, source_labels| if source.has_errors? - Redwood::log "error loading messages from #{source}: #{source.error.message}" + warn "error loading messages from #{source}: #{source.error.message}" return end - m_new = Message.build_from_source source, offset - messages.push(m_new) - m_old = Index.build_message m_new.id + m = Message.build_from_source source, offset + m.labels += source_labels + (source.archived? ? [] : [:inbox]) + m.labels.delete :unread if m.source_marked_read? # preserve read status if possible + m.labels.each { |l| LabelManager << l } ++ messages.push m - m_new.labels += default_labels + (source.archived? ? [] : [:inbox]) - m_new.labels << :sent if source.uri.eql?(SentManager.source_uri) - m_new.labels.delete :unread if m_new.source_marked_read? - m_new.labels.each { |l| LabelManager << l } - - HookManager.run "before-add-message", :message => m_new - m_ret = yield(m_old, m_new, offset) or next if block_given? - Index.sync_message m_ret, opts - UpdateManager.relay self, :added, m_ret unless m_old + HookManager.run "before-add-message", :message => m + yield m end + HookManager.run "after-add-message", :messages => messages + rescue SourceError => e - Redwood::log "problem getting messages from #{source}: #{e.message}" + warn "problem getting messages from #{source}: #{e.message}" Redwood::report_broken_sources :force_to_top => true end end