diff options
author | beatrix <beatrix.bitrot@gmail.com> | 2017-10-25 17:37:48 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-25 17:37:48 -0400 |
commit | a2612d0d3865fbbd6e8a93572f6d4e4044a8d64b (patch) | |
tree | 464822f052ca346fc38ad70eb8e3d96dbc363790 /app/controllers/settings | |
parent | 31814ddda009939d5d2ebe3e0ac061c26387529a (diff) | |
parent | e40fe4092dfd927dd4b6605b7b398fcd0984d903 (diff) |
Merge pull request #179 from glitch-soc/keyword-mute
Keyword muting
Diffstat (limited to 'app/controllers/settings')
-rw-r--r-- | app/controllers/settings/keyword_mutes_controller.rb | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/app/controllers/settings/keyword_mutes_controller.rb b/app/controllers/settings/keyword_mutes_controller.rb new file mode 100644 index 000000000..f79e1b320 --- /dev/null +++ b/app/controllers/settings/keyword_mutes_controller.rb @@ -0,0 +1,64 @@ +# frozen_string_literal: true + +class Settings::KeywordMutesController < ApplicationController + layout 'admin' + + before_action :authenticate_user! + before_action :load_keyword_mute, only: [:edit, :update, :destroy] + + def index + @keyword_mutes = paginated_keyword_mutes_for_account + end + + def new + @keyword_mute = keyword_mutes_for_account.build + end + + def create + @keyword_mute = keyword_mutes_for_account.create(keyword_mute_params) + + if @keyword_mute.persisted? + redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg') + else + render :new + end + end + + def update + if @keyword_mute.update(keyword_mute_params) + redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg') + else + render :edit + end + end + + def destroy + @keyword_mute.destroy! + + redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg') + end + + def destroy_all + keyword_mutes_for_account.delete_all + + redirect_to settings_keyword_mutes_path, notice: I18n.t('generic.changes_saved_msg') + end + + private + + def keyword_mutes_for_account + Glitch::KeywordMute.where(account: current_account) + end + + def load_keyword_mute + @keyword_mute = keyword_mutes_for_account.find(params[:id]) + end + + def keyword_mute_params + params.require(:keyword_mute).permit(:keyword, :whole_word) + end + + def paginated_keyword_mutes_for_account + keyword_mutes_for_account.order(:keyword).page params[:page] + end +end |