# frozen_string_literal: true

class TopicSubtype
  include ActiveModel::Serialization

  attr_accessor :id, :options

  def initialize(id, options)
    @id = id
    @options = options
  end

  def attributes
    { 'id' => @id, 'options' => @options }
  end

  def self.list
    return [] unless @archetypes.present?
    @archetypes.values
  end

  def self.user_to_user
    'user_to_user'
  end

  def self.system_message
    'system_message'
  end

  def self.moderator_warning
    'moderator_warning'
  end

  def self.notify_moderators
    'notify_moderators'
  end

  def self.notify_user
    'notify_user'
  end

  def self.pending_users_reminder
    'pending_users'
  end

  def self.register(name, options = {})
    @subtypes ||= {}
    @subtypes[name] = TopicSubtype.new(name, options)
  end

  register 'user_to_user'
  register 'system_message'
  register 'moderator_warning'
  register 'notify_moderators'
  register 'notify_user'

end