From 58c40caeb4f601b1733b86e786d2c11fccf994d5 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Sat, 7 Dec 2024 02:46:34 -0500
Subject: [PATCH] Extract SPA-handled routes to stand-alone file (#33190)

---
 config/routes.rb         | 35 +----------------------------------
 config/routes/web_app.rb | 34 ++++++++++++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 34 deletions(-)
 create mode 100644 config/routes/web_app.rb

diff --git a/config/routes.rb b/config/routes.rb
index 0f4df757da..b4c9b6918b 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -16,37 +16,6 @@ def redirect_with_vary(path)
 end
 
 Rails.application.routes.draw do
-  # Paths of routes on the web app that to not require to be indexed or
-  # have alternative format representations requiring separate controllers
-  web_app_paths = %w(
-    /getting-started
-    /keyboard-shortcuts
-    /home
-    /public
-    /public/local
-    /public/remote
-    /conversations
-    /lists/(*any)
-    /links/(*any)
-    /notifications/(*any)
-    /notifications_v2/(*any)
-    /favourites
-    /bookmarks
-    /pinned
-    /start/(*any)
-    /directory
-    /explore/(*any)
-    /search
-    /publish
-    /follow_requests
-    /blocks
-    /domain_blocks
-    /mutes
-    /followed_tags
-    /statuses/(*any)
-    /deck/(*any)
-  ).freeze
-
   root 'home#index'
 
   mount LetterOpenerWeb::Engine, at: 'letter_opener' if Rails.env.development?
@@ -226,9 +195,7 @@ Rails.application.routes.draw do
 
   draw(:api)
 
-  web_app_paths.each do |path|
-    get path, to: 'home#index'
-  end
+  draw(:web_app)
 
   get '/web/(*any)', to: redirect('/%{any}', status: 302), as: :web, defaults: { any: '' }, format: false
   get '/about',      to: 'about#show'
diff --git a/config/routes/web_app.rb b/config/routes/web_app.rb
new file mode 100644
index 0000000000..c09232d1f2
--- /dev/null
+++ b/config/routes/web_app.rb
@@ -0,0 +1,34 @@
+# frozen_string_literal: true
+
+# Paths handled by the React application, which do not:
+# - Require indexing
+# - Have alternative format representations
+
+%w(
+  /blocks
+  /bookmarks
+  /conversations
+  /deck/(*any)
+  /directory
+  /domain_blocks
+  /explore/(*any)
+  /favourites
+  /follow_requests
+  /followed_tags
+  /getting-started
+  /home
+  /keyboard-shortcuts
+  /links/(*any)
+  /lists/(*any)
+  /mutes
+  /notifications_v2/(*any)
+  /notifications/(*any)
+  /pinned
+  /public
+  /public/local
+  /public/remote
+  /publish
+  /search
+  /start/(*any)
+  /statuses/(*any)
+).each { |path| get path, to: 'home#index' }