diff options
author | Fire Demon <firedemon@creature.cafe> | 2020-08-14 14:09:33 -0500 |
---|---|---|
committer | Fire Demon <firedemon@creature.cafe> | 2020-08-30 05:45:18 -0500 |
commit | 79535cb863d2f956bff2af8449f10da4aede4ede (patch) | |
tree | c609880ad160a4a8105f8076a1139d63884a83c1 /app/services/remove_hashtags_service.rb | |
parent | e3b316dd3e797a9c266fc1ec5e104845df1da9c6 (diff) |
[Feature] Add support for unlisted and out-of-body tags
Diffstat (limited to 'app/services/remove_hashtags_service.rb')
-rw-r--r-- | app/services/remove_hashtags_service.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/app/services/remove_hashtags_service.rb b/app/services/remove_hashtags_service.rb new file mode 100644 index 000000000..6bf77a068 --- /dev/null +++ b/app/services/remove_hashtags_service.rb @@ -0,0 +1,21 @@ +# frozen_string_literal: true + +class RemoveHashtagsService < BaseService + def call(status, tags) + tags = status.tags.matching_name(tags) if tags.is_a?(Array) + + status.account.featured_tags.where(tag: tags).each do |featured_tag| + featured_tag.decrement(status.id) + end + + if status.distributable? + delete_payload = Oj.dump(event: :delete, payload: status.id.to_s) + tags.pluck(:name).each do |hashtag| + redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}", delete_payload) + redis.publish("timeline:hashtag:#{hashtag.mb_chars.downcase}:local", delete_payload) if status.local? + end + end + + status.tags -= tags + end +end |