about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2020-02-19 15:43:29 -0600
committermultiple creatures <dev@multiple-creature.party>2020-02-19 15:43:29 -0600
commit5c60f230cba68b46a93a6316a265838bd62f7c0f (patch)
tree9e8e3961aa13ecd925f5f0b3c99715449b7bb180 /app
parent8f7c3a0b118dcd99fecfdf70e6d4a48802462d9a (diff)
move bangtag processing responsibility to `PostStatusService`
Diffstat (limited to 'app')
-rw-r--r--app/lib/bangtags.rb2
-rw-r--r--app/models/status.rb15
-rw-r--r--app/services/post_status_service.rb6
3 files changed, 7 insertions, 16 deletions
diff --git a/app/lib/bangtags.rb b/app/lib/bangtags.rb
index d9da6147c..900ba9e1c 100644
--- a/app/lib/bangtags.rb
+++ b/app/lib/bangtags.rb
@@ -603,7 +603,7 @@ class Bangtags
         when 'publish'
           chunk = nil
           del_tags(@parent_status, 'self.draft', 'draft')
-          @parent_status.process_bangtags!
+          Bangtags.new(@parent_status).process
           PostStatusWorker.perform_async(@parent_status.id, hidden: false, process_mentions: true)
         end
 
diff --git a/app/models/status.rb b/app/models/status.rb
index 15ad76944..01091f15a 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -395,7 +395,6 @@ class Status < ApplicationRecord
   around_create Mastodon::Snowflake::Callbacks
 
   before_create :set_locality
-  before_create :process_bangtags?, if: :local?
 
   before_validation :prepare_contents, if: :local?
   before_validation :set_reblog
@@ -408,7 +407,6 @@ class Status < ApplicationRecord
 
   after_save :update_sharekey, if: :local?
   after_save :update_origin, if: :local?
-  after_save :process_bangtags, if: :local?
 
   class << self
     def search_for(term, account = nil, limit = 33, offset = 0)
@@ -709,19 +707,6 @@ class Status < ApplicationRecord
     self.reject_replies = marked_reject_replies?
   end
 
-  def process_bangtags?
-    @_process_bangtags |= text_changed?
-  end
-
-  def process_bangtags!
-    Bangtags.new(self).process
-  end
-
-  def process_bangtags
-    return unless @_process_bangtags
-    process_bangtags!
-  end
-
   def update_sharekey
     return if @_sharekey.nil?
     if self.sharekey.nil?
diff --git a/app/services/post_status_service.rb b/app/services/post_status_service.rb
index 3e0dde72c..696a333f1 100644
--- a/app/services/post_status_service.rb
+++ b/app/services/post_status_service.rb
@@ -232,6 +232,8 @@ class PostStatusService < BaseService
       @status = @account.statuses.create!(status_attributes)
     end
 
+    process_bangtags
+
     return false if @status.destroyed?
 
     @hidden = @status.keep_hidden? if @hidden.blank?
@@ -276,6 +278,10 @@ class PostStatusService < BaseService
     raise Mastodon::ValidationError, I18n.t('media_attachments.validations.images_and_video') if @media.size > 1 && @media.find(&:video?)
   end
 
+  def process_bangtags
+    Bangtags.new(@status).process
+  end
+
   def process_mentions
     if @options[:mentions].present?
       @options[:mentions].each do |mentioned_account|