mirror of https://github.com/M66B/FairEmail.git
Store recent flag
This commit is contained in:
parent
ef25812bfe
commit
e40f618210
File diff suppressed because it is too large
Load Diff
|
@ -225,6 +225,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
private int colorAccent;
|
||||
private int textColorPrimary;
|
||||
private int textColorSecondary;
|
||||
private int textColorTertiary;
|
||||
private int textColorLink;
|
||||
private int colorUnreadHighlight;
|
||||
private int colorUnread;
|
||||
|
@ -1341,6 +1342,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
tvTime.setText(date && FragmentMessages.SORT_DATE_HEADER.contains(sort)
|
||||
? TF.format(message.received)
|
||||
: Helper.getRelativeTimeSpanString(context, message.received));
|
||||
tvTime.setTextColor(BuildConfig.DEBUG && message.recent ? colorAccent : textColorTertiary);
|
||||
|
||||
// Line 2
|
||||
tvSubject.setText(message.subject);
|
||||
|
@ -6857,6 +6859,7 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
this.colorAccent = Helper.resolveColor(context, R.attr.colorAccent);
|
||||
this.textColorPrimary = Helper.resolveColor(context, android.R.attr.textColorPrimary);
|
||||
this.textColorSecondary = Helper.resolveColor(context, android.R.attr.textColorSecondary);
|
||||
this.textColorTertiary = Helper.resolveColor(context, android.R.attr.textColorTertiary);
|
||||
this.textColorLink = Helper.resolveColor(context, android.R.attr.textColorLink);
|
||||
|
||||
boolean highlight_unread = prefs.getBoolean("highlight_unread", true);
|
||||
|
@ -7168,6 +7171,11 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
|||
same = false;
|
||||
log("stored changed", next.id);
|
||||
}
|
||||
if (!prev.recent.equals(next.recent)) {
|
||||
// updated after decryption
|
||||
same = false;
|
||||
log("recent changed", next.id);
|
||||
}
|
||||
// seen
|
||||
// answered
|
||||
// flagged
|
||||
|
|
|
@ -3559,10 +3559,16 @@ class Core {
|
|||
EntityMessage message = db.message().getMessageByUid(folder.id, uid.uid);
|
||||
if (message != null) {
|
||||
boolean update = false;
|
||||
boolean recent = flags.contains(Flags.Flag.RECENT);
|
||||
boolean seen = flags.contains(Flags.Flag.SEEN);
|
||||
boolean answered = flags.contains(Flags.Flag.ANSWERED);
|
||||
boolean flagged = flags.contains(Flags.Flag.FLAGGED);
|
||||
boolean deleted = flags.contains(Flags.Flag.DELETED);
|
||||
if (message.recent != recent) {
|
||||
update = true;
|
||||
message.recent = recent;
|
||||
Log.i("UID fetch recent=" + recent);
|
||||
}
|
||||
if (message.seen != seen) {
|
||||
update = true;
|
||||
message.seen = seen;
|
||||
|
@ -3887,6 +3893,7 @@ class Core {
|
|||
}
|
||||
|
||||
MessageHelper helper = new MessageHelper(imessage, context);
|
||||
boolean recent = helper.getRecent();
|
||||
boolean seen = helper.getSeen();
|
||||
boolean answered = helper.getAnswered();
|
||||
boolean flagged = helper.getFlagged();
|
||||
|
@ -3949,7 +3956,7 @@ class Core {
|
|||
}
|
||||
}
|
||||
|
||||
if (dup.seen != seen || dup.answered != answered || dup.flagged != flagged)
|
||||
if (dup.recent != recent || dup.seen != seen || dup.answered != answered || dup.flagged != flagged)
|
||||
syncSimilar = true;
|
||||
|
||||
if (dup.flagged && dup.color != null)
|
||||
|
@ -4051,6 +4058,7 @@ class Core {
|
|||
message.notes = notes;
|
||||
message.notes_color = notes_color;
|
||||
message.sent = sent;
|
||||
message.recent = recent;
|
||||
message.seen = seen;
|
||||
message.answered = answered;
|
||||
message.flagged = flagged;
|
||||
|
@ -4343,6 +4351,13 @@ class Core {
|
|||
}
|
||||
}
|
||||
|
||||
if (!message.recent.equals(recent)) {
|
||||
update = true;
|
||||
message.recent = recent;
|
||||
Log.i(folder.name + " updated id=" + message.id + " uid=" + message.uid + " recent=" + recent);
|
||||
syncSimilar = true;
|
||||
}
|
||||
|
||||
if ((!message.seen.equals(seen) ||
|
||||
(!folder.read_only && !message.ui_seen.equals(seen))) &&
|
||||
db.operation().getOperationCount(folder.id, message.id, EntityOperation.SEEN) == 0) {
|
||||
|
@ -4491,6 +4506,11 @@ class Core {
|
|||
|
||||
if (syncSimilar && account.isGmail())
|
||||
for (EntityMessage similar : db.message().getMessagesBySimilarity(message.account, message.id, message.msgid)) {
|
||||
if (similar.recent != message.recent) {
|
||||
Log.i(folder.name + " Synchronize similar id=" + similar.id + " recent=" + message.recent);
|
||||
db.message().setMessageRecent(similar.id, message.recent);
|
||||
}
|
||||
|
||||
if (similar.seen != message.seen) {
|
||||
Log.i(folder.name + " Synchronize similar id=" + similar.id + " seen=" + message.seen);
|
||||
db.message().setMessageSeen(similar.id, message.seen);
|
||||
|
|
|
@ -71,7 +71,7 @@ import io.requery.android.database.sqlite.SQLiteDatabase;
|
|||
// https://developer.android.com/topic/libraries/architecture/room.html
|
||||
|
||||
@Database(
|
||||
version = 234,
|
||||
version = 235,
|
||||
entities = {
|
||||
EntityIdentity.class,
|
||||
EntityAccount.class,
|
||||
|
@ -2344,6 +2344,12 @@ public abstract class DB extends RoomDatabase {
|
|||
public void migrate(@NonNull SupportSQLiteDatabase db) {
|
||||
logMigration(startVersion, endVersion);
|
||||
}
|
||||
}).addMigrations(new Migration(234, 235) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase db) {
|
||||
logMigration(startVersion, endVersion);
|
||||
db.execSQL("ALTER TABLE `message` ADD COLUMN `recent` INTEGER NOT NULL DEFAULT 0");
|
||||
}
|
||||
}).addMigrations(new Migration(998, 999) {
|
||||
@Override
|
||||
public void migrate(@NonNull SupportSQLiteDatabase db) {
|
||||
|
|
|
@ -720,6 +720,9 @@ public interface DaoMessage {
|
|||
@Query("UPDATE message SET subject = :subject WHERE id = :id AND NOT (subject IS :subject)")
|
||||
int setMessageSubject(long id, String subject);
|
||||
|
||||
@Query("UPDATE message SET recent = :recent WHERE id = :id AND NOT (recent IS :recent)")
|
||||
int setMessageRecent(long id, boolean recent);
|
||||
|
||||
@Query("UPDATE message SET seen = :seen WHERE id = :id AND NOT (seen IS :seen)")
|
||||
int setMessageSeen(long id, boolean seen);
|
||||
|
||||
|
|
|
@ -198,6 +198,8 @@ public class EntityMessage implements Serializable {
|
|||
@NonNull
|
||||
public Long stored = new Date().getTime();
|
||||
@NonNull
|
||||
public Boolean recent = false;
|
||||
@NonNull
|
||||
public Boolean seen = false;
|
||||
@NonNull
|
||||
public Boolean answered = false;
|
||||
|
@ -656,6 +658,7 @@ public class EntityMessage implements Serializable {
|
|||
Objects.equals(this.sent, other.sent) &&
|
||||
this.received.equals(other.received) &&
|
||||
this.stored.equals(other.stored) &&
|
||||
this.recent.equals(other.recent) &&
|
||||
this.seen.equals(other.seen) &&
|
||||
this.answered.equals(other.answered) &&
|
||||
this.flagged.equals(other.flagged) &&
|
||||
|
|
|
@ -1191,6 +1191,10 @@ public class MessageHelper {
|
|||
}
|
||||
}
|
||||
|
||||
boolean getRecent() throws MessagingException {
|
||||
return imessage.isSet(Flags.Flag.RECENT);
|
||||
}
|
||||
|
||||
boolean getSeen() throws MessagingException {
|
||||
return imessage.isSet(Flags.Flag.SEEN);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue