about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--app/controllers/home_controller.rb15
-rw-r--r--app/lib/permalink_redirector.rb4
-rw-r--r--app/views/home/index.html.haml12
-rw-r--r--spec/controllers/home_controller_spec.rb13
-rw-r--r--spec/lib/permalink_redirector_spec.rb4
5 files changed, 29 insertions, 19 deletions
diff --git a/app/controllers/home_controller.rb b/app/controllers/home_controller.rb
index 450f92bd4..61b1690fa 100644
--- a/app/controllers/home_controller.rb
+++ b/app/controllers/home_controller.rb
@@ -2,10 +2,10 @@
 
 class HomeController < ApplicationController
   before_action :redirect_unauthenticated_to_permalinks!
-  before_action :authenticate_user!
 
   before_action :set_pack
   before_action :set_referrer_policy_header
+  before_action :set_instance_presenter
 
   def index
     @body_classes = 'app-body'
@@ -16,7 +16,10 @@ class HomeController < ApplicationController
   def redirect_unauthenticated_to_permalinks!
     return if user_signed_in?
 
-    redirect_to(PermalinkRedirector.new(request.path).redirect_path || default_redirect_path)
+    redirect_path = PermalinkRedirector.new(request.path).redirect_path
+    redirect_path ||= default_redirect_path
+
+    redirect_to(redirect_path) if redirect_path.present?
   end
 
   def set_pack
@@ -24,8 +27,10 @@ class HomeController < ApplicationController
   end
 
   def default_redirect_path
-    if request.path.start_with?('/web') || whitelist_mode?
+    if whitelist_mode?
       new_user_session_path
+    elsif request.path.start_with?('/web')
+      nil
     elsif single_user_mode?
       short_account_path(Account.local.without_suspended.where('id > 0').first)
     else
@@ -36,4 +41,8 @@ class HomeController < ApplicationController
   def set_referrer_policy_header
     response.headers['Referrer-Policy'] = 'origin'
   end
+
+  def set_instance_presenter
+    @instance_presenter = InstancePresenter.new
+  end
 end
diff --git a/app/lib/permalink_redirector.rb b/app/lib/permalink_redirector.rb
index e48bce060..6d15f3963 100644
--- a/app/lib/permalink_redirector.rb
+++ b/app/lib/permalink_redirector.rb
@@ -17,10 +17,6 @@ class PermalinkRedirector
         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
     end
   end
diff --git a/app/views/home/index.html.haml b/app/views/home/index.html.haml
index 568b23eff..437c33715 100644
--- a/app/views/home/index.html.haml
+++ b/app/views/home/index.html.haml
@@ -1,10 +1,14 @@
 - content_for :header_tags do
-  = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous'
-  = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous'
-  = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous'
-  = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous'
+  - if user_signed_in?
+    = preload_pack_asset 'features/getting_started.js', crossorigin: 'anonymous'
+    = preload_pack_asset 'features/compose.js', crossorigin: 'anonymous'
+    = preload_pack_asset 'features/home_timeline.js', crossorigin: 'anonymous'
+    = preload_pack_asset 'features/notifications.js', crossorigin: 'anonymous'
+
+  = render partial: 'shared/og'
 
   %meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key}
+
   = render_initial_state
 
 .notranslate.app-holder#mastodon{ data: { props: Oj.dump(default_props) } }
diff --git a/spec/controllers/home_controller_spec.rb b/spec/controllers/home_controller_spec.rb
index 70c5c42c5..914ca6307 100644
--- a/spec/controllers/home_controller_spec.rb
+++ b/spec/controllers/home_controller_spec.rb
@@ -8,9 +8,9 @@ RSpec.describe HomeController, type: :controller do
 
     context 'when not signed in' do
       context 'when requested path is tag timeline' do
-        it 'redirects to the tag\'s permalink' do
+        it 'returns http success' do
           @request.path = '/web/timelines/tag/name'
-          is_expected.to redirect_to '/tags/name'
+          is_expected.to have_http_status(:success)
         end
       end
 
@@ -23,11 +23,12 @@ RSpec.describe HomeController, type: :controller do
     context 'when signed in' do
       let(:user) { Fabricate(:user) }
 
-      before { sign_in(user) }
+      before do
+        sign_in(user)
+      end
 
-      it 'assigns @body_classes' do
-        subject
-        expect(assigns(:body_classes)).to eq 'app-body'
+      it 'returns http success' do
+        is_expected.to have_http_status(:success)
       end
     end
   end
diff --git a/spec/lib/permalink_redirector_spec.rb b/spec/lib/permalink_redirector_spec.rb
index b916b33b2..abda57da4 100644
--- a/spec/lib/permalink_redirector_spec.rb
+++ b/spec/lib/permalink_redirector_spec.rb
@@ -21,7 +21,7 @@ describe PermalinkRedirector do
 
     it 'returns path for legacy tag links' do
       redirector = described_class.new('web/timelines/tag/hoge')
-      expect(redirector.redirect_path).to eq '/tags/hoge'
+      expect(redirector.redirect_path).to be_nil
     end
 
     it 'returns path for pretty account links' do
@@ -36,7 +36,7 @@ describe PermalinkRedirector do
 
     it 'returns path for pretty tag links' do
       redirector = described_class.new('web/tags/hoge')
-      expect(redirector.redirect_path).to eq '/tags/hoge'
+      expect(redirector.redirect_path).to be_nil
     end
   end
 end