Removed exceptions for outgoing messages

pull/146/head
M66B 7 years ago
parent 9b0a7800ac
commit 963c245aab

@ -553,7 +553,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
draft.ui_hide = false; draft.ui_hide = false;
draft.ui_found = false; draft.ui_found = false;
draft.ui_ignored = false; draft.ui_ignored = false;
draft.getAvatar(context, true); draft.getAvatar(context);
draft.id = db.message().insertMessage(draft); draft.id = db.message().insertMessage(draft);
draft.write(context, body); draft.write(context, body);
} }
@ -831,7 +831,7 @@ public class ActivityView extends ActivityBilling implements FragmentManager.OnB
draft.ui_hide = false; draft.ui_hide = false;
draft.ui_found = false; draft.ui_found = false;
draft.ui_ignored = false; draft.ui_ignored = false;
draft.getAvatar(context, true); draft.getAvatar(context);
draft.id = db.message().insertMessage(draft); draft.id = db.message().insertMessage(draft);
draft.write(context, body); draft.write(context, body);

@ -157,7 +157,8 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
private TextView tvReplyTo; private TextView tvReplyTo;
private TextView tvCc; private TextView tvCc;
private TextView tvBcc; private TextView tvBcc;
private TextView tvTimeEx; private TextView tvTimeSent;
private TextView tvTimeReceived;
private TextView tvSubjectEx; private TextView tvSubjectEx;
private TextView tvHeaders; private TextView tvHeaders;
@ -193,7 +194,8 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
ivAddContact = itemView.findViewById(R.id.ivAddContact); ivAddContact = itemView.findViewById(R.id.ivAddContact);
tvSize = itemView.findViewById(R.id.tvSize); tvSize = itemView.findViewById(R.id.tvSize);
tvTime = itemView.findViewById(R.id.tvTime); tvTime = itemView.findViewById(R.id.tvTime);
tvTimeEx = itemView.findViewById(R.id.tvTimeEx); tvTimeSent = itemView.findViewById(R.id.tvTimeSent);
tvTimeReceived = itemView.findViewById(R.id.tvTimeReceived);
ivAttachments = itemView.findViewById(R.id.ivAttachments); ivAttachments = itemView.findViewById(R.id.ivAttachments);
tvSubject = itemView.findViewById(R.id.tvSubject); tvSubject = itemView.findViewById(R.id.tvSubject);
tvPreview = itemView.findViewById(R.id.tvPreview); tvPreview = itemView.findViewById(R.id.tvPreview);
@ -316,9 +318,8 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
} }
} }
if (!photo && identicons) { if (!photo && identicons) {
Address[] addresses = (EntityFolder.isOutgoing(message.folderType) ? message.to : message.from); if (message.from != null && message.from.length > 0) {
if (addresses != null && addresses.length > 0) { ivAvatar.setImageBitmap(Identicon.generate(message.from[0].toString(), dp24, 5, "light".equals(theme)));
ivAvatar.setImageBitmap(Identicon.generate(addresses[0].toString(), dp24, 5, "light".equals(theme)));
photo = true; photo = true;
} else } else
ivAvatar.setImageDrawable(null); ivAvatar.setImageDrawable(null);
@ -338,13 +339,8 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
else else
ivFlagged.setVisibility(message.count - message.unflagged > 0 ? View.VISIBLE : View.GONE); ivFlagged.setVisibility(message.count - message.unflagged > 0 ? View.VISIBLE : View.GONE);
if (EntityFolder.isOutgoing(message.folderType)) { tvFrom.setText(MessageHelper.getFormattedAddresses(message.from, !compact));
tvFrom.setText(MessageHelper.getFormattedAddresses(message.to, !compact)); tvTime.setText(DateUtils.getRelativeTimeSpanString(context, message.received));
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));
}
tvSize.setText(message.size == null ? null : Helper.humanReadableByteCount(message.size, true)); tvSize.setText(message.size == null ? null : Helper.humanReadableByteCount(message.size, true));
tvSize.setAlpha(message.content ? 1.0f : 0.5f); tvSize.setAlpha(message.content ? 1.0f : 0.5f);
@ -428,10 +424,8 @@ public class AdapterMessage extends PagedListAdapter<TupleMessageEx, AdapterMess
if (show_expanded) { if (show_expanded) {
ivExpanderAddress.setImageResource(show_addresses ? R.drawable.baseline_expand_less_24 : R.drawable.baseline_expand_more_24); ivExpanderAddress.setImageResource(show_addresses ? R.drawable.baseline_expand_less_24 : R.drawable.baseline_expand_more_24);
if (EntityFolder.isOutgoing(message.folderType)) tvTimeSent.setText(message.sent == null ? null : df.format(new Date(message.sent)));
tvTimeEx.setText(df.format(new Date(message.sent == null ? message.received : message.sent))); tvTimeReceived.setText(df.format(new Date(message.received)));
else
tvTimeEx.setText(df.format(new Date(message.received)));
tvFromEx.setText(MessageHelper.getFormattedAddresses(message.from, true)); tvFromEx.setText(MessageHelper.getFormattedAddresses(message.from, true));
tvTo.setText(MessageHelper.getFormattedAddresses(message.to, true)); tvTo.setText(MessageHelper.getFormattedAddresses(message.to, true));

@ -64,7 +64,7 @@ public interface DaoMessage {
" WHEN 'unread' = :sort THEN NOT message.ui_seen" + " WHEN 'unread' = :sort THEN NOT message.ui_seen" +
" WHEN 'starred' = :sort THEN message.ui_flagged" + " WHEN 'starred' = :sort THEN message.ui_flagged" +
" ELSE 0" + " ELSE 0" +
" END DESC, message.received DESC, message.sent DESC") " END DESC, message.received DESC")
@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH) @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)
DataSource.Factory<Integer, TupleMessageEx> pagedUnifiedInbox(String sort, boolean debug); DataSource.Factory<Integer, TupleMessageEx> pagedUnifiedInbox(String sort, boolean debug);
@ -97,7 +97,7 @@ public interface DaoMessage {
" WHEN 'unread' = :sort THEN NOT message.ui_seen" + " WHEN 'unread' = :sort THEN NOT message.ui_seen" +
" WHEN 'starred' = :sort THEN message.ui_flagged" + " WHEN 'starred' = :sort THEN message.ui_flagged" +
" ELSE 0" + " ELSE 0" +
" END DESC, message.received DESC, message.sent DESC") " END DESC, message.received DESC")
@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH) @SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)
DataSource.Factory<Integer, TupleMessageEx> pagedFolder(long folder, String sort, boolean found, boolean debug); DataSource.Factory<Integer, TupleMessageEx> 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 'unread' = :sort THEN NOT message.ui_seen" +
" WHEN 'starred' = :sort THEN message.ui_flagged" + " WHEN 'starred' = :sort THEN message.ui_flagged" +
" ELSE 0" + " ELSE 0" +
" END DESC, message.received DESC, message.sent DESC") " END DESC, message.received DESC")
DataSource.Factory<Integer, TupleMessageEx> pagedThread(long account, String thread, boolean found, String sort, boolean debug); DataSource.Factory<Integer, TupleMessageEx> pagedThread(long account, String thread, boolean found, String sort, boolean debug);
@Query("SELECT COUNT(id)" + @Query("SELECT COUNT(id)" +
@ -155,7 +155,7 @@ public interface DaoMessage {
" FROM message" + " FROM message" +
" WHERE folder = :folder" + " WHERE folder = :folder" +
" AND ui_found = :found" + " AND ui_found = :found" +
" ORDER BY message.received DESC, message.sent DESC") " ORDER BY message.received DESC")
List<Long> getMessageByFolder(long folder, boolean found); List<Long> getMessageByFolder(long folder, boolean found);
@Query("SELECT *" + @Query("SELECT *" +
@ -213,7 +213,7 @@ public interface DaoMessage {
" JOIN folder ON folder.id = message.folder" + " JOIN folder ON folder.id = message.folder" +
" WHERE account.`synchronize`" + " WHERE account.`synchronize`" +
" AND folder.unified" + " 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_seen" +
" AND NOT message.ui_hide" + " AND NOT message.ui_hide" +
" AND NOT message.ui_found" + " AND NOT message.ui_found" +

@ -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) if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_CONTACTS)
== PackageManager.PERMISSION_GRANTED) { == PackageManager.PERMISSION_GRANTED) {
try { try {
Address[] addresses = (outgoing ? this.to : this.from); if (this.from != null)
for (int i = 0; i < this.from.length; i++) {
if (addresses != null) String email = ((InternetAddress) this.from[i]).getAddress();
for (int i = 0; i < addresses.length; i++) {
String email = ((InternetAddress) addresses[i]).getAddress();
Cursor cursor = null; Cursor cursor = null;
try { try {
ContentResolver resolver = context.getContentResolver(); ContentResolver resolver = context.getContentResolver();
@ -223,7 +221,7 @@ public class EntityMessage implements Serializable {
this.avatar = ContactsContract.Contacts.getLookupUri(contactId, lookupKey).toString(); this.avatar = ContactsContract.Contacts.getLookupUri(contactId, lookupKey).toString();
if (!TextUtils.isEmpty(displayName)) if (!TextUtils.isEmpty(displayName))
((InternetAddress) addresses[i]).setPersonal(displayName); ((InternetAddress) this.from[i]).setPersonal(displayName);
} }
} finally { } finally {
if (cursor != null) if (cursor != null)
@ -239,7 +237,7 @@ public class EntityMessage implements Serializable {
static String getQuote(Context context, long id) throws IOException { static String getQuote(Context context, long id) throws IOException {
EntityMessage message = DB.getInstance(context).message().getMessage(id); EntityMessage message = DB.getInstance(context).message().getMessage(id);
return String.format("<p>%s %s:</p><blockquote>%s</blockquote>", return String.format("<p>%s %s:</p><blockquote>%s</blockquote>",
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)), Html.escapeHtml(MessageHelper.getFormattedAddresses(message.from, true)),
HtmlHelper.sanitize(EntityMessage.read(context, id))); HtmlHelper.sanitize(EntityMessage.read(context, id)));
} }

@ -1211,7 +1211,7 @@ public class FragmentCompose extends FragmentEx {
result.draft.ui_hide = false; result.draft.ui_hide = false;
result.draft.ui_found = false; result.draft.ui_found = false;
result.draft.ui_ignored = 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.id = db.message().insertMessage(result.draft);
result.draft.write(context, body == null ? "" : body); result.draft.write(context, body == null ? "" : body);

@ -471,7 +471,7 @@ public class ServiceSynchronize extends LifecycleService {
sb.append("<strong>").append(MessageHelper.getFormattedAddresses(message.from, false)).append("</strong>"); sb.append("<strong>").append(MessageHelper.getFormattedAddresses(message.from, false)).append("</strong>");
if (!TextUtils.isEmpty(message.subject)) if (!TextUtils.isEmpty(message.subject))
sb.append(": ").append(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("<br>"); sb.append("<br>");
} }
@ -536,7 +536,7 @@ public class ServiceSynchronize extends LifecycleService {
.setContentTitle(MessageHelper.getFormattedAddresses(message.from, true)) .setContentTitle(MessageHelper.getFormattedAddresses(message.from, true))
.setContentIntent(piContent) .setContentIntent(piContent)
.setSound(uri) .setSound(uri)
.setWhen(message.sent == null ? message.received : message.sent) .setWhen(message.received)
.setDeleteIntent(piDelete) .setDeleteIntent(piDelete)
.setPriority(Notification.PRIORITY_DEFAULT) .setPriority(Notification.PRIORITY_DEFAULT)
.setCategory(Notification.CATEGORY_MESSAGE) .setCategory(Notification.CATEGORY_MESSAGE)
@ -2015,7 +2015,7 @@ public class ServiceSynchronize extends LifecycleService {
message.ui_hide = false; message.ui_hide = false;
message.ui_found = found; message.ui_found = found;
message.ui_ignored = false; message.ui_ignored = false;
message.getAvatar(context, folder.isOutgoing()); message.getAvatar(context);
message.id = db.message().insertMessage(message); message.id = db.message().insertMessage(message);

@ -372,7 +372,7 @@
app:layout_constraintTop_toBottomOf="@id/tvCc" /> app:layout_constraintTop_toBottomOf="@id/tvCc" />
<TextView <TextView
android:id="@+id/tvTimeEx" android:id="@+id/tvTimeSent"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="6dp" android:layout_marginStart="6dp"
@ -382,6 +382,17 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvBcc" /> app:layout_constraintTop_toBottomOf="@id/tvBcc" />
<TextView
android:id="@+id/tvTimeReceived"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:text="12:34:56"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textIsSelectable="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvTimeSent" />
<TextView <TextView
android:id="@+id/tvSubjectEx" android:id="@+id/tvSubjectEx"
android:layout_width="0dp" android:layout_width="0dp"
@ -393,7 +404,7 @@
android:textIsSelectable="true" android:textIsSelectable="true"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvTimeEx" /> app:layout_constraintTop_toBottomOf="@id/tvTimeReceived" />
<View <View
android:id="@+id/vSeparatorHeaders" android:id="@+id/vSeparatorHeaders"
@ -552,7 +563,7 @@
android:id="@+id/grpAddress" android:id="@+id/grpAddress"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
app:constraint_referenced_ids="tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,tvTimeEx,tvSubjectEx" /> app:constraint_referenced_ids="tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,tvTimeSent,tvTimeReceived,tvSubjectEx" />
<androidx.constraintlayout.widget.Group <androidx.constraintlayout.widget.Group
android:id="@+id/grpHeaders" android:id="@+id/grpHeaders"

@ -369,7 +369,7 @@
app:layout_constraintTop_toBottomOf="@id/tvCc" /> app:layout_constraintTop_toBottomOf="@id/tvCc" />
<TextView <TextView
android:id="@+id/tvTimeEx" android:id="@+id/tvTimeSent"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="6dp" android:layout_marginStart="6dp"
@ -379,6 +379,17 @@
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvBcc" /> app:layout_constraintTop_toBottomOf="@id/tvBcc" />
<TextView
android:id="@+id/tvTimeReceived"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:text="12:34:56"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
android:textIsSelectable="true"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvTimeSent" />
<TextView <TextView
android:id="@+id/tvSubjectEx" android:id="@+id/tvSubjectEx"
android:layout_width="0dp" android:layout_width="0dp"
@ -390,7 +401,7 @@
android:textIsSelectable="true" android:textIsSelectable="true"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvTimeEx" /> app:layout_constraintTop_toBottomOf="@id/tvTimeReceived" />
<View <View
android:id="@+id/vSeparatorHeaders" android:id="@+id/vSeparatorHeaders"
@ -549,7 +560,7 @@
android:id="@+id/grpAddress" android:id="@+id/grpAddress"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
app:constraint_referenced_ids="tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,tvTimeEx,tvSubjectEx" /> app:constraint_referenced_ids="tvFromExTitle,tvFromEx,tvToTitle,tvTo,tvReplyToTitle,tvReplyTo,tvCcTitle,tvCc,tvBccTitle,tvBcc,tvTimeSent,tvTimeReceived,tvSubjectEx" />
<androidx.constraintlayout.widget.Group <androidx.constraintlayout.widget.Group
android:id="@+id/grpHeaders" android:id="@+id/grpHeaders"

Loading…
Cancel
Save