about summary refs log tree commit diff
path: root/app/lib/permalink_redirector.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/lib/permalink_redirector.rb')
-rw-r--r--app/lib/permalink_redirector.rb40
1 files changed, 11 insertions, 29 deletions
diff --git a/app/lib/permalink_redirector.rb b/app/lib/permalink_redirector.rb
index e48bce060..cf1a37625 100644
--- a/app/lib/permalink_redirector.rb
+++ b/app/lib/permalink_redirector.rb
@@ -8,20 +8,14 @@ class PermalinkRedirector
   end
 
   def redirect_path
-    if path_segments[0] == 'web'
-      if path_segments[1].present? && path_segments[1].start_with?('@') && path_segments[2] =~ /\d/
-        find_status_url_by_id(path_segments[2])
-      elsif path_segments[1].present? && path_segments[1].start_with?('@')
-        find_account_url_by_name(path_segments[1])
-      elsif path_segments[1] == 'statuses' && path_segments[2] =~ /\d/
-        find_status_url_by_id(path_segments[2])
-      elsif path_segments[1] == 'accounts' && path_segments[2] =~ /\d/
-        find_account_url_by_id(path_segments[2])
-      elsif path_segments[1] == 'timelines' && path_segments[2] == 'tag' && path_segments[3].present?
-        find_tag_url_by_name(path_segments[3])
-      elsif path_segments[1] == 'tags' && path_segments[2].present?
-        find_tag_url_by_name(path_segments[2])
-      end
+    if path_segments[0].present? && path_segments[0].start_with?('@') && path_segments[1] =~ /\d/
+      find_status_url_by_id(path_segments[1])
+    elsif path_segments[0].present? && path_segments[0].start_with?('@')
+      find_account_url_by_name(path_segments[0])
+    elsif path_segments[0] == 'statuses' && path_segments[1] =~ /\d/
+      find_status_url_by_id(path_segments[1])
+    elsif path_segments[0] == 'accounts' && path_segments[1] =~ /\d/
+      find_account_url_by_id(path_segments[1])
     end
   end
 
@@ -33,18 +27,12 @@ class PermalinkRedirector
 
   def find_status_url_by_id(id)
     status = Status.find_by(id: id)
-
-    return unless status&.distributable?
-
-    ActivityPub::TagManager.instance.url_for(status)
+    ActivityPub::TagManager.instance.url_for(status) if status&.distributable? && !status.account.local?
   end
 
   def find_account_url_by_id(id)
     account = Account.find_by(id: id)
-
-    return unless account
-
-    ActivityPub::TagManager.instance.url_for(account)
+    ActivityPub::TagManager.instance.url_for(account) if account.present? && !account.local?
   end
 
   def find_account_url_by_name(name)
@@ -52,12 +40,6 @@ class PermalinkRedirector
     domain           = nil if TagManager.instance.local_domain?(domain)
     account          = Account.find_remote(username, domain)
 
-    return unless account
-
-    ActivityPub::TagManager.instance.url_for(account)
-  end
-
-  def find_tag_url_by_name(name)
-    tag_path(CGI.unescape(name))
+    ActivityPub::TagManager.instance.url_for(account) if account.present? && !account.local?
   end
 end