diff --git a/app/src/main/java/eu/faircode/email/DaoIdentity.java b/app/src/main/java/eu/faircode/email/DaoIdentity.java index 23575d71ca..ee23549176 100644 --- a/app/src/main/java/eu/faircode/email/DaoIdentity.java +++ b/app/src/main/java/eu/faircode/email/DaoIdentity.java @@ -49,24 +49,23 @@ public interface DaoIdentity { " ORDER BY name COLLATE NOCASE") List getIdentities(long account); + @Query("SELECT * FROM identity" + + " WHERE account = :account" + + " AND email = :email COLLATE NOCASE") + List getIdentities(long account, String email); + @Query("SELECT identity.* FROM identity" + " JOIN account ON account.id = identity.account" + " WHERE identity.account = :account" + " AND identity.synchronize AND account.synchronize") List getSynchronizingIdentities(long account); - @Query("SELECT * FROM identity WHERE id = :id") - EntityIdentity getIdentity(long id); - - @Query("SELECT * FROM identity" + - " WHERE account = :account AND email = :email COLLATE NOCASE" + - " ORDER BY CASE WHEN synchronize THEN 0 ELSE 1 END" + - " LIMIT 1") - EntityIdentity getIdentity(long account, String email); - @Query("SELECT COUNT(*) FROM identity WHERE synchronize") int getSynchronizingIdentityCount(); + @Query("SELECT * FROM identity WHERE id = :id") + EntityIdentity getIdentity(long id); + @Insert long insertIdentity(EntityIdentity identity); diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index bc6eeb475c..fe9389835d 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -3915,7 +3915,15 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences. if (message == null || message.identity == null) return null; - return db.identity().getIdentity(message.identity); + EntityIdentity identity = db.identity().getIdentity(message.identity); + if (identity == null) + return null; + + List duplicates = db.identity().getIdentities(identity.account, identity.email); + if (duplicates == null || duplicates.size() > 1) + return null; + + return identity; } @Override