|
|
|
@ -60,7 +60,7 @@ class Account < ApplicationRecord
|
|
|
|
|
validates :username, format: { with: /\A[a-z0-9_]+\z/i }, uniqueness: { scope: :domain, case_sensitive: false }, length: { maximum: 30 }, if: -> { local? && will_save_change_to_username? }
|
|
|
|
|
validates_with UnreservedUsernameValidator, if: -> { local? && will_save_change_to_username? }
|
|
|
|
|
validates :display_name, length: { maximum: 30 }, if: -> { local? && will_save_change_to_display_name? }
|
|
|
|
|
validates :note, length: { maximum: 500 }, if: -> { local? && will_save_change_to_note? }
|
|
|
|
|
validate :note_length_does_not_exceed_length_limit, if: -> { local? && will_save_change_to_note? }
|
|
|
|
|
|
|
|
|
|
# Timelines
|
|
|
|
|
has_many :stream_entries, inverse_of: :account, dependent: :destroy
|
|
|
|
@ -251,6 +251,22 @@ class Account < ApplicationRecord
|
|
|
|
|
self.public_key = keypair.public_key.to_pem
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
YAML_START = "---\r\n"
|
|
|
|
|
YAML_END = "\r\n...\r\n"
|
|
|
|
|
|
|
|
|
|
def note_length_does_not_exceed_length_limit
|
|
|
|
|
note_without_metadata = note
|
|
|
|
|
if note.start_with? YAML_START
|
|
|
|
|
idx = note.index YAML_END
|
|
|
|
|
unless idx.nil?
|
|
|
|
|
note_without_metadata = note[(idx + YAML_END.length) .. -1]
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
if note_without_metadata.mb_chars.grapheme_length > 500
|
|
|
|
|
errors.add(:note, "can't be longer than 500 graphemes")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def normalize_domain
|
|
|
|
|
return if local?
|
|
|
|
|
|
|
|
|
|