Fix duplicate items after grid migration
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user