diff --git a/app/helpers/i18n_helper.rb b/app/helpers/i18n_helper.rb index f4fd4985ed..8c827e1bba 100644 --- a/app/helpers/i18n_helper.rb +++ b/app/helpers/i18n_helper.rb @@ -4,6 +4,6 @@ module I18nHelper end def valid_locale(user) - UserLocaleSetter.new(user).valid_locale_for_user + UserLocaleSetter.new(user).valid_current_locale end end diff --git a/app/services/user_locale_setter.rb b/app/services/user_locale_setter.rb index bf030af905..cd0fa96631 100644 --- a/app/services/user_locale_setter.rb +++ b/app/services/user_locale_setter.rb @@ -19,8 +19,14 @@ class UserLocaleSetter current_user.update!(locale: valid_current_locale) end - def valid_locale_for_user - valid_current_locale + def valid_current_locale + if current_user_locale && available_locale?(current_user_locale) + current_user_locale + elsif cookies[:locale] && available_locale?(cookies[:locale]) + cookies[:locale] + else + I18n.default_locale + end end private @@ -39,16 +45,6 @@ class UserLocaleSetter end def current_user_locale - current_user.andand.locale - end - - def valid_current_locale - if current_user_locale && available_locale?(current_user_locale) - current_user_locale - elsif cookies[:locale] && available_locale?(cookies[:locale]) - cookies[:locale] - else - I18n.default_locale - end + current_user&.locale end end diff --git a/spec/services/user_locale_setter_spec.rb b/spec/services/user_locale_setter_spec.rb index 46981faec5..1c2979a286 100644 --- a/spec/services/user_locale_setter_spec.rb +++ b/spec/services/user_locale_setter_spec.rb @@ -120,19 +120,19 @@ describe UserLocaleSetter do end end - describe "#valid_locale_for_user" do + describe "#valid_current_locale" do let(:service) { UserLocaleSetter.new(user) } context "when the user has a locale set" do it "returns the user's locale" do user.update(locale: "es") - expect(service.valid_locale_for_user).to eq "es" + expect(service.valid_current_locale).to eq "es" end end context "when the user has no locale set" do it "returns the default locale" do - expect(service.valid_locale_for_user).to eq default_locale + expect(service.valid_current_locale).to eq default_locale end end @@ -140,7 +140,7 @@ describe UserLocaleSetter do let(:user) { nil } it "returns the default locale" do - expect(service.valid_locale_for_user).to eq default_locale + expect(service.valid_current_locale).to eq default_locale end end end