diff --git a/app/lib/activitypub/activity/emoji_react.rb b/app/lib/activitypub/activity/emoji_react.rb index 2730270fc..526f22803 100644 --- a/app/lib/activitypub/activity/emoji_react.rb +++ b/app/lib/activitypub/activity/emoji_react.rb @@ -10,7 +10,7 @@ class ActivityPub::Activity::EmojiReact < ActivityPub::Activity @account.reacted?(original_status, name) custom_emoji = nil - if name =~ /^:.*:$/ + if /^:.*:$/.match?(name) process_emoji_tags(@json['tag']) name.delete! ':' diff --git a/app/lib/activitypub/activity/like.rb b/app/lib/activitypub/activity/like.rb index 66d8e59c8..8acc99b9d 100644 --- a/app/lib/activitypub/activity/like.rb +++ b/app/lib/activitypub/activity/like.rb @@ -22,7 +22,7 @@ class ActivityPub::Activity::Like < ActivityPub::Activity return false if name.nil? custom_emoji = nil - if name =~ /^:.*:$/ + if /^:.*:$/.match?(name) process_emoji_tags(@json['tag']) name.delete! ':' diff --git a/app/models/status_reaction.rb b/app/models/status_reaction.rb index 00be17e23..a54d03a30 100644 --- a/app/models/status_reaction.rb +++ b/app/models/status_reaction.rb @@ -1,4 +1,5 @@ # frozen_string_literal: true + # == Schema Information # # Table name: status_reactions diff --git a/app/services/unreact_service.rb b/app/services/unreact_service.rb index 37dc1d7c5..7c1b32e94 100644 --- a/app/services/unreact_service.rb +++ b/app/services/unreact_service.rb @@ -4,20 +4,20 @@ class UnreactService < BaseService include Payloadable def call(account, status, emoji) - name, domain = emoji.split('@') - custom_emoji = CustomEmoji.find_by(shortcode: name, domain: domain) - reaction = StatusReaction.find_by(account: account, status: status, name: name, custom_emoji: custom_emoji) - return if reaction.nil? + name, domain = emoji.split('@') + custom_emoji = CustomEmoji.find_by(shortcode: name, domain: domain) + reaction = StatusReaction.find_by(account: account, status: status, name: name, custom_emoji: custom_emoji) + return if reaction.nil? - reaction.destroy! + reaction.destroy! - json = Oj.dump(serialize_payload(reaction, ActivityPub::UndoEmojiReactionSerializer)) - if status.account.local? - ActivityPub::RawDistributionWorker.perform_async(json, status.account.id) - else - ActivityPub::DeliveryWorker.perform_async(json, reaction.account_id, status.account.inbox_url) - end - - reaction + json = Oj.dump(serialize_payload(reaction, ActivityPub::UndoEmojiReactionSerializer)) + if status.account.local? + ActivityPub::RawDistributionWorker.perform_async(json, status.account.id) + else + ActivityPub::DeliveryWorker.perform_async(json, reaction.account_id, status.account.inbox_url) end + + reaction + end end diff --git a/config/routes/api.rb b/config/routes/api.rb index de230c6ff..a184ca868 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -18,8 +18,8 @@ namespace :api, format: false do # foreign custom emojis are encoded as shortcode@domain.tld # the constraint prevents rails from interpreting the ".tld" as a filename extension - post '/react/:id', to: 'reactions#create', constraints: { id: /[^\/]+/ } - post '/unreact/:id', to: 'reactions#destroy', constraints: { id: /[^\/]+/ } + post '/react/:id', to: 'reactions#create', constraints: { id: %r{[^/]+} } + post '/unreact/:id', to: 'reactions#destroy', constraints: { id: %r{[^/]+} } resource :bookmark, only: :create post :unbookmark, to: 'bookmarks#destroy' diff --git a/spec/fabricators/status_reaction_fabricator.rb b/spec/fabricators/status_reaction_fabricator.rb index 3d4b93efe..bd042ec07 100644 --- a/spec/fabricators/status_reaction_fabricator.rb +++ b/spec/fabricators/status_reaction_fabricator.rb @@ -1,6 +1,6 @@ Fabricator(:status_reaction) do account nil status nil - name "MyString" + name 'MyString' custom_emoji nil -end \ No newline at end of file +end