# frozen_string_literal: true

class List < ApplicationRecord
  include List::TimelineMethods

  belongs_to :user
  has_many :list_members, dependent: :destroy

  validates :name,
            length:     { minimum: 1 },
            uniqueness: { scope: :user_id }
  validates :display_name, length: { maximum: 30 }

  before_validation do
    display_name.strip!
    self.name = display_name.parameterize
    self.name = "-followers-" if name == "followers"
  end

  alias members list_members

  def add_member(user)
    ListMember.create! list: self, user: user
  end

  def remove_member(user)
    ListMember.where(list: self, user: user).first!.destroy
  end
end