Skip to content

Commit 1b0b4e9

Browse files
committed
Refactor react services
1 parent d1bfb7b commit 1b0b4e9

File tree

3 files changed

+36
-13
lines changed

3 files changed

+36
-13
lines changed

app/lib/potential_friendship_tracker.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ class PotentialFriendshipTracker
66

77
WEIGHTS = {
88
reply: 1,
9+
reaction: 5,
910
favourite: 10,
1011
reblog: 20,
1112
}.freeze

app/services/react_service.rb

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,34 @@ def call(account, status, emoji)
1616

1717
reaction = StatusReaction.create!(account: account, status: status, name: name, custom_emoji: custom_emoji)
1818

19-
json = Oj.dump(serialize_payload(reaction, ActivityPub::EmojiReactionSerializer))
19+
Trends.statuses.register(status)
20+
21+
create_notification(reaction)
22+
bump_potential_friendship(account, status)
23+
24+
reaction
25+
end
26+
27+
private
28+
29+
def create_notification(reaction)
30+
status = reaction.status
31+
2032
if status.account.local?
21-
NotifyService.new.call(status.account, :reaction, reaction)
22-
ActivityPub::RawDistributionWorker.perform_async(json, status.account.id)
23-
else
24-
ActivityPub::DeliveryWorker.perform_async(json, reaction.account_id, status.account.inbox_url)
33+
LocalNotificationWorker.perform_async(status.account_id, reaction.id, 'StatusReaction', 'reaction')
34+
elsif status.account.activitypub?
35+
ActivityPub::DeliveryWorker.perform_async(build_json(reaction), reaction.account_id, status.account.inbox_url)
2536
end
37+
end
2638

39+
def bump_potential_friendship(account, status)
2740
ActivityTracker.increment('activity:interactions')
41+
return if account.following?(status.account_id)
2842

29-
reaction
43+
PotentialFriendshipTracker.record(account.id, status.account_id, :reaction)
44+
end
45+
46+
def build_json(reaction)
47+
Oj.dump(serialize_payload(reaction, ActivityPub::EmojiReactionSerializer))
3048
end
3149
end

app/services/unreact_service.rb

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,18 @@ def call(account, status, emoji)
1010
return if reaction.nil?
1111

1212
reaction.destroy!
13+
create_notification(reaction) if !status.account.local? && status.account.activitypub?
14+
reaction
15+
end
1316

14-
json = Oj.dump(serialize_payload(reaction, ActivityPub::UndoEmojiReactionSerializer))
15-
if status.account.local?
16-
ActivityPub::RawDistributionWorker.perform_async(json, status.account.id)
17-
else
18-
ActivityPub::DeliveryWorker.perform_async(json, reaction.account_id, status.account.inbox_url)
19-
end
17+
private
2018

21-
reaction
19+
def create_notification(reaction)
20+
status = reaction.status
21+
ActivityPub::DeliveryWorker.perform_async(build_json(reaction), reaction.account_id, status.account.inbox_url)
22+
end
23+
24+
def build_json(reaction)
25+
Oj.dump(serialize_payload(reaction, ActivityPub::UndoEmojiReactionSerializer))
2226
end
2327
end

0 commit comments

Comments
 (0)