]> git.cworth.org Git - sup/blobdiff - lib/sup/poll.rb
don't require has_errors? in Source objects
[sup] / lib / sup / poll.rb
index 09f5de3898e57c2d683ae9756ac3700c9473ccb3..220fee38c6acf8f1b9a8435046a4b40af50873b0 100644 (file)
@@ -86,7 +86,7 @@ EOS
       Index.usual_sources.each do |source|
 #        yield "source #{source} is done? #{source.done?} (cur_offset #{source.cur_offset} >= #{source.end_offset})"
         begin
-          yield "Loading from #{source}... " unless source.done? || source.has_errors?
+          yield "Loading from #{source}... " unless source.done? || (source.respond_to?(:has_errors?) && source.has_errors?)
         rescue SourceError => e
           Redwood::log "problem getting messages from #{source}: #{e.message}"
           Redwood::report_broken_sources :force_to_top => true
@@ -97,7 +97,7 @@ EOS
         numi = 0
         add_messages_from source do |m, offset, entry|
           ## always preserve the labels on disk.
-          m.labels = entry[:label].split(/\s+/).map { |x| x.intern } if entry
+          m.labels = ((m.labels - [:unread, :inbox]) + entry[:label].split(/\s+/).map { |x| x.intern }).uniq if entry
           yield "Found message at #{offset} with labels {#{m.labels * ', '}}"
           unless entry
             num += 1
@@ -156,7 +156,7 @@ EOS
 
           docid, entry = Index.load_entry_for_id m.id
           HookManager.run "before-add-message", :message => m
-          m = yield(m, offset, entry) or next
+          m = yield(m, offset, entry) or next if block_given?
           Index.sync_message m, docid, entry, opts
           UpdateManager.relay self, :added, m unless entry
         rescue MessageFormatError => e