Sort on sender email address

pull/147/head
M66B 6 years ago
parent a161abaad0
commit 727682d675

File diff suppressed because it is too large Load Diff

@ -47,7 +47,7 @@ import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory;
// https://developer.android.com/topic/libraries/architecture/room.html // https://developer.android.com/topic/libraries/architecture/room.html
@Database( @Database(
version = 27, version = 28,
entities = { entities = {
EntityIdentity.class, EntityIdentity.class,
EntityAccount.class, EntityAccount.class,
@ -336,27 +336,34 @@ public abstract class DB extends RoomDatabase {
public void migrate(SupportSQLiteDatabase db) { public void migrate(SupportSQLiteDatabase db) {
Log.i("DB migration from version " + startVersion + " to " + endVersion); Log.i("DB migration from version " + startVersion + " to " + endVersion);
db.execSQL("ALTER TABLE `message` ADD COLUMN `sender` TEXT"); db.execSQL("ALTER TABLE `message` ADD COLUMN `sender` TEXT");
db.execSQL("CREATE INDEX `index_message_sender` ON `message` (`sender`)");
}
})
.addMigrations(new Migration(27, 28) {
@Override
public void migrate(SupportSQLiteDatabase db) {
Log.i("DB migration from version " + startVersion + " to " + endVersion);
Cursor cursor = null; Cursor cursor = null;
try { try {
cursor = db.query("SELECT `id`, `from` FROM message"); cursor = db.query("SELECT `id`, `from` FROM message");
while (cursor.moveToNext()) { while (cursor.moveToNext())
long id = cursor.getLong(0); try {
String json = cursor.getString(1); long id = cursor.getLong(0);
Address[] from = Converters.decodeAddresses(json); String json = cursor.getString(1);
String sender = MessageHelper.getSortKey(from); Address[] from = Converters.decodeAddresses(json);
if (sender != null) String sender = MessageHelper.getSortKey(from);
db.execSQL( db.execSQL(
"UPDATE message SET sender = ? WHERE id = ?", "UPDATE message SET sender = ? WHERE id = ?",
new Object[]{sender, id}); new Object[]{sender, id});
} } catch (Throwable ex) {
Log.e(ex);
}
} finally { } finally {
if (cursor != null) if (cursor != null)
cursor.close(); cursor.close();
} }
db.execSQL("CREATE INDEX `index_message_sender` ON `message` (`sender`)");
} }
}) })
.build(); .build();

@ -467,11 +467,9 @@ public class MessageHelper {
if (addresses == null || addresses.length == 0) if (addresses == null || addresses.length == 0)
return null; return null;
InternetAddress address = (InternetAddress) addresses[0]; InternetAddress address = (InternetAddress) addresses[0];
String personal = address.getPersonal(); // Sort on name will result in inconsistent results
if (TextUtils.isEmpty(personal)) // because the sender name and sender contact name can differ
return address.getAddress(); return address.getAddress();
else
return personal;
} }
String getHtml() throws MessagingException, IOException { String getHtml() throws MessagingException, IOException {

Loading…
Cancel
Save