Sha256: 77d4e11e5492560a133042c864fe6a7665e932bc4b0e3a933744e71e86b6dde4

Contents?: true

Size: 953 Bytes

Versions: 9

Compression:

Stored size: 953 Bytes

Contents

# frozen_string_literal: true

module Thredded
  # A view model for a page of MessageboardGroupViews.
  class MessageboardGroupView
    delegate :name, to: :@group, allow_nil: true
    attr_reader :group, :messageboards

    # @param messageboard_scope [ActiveRecord::Relation<Thredded::Messageboard>]
    # @return [Array<MessageboardGroupView>]
    def self.grouped(messageboard_scope)
      messageboard_scope.preload(last_topic: [:last_user])
        .eager_load(:group)
        .order(Arel.sql('COALESCE(thredded_messageboard_groups.position, 0) ASC, thredded_messageboard_groups.id ASC'))
        .ordered
        .group_by(&:group)
        .map { |(group, messageboards)| MessageboardGroupView.new(group, messageboards) }
    end

    # @param group Thredded::MessageboardGroup
    # @param messageboards [Thredded::TopicCommon]
    def initialize(group, messageboards)
      @group = group
      @messageboards = messageboards
    end
  end
end

Version data entries

9 entries across 9 versions & 2 rubygems

Version Path
thredded-0.15.5 app/view_models/thredded/messageboard_group_view.rb
thredded-0.15.4 app/view_models/thredded/messageboard_group_view.rb
thredded-0.15.3 app/view_models/thredded/messageboard_group_view.rb
thredded-0.15.2 app/view_models/thredded/messageboard_group_view.rb
thredded-0.15.1 app/view_models/thredded/messageboard_group_view.rb
threddedDANIEL-0.14.5 app/view_models/thredded/messageboard_group_view.rb
thredded-0.14.4 app/view_models/thredded/messageboard_group_view.rb
thredded-0.14.3 app/view_models/thredded/messageboard_group_view.rb
thredded-0.14.2 app/view_models/thredded/messageboard_group_view.rb