Merge remote-tracking branch 'cybrespace/feature_longer_bios' into scalybiz
This commit is contained in:
commit
73247ec64f
|
@ -14,6 +14,12 @@ window.addEventListener('message', e => {
|
|||
id: data.id,
|
||||
height: document.getElementsByTagName('html')[0].scrollHeight,
|
||||
}, '*');
|
||||
|
||||
if (document.fonts && document.fonts.ready) {
|
||||
document.fonts.ready.then(sizeBioText);
|
||||
} else {
|
||||
sizeBioText();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -117,13 +123,7 @@ function main() {
|
|||
}
|
||||
});
|
||||
|
||||
delegate(document, '.account_note', 'input', ({ target }) => {
|
||||
const noteCounter = document.querySelector('.note-counter');
|
||||
|
||||
if (noteCounter) {
|
||||
noteCounter.textContent = 160 - length(target.value);
|
||||
}
|
||||
});
|
||||
delegate(document, '.account_note', 'input', sizeBioText);
|
||||
|
||||
delegate(document, '#account_avatar', 'change', ({ target }) => {
|
||||
const avatar = document.querySelector('.card.compact .avatar img');
|
||||
|
@ -140,6 +140,20 @@ function main() {
|
|||
|
||||
header.style.backgroundImage = `url(${url})`;
|
||||
});
|
||||
|
||||
function sizeBioText() {
|
||||
const noteCounter = document.querySelector('.note-counter');
|
||||
const bioTextArea = document.querySelector('#account_note');
|
||||
|
||||
if (noteCounter) {
|
||||
noteCounter.textContent = 413 - length(bioTextArea.value);
|
||||
}
|
||||
|
||||
if (bioTextArea) {
|
||||
bioTextArea.style.height = 'auto';
|
||||
bioTextArea.style.height = (bioTextArea.scrollHeight+3) + 'px';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
loadPolyfills().then(main).catch(error => {
|
||||
|
|
|
@ -73,7 +73,8 @@ class Account < ApplicationRecord
|
|||
validates_with UniqueUsernameValidator, 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: 160 }, if: -> { local? && will_save_change_to_note? }
|
||||
validates :note, length: { maximum: 413 }, if: -> { local? && will_save_change_to_note? }
|
||||
validate :note_has_eight_newlines?, if: -> { local? && will_save_change_to_note? }
|
||||
|
||||
# Timelines
|
||||
has_many :stream_entries, inverse_of: :account, dependent: :destroy
|
||||
|
@ -209,10 +210,8 @@ class Account < ApplicationRecord
|
|||
def save_with_optional_media!
|
||||
save!
|
||||
rescue ActiveRecord::RecordInvalid
|
||||
self.avatar = nil
|
||||
self.header = nil
|
||||
self[:avatar_remote_url] = ''
|
||||
self[:header_remote_url] = ''
|
||||
self.avatar = nil if errors[:avatar].present?
|
||||
self.header = nil if errors[:header].present?
|
||||
save!
|
||||
end
|
||||
|
||||
|
@ -236,6 +235,10 @@ class Account < ApplicationRecord
|
|||
shared_inbox_url.presence || inbox_url
|
||||
end
|
||||
|
||||
def note_has_eight_newlines?
|
||||
errors.add(:note, 'Bio can\'t have more then 8 newlines') unless note.count("\n") <= 8
|
||||
end
|
||||
|
||||
class << self
|
||||
def readonly_attributes
|
||||
super - %w(statuses_count following_count followers_count)
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
.fields-group
|
||||
= f.input :display_name, placeholder: t('simple_form.labels.defaults.display_name'), hint: t('simple_form.hints.defaults.display_name', count: 30 - @account.display_name.size).html_safe
|
||||
= f.input :note, placeholder: t('simple_form.labels.defaults.note'), hint: t('simple_form.hints.defaults.note', count: 160 - @account.note.size).html_safe
|
||||
= f.input :note, placeholder: t('simple_form.labels.defaults.note'), hint: t('simple_form.hints.defaults.note', count: 413 - @account.note.size).html_safe
|
||||
|
||||
.card.compact{ style: "background-image: url(#{@account.header.url(:original)})", data: { original_src: @account.header.url(:original) } }
|
||||
.avatar= image_tag @account.avatar.url(:original), data: { original_src: @account.avatar.url(:original) }
|
||||
|
|
|
@ -636,8 +636,8 @@ RSpec.describe Account, type: :model do
|
|||
expect(account).to model_have_error_on_field(:display_name)
|
||||
end
|
||||
|
||||
it 'is invalid if the note is longer than 160 characters' do
|
||||
account = Fabricate.build(:account, note: Faker::Lorem.characters(161))
|
||||
it 'is invalid if the note is longer than 413 characters' do
|
||||
account = Fabricate.build(:account, note: Faker::Lorem.characters(414))
|
||||
account.valid?
|
||||
expect(account).to model_have_error_on_field(:note)
|
||||
end
|
||||
|
@ -676,8 +676,8 @@ RSpec.describe Account, type: :model do
|
|||
expect(account).not_to model_have_error_on_field(:display_name)
|
||||
end
|
||||
|
||||
it 'is valid even if the note is longer than 160 characters' do
|
||||
account = Fabricate.build(:account, domain: 'domain', note: Faker::Lorem.characters(161))
|
||||
it 'is valid even if the note is longer than 413 characters' do
|
||||
account = Fabricate.build(:account, domain: 'domain', note: Faker::Lorem.characters(414))
|
||||
account.valid?
|
||||
expect(account).not_to model_have_error_on_field(:note)
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue