diff --git a/app/src/main/java/eu/faircode/email/ActivityView.java b/app/src/main/java/eu/faircode/email/ActivityView.java index 95bdf607e1..790372c460 100644 --- a/app/src/main/java/eu/faircode/email/ActivityView.java +++ b/app/src/main/java/eu/faircode/email/ActivityView.java @@ -553,7 +553,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB draft.ui_hide = false; draft.ui_found = false; draft.ui_ignored = false; - draft.getAvatar(context, true); + draft.getAvatar(context); draft.id = db.message().insertMessage(draft); draft.write(context, body); } @@ -831,7 +831,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB draft.ui_hide = false; draft.ui_found = false; draft.ui_ignored = false; - draft.getAvatar(context, true); + draft.getAvatar(context); draft.id = db.message().insertMessage(draft); draft.write(context, body); diff --git a/app/src/main/java/eu/faircode/email/AdapterMessage.java b/app/src/main/java/eu/faircode/email/AdapterMessage.java index 6c9393b25e..30a4c4b309 100644 --- a/app/src/main/java/eu/faircode/email/AdapterMessage.java +++ b/app/src/main/java/eu/faircode/email/AdapterMessage.java @@ -157,7 +157,8 @@ public class AdapterMessage extends PagedListAdapter 0) { - ivAvatar.setImageBitmap(Identicon.generate(addresses[0].toString(), dp24, 5, "light".equals(theme))); + if (message.from != null && message.from.length > 0) { + ivAvatar.setImageBitmap(Identicon.generate(message.from[0].toString(), dp24, 5, "light".equals(theme))); photo = true; } else ivAvatar.setImageDrawable(null); @@ -338,13 +339,8 @@ public class AdapterMessage extends PagedListAdapter 0 ? View.VISIBLE : View.GONE); - if (EntityFolder.isOutgoing(message.folderType)) { - tvFrom.setText(MessageHelper.getFormattedAddresses(message.to, !compact)); - tvTime.setText(DateUtils.getRelativeTimeSpanString(context, message.sent == null ? message.received : message.sent)); - } else { - tvFrom.setText(MessageHelper.getFormattedAddresses(message.from, !compact)); - tvTime.setText(DateUtils.getRelativeTimeSpanString(context, message.received)); - } + tvFrom.setText(MessageHelper.getFormattedAddresses(message.from, !compact)); + tvTime.setText(DateUtils.getRelativeTimeSpanString(context, message.received)); tvSize.setText(message.size == null ? null : Helper.humanReadableByteCount(message.size, true)); tvSize.setAlpha(message.content ? 1.0f : 0.5f); @@ -428,10 +424,8 @@ public class AdapterMessage extends PagedListAdapter pagedUnifiedInbox(String sort, boolean debug); @@ -97,7 +97,7 @@ public interface DaoMessage { " WHEN 'unread' = :sort THEN NOT message.ui_seen" + " WHEN 'starred' = :sort THEN message.ui_flagged" + " ELSE 0" + - " END DESC, message.received DESC, message.sent DESC") + " END DESC, message.received DESC") @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH) DataSource.Factory pagedFolder(long folder, String sort, boolean found, boolean debug); @@ -131,7 +131,7 @@ public interface DaoMessage { " WHEN 'unread' = :sort THEN NOT message.ui_seen" + " WHEN 'starred' = :sort THEN message.ui_flagged" + " ELSE 0" + - " END DESC, message.received DESC, message.sent DESC") + " END DESC, message.received DESC") DataSource.Factory pagedThread(long account, String thread, boolean found, String sort, boolean debug); @Query("SELECT COUNT(id)" + @@ -155,7 +155,7 @@ public interface DaoMessage { " FROM message" + " WHERE folder = :folder" + " AND ui_found = :found" + - " ORDER BY message.received DESC, message.sent DESC") + " ORDER BY message.received DESC") List getMessageByFolder(long folder, boolean found); @Query("SELECT *" + @@ -213,7 +213,7 @@ public interface DaoMessage { " JOIN folder ON folder.id = message.folder" + " WHERE account.`synchronize`" + " AND folder.unified" + - " AND (account.created IS NULL OR IFNULL(message.sent, message.received) > account.created)" + + " AND (account.created IS NULL OR message.received > account.created)" + " AND NOT message.ui_seen" + " AND NOT message.ui_hide" + " AND NOT message.ui_found" + diff --git a/app/src/main/java/eu/faircode/email/EntityMessage.java b/app/src/main/java/eu/faircode/email/EntityMessage.java index e3c6d35934..e7f083feec 100644 --- a/app/src/main/java/eu/faircode/email/EntityMessage.java +++ b/app/src/main/java/eu/faircode/email/EntityMessage.java @@ -191,15 +191,13 @@ public class EntityMessage implements Serializable { } } - void getAvatar(Context context, boolean outgoing) { + void getAvatar(Context context) { if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS) == PackageManager.PERMISSION_GRANTED) { try { - Address[] addresses = (outgoing ? this.to : this.from); - - if (addresses != null) - for (int i = 0; i < addresses.length; i++) { - String email = ((InternetAddress) addresses[i]).getAddress(); + if (this.from != null) + for (int i = 0; i < this.from.length; i++) { + String email = ((InternetAddress) this.from[i]).getAddress(); Cursor cursor = null; try { ContentResolver resolver = context.getContentResolver(); @@ -223,7 +221,7 @@ public class EntityMessage implements Serializable { this.avatar = ContactsContract.Contacts.getLookupUri(contactId, lookupKey).toString(); if (!TextUtils.isEmpty(displayName)) - ((InternetAddress) addresses[i]).setPersonal(displayName); + ((InternetAddress) this.from[i]).setPersonal(displayName); } } finally { if (cursor != null) @@ -239,7 +237,7 @@ public class EntityMessage implements Serializable { static String getQuote(Context context, long id) throws IOException { EntityMessage message = DB.getInstance(context).message().getMessage(id); return String.format("

%s %s:

%s
", - Html.escapeHtml(new Date(message.sent == null ? message.received : message.sent).toString()), + Html.escapeHtml(new Date(message.received).toString()), Html.escapeHtml(MessageHelper.getFormattedAddresses(message.from, true)), HtmlHelper.sanitize(EntityMessage.read(context, id))); } diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java index 233b881e62..2da132d6b6 100644 --- a/app/src/main/java/eu/faircode/email/FragmentCompose.java +++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java @@ -1211,7 +1211,7 @@ public class FragmentCompose extends FragmentEx { result.draft.ui_hide = false; result.draft.ui_found = false; result.draft.ui_ignored = false; - result.draft.getAvatar(context, true); + result.draft.getAvatar(context); result.draft.id = db.message().insertMessage(result.draft); result.draft.write(context, body == null ? "" : body); diff --git a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java index b889503bfc..ec3b9738a8 100644 --- a/app/src/main/java/eu/faircode/email/ServiceSynchronize.java +++ b/app/src/main/java/eu/faircode/email/ServiceSynchronize.java @@ -471,7 +471,7 @@ public class ServiceSynchronize extends LifecycleService { sb.append("").append(MessageHelper.getFormattedAddresses(message.from, false)).append(""); if (!TextUtils.isEmpty(message.subject)) sb.append(": ").append(message.subject); - sb.append(" ").append(df.format(new Date(message.sent == null ? message.received : message.sent))); + sb.append(" ").append(df.format(new Date(message.received))); sb.append("
"); } @@ -536,7 +536,7 @@ public class ServiceSynchronize extends LifecycleService { .setContentTitle(MessageHelper.getFormattedAddresses(message.from, true)) .setContentIntent(piContent) .setSound(uri) - .setWhen(message.sent == null ? message.received : message.sent) + .setWhen(message.received) .setDeleteIntent(piDelete) .setPriority(Notification.PRIORITY_DEFAULT) .setCategory(Notification.CATEGORY_MESSAGE) @@ -2015,7 +2015,7 @@ public class ServiceSynchronize extends LifecycleService { message.ui_hide = false; message.ui_found = found; message.ui_ignored = false; - message.getAvatar(context, folder.isOutgoing()); + message.getAvatar(context); message.id = db.message().insertMessage(message); diff --git a/app/src/main/res/layout/item_message_compact.xml b/app/src/main/res/layout/item_message_compact.xml index 49b1ce4f6f..482f10562a 100644 --- a/app/src/main/res/layout/item_message_compact.xml +++ b/app/src/main/res/layout/item_message_compact.xml @@ -372,7 +372,7 @@ app:layout_constraintTop_toBottomOf="@id/tvCc" /> + + + app:layout_constraintTop_toBottomOf="@id/tvTimeReceived" /> + app:constraint_referenced_ids="tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,tvTimeSent,tvTimeReceived,tvSubjectEx" /> + + + app:layout_constraintTop_toBottomOf="@id/tvTimeReceived" /> + app:constraint_referenced_ids="tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,tvTimeSent,tvTimeReceived,tvSubjectEx" />