From a4240fd0272eb79b7d99cccfa7d14e8a1e12921d Mon Sep 17 00:00:00 2001 From: ThibG Date: Sun, 10 May 2020 09:50:54 +0200 Subject: Improve RSS entries for statuses (#13592) * Improve RSS entries for statuses - Render polls in both accounts and tags serializers - Refactor RSS serializers - Change title preview to include ellipsis when truncated - Change title preview to show CW instead of toot text - Add tests * Remove title from OEmbed serialization Twitter doesn't serialize title either, and tihs allows us to move the title formatting code to the RSS serializers. --- app/lib/rss/serializer.rb | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 app/lib/rss/serializer.rb (limited to 'app/lib') diff --git a/app/lib/rss/serializer.rb b/app/lib/rss/serializer.rb new file mode 100644 index 000000000..fd56c568c --- /dev/null +++ b/app/lib/rss/serializer.rb @@ -0,0 +1,38 @@ +# frozen_string_literal: true + +class RSS::Serializer + private + + def render_statuses(builder, statuses) + statuses.each do |status| + builder.item do |item| + item.title(status_title(status)) + .link(ActivityPub::TagManager.instance.url_for(status)) + .pub_date(status.created_at) + .description(status.spoiler_text.presence || Formatter.instance.format(status, inline_poll_options: true).to_str) + + status.media_attachments.each do |media| + item.enclosure(full_asset_url(media.file.url(:original, false)), media.file.content_type, media.file.size) + end + end + end + end + + def status_title(status) + return "#{status.account.acct} deleted status" if status.destroyed? + + preview = status.proper.spoiler_text.presence || status.proper.text + if preview.length > 30 || preview[0, 30].include?("\n") + preview = preview[0, 30] + preview = preview[0, preview.index("\n").presence || 30] + '…' + end + + preview = "#{status.proper.spoiler_text.present? ? 'CW ' : ''}“#{preview}”#{status.proper.sensitive? ? ' (sensitive)' : ''}" + + if status.reblog? + "#{status.account.acct} boosted #{status.reblog.account.acct}: #{preview}" + else + "#{status.account.acct}: #{preview}" + end + end +end -- cgit From e9ecbca70d28c775a9eeda7670e06443a1037d5b Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Sun, 10 May 2020 10:30:27 +0200 Subject: Fix error within error when limiting backtrace to 3 lines (#13120) Fix #13086, close #13113 --- app/lib/request.rb | 2 -- app/lib/sidekiq_error_handler.rb | 11 +++++++++++ app/workers/activitypub/delivery_worker.rb | 10 +++------- 3 files changed, 14 insertions(+), 9 deletions(-) (limited to 'app/lib') diff --git a/app/lib/request.rb b/app/lib/request.rb index c476e7785..247c32958 100644 --- a/app/lib/request.rb +++ b/app/lib/request.rb @@ -73,8 +73,6 @@ class Request response.body_with_limit if http_client.persistent? yield response if block_given? - rescue => e - raise e.class, e.message, e.backtrace[0] ensure http_client.close unless http_client.persistent? end diff --git a/app/lib/sidekiq_error_handler.rb b/app/lib/sidekiq_error_handler.rb index 8eb6b942d..b07817d45 100644 --- a/app/lib/sidekiq_error_handler.rb +++ b/app/lib/sidekiq_error_handler.rb @@ -1,13 +1,24 @@ # frozen_string_literal: true class SidekiqErrorHandler + BACKTRACE_LIMIT = 3 + def call(*) yield rescue Mastodon::HostValidationError # Do not retry + rescue => e + limit_backtrace_and_raise(e) ensure socket = Thread.current[:statsd_socket] socket&.close Thread.current[:statsd_socket] = nil end + + private + + def limit_backtrace_and_raise(e) + e.set_backtrace(e.backtrace.first(BACKTRACE_LIMIT)) + raise e + end end diff --git a/app/workers/activitypub/delivery_worker.rb b/app/workers/activitypub/delivery_worker.rb index 14e37dc34..60775787a 100644 --- a/app/workers/activitypub/delivery_worker.rb +++ b/app/workers/activitypub/delivery_worker.rb @@ -52,13 +52,9 @@ class ActivityPub::DeliveryWorker end end - begin - light.with_threshold(STOPLIGHT_FAILURE_THRESHOLD) - .with_cool_off_time(STOPLIGHT_COOLDOWN) - .run - rescue Stoplight::Error::RedLight => e - raise e.class, e.message, e.backtrace.first(3) - end + light.with_threshold(STOPLIGHT_FAILURE_THRESHOLD) + .with_cool_off_time(STOPLIGHT_COOLDOWN) + .run end def failure_tracker -- cgit From 5daae6dc610bad24eb0030cfaf124930a34805b1 Mon Sep 17 00:00:00 2001 From: Takeshi Umeda Date: Tue, 12 May 2020 22:28:29 +0900 Subject: Fix keybase config serializer (#13742) --- app/javascript/images/logo_transparent_white.svg | 1 + app/lib/proof_provider/keybase/config_serializer.rb | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 app/javascript/images/logo_transparent_white.svg (limited to 'app/lib') diff --git a/app/javascript/images/logo_transparent_white.svg b/app/javascript/images/logo_transparent_white.svg new file mode 100644 index 000000000..f061ffe4c --- /dev/null +++ b/app/javascript/images/logo_transparent_white.svg @@ -0,0 +1 @@ + diff --git a/app/lib/proof_provider/keybase/config_serializer.rb b/app/lib/proof_provider/keybase/config_serializer.rb index 2840f1823..fbce7aeee 100644 --- a/app/lib/proof_provider/keybase/config_serializer.rb +++ b/app/lib/proof_provider/keybase/config_serializer.rb @@ -22,7 +22,12 @@ class ProofProvider::Keybase::ConfigSerializer < ActiveModel::Serializer end def logo - { svg_black: full_asset_url(asset_pack_path('media/images/logo_transparent_black.svg')), svg_full: full_asset_url(asset_pack_path('media/images/logo.svg')) } + { + svg_black: full_asset_url(asset_pack_path('media/images/logo_transparent_black.svg')), + svg_white: full_asset_url(asset_pack_path('media/images/logo_transparent_white.svg')), + svg_full: full_asset_url(asset_pack_path('media/images/logo.svg')), + svg_full_darkmode: full_asset_url(asset_pack_path('media/images/logo.svg')), + } end def brand_color -- cgit