Sha256: fbb2e649f13f52b4716fe7588df569c1a49e93dea8f9e3e6cba31fb1f585aeb8

Contents?: true

Size: 909 Bytes

Versions: 11

Compression:

Stored size: 909 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]
    # @return [Array<MessageboardGroupView>]
    def self.grouped(messageboard_scope)
      messageboard_scope.preload(last_topic: [:last_user])
        .eager_load(:group)
        .order('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

11 entries across 11 versions & 1 rubygems

Version Path
thredded-0.11.1 app/view_models/thredded/messageboard_group_view.rb
thredded-0.11.0 app/view_models/thredded/messageboard_group_view.rb
thredded-0.10.1 app/view_models/thredded/messageboard_group_view.rb
thredded-0.10.0 app/view_models/thredded/messageboard_group_view.rb
thredded-0.9.4 app/view_models/thredded/messageboard_group_view.rb
thredded-0.9.3 app/view_models/thredded/messageboard_group_view.rb
thredded-0.9.2 app/view_models/thredded/messageboard_group_view.rb
thredded-0.9.1 app/view_models/thredded/messageboard_group_view.rb
thredded-0.8.4 app/view_models/thredded/messageboard_group_view.rb
thredded-0.8.2 app/view_models/thredded/messageboard_group_view.rb
thredded-0.7.0 app/view_models/thredded/messageboard_group_view.rb