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

Commit d197ebcf authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Moving data sanitization before bind

Data sanitization changes the launcher model data, which makes it
out of sync with what Launcher is displaying.
This would lead to widgetsIds getting deleted when they are created
by Launcher on UI thread, but have not yet been updated in the model
Also clearing all ghost widgets on every load. This would remove
the flaky behavior where widget update depends on folder and
other icons getting removed

Test: Presubmit
Bug: 181680555
Change-Id: I3cce69383d9d92a283c5197c3f99fbb539d93dbb
parent 13d5079e
Loading
Loading
Loading
Loading
+14 −11
Original line number Diff line number Diff line
@@ -192,6 +192,16 @@ public class LoaderTask implements Runnable {
            loadWorkspace(allShortcuts);
            logger.addSplit("loadWorkspace");

            // Sanitize data re-syncs widgets/shortcuts based on the workspace loaded from db.
            // sanitizeData should not be invoked if the workspace is loaded from a db different
            // from the main db as defined in the invariant device profile.
            // (e.g. both grid preview and minimal device mode uses a different db)
            if (mApp.getInvariantDeviceProfile().dbFile.equals(mDbName)) {
                verifyNotStopped();
                sanitizeData();
                logger.addSplit("sanitizeData");
            }

            verifyNotStopped();
            mResults.bindWorkspace();
            logger.addSplit("bindWorkspace");
@@ -274,14 +284,6 @@ public class LoaderTask implements Runnable {
                loadFolderNames();
            }

            // Sanitize data re-syncs widgets/shortcuts based on the workspace loaded from db.
            // sanitizeData should not be invoked if the workspace is loaded from a db different
            // from the main db as defined in the invariant device profile.
            // (e.g. both grid preview and minimal device mode uses a different db)
            if (mApp.getInvariantDeviceProfile().dbFile.equals(mDbName)) {
                sanitizeData();
            }

            verifyNotStopped();
            updateHandler.finish();
            logger.addSplit("finish icon update");
@@ -875,10 +877,11 @@ public class LoaderTask implements Runnable {
                    mBgDataModel.itemsIdMap.remove(folderId);
                }
            }

        }
        // Remove any ghost widgets
        LauncherSettings.Settings.call(contentResolver,
                LauncherSettings.Settings.METHOD_REMOVE_GHOST_WIDGETS);
        }

        // Update pinned state of model shortcuts
        mBgDataModel.updateShortcutPinnedState(context);