Fix duplicate items after grid migration

This commit is contained in:
Suphon Thanakornpakapong
2021-06-07 22:29:42 +07:00
parent 44bd593acd
commit 9ca2d92f8e
2 changed files with 22 additions and 3 deletions
@@ -171,8 +171,11 @@ public class LauncherProvider extends ContentProvider {
final DatabaseHelper helper = src.get();
mOpenHelper = dst.get();
SQLiteDatabase toDb = mOpenHelper.getWritableDatabase();
copyTable(helper.getReadableDatabase(), Favorites.TABLE_NAME,
mOpenHelper.getWritableDatabase(), targetTableName, getContext());
toDb, targetTableName, getContext());
// remove old items in the db
copyTable(toDb, targetTableName, toDb, Favorites.TABLE_NAME, getContext());
helper.close();
return true;
}
@@ -91,8 +91,24 @@ public class GridSizeMigrationTaskV2 {
mSrcReader = srcReader;
mDestReader = destReader;
mHotseatItems = destReader.loadHotseatEntries();
mWorkspaceItems = destReader.loadAllWorkspaceEntries();
List<DbEntry> hotseatItems = destReader.loadHotseatEntries();
List<DbEntry> workspaceItems = destReader.loadAllWorkspaceEntries();
// only add items in the target size. other items are considered lost
mHotseatItems = new ArrayList<>();
for (int i = 0; i < hotseatItems.size(); i++) {
DbEntry item = hotseatItems.get(i);
if (item.cellX < destHotseatSize) {
mHotseatItems.add(item);
}
}
mWorkspaceItems = new ArrayList<>();
for (int i = 0; i < workspaceItems.size(); i++) {
DbEntry item = workspaceItems.get(i);
if (item.cellX < targetSize.x && item.cellY < targetSize.y) {
mWorkspaceItems.add(item);
}
}
mHotseatDiff = calcDiff(mSrcReader.loadHotseatEntries(), mHotseatItems);
mWorkspaceDiff = calcDiff(mSrcReader.loadAllWorkspaceEntries(), mWorkspaceItems);