diff --git a/service/lib/agama/manager.rb b/service/lib/agama/manager.rb index 4a48e64a1..51067c0e1 100644 --- a/service/lib/agama/manager.rb +++ b/service/lib/agama/manager.rb @@ -84,6 +84,7 @@ def startup_phase def locale=(locale) service_status.busy change_process_locale(locale) + users.update_issues start_progress_with_descriptions( _("Load software translations"), _("Load storage translations") @@ -183,7 +184,7 @@ def language # Users client # - # @return [DBus::Clients::Users] + # @return [Agama::Users] def users @users ||= Users.new(logger) end diff --git a/service/lib/agama/storage/manager.rb b/service/lib/agama/storage/manager.rb index 1d4faf9f9..2cd5546ab 100644 --- a/service/lib/agama/storage/manager.rb +++ b/service/lib/agama/storage/manager.rb @@ -179,6 +179,7 @@ def actions # @param locale [String] new locale def locale=(locale) change_process_locale(locale) + update_issues end private diff --git a/service/lib/agama/storage/proposal.rb b/service/lib/agama/storage/proposal.rb index f8d014e04..f35a869c3 100644 --- a/service/lib/agama/storage/proposal.rb +++ b/service/lib/agama/storage/proposal.rb @@ -45,11 +45,6 @@ def initialize(config, logger: nil) @on_calculate_callbacks = [] end - # List of issues. - # - # @return [Array] - attr_reader :issues - # Whether the proposal was already calculated. # # @return [Boolean] @@ -192,6 +187,25 @@ def guided_settings strategy_object.settings end + # List of issues. + # + # @return [Array] + def issues + items = [] + + case @calculate_error + when Y2Storage::NoDiskSpaceError + items << failed_issue + when Y2Storage::Error + items << exception_issue(@calculate_error) + else + items << failed_issue if proposal&.failed? + end + + items.concat(strategy_object.issues) if strategy_object + items + end + private # @return [Agama::Config] @@ -232,16 +246,15 @@ def calculate_agama_from_json(storage_json) def calculate return false unless storage_manager.probed? - @issues = [] - + @calculate_error = nil begin strategy_object.calculate - @issues << failed_issue if proposal.failed? rescue Y2Storage::Error => e - handle_exception(e) + @calculate_error = e + rescue StandardError => e + raise e end - @issues.concat(strategy_object.issues) @on_calculate_callbacks.each(&:call) success? end @@ -263,18 +276,6 @@ def storage_manager Y2Storage::StorageManager.instance end - # Handle Y2Storage exceptions - def handle_exception(error) - case error - when Y2Storage::NoDiskSpaceError - @issues << failed_issue - when Y2Storage::Error - @issues << exception_issue(error) - else - raise error - end - end - # Issue representing the proposal is not valid. # # @return [Issue] diff --git a/service/lib/agama/users.rb b/service/lib/agama/users.rb index d85cc0459..c294b3e81 100644 --- a/service/lib/agama/users.rb +++ b/service/lib/agama/users.rb @@ -139,10 +139,6 @@ def write end end - private - - attr_reader :logger - # Recalculates the list of issues def update_issues new_issues = [] @@ -158,6 +154,10 @@ def update_issues self.issues = new_issues end + private + + attr_reader :logger + # Determines whether a first user is defined or not # # @return [Boolean] diff --git a/service/lib/agama/with_locale.rb b/service/lib/agama/with_locale.rb index 6ec4cd777..a26bf471a 100644 --- a/service/lib/agama/with_locale.rb +++ b/service/lib/agama/with_locale.rb @@ -36,7 +36,7 @@ def change_process_locale(locale) ENV["LANG"] = locale log.info "set yast locale to #{locale}" # explicit call to textdomain to force fast gettext change of language ASAP - textdomain "installation" + textdomain "agama" end end end diff --git a/service/package/rubygem-agama-yast.changes b/service/package/rubygem-agama-yast.changes index e843a97ff..4a65f5a91 100644 --- a/service/package/rubygem-agama-yast.changes +++ b/service/package/rubygem-agama-yast.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Fri Sep 27 09:23:40 UTC 2024 - Imobach Gonzalez Sosa + +- Handle UI language change in users and storage + (gh#agama-project/agama#1642). + ------------------------------------------------------------------- Mon Sep 23 14:55:53 UTC 2024 - José Iván López González