openSUSE/open-build-service

View on GitHub
src/api/app/components/watched_items_list_component.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
class WatchedItemsListComponent < ApplicationComponent
  LIST_TITLE = {
    'Package' => 'Packages you are watching',
    'Project' => 'Projects you are watching',
    'BsRequest' => 'Requests you are watching'
  }.freeze

  EMPTY_LIST_TEXTS = {
    'Package' => 'There are no packages in the watchlist yet.',
    'Project' => 'There are no projects in the watchlist yet.',
    'BsRequest' => 'There are no requests in the watchlist yet.'
  }.freeze

  def initialize(items:, class_name:, current_object:)
    super

    @items = items
    @class_name = class_name
    @current_object = current_object
    @current_object_class_name = @current_object.class.name
  end

  private

  def list_title
    LIST_TITLE[@class_name]
  end

  def empty_list_text
    EMPTY_LIST_TEXTS[@class_name]
  end

  def current_object_params
    object_type = @current_object.class.name
    case object_type
    when 'Project'
      { type: object_type, name: @current_object.name }
    when 'Package'
      { type: object_type, package_name: @current_object.name, project_name: @current_object.project_name }
    when 'BsRequest'
      { type: object_type, number: @current_object.number }
    end
  end
end