Retrospring/app/controllers/settings/mutes_controller.rb

50 lines
1.2 KiB
Ruby

# frozen_string_literal: true
class Settings::MutesController < ApplicationController
include TurboStreamable
before_action :authenticate_user!
turbo_stream_actions :create, :destroy
def index
@users = current_user.muted_users
@rules = MuteRule.where(user: current_user)
end
def create
result = UseCase::MuteRule::Create.call(user: current_user, phrase: params[:muted_phrase])
respond_to do |format|
format.turbo_stream do
render turbo_stream: [
turbo_stream.replace("form", partial: "settings/mutes/form"),
turbo_stream.append("rules", partial: "settings/mutes/rule", locals: { rule: result[:resource] }),
render_toast(t(".success"))
]
end
format.html { redirect_to settings_muted_path }
end
end
def destroy
rule = MuteRule.find(params[:id])
authorize rule
UseCase::MuteRule::Destroy.call(rule:)
respond_to do |format|
format.turbo_stream do
render turbo_stream: [
turbo_stream.remove("rule_#{params[:id]}"),
render_toast(t(".success"))
]
end
format.html { redirect_to settings_muted_path }
end
end
end