mirror of
https://github.com/M66B/FairEmail.git
synced 2026-04-11 11:33:09 +02:00
Display conversations in unified inbox widget
This commit is contained in:
@@ -274,6 +274,8 @@ public interface DaoMessage {
|
||||
LiveData<List<TupleMessageEx>> liveUnseenNotify();
|
||||
|
||||
String widget = "SELECT message.*, account.name AS accountName" +
|
||||
", SUM(1 - message.ui_seen) AS unseen" +
|
||||
", MAX(message.received) AS dummy" +
|
||||
" FROM message" +
|
||||
" JOIN account ON account.id = message.account" +
|
||||
" JOIN folder ON folder.id = message.folder" +
|
||||
@@ -281,12 +283,15 @@ public interface DaoMessage {
|
||||
" AND folder.unified" +
|
||||
" AND message.ui_hide = 0" +
|
||||
" AND message.ui_snoozed IS NULL" +
|
||||
" GROUP BY account.id, CASE WHEN message.thread IS NULL THEN message.id ELSE message.thread END" +
|
||||
" ORDER BY message.received DESC";
|
||||
|
||||
@Query(widget)
|
||||
@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)
|
||||
LiveData<List<TupleMessageWidget>> liveWidgetUnified();
|
||||
|
||||
@Query(widget)
|
||||
@SuppressWarnings(RoomWarnings.CURSOR_MISMATCH)
|
||||
List<TupleMessageWidget> getWidgetUnified();
|
||||
|
||||
@Query("SELECT COUNT(message.id) FROM message" +
|
||||
|
||||
@@ -202,7 +202,7 @@ public class ServiceSynchronize extends ServiceBase {
|
||||
!MessageHelper.equal(m1.from, m2.from) ||
|
||||
!m1.received.equals(m2.received) ||
|
||||
!Objects.equals(m1.subject, m2.subject) ||
|
||||
!(m1.ui_seen == m2.ui_seen) ||
|
||||
!(m1.unseen == m2.unseen) ||
|
||||
!Objects.equals(m1.accountName, m2.accountName)) {
|
||||
changed = true;
|
||||
break;
|
||||
|
||||
@@ -23,12 +23,15 @@ import java.util.Objects;
|
||||
|
||||
public class TupleMessageWidget extends EntityMessage {
|
||||
public String accountName;
|
||||
public int unseen;
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof TupleMessageEx) {
|
||||
TupleMessageEx other = (TupleMessageEx) obj;
|
||||
return (super.equals(obj) && Objects.equals(this.accountName, other.accountName));
|
||||
return (super.equals(obj) &&
|
||||
Objects.equals(this.accountName, other.accountName) &&
|
||||
this.unseen == other.unseen);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -81,7 +81,11 @@ public class WidgetUnifiedRemoteViewsFactory implements RemoteViewsService.Remot
|
||||
thread.putExtra("id", message.id);
|
||||
views.setOnClickFillInIntent(R.id.llMessage, thread);
|
||||
|
||||
SpannableString from = new SpannableString(MessageHelper.formatAddressesShort(message.from));
|
||||
String froms = MessageHelper.formatAddressesShort(message.from);
|
||||
if (message.unseen > 1)
|
||||
froms = context.getString(R.string.title_name_count, froms, Integer.toString(message.unseen));
|
||||
|
||||
SpannableString from = new SpannableString(froms);
|
||||
SpannableString time = new SpannableString(Helper.getRelativeTimeSpanString(context, message.received));
|
||||
SpannableString subject = new SpannableString(TextUtils.isEmpty(message.subject) ? "" : message.subject);
|
||||
SpannableString account = new SpannableString(TextUtils.isEmpty(message.accountName) ? "" : message.accountName);
|
||||
|
||||
Reference in New Issue
Block a user