# 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