about summary refs log tree commit diff
path: root/app/models/status.rb
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2020-02-19 14:23:53 -0600
committermultiple creatures <dev@multiple-creature.party>2020-02-19 14:23:53 -0600
commit74a43bff5ce7969666674ce51eed704ebeb3ec9e (patch)
tree229eb25699d5180471724d745c43e34b89c5b9f4 /app/models/status.rb
parente01547e20dab42db5377d324fe1ad3874a79ca25 (diff)
avoid processing bangtags multiple times
Diffstat (limited to 'app/models/status.rb')
-rw-r--r--app/models/status.rb8
1 files changed, 7 insertions, 1 deletions
diff --git a/app/models/status.rb b/app/models/status.rb
index 36efaf765..969cb0c16 100644
--- a/app/models/status.rb
+++ b/app/models/status.rb
@@ -405,6 +405,8 @@ class Status < ApplicationRecord
 
   after_create :set_poll_id
 
+  before_save :process_bangtags?, if: :local?
+
   after_save :update_sharekey, if: :local?
   after_save :update_origin, if: :local?
   after_save :process_bangtags, if: :local?
@@ -708,8 +710,12 @@ class Status < ApplicationRecord
     self.reject_replies = marked_reject_replies?
   end
 
+  def process_bangtags?
+    @_process_bangtags |= text_changed?
+  end
+
   def process_bangtags
-    return unless text_changed? || saved_change_to_text?
+    return unless @_process_bangtags
     Bangtags.new(self).process
   end