From 89f93a9bb15c303875c35c196e26d9e0d4b87985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Hern=C3=A1ndez?= Date: Mon, 13 Mar 2023 11:01:13 +0100 Subject: [PATCH] Close ZenModeScheduleRuleSettingsActivity when rule is deleted This fixes an issue where the ZenRuleButtonsPreferenceController was redirecting to the rule list, but the container fragment was still trying to refresh the rule, leading to a "rule not found" toast. This also makes the transition look nicer, as it's a "back" instead of a "forward" animation now. Fixes: 244103559 Test: Manually on phone & tablet Change-Id: Ie26511dcaec4c7976f488936cdc6d417110ca1b1 --- .../notification/zen/ZenModeRuleSettingsBase.java | 9 +++++++++ .../zen/ZenRuleButtonsPreferenceController.java | 11 +++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/notification/zen/ZenModeRuleSettingsBase.java b/src/com/android/settings/notification/zen/ZenModeRuleSettingsBase.java index 529780168a1..cda5b1adfc7 100644 --- a/src/com/android/settings/notification/zen/ZenModeRuleSettingsBase.java +++ b/src/com/android/settings/notification/zen/ZenModeRuleSettingsBase.java @@ -48,6 +48,7 @@ public abstract class ZenModeRuleSettingsBase extends ZenModeSettingsBase { protected boolean mDisableListeners; protected AutomaticZenRule mRule; protected String mId; + private boolean mRuleRemoved; protected ZenAutomaticRuleHeaderPreferenceController mHeader; protected ZenRuleButtonsPreferenceController mActionButtons; @@ -162,6 +163,10 @@ public abstract class ZenModeRuleSettingsBase extends ZenModeSettingsBase { } private boolean refreshRuleOrFinish() { + if (mRuleRemoved && getActivity() != null) { + getActivity().finish(); + return true; + } mRule = getZenRule(); if (DEBUG) Log.d(TAG, "mRule=" + mRule); mHeader.setRule(mRule); @@ -196,4 +201,8 @@ public abstract class ZenModeRuleSettingsBase extends ZenModeSettingsBase { } mDisableListeners = false; } + + void onRuleRemoved() { + mRuleRemoved = true; + } } diff --git a/src/com/android/settings/notification/zen/ZenRuleButtonsPreferenceController.java b/src/com/android/settings/notification/zen/ZenRuleButtonsPreferenceController.java index 023a770808d..082b2a53ae5 100644 --- a/src/com/android/settings/notification/zen/ZenRuleButtonsPreferenceController.java +++ b/src/com/android/settings/notification/zen/ZenRuleButtonsPreferenceController.java @@ -39,11 +39,11 @@ public class ZenRuleButtonsPreferenceController extends AbstractZenModePreferenc implements PreferenceControllerMixin { public static final String KEY = "zen_action_buttons"; - private final PreferenceFragmentCompat mFragment; + private final ZenModeRuleSettingsBase mFragment; private String mId; private AutomaticZenRule mRule; - public ZenRuleButtonsPreferenceController(Context context, PreferenceFragmentCompat fragment, + public ZenRuleButtonsPreferenceController(Context context, ZenModeRuleSettingsBase fragment, Lifecycle lc) { super(context, KEY, lc); mFragment = fragment; @@ -106,12 +106,7 @@ public class ZenRuleButtonsPreferenceController extends AbstractZenModePreferenc mBackend.removeZenRule(id); mMetricsFeatureProvider.action(mContext, SettingsEnums.ACTION_ZEN_DELETE_RULE_OK); - new SubSettingLauncher(mContext) - .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP) - .setDestination(ZenModeAutomationSettings.class.getName()) - .setSourceMetricsCategory(MetricsProto.MetricsEvent - .NOTIFICATION_ZEN_MODE_AUTOMATION) - .launch(); + mFragment.onRuleRemoved(); } }); }