about summary refs log tree commit diff
path: root/app/lib
diff options
context:
space:
mode:
authorClaire <claire.github-309c@sitedethib.com>2023-03-15 09:08:12 +0100
committerClaire <claire.github-309c@sitedethib.com>2023-03-15 09:16:10 +0100
commit3ef5f62abfc65085604265cfa2559b4d9ae98ace (patch)
treef51b8ba1e646edd2c527dbeb22f640a3610effc4 /app/lib
parent6a0ed45aa3f11f0343a7be556b36b4d075ba08df (diff)
parent75131e7bf7f3d96cf325e674e6b76b0096382e99 (diff)
Merge branch 'main' into glitch-soc/merge-upstream
Conflicts:
- `.github/workflows/build-image.yml`:
  Upstream switched to pushing to both DockerHub and GitHub Container
  Repository, while glitch-soc was already pushing to the latter only.
  Updated our configuration to be slightly more consistent with upstream's
  naming and styling, but kept our behavior.
- `Gemfile.lock`:
  Updated dependencies textually too close to glitch-soc only hcaptcha
  dependency.
  Updated dependencies as upstream did.
- `README.md`:
  Upstream updated its README, but we have a completely different one.
  Kept our README, though it probably should be reworked at some point.
- `app/views/auth/sessions/two_factor.html.haml`:
  Minor style fix upstream that's on a line glitch-soc removed because
  of its different theming system.
  Kept our file as is.
- `spec/controllers/health_controller_spec.rb`:
  This file apparently did not exist upstream, upstream created it with
  different contents but it is functionally the same.
  Switched to upstream's version of the file.
- `spec/presenters/instance_presenter_spec.rb`:
  Upstream changed the specs around `GITHUB_REPOSITORY`, while glitch-soc
  had its own code because it's a fork and does not have the same default
  source URL.
  Took upstream's change, but with glitch-soc's repo as the default case.
- `yarn.lock`:
  Upstream dependencies textually too close to a glitch-soc only one.
  Updated dependencies as upstream did.
Diffstat (limited to 'app/lib')
-rw-r--r--app/lib/activitypub/forwarder.rb2
-rw-r--r--app/lib/admin/system_check/elasticsearch_check.rb2
-rw-r--r--app/lib/plain_text_formatter.rb6
-rw-r--r--app/lib/toc_generator.rb69
4 files changed, 7 insertions, 72 deletions
diff --git a/app/lib/activitypub/forwarder.rb b/app/lib/activitypub/forwarder.rb
index b01d63e58..3a94f9669 100644
--- a/app/lib/activitypub/forwarder.rb
+++ b/app/lib/activitypub/forwarder.rb
@@ -12,7 +12,7 @@ class ActivityPub::Forwarder
   end
 
   def forward!
-    ActivityPub::LowPriorityDeliveryWorker.push_bulk(inboxes) do |inbox_url|
+    ActivityPub::LowPriorityDeliveryWorker.push_bulk(inboxes, limit: 1_000) do |inbox_url|
       [payload, signature_account_id, inbox_url]
     end
   end
diff --git a/app/lib/admin/system_check/elasticsearch_check.rb b/app/lib/admin/system_check/elasticsearch_check.rb
index 5b4c12399..0b55be350 100644
--- a/app/lib/admin/system_check/elasticsearch_check.rb
+++ b/app/lib/admin/system_check/elasticsearch_check.rb
@@ -31,7 +31,7 @@ class Admin::SystemCheck::ElasticsearchCheck < Admin::SystemCheck::BaseCheck
   def running_version
     @running_version ||= begin
       Chewy.client.info['version']['number']
-    rescue Faraday::ConnectionFailed
+    rescue Faraday::ConnectionFailed, Elasticsearch::Transport::Transport::Error
       nil
     end
   end
diff --git a/app/lib/plain_text_formatter.rb b/app/lib/plain_text_formatter.rb
index 08aa29696..6fa2bc5d2 100644
--- a/app/lib/plain_text_formatter.rb
+++ b/app/lib/plain_text_formatter.rb
@@ -18,7 +18,7 @@ class PlainTextFormatter
     if local?
       text
     else
-      strip_tags(insert_newlines).chomp
+      html_entities.decode(strip_tags(insert_newlines)).chomp
     end
   end
 
@@ -27,4 +27,8 @@ class PlainTextFormatter
   def insert_newlines
     text.gsub(NEWLINE_TAGS_RE) { |match| "#{match}\n" }
   end
+
+  def html_entities
+    HTMLEntities.new
+  end
 end
diff --git a/app/lib/toc_generator.rb b/app/lib/toc_generator.rb
deleted file mode 100644
index 0c8f766ca..000000000
--- a/app/lib/toc_generator.rb
+++ /dev/null
@@ -1,69 +0,0 @@
-# frozen_string_literal: true
-
-class TOCGenerator
-  TARGET_ELEMENTS = %w(h1 h2 h3 h4 h5 h6).freeze
-  LISTED_ELEMENTS = %w(h2 h3).freeze
-
-  class Section
-    attr_accessor :depth, :title, :children, :anchor
-
-    def initialize(depth, title, anchor)
-      @depth    = depth
-      @title    = title
-      @children = []
-      @anchor   = anchor
-    end
-
-    delegate :<<, to: :children
-  end
-
-  def initialize(source_html)
-    @source_html = source_html
-    @processed   = false
-    @target_html = ''
-    @headers     = []
-    @slugs       = Hash.new { |h, k| h[k] = 0 }
-  end
-
-  def html
-    parse_and_transform unless @processed
-    @target_html
-  end
-
-  def toc
-    parse_and_transform unless @processed
-    @headers
-  end
-
-  private
-
-  def parse_and_transform
-    return if @source_html.blank?
-
-    parsed_html = Nokogiri::HTML.fragment(@source_html)
-
-    parsed_html.traverse do |node|
-      next unless TARGET_ELEMENTS.include?(node.name)
-
-      anchor = node['id'] || node.text.parameterize.presence || 'sec'
-      @slugs[anchor] += 1
-      anchor = "#{anchor}-#{@slugs[anchor]}" if @slugs[anchor] > 1
-
-      node['id'] = anchor
-
-      next unless LISTED_ELEMENTS.include?(node.name)
-
-      depth          = node.name[1..-1]
-      latest_section = @headers.last
-
-      if latest_section.nil? || latest_section.depth >= depth
-        @headers << Section.new(depth, node.text, anchor)
-      else
-        latest_section << Section.new(depth, node.text, anchor)
-      end
-    end
-
-    @target_html = parsed_html.to_s
-    @processed   = true
-  end
-end