Add extra locales to bootstrap.json

Add extra locales to bootstrap.json

This allows an app (such as Ember CLI) to get the full list of locales for a user, including admin and overrides.

diff --git a/app/controllers/bootstrap_controller.rb b/app/controllers/bootstrap_controller.rb
index 146e892..c7822b4 100644
--- a/app/controllers/bootstrap_controller.rb
+++ b/app/controllers/bootstrap_controller.rb
@@ -34,6 +34,14 @@ class BootstrapController < ApplicationController
     end
     add_style(mobile_view? ? :mobile_theme : :desktop_theme) if theme_ids.present?
 
+    extra_locales = []
+    if ExtraLocalesController.client_overrides_exist?
+      extra_locales << ExtraLocalesController.url('overrides')
+    end
+    if staff?
+      extra_locales << ExtraLocalesController.url('admin')
+    end
+
     bootstrap = {
       theme_ids: theme_ids,
       title: SiteSetting.title,
@@ -41,8 +49,9 @@ class BootstrapController < ApplicationController
       locale_script: locale,
       stylesheets: @stylesheets,
       setup_data: client_side_setup_data,
-      preloaded: @preloaded
+      preloaded: @preloaded,
     }
+    bootstrap[:extra_locales] = extra_locales if extra_locales.present?
 
     render_json_dump(bootstrap: bootstrap)
   end
diff --git a/spec/requests/bootstrap_controller_spec.rb b/spec/requests/bootstrap_controller_spec.rb
index 9b17254..4cd7353 100644
--- a/spec/requests/bootstrap_controller_spec.rb
+++ b/spec/requests/bootstrap_controller_spec.rb
@@ -39,4 +39,16 @@ describe BootstrapController do
     expect(preloaded['topicTrackingStates']).to be_present
   end
 
+  it "returns extra locales (admin) when staff" do
+    user = Fabricate(:admin)
+    sign_in(user)
+    get "/bootstrap.json"
+    expect(response.status).to eq(200)
+
+    json = response.parsed_body
+    expect(json).to be_present
+
+    bootstrap = json['bootstrap']
+    expect(bootstrap['extra_locales']).to be_present
+  end
 end

GitHub sha: 19763065

1 Like