Sha256: 53af99088bb540d4ca569f3aefb5bf39c2ecaa4ceed765045e2aed01e3121d56

Contents?: true

Size: 850 Bytes

Versions: 1

Compression:

Stored size: 850 Bytes

Contents

module Imap::Backup
  class Account; end

  class Account::BackupFolders
    attr_reader :account
    attr_reader :client

    def initialize(client:, account:)
      @client = client
      @account = account
    end

    def each(&block)
      return enum_for(:each) if !block

      all_names = client.list

      configured =
        case
        when account.folders&.any?
          account.folders.map { |af| af[:name] }
        when account.folder_blacklist
          []
        else
          all_names
        end

      names =
        if account.folder_blacklist
          all_names - configured
        else
          all_names & configured
        end

      names.each { |name| block.call(Account::Folder.new(client, name)) }
    end

    def map(&block)
      each.map do |folder|
        block.call(folder)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
imap-backup-10.0.0 lib/imap/backup/account/backup_folders.rb