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

Commit 857dfe13 authored by Beverly's avatar Beverly Committed by Beverly Tai
Browse files

Don't iterate channel list in bgthread

To avoid a ConcurrentModificationException

Fixes: 173674911
Test: manual
Change-Id: If35c6f66a2cfae7ee4a6f8e83dd70aa5877f8362
parent 8e2ecd59
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -59,7 +59,7 @@ public class AppChannelsBypassingDndPreferenceController extends NotificationPre

    private RestrictedSwitchPreference mAllNotificationsToggle;
    private PreferenceCategory mPreferenceCategory;
    private final List<NotificationChannel> mChannels = new ArrayList<>();
    private List<NotificationChannel> mChannels = new ArrayList<>();

    public AppChannelsBypassingDndPreferenceController(
            Context context,
@@ -126,17 +126,18 @@ public class AppChannelsBypassingDndPreferenceController extends NotificationPre
        new AsyncTask<Void, Void, Void>() {
            @Override
            protected Void doInBackground(Void... unused) {
                List<NotificationChannel> newChannelList = new ArrayList<>();
                List<NotificationChannelGroup> mChannelGroupList = mBackend.getGroups(mAppRow.pkg,
                        mAppRow.uid).getList();
                mChannels.clear();
                for (NotificationChannelGroup channelGroup : mChannelGroupList) {
                    for (NotificationChannel channel : channelGroup.getChannels()) {
                        if (!isConversation(channel)) {
                            mChannels.add(channel);
                            newChannelList.add(channel);
                        }
                    }
                }
                Collections.sort(mChannels, CHANNEL_COMPARATOR);
                Collections.sort(newChannelList, CHANNEL_COMPARATOR);
                mChannels = newChannelList;
                return null;
            }