From 3ffce527cb7c849535f785b3681263947ef40d80 Mon Sep 17 00:00:00 2001 From: M66B Date: Fri, 18 Aug 2023 07:49:49 +0200 Subject: [PATCH] Autocorrect uuids --- app/src/main/java/eu/faircode/email/CloudSync.java | 7 +++++-- app/src/main/java/eu/faircode/email/DaoAccount.java | 3 +++ app/src/main/java/eu/faircode/email/DaoIdentity.java | 3 +++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/CloudSync.java b/app/src/main/java/eu/faircode/email/CloudSync.java index 20ce5a307f..2773a92656 100644 --- a/app/src/main/java/eu/faircode/email/CloudSync.java +++ b/app/src/main/java/eu/faircode/email/CloudSync.java @@ -56,6 +56,7 @@ import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.UUID; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; @@ -269,7 +270,8 @@ public class CloudSync { account.auth_type != ServiceAuthenticator.AUTH_TYPE_GMAIL) { if (uuidAccounts.contains(account.uuid)) { Log.w("Duplicate account uuid=" + account.uuid); - continue; + account.uuid = UUID.randomUUID().toString(); + db.account().setAccountUuid(account.id, account.uuid); } else uuidAccounts.add(account.uuid); @@ -282,7 +284,8 @@ public class CloudSync { if (identity.synchronize && !TextUtils.isEmpty(identity.uuid)) { if (uuidIdentities.contains(identity.uuid)) { Log.w("Duplicate identity uuid=" + identity.uuid); - continue; + identity.uuid = UUID.randomUUID().toString(); + db.identity().setIdentityUuid(identity.id, identity.uuid); } else uuidIdentities.add(identity.uuid); diff --git a/app/src/main/java/eu/faircode/email/DaoAccount.java b/app/src/main/java/eu/faircode/email/DaoAccount.java index 00abe5d84e..783bf0cb9b 100644 --- a/app/src/main/java/eu/faircode/email/DaoAccount.java +++ b/app/src/main/java/eu/faircode/email/DaoAccount.java @@ -192,6 +192,9 @@ public interface DaoAccount { @Update void updateAccount(EntityAccount account); + @Query("UPDATE account SET uuid = :uuid WHERE id = :id AND NOT (uuid IS :uuid)") + int setAccountUuid(long id, String uuid); + @Query("UPDATE account SET synchronize = :synchronize WHERE id = :id AND NOT (synchronize IS :synchronize)") int setAccountSynchronize(long id, boolean synchronize); diff --git a/app/src/main/java/eu/faircode/email/DaoIdentity.java b/app/src/main/java/eu/faircode/email/DaoIdentity.java index 9e15bb9518..922c85edbe 100644 --- a/app/src/main/java/eu/faircode/email/DaoIdentity.java +++ b/app/src/main/java/eu/faircode/email/DaoIdentity.java @@ -105,6 +105,9 @@ public interface DaoIdentity { @Update void updateIdentity(EntityIdentity identity); + @Query("UPDATE identity SET uuid = :uuid WHERE id = :id AND NOT (uuid IS :uuid)") + int setIdentityUuid(long id, String uuid); + @Query("UPDATE identity SET synchronize = :synchronize WHERE id = :id AND NOT (synchronize IS :synchronize)") int setIdentitySynchronize(long id, boolean synchronize);