# frozen_string_literal: true

class UserMutesController < ApplicationController
  include UserMethods

  layout :site_layout

  before_action :authorize_web
  before_action :set_locale

  authorize_resource

  before_action :lookup_user, :only => [:create, :destroy]
  before_action :check_database_readable
  before_action :check_database_writable, :only => [:create, :destroy]

  def index
    @muted_users = current_user.muted_users
    @title = t ".title"

    redirect_to account_path unless @muted_users.any?
  end

  def create
    user_mute = current_user.mutes.build(:subject => @user)

    if user_mute.save
      flash[:notice] = t(".notice", :name => user_mute.subject.display_name)
    else
      flash[:error] = t(".error", :name => user_mute.subject.display_name, :full_message => user_mute.errors.full_messages.to_sentence.humanize)
    end

    redirect_back_or_to user_mutes_path(current_user)
  end

  def destroy
    user_mute = current_user.mutes.find_by!(:subject => @user)

    if user_mute.destroy
      flash[:notice] = t(".notice", :name => user_mute.subject.display_name)
    else
      flash[:error] = t(".error")
    end

    redirect_back_or_to user_mutes_path(current_user)
  end
end
