From cefa526c6d3a45df2d0fcb7643ced828e2e87dea Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sat, 26 Mar 2022 02:53:34 +0100 Subject: Refactor formatter (#17828) * Refactor formatter * Move custom emoji pre-rendering logic to view helpers * Move more methods out of Formatter * Fix code style issues * Remove Formatter * Add inline poll options to RSS feeds * Remove unused helper method * Fix code style issues * Various fixes and improvements * Fix test --- app/views/accounts/_bio.html.haml | 6 +++--- app/views/admin/accounts/show.html.haml | 6 +++--- app/views/admin/reports/_status.html.haml | 6 +++--- app/views/admin/reports/show.html.haml | 2 +- app/views/directories/index.html.haml | 2 +- app/views/disputes/strikes/show.html.haml | 2 +- app/views/notification_mailer/_status.html.haml | 4 ++-- app/views/notification_mailer/_status.text.erb | 2 +- app/views/notification_mailer/digest.text.erb | 2 +- app/views/statuses/_detailed_status.html.haml | 5 +++-- app/views/statuses/_poll.html.haml | 4 ++-- app/views/statuses/_simple_status.html.haml | 5 +++-- app/views/user_mailer/warning.html.haml | 2 +- 13 files changed, 25 insertions(+), 23 deletions(-) (limited to 'app/views') diff --git a/app/views/accounts/_bio.html.haml b/app/views/accounts/_bio.html.haml index e8a49a1aa..df4f9bdb8 100644 --- a/app/views/accounts/_bio.html.haml +++ b/app/views/accounts/_bio.html.haml @@ -5,17 +5,17 @@ .account__header__fields - fields.each do |field| %dl - %dt.emojify{ title: field.name }= Formatter.instance.format_field(account, field.name, custom_emojify: true) + %dt.emojify{ title: field.name }= prerender_custom_emojis(h(field.name), account.emojis) %dd{ title: field.value, class: custom_field_classes(field) } - if field.verified? %span.verified__mark{ title: t('accounts.link_verified_on', date: l(field.verified_at)) } = fa_icon 'check' - = Formatter.instance.format_field(account, field.value, custom_emojify: true) + = prerender_custom_emojis(html_aware_format(field.value, account.local?, with_rel_me: true, with_domains: true, multiline: false), account.emojis) = account_badge(account) - if account.note.present? - .account__header__content.emojify= Formatter.instance.simplified_format(account, custom_emojify: true) + .account__header__content.emojify= prerender_custom_emojis(html_aware_format(account.note, account.local?), account.emojis) .public-account-bio__extra = t 'accounts.joined', date: l(account.created_at, format: :month) diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml index 805cf8a4f..b252f3eac 100644 --- a/app/views/admin/accounts/show.html.haml +++ b/app/views/admin/accounts/show.html.haml @@ -16,16 +16,16 @@ .account__header__fields - fields.each do |field| %dl - %dt.emojify{ title: field.name }= Formatter.instance.format_field(account, field.name, custom_emojify: true) + %dt.emojify{ title: field.name }= prerender_custom_emojis(h(field.name), account.emojis) %dd{ title: field.value, class: custom_field_classes(field) } - if field.verified? %span.verified__mark{ title: t('accounts.link_verified_on', date: l(field.verified_at)) } = fa_icon 'check' - = Formatter.instance.format_field(account, field.value, custom_emojify: true) + = prerender_custom_emojis(html_aware_format(field.value, account.local?, with_rel_me: true, with_domains: true, multiline: false), account.emojis) - if account.note.present? %div - .account__header__content.emojify= Formatter.instance.simplified_format(account, custom_emojify: true) + .account__header__content.emojify= prerender_custom_emojis(html_aware_format(account.note, account.local?), account.emojis) .dashboard__counters.admin-account-counters %div diff --git a/app/views/admin/reports/_status.html.haml b/app/views/admin/reports/_status.html.haml index 7538cfd54..392fc8f81 100644 --- a/app/views/admin/reports/_status.html.haml +++ b/app/views/admin/reports/_status.html.haml @@ -4,12 +4,12 @@ .batch-table__row__content .status__content>< - if status.proper.spoiler_text.blank? - = Formatter.instance.format(status.proper, custom_emojify: true) + = prerender_custom_emojis(status_content_format(status.proper), status.proper.emojis) - else %details< %summary>< - %strong> Content warning: #{Formatter.instance.format_spoiler(status.proper)} - = Formatter.instance.format(status.proper, custom_emojify: true) + %strong> Content warning: #{prerender_custom_emojis(h(status.proper.spoiler_text), status.proper.emojis)} + = prerender_custom_emojis(status_content_format(status.proper), status.proper.emojis) - unless status.proper.ordered_media_attachments.empty? - if status.proper.ordered_media_attachments.first.video? diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml index 25b751335..41fed2efb 100644 --- a/app/views/admin/reports/show.html.haml +++ b/app/views/admin/reports/show.html.haml @@ -27,7 +27,7 @@ = fa_icon('lock') if @report.target_account.locked? - if @report.target_account.note.present? .account-card__bio.emojify - = Formatter.instance.simplified_format(@report.target_account, custom_emojify: true) + = prerender_custom_emojis(html_aware_format(@report.target_account.note, @report.target_account.local?), @report.target_account.emojis) .account-card__actions .account-card__counters .account-card__counters__item diff --git a/app/views/directories/index.html.haml b/app/views/directories/index.html.haml index 2b338115b..a032ddb8d 100644 --- a/app/views/directories/index.html.haml +++ b/app/views/directories/index.html.haml @@ -34,7 +34,7 @@ = fa_icon('lock') if account.locked? - if account.note.present? .account-card__bio.emojify - = Formatter.instance.simplified_format(account, custom_emojify: true) + = prerender_custom_emojis(html_aware_format(account.note, account.local?), account.emojis) - else .flex-spacer .account-card__actions diff --git a/app/views/disputes/strikes/show.html.haml b/app/views/disputes/strikes/show.html.haml index 0fc32b918..0b71e14a3 100644 --- a/app/views/disputes/strikes/show.html.haml +++ b/app/views/disputes/strikes/show.html.haml @@ -26,7 +26,7 @@ %p= t "user_mailer.warning.explanation.#{@strike.action}", instance: Rails.configuration.x.local_domain - unless @strike.text.blank? - = Formatter.instance.linkify(@strike.text) + = linkify(@strike.text) - if @strike.report && !@strike.report.other? %p diff --git a/app/views/notification_mailer/_status.html.haml b/app/views/notification_mailer/_status.html.haml index 219e7e667..444b06fe6 100644 --- a/app/views/notification_mailer/_status.html.haml +++ b/app/views/notification_mailer/_status.html.haml @@ -28,10 +28,10 @@ - if status.spoiler_text? %div.auto-dir %p - = Formatter.instance.format_spoiler(status) + = status.spoiler_text %div.auto-dir - = Formatter.instance.format(status) + = status_content_format(status) - if status.ordered_media_attachments.size > 0 %p diff --git a/app/views/notification_mailer/_status.text.erb b/app/views/notification_mailer/_status.text.erb index c43f32d9f..bf6d2b620 100644 --- a/app/views/notification_mailer/_status.text.erb +++ b/app/views/notification_mailer/_status.text.erb @@ -3,6 +3,6 @@ > ---- > <% end %> -> <%= raw word_wrap(Formatter.instance.plaintext(status), break_sequence: "\n> ") %> +> <%= raw word_wrap(extract_plain_text(status.text, status.local?), break_sequence: "\n> ") %> <%= raw t('application_mailer.view')%> <%= web_url("statuses/#{status.id}") %> diff --git a/app/views/notification_mailer/digest.text.erb b/app/views/notification_mailer/digest.text.erb index 4cd4190c1..b767eb9c4 100644 --- a/app/views/notification_mailer/digest.text.erb +++ b/app/views/notification_mailer/digest.text.erb @@ -5,7 +5,7 @@ * <%= raw t('notification_mailer.digest.mention', name: notification.from_account.pretty_acct) %> - <%= raw Formatter.instance.plaintext(notification.target_status) %> + <%= raw extract_plain_text(notification.target_status.text, notification.target_status.local?) %> <%= raw t('application_mailer.view')%> <%= web_url("statuses/#{notification.target_status.id}") %> <% end %> diff --git a/app/views/statuses/_detailed_status.html.haml b/app/views/statuses/_detailed_status.html.haml index fd7e034b1..1d0e5a38c 100644 --- a/app/views/statuses/_detailed_status.html.haml +++ b/app/views/statuses/_detailed_status.html.haml @@ -18,10 +18,11 @@ .status__content.emojify{ :data => ({ spoiler: current_account&.user&.setting_expand_spoilers ? 'expanded' : 'folded' } if status.spoiler_text?) }< - if status.spoiler_text? %p< - %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: prefers_autoplay?)}  + %span.p-summary> #{prerender_custom_emojis(h(status.spoiler_text), status.emojis)}  %button.status__content__spoiler-link= t('statuses.show_more') .e-content - = Formatter.instance.format(status, custom_emojify: true, autoplay: prefers_autoplay?) + = prerender_custom_emojis(status_content_format(status), status.emojis) + - if status.preloadable_poll = render_poll_component(status) diff --git a/app/views/statuses/_poll.html.haml b/app/views/statuses/_poll.html.haml index 3546a923e..d0f264095 100644 --- a/app/views/statuses/_poll.html.haml +++ b/app/views/statuses/_poll.html.haml @@ -12,7 +12,7 @@ %span.poll__number>< = "#{percent.round}%" %span.poll__option__text - = Formatter.instance.format_poll_option(status, option, autoplay: prefers_autoplay?) + = prerender_custom_emojis(h(option.title), status.emojis) - if own_votes.include?(index) %span.poll__voted %i.poll__voted__mark.fa.fa-check @@ -23,7 +23,7 @@ %label.poll__option>< %span.poll__input{ class: poll.multiple? ? 'checkbox' : nil}>< %span.poll__option__text - = Formatter.instance.format_poll_option(status, option, autoplay: prefers_autoplay?) + = prerender_custom_emojis(h(option.title), status.emojis) .poll__footer - unless show_results %button.button.button-secondary{ disabled: true } diff --git a/app/views/statuses/_simple_status.html.haml b/app/views/statuses/_simple_status.html.haml index 8ffd3cb74..13b6613ce 100644 --- a/app/views/statuses/_simple_status.html.haml +++ b/app/views/statuses/_simple_status.html.haml @@ -30,10 +30,11 @@ .status__content.emojify{ :data => ({ spoiler: current_account&.user&.setting_expand_spoilers ? 'expanded' : 'folded' } if status.spoiler_text?) }< - if status.spoiler_text? %p< - %span.p-summary> #{Formatter.instance.format_spoiler(status, autoplay: prefers_autoplay?)}  + %span.p-summary> #{prerender_custom_emojis(h(status.spoiler_text), status.emojis)}  %button.status__content__spoiler-link= t('statuses.show_more') .e-content - = Formatter.instance.format(status, custom_emojify: true, autoplay: prefers_autoplay?) + = prerender_custom_emojis(status_content_format(status), status.emojis) + - if status.preloadable_poll = render_poll_component(status) diff --git a/app/views/user_mailer/warning.html.haml b/app/views/user_mailer/warning.html.haml index b308e18f7..fff61fa90 100644 --- a/app/views/user_mailer/warning.html.haml +++ b/app/views/user_mailer/warning.html.haml @@ -40,7 +40,7 @@ %p= t "user_mailer.warning.explanation.#{@warning.action}", instance: @instance - unless @warning.text.blank? - = Formatter.instance.linkify(@warning.text) + = linkify(@warning.text) - if @warning.report && !@warning.report.other? %p -- cgit