1
0
Fork 0
mirror of https://github.com/M66B/FairEmail.git synced 2024-12-25 01:06:04 +00:00

Fixed orphan messages (2)

This commit is contained in:
M66B 2022-10-09 07:24:58 +02:00
parent 86c524c7c6
commit 457ea09fa3
3 changed files with 2814 additions and 14 deletions

File diff suppressed because it is too large Load diff

View file

@ -68,7 +68,7 @@ import javax.mail.internet.InternetAddress;
// https://developer.android.com/topic/libraries/architecture/room.html
@Database(
version = 247,
version = 248,
entities = {
EntityIdentity.class,
EntityAccount.class,
@ -2481,13 +2481,17 @@ public abstract class DB extends RoomDatabase {
@Override
public void migrate(@NonNull SupportSQLiteDatabase db) {
logMigration(startVersion, endVersion);
EntityMessage.convert(context, true);
}
}).addMigrations(new Migration(246, 247) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase db) {
logMigration(startVersion, endVersion);
EntityMessage.convert(context, false);
}
}).addMigrations(new Migration(247, 248) {
@Override
public void migrate(@NonNull SupportSQLiteDatabase db) {
logMigration(startVersion, endVersion);
EntityMessage.convert(context);
}
}).addMigrations(new Migration(998, 999) {
@Override

View file

@ -578,27 +578,22 @@ public class EntityMessage implements Serializable {
static File getFile(Context context, Long id) {
File root = new File(context.getFilesDir(), "messages");
File dir = Helper.ensureExists(new File(root, Long.toString(id / 1000)));
File dir = Helper.ensureExists(new File(root, "D" + (id / 1000)));
return new File(dir, id.toString());
}
static void convert(Context context, boolean silent) {
static void convert(Context context) {
File root = new File(context.getFilesDir(), "messages");
File[] files = root.listFiles();
if (files == null)
return;
List<File> files = Helper.listFiles(root);
for (File file : files)
if (file.isFile())
try {
long id = Long.parseLong(file.getName());
File target = getFile(context, id);
Helper.copy(file, target);
file.delete();
if (!file.renameTo(target))
throw new IllegalArgumentException("Failed moving " + file);
} catch (Throwable ex) {
if (silent)
Log.i(ex);
else
Log.e(ex);
Log.e(ex);
}
}