Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e2a82663 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Restore original importance when unblocking notif channel

Test: atest
Bug: 62355992
Change-Id: I5d764d0ade68b2ce5708ae79e9ef488ab57bb141
parent 4395ef19
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -106,8 +106,11 @@ public class BlockPreferenceController extends NotificationPreferenceController
            // It's always safe to override the importance if it's meant to be blocked or if
            // it was blocked and we are unblocking it.
            if (blocked || originalImportance == IMPORTANCE_NONE) {
                final int importance = blocked ? IMPORTANCE_NONE
                        : isDefaultChannel() ? IMPORTANCE_UNSPECIFIED : IMPORTANCE_DEFAULT;
                final int importance = blocked
                        ? IMPORTANCE_NONE
                        : isDefaultChannel()
                                ? IMPORTANCE_UNSPECIFIED
                                : mChannel.getOriginalImportance();
                mChannel.setImportance(importance);
                saveChannel();
            }
+2 −23
Original line number Diff line number Diff line
@@ -207,17 +207,14 @@ public class ChannelListPreferenceController extends NotificationPreferenceContr
        channelPref.setOnPreferenceChangeListener(
                (preference, o) -> {
                    boolean value = (Boolean) o;
                    int importance = value ? IMPORTANCE_LOW : IMPORTANCE_NONE;
                    int importance = value ? channel.getOriginalImportance() : IMPORTANCE_NONE;
                    channel.setImportance(importance);
                    channel.lockFields(
                            NotificationChannel.USER_LOCKED_IMPORTANCE);
                    channel.lockFields(NotificationChannel.USER_LOCKED_IMPORTANCE);
                    MasterSwitchPreference channelPref1 = (MasterSwitchPreference) preference;
                    channelPref1.setIcon(null);
                    if (channel.getImportance() > IMPORTANCE_LOW) {
                        channelPref1.setIcon(getAlertingIcon());
                    }
                    toggleBehaviorIconState(channelPref1.getIcon(),
                            importance != IMPORTANCE_NONE);
                    mBackend.updateChannel(mAppRow.pkg, mAppRow.uid, channel);

                    return true;
@@ -234,24 +231,6 @@ public class ChannelListPreferenceController extends NotificationPreferenceContr
        return icon;
    }

    private void toggleBehaviorIconState(Drawable icon, boolean enabled) {
        if (icon == null) return;

        LayerDrawable layerDrawable = (LayerDrawable) icon;
        GradientDrawable background =
                (GradientDrawable) layerDrawable.findDrawableByLayerId(R.id.back);

        if (background == null) return;

        if (enabled) {
            background.clearColorFilter();
        } else {
            background.setColorFilter(new BlendModeColorFilter(
                    mContext.getColor(R.color.material_grey_300),
                    BlendMode.SRC_IN));
        }
    }

    protected void onGroupBlockStateChanged(NotificationChannelGroup group) {
        if (group == null) {
            return;
+2 −1
Original line number Diff line number Diff line
@@ -368,6 +368,7 @@ public class BlockPreferenceControllerTest {
    public void testOnSwitchChanged_channel_nonDefault() {
        NotificationBackend.AppRow appRow = new NotificationBackend.AppRow();
        NotificationChannel channel = new NotificationChannel("a", "a", IMPORTANCE_HIGH);
        channel.setOriginalImportance(IMPORTANCE_HIGH);
        mController.onResume(appRow, channel, null, null, null, null);
        mController.updateState(mPreference);

@@ -375,7 +376,7 @@ public class BlockPreferenceControllerTest {
        assertEquals(IMPORTANCE_NONE, channel.getImportance());

        mController.onSwitchChanged(null, true);
        assertEquals(IMPORTANCE_DEFAULT, channel.getImportance());
        assertEquals(IMPORTANCE_HIGH, channel.getImportance());

        verify(mBackend, times(2)).updateChannel(any(), anyInt(), any());
    }