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

Commit e8244385 authored by Schneider Victor-tulias's avatar Schneider Victor-tulias
Browse files

Add check to prevent adding duplicate pending install icons onto the worksapce.

Test: manual

Change-Id: Ifa1bbe39278a7a4f7a385204efcbb815c2a59ca3
parent 3da80bd3
Loading
Loading
Loading
Loading
+31 −2
Original line number Diff line number Diff line
@@ -104,9 +104,11 @@ public class ItemInstallQueue {
    @WorkerThread
    private void addToQueue(PendingInstallShortcutInfo info) {
        ensureQueueLoaded();
        if (!mItems.contains(info)) {
            mItems.add(info);
            mStorage.write(mContext, mItems);
        }
    }

    @WorkerThread
    private void flushQueueInBackground() {
@@ -303,6 +305,33 @@ public class ItemInstallQueue {
            }
            return null;
        }

        @Override
        public boolean equals(Object obj) {
            if (obj instanceof PendingInstallShortcutInfo) {
                PendingInstallShortcutInfo other = (PendingInstallShortcutInfo) obj;

                boolean userMatches = user.equals(other.user);
                boolean itemTypeMatches = itemType == other.itemType;
                boolean intentMatches = intent.toUri(0).equals(other.intent.toUri(0));
                boolean shortcutInfoMatches = shortcutInfo == null
                        ? other.shortcutInfo == null
                        : other.shortcutInfo != null
                            && shortcutInfo.getId().equals(other.shortcutInfo.getId())
                            && shortcutInfo.getPackage().equals(other.shortcutInfo.getPackage());
                boolean providerInfoMatches = providerInfo == null
                        ? other.providerInfo == null
                        : other.providerInfo != null
                            && providerInfo.provider.equals(other.providerInfo.provider);

                return userMatches
                        && itemTypeMatches
                        && intentMatches
                        && shortcutInfoMatches
                        && providerInfoMatches;
            }
            return false;
        }
    }

    private static String getIntentPackage(Intent intent) {