Browse Source

Refactor handling of default params for muting to make code cleaner

closed-social-glitch-2
Surinna Curtis 7 years ago
parent
commit
f9d7b8a94f
3 changed files with 5 additions and 4 deletions
  1. +1
    -1
      app/controllers/api/v1/accounts_controller.rb
  2. +2
    -1
      app/models/concerns/account_interactions.rb
  3. +2
    -2
      app/services/mute_service.rb

+ 1
- 1
app/controllers/api/v1/accounts_controller.rb View File

@ -33,7 +33,7 @@ class Api::V1::AccountsController < Api::BaseController
end end
def mute def mute
MuteService.new.call(current_user.account, @account, **params.permit(:notifications).to_hash.symbolize_keys)
MuteService.new.call(current_user.account, @account, notifications: params(:notifications))
render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships render json: @account, serializer: REST::RelationshipSerializer, relationships: relationships
end end

+ 2
- 1
app/models/concerns/account_interactions.rb View File

@ -74,7 +74,8 @@ module AccountInteractions
block_relationships.find_or_create_by!(target_account: other_account) block_relationships.find_or_create_by!(target_account: other_account)
end end
def mute!(other_account, notifications: true)
def mute!(other_account, notifications: nil)
notifications = true if notifications.nil?
mute = mute_relationships.create_with(hide_notifications: notifications).find_or_create_by!(target_account: other_account) mute = mute_relationships.create_with(hide_notifications: notifications).find_or_create_by!(target_account: other_account)
# When toggling a mute between hiding and allowing notifications, the mute will already exist, so the find_or_create_by! call will return the existing Mute without updating the hide_notifications attribute. Therefore, we check that hide_notifications? is what we want and set it if it isn't. # When toggling a mute between hiding and allowing notifications, the mute will already exist, so the find_or_create_by! call will return the existing Mute without updating the hide_notifications attribute. Therefore, we check that hide_notifications? is what we want and set it if it isn't.
if mute.hide_notifications? != notifications if mute.hide_notifications? != notifications

+ 2
- 2
app/services/mute_service.rb View File

@ -1,9 +1,9 @@
# frozen_string_literal: true # frozen_string_literal: true
class MuteService < BaseService class MuteService < BaseService
def call(account, target_account, **opts)
def call(account, target_account, notifications: nil)
return if account.id == target_account.id return if account.id == target_account.id
FeedManager.instance.clear_from_timeline(account, target_account) FeedManager.instance.clear_from_timeline(account, target_account)
account.mute!(target_account, **opts.slice(:notifications))
account.mute!(target_account, notifications: notifications)
end end
end end

Loading…
Cancel
Save