about summary refs log tree commit diff
path: root/app/validators/status_length_validator.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/validators/status_length_validator.rb')
-rw-r--r--app/validators/status_length_validator.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/app/validators/status_length_validator.rb b/app/validators/status_length_validator.rb
new file mode 100644
index 000000000..5491d3d5f
--- /dev/null
+++ b/app/validators/status_length_validator.rb
@@ -0,0 +1,15 @@
+class StatusLengthValidator < ActiveModel::Validator
+  def validate(status)
+    if status.local? && !status.reblog?
+      combinedText = status.text
+      if (status.spoiler? && status.spoiler_text.present?)
+        combinedText = status.spoiler_text + "\n" + status.text
+      end
+
+      maxChars = 500
+      unless combinedText.length <= maxChars
+        status.errors[:text] << "is too long (maximum is #{maxChars})"
+      end
+    end
+  end
+end
\ No newline at end of file