From 19229482982eace3e07b87475c48d194901a33eb Mon Sep 17 00:00:00 2001 From: Mitchell Henke Date: Wed, 31 Aug 2022 08:56:53 -0500 Subject: [PATCH 1/5] changelog: Improvements, Template Rendering, Improve rendering speed of phone input component --- app/components/phone_input_component.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/components/phone_input_component.rb b/app/components/phone_input_component.rb index 31e5ad76cdf..0a512043747 100644 --- a/app/components/phone_input_component.rb +++ b/app/components/phone_input_component.rb @@ -36,9 +36,10 @@ def translated_country_code_names end def international_phone_codes + translated_international_codes = PhoneNumberCapabilities.translated_international_codes supported_country_codes. map do |code_key| - code_data = PhoneNumberCapabilities.translated_international_codes[code_key] + code_data = translated_international_codes[code_key] [ international_phone_code_label(code_data), From 22f63059f854f0948c30b5a5b39ce54fe733a9dd Mon Sep 17 00:00:00 2001 From: Mitchell Henke Date: Fri, 2 Sep 2022 10:33:51 -0500 Subject: [PATCH 2/5] add translated international codes cache --- app/services/phone_number_capabilities.rb | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/app/services/phone_number_capabilities.rb b/app/services/phone_number_capabilities.rb index 6dd35b65099..c963b48d959 100644 --- a/app/services/phone_number_capabilities.rb +++ b/app/services/phone_number_capabilities.rb @@ -10,12 +10,25 @@ def self.load_config attr_reader :phone, :phone_confirmed def self.translated_international_codes - translated_international_codes_data = {} - INTERNATIONAL_CODES.each do |k, value| - translated_international_codes_data[k] = - value.merge('name' => I18n.t("countries.#{k.downcase}")) + if Rails.env.development? + translated_international_codes_data = {} + INTERNATIONAL_CODES.each do |k, value| + translated_international_codes_data[k] = + value.merge('name' => I18n.t("countries.#{k.downcase}")) + end + translated_international_codes_data + else + return @translated_intl_codes_data[I18n.locale] if defined?(@translated_intl_codes_data) + @translated_intl_codes_data = {} + I18n.available_locales.each do |locale| + INTERNATIONAL_CODES.each do |k, value| + @translated_intl_codes_data[locale] ||= {} + @translated_intl_codes_data[locale][k] = + value.merge('name' => I18n.t("countries.#{k.downcase}", locale: locale)) + end + end + @translated_intl_codes_data[I18n.locale] end - translated_international_codes_data end def initialize(phone, phone_confirmed:) From 6dbbfb45491f6b2af015caddabfc47e2fe8c5f05 Mon Sep 17 00:00:00 2001 From: Mitchell Henke Date: Fri, 2 Sep 2022 11:56:09 -0500 Subject: [PATCH 3/5] Update app/services/phone_number_capabilities.rb Co-authored-by: Zach Margolis --- app/services/phone_number_capabilities.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/services/phone_number_capabilities.rb b/app/services/phone_number_capabilities.rb index c963b48d959..ebcad4cd0a3 100644 --- a/app/services/phone_number_capabilities.rb +++ b/app/services/phone_number_capabilities.rb @@ -19,10 +19,9 @@ def self.translated_international_codes translated_international_codes_data else return @translated_intl_codes_data[I18n.locale] if defined?(@translated_intl_codes_data) - @translated_intl_codes_data = {} + @translated_intl_codes_data = Hash.new { |h, k| h[k] = {} } I18n.available_locales.each do |locale| INTERNATIONAL_CODES.each do |k, value| - @translated_intl_codes_data[locale] ||= {} @translated_intl_codes_data[locale][k] = value.merge('name' => I18n.t("countries.#{k.downcase}", locale: locale)) end From 338535f0656d9726afb702877e3b21b7dd4b3d28 Mon Sep 17 00:00:00 2001 From: Mitchell Henke Date: Fri, 2 Sep 2022 12:23:51 -0500 Subject: [PATCH 4/5] fix specs --- spec/components/phone_input_component_spec.rb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/spec/components/phone_input_component_spec.rb b/spec/components/phone_input_component_spec.rb index 6bcefc03640..cba11cff60b 100644 --- a/spec/components/phone_input_component_spec.rb +++ b/spec/components/phone_input_component_spec.rb @@ -136,10 +136,11 @@ context 'with delivery unsupported country' do before do - stub_const( - 'PhoneNumberCapabilities::INTERNATIONAL_CODES', - PhoneNumberCapabilities::INTERNATIONAL_CODES.merge( - 'US' => PhoneNumberCapabilities::INTERNATIONAL_CODES['US'].merge('supports_sms' => false), + allow(PhoneNumberCapabilities).to receive(:translated_international_codes).and_return( + PhoneNumberCapabilities.translated_international_codes.merge( + 'US' => PhoneNumberCapabilities.translated_international_codes['US'].merge( + 'supports_sms' => false, + ), ), ) end @@ -159,10 +160,9 @@ context 'with delivery unsupported unconfirmed country' do before do - stub_const( - 'PhoneNumberCapabilities::INTERNATIONAL_CODES', - PhoneNumberCapabilities::INTERNATIONAL_CODES.merge( - 'US' => PhoneNumberCapabilities::INTERNATIONAL_CODES['US'].merge( + allow(PhoneNumberCapabilities).to receive(:translated_international_codes).and_return( + PhoneNumberCapabilities.translated_international_codes.merge( + 'US' => PhoneNumberCapabilities.translated_international_codes['US'].merge( 'supports_sms_unconfirmed' => false, ), ), From c4a2fe0cf704d6065044f94d7f7db4551bdd9e41 Mon Sep 17 00:00:00 2001 From: Mitchell Henke Date: Fri, 2 Sep 2022 14:24:57 -0500 Subject: [PATCH 5/5] simplify non-caching in development --- app/services/phone_number_capabilities.rb | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/app/services/phone_number_capabilities.rb b/app/services/phone_number_capabilities.rb index ebcad4cd0a3..cd63da50ab7 100644 --- a/app/services/phone_number_capabilities.rb +++ b/app/services/phone_number_capabilities.rb @@ -10,24 +10,17 @@ def self.load_config attr_reader :phone, :phone_confirmed def self.translated_international_codes - if Rails.env.development? - translated_international_codes_data = {} + @translated_intl_codes_data = nil if Rails.env.development? + return @translated_intl_codes_data[I18n.locale] if @translated_intl_codes_data + + @translated_intl_codes_data = Hash.new { |h, k| h[k] = {} } + I18n.available_locales.each do |locale| INTERNATIONAL_CODES.each do |k, value| - translated_international_codes_data[k] = - value.merge('name' => I18n.t("countries.#{k.downcase}")) - end - translated_international_codes_data - else - return @translated_intl_codes_data[I18n.locale] if defined?(@translated_intl_codes_data) - @translated_intl_codes_data = Hash.new { |h, k| h[k] = {} } - I18n.available_locales.each do |locale| - INTERNATIONAL_CODES.each do |k, value| - @translated_intl_codes_data[locale][k] = - value.merge('name' => I18n.t("countries.#{k.downcase}", locale: locale)) - end + @translated_intl_codes_data[locale][k] = + value.merge('name' => I18n.t("countries.#{k.downcase}", locale: locale)) end - @translated_intl_codes_data[I18n.locale] end + @translated_intl_codes_data[I18n.locale] end def initialize(phone, phone_confirmed:)