Sha256: 35f79b81d1511eae1d51e32209eae8f05cfd6ab16a8f42b6e3ab009a2399a0ed

Contents?: true

Size: 802 Bytes

Versions: 8

Compression:

Stored size: 802 Bytes

Contents

module Imap; end

module Imap::Backup
  # Updates the flags on backed-up emails
  class FlagRefresher
    # The number of messages to process at a time
    CHUNK_SIZE = 100

    def initialize(folder, serializer)
      @folder = folder
      @serializer = serializer
    end

    # Runs the update
    # @return [void]
    def run
      uids = serializer.uids.clone

      uids.each_slice(CHUNK_SIZE) do |block|
        refresh_block block
      end
    end

    private

    attr_reader :folder
    attr_reader :serializer

    def refresh_block(uids)
      uids_and_flags = folder.fetch_multi(uids, ["FLAGS"])
      uids_and_flags.each do |uid_and_flags|
        uid = uid_and_flags[:uid]
        flags = uid_and_flags[:flags]
        serializer.update(uid, flags: flags)
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
imap-backup-15.0.1 lib/imap/backup/flag_refresher.rb
imap-backup-15.0.0 lib/imap/backup/flag_refresher.rb
imap-backup-14.6.1 lib/imap/backup/flag_refresher.rb
imap-backup-14.6.0 lib/imap/backup/flag_refresher.rb
imap-backup-14.5.2 lib/imap/backup/flag_refresher.rb
imap-backup-14.5.1 lib/imap/backup/flag_refresher.rb
imap-backup-14.5.0 lib/imap/backup/flag_refresher.rb
imap-backup-14.4.5 lib/imap/backup/flag_refresher.rb