mirror of https://github.com/M66B/FairEmail.git
Mark contacts as not junk
This commit is contained in:
parent
4d89cfa8cd
commit
712e96c5e0
|
@ -126,6 +126,9 @@ public class AdapterContact extends RecyclerView.Adapter<AdapterContact.ViewHold
|
|||
} else if (contact.type == EntityContact.TYPE_TO) {
|
||||
ivType.setImageResource(R.drawable.twotone_call_made_24);
|
||||
ivType.setContentDescription(context.getString(R.string.title_accessibility_to));
|
||||
} else if (contact.type == EntityContact.TYPE_NO_JUNK) {
|
||||
ivType.setImageResource(R.drawable.twotone_report_off_24);
|
||||
ivType.setContentDescription(context.getString(R.string.title_no_junk));
|
||||
} else {
|
||||
ivType.setImageDrawable(null);
|
||||
ivType.setContentDescription(null);
|
||||
|
|
|
@ -1282,11 +1282,43 @@ class Core {
|
|||
imessage.setFlag(Flags.Flag.FLAGGED, false);
|
||||
|
||||
// Mark not spam
|
||||
if (EntityFolder.JUNK.equals(folder.type)
|
||||
&& ifolder.getPermanentFlags().contains(Flags.Flag.USER)) {
|
||||
if (EntityFolder.JUNK.equals(folder.type) &&
|
||||
ifolder.getPermanentFlags().contains(Flags.Flag.USER)) {
|
||||
Flags notJunk = new Flags(MessageHelper.FLAG_NOT_JUNK);
|
||||
imessage.setFlags(notJunk, true);
|
||||
}
|
||||
|
||||
EntityMessage message = map.get(imessage);
|
||||
if (message != null && message.from != null) {
|
||||
for (Address from : message.from) {
|
||||
String email = ((InternetAddress) from).getAddress();
|
||||
if (TextUtils.isEmpty(email))
|
||||
continue;
|
||||
if (EntityFolder.JUNK.equals(folder.type)) {
|
||||
// From junk
|
||||
long now = new Date().getTime();
|
||||
EntityContact contact = db.contact().getContact(message.account, EntityContact.TYPE_NO_JUNK, email);
|
||||
if (contact == null) {
|
||||
contact = new EntityContact();
|
||||
contact.account = message.account;
|
||||
contact.name = ((InternetAddress) from).getPersonal();
|
||||
contact.email = email;
|
||||
contact.type = EntityContact.TYPE_NO_JUNK;
|
||||
contact.first_contacted = now;
|
||||
contact.last_contacted = now;
|
||||
contact.times_contacted = 1;
|
||||
db.contact().insertContact(contact);
|
||||
} else {
|
||||
contact.times_contacted++;
|
||||
contact.last_contacted = now;
|
||||
db.contact().updateContact(contact);
|
||||
}
|
||||
} else if (EntityFolder.JUNK.equals(target.type)) {
|
||||
// To junk
|
||||
int count = db.contact().deleteContact(message.account, EntityContact.TYPE_NO_JUNK, email);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// https://tools.ietf.org/html/rfc6851
|
||||
|
@ -3543,6 +3575,21 @@ class Core {
|
|||
message.warning = Log.formatThrowable(ex, false);
|
||||
}
|
||||
|
||||
boolean notJunk = false;
|
||||
if (message.from != null)
|
||||
for (Address from : message.from) {
|
||||
String email = ((InternetAddress) from).getAddress();
|
||||
if (TextUtils.isEmpty(email))
|
||||
continue;
|
||||
EntityContact contact = db.contact().getContact(message.account, EntityContact.TYPE_NO_JUNK, email);
|
||||
if (contact != null) {
|
||||
contact.times_contacted++;
|
||||
contact.last_contacted = new Date().getTime();
|
||||
db.contact().updateContact(contact);
|
||||
notJunk = true;
|
||||
}
|
||||
}
|
||||
|
||||
boolean check_blocklist = prefs.getBoolean("check_blocklist", false);
|
||||
if (check_blocklist &&
|
||||
!have &&
|
||||
|
@ -3550,6 +3597,7 @@ class Core {
|
|||
!EntityFolder.ARCHIVE.equals(folder.type) &&
|
||||
!EntityFolder.TRASH.equals(folder.type) &&
|
||||
!EntityFolder.JUNK.equals(folder.type) &&
|
||||
!notJunk &&
|
||||
!Arrays.asList(message.keywords).contains(MessageHelper.FLAG_NOT_JUNK))
|
||||
try {
|
||||
message.blocklist = DnsBlockList.isJunk(context,
|
||||
|
|
|
@ -68,6 +68,7 @@ public class EntityContact implements Serializable {
|
|||
|
||||
static final int TYPE_TO = 0;
|
||||
static final int TYPE_FROM = 1;
|
||||
static final int TYPE_NO_JUNK = 3;
|
||||
|
||||
static final int STATE_DEFAULT = 0;
|
||||
static final int STATE_FAVORITE = 1;
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M19,9.1L14.9,5H9.1l-0.22,0.22L11,7.33V7h2v2.33l5.78,5.79 0.22,-0.22zM6.05,8.04L5,9.1v5.8L9.1,19h5.8l1.05,-1.05 -9.9,-9.91zM13,16c0,0.55 -0.45,1 -1,1s-1,-0.45 -1,-1 0.45,-1 1,-1 1,0.45 1,1z"
|
||||
android:strokeAlpha="0.3"
|
||||
android:fillAlpha="0.3"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M9.1,5h5.8L19,9.1v5.8l-0.22,0.22 1.42,1.41 0.8,-0.8V8.27L15.73,3H8.27l-0.8,0.8 1.41,1.42z"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,16m-1,0a1,1 0,1 1,2 0a1,1 0,1 1,-2 0"/>
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M13,7h-2v0.33l2,2zM2.41,1.58L1,2.99l3.64,3.64L3,8.27v7.46L8.27,21h7.46l1.64,-1.64L21.01,23l1.41,-1.41L2.41,1.58zM14.9,19H9.1L5,14.9V9.1l1.05,-1.05 9.9,9.9L14.9,19z"/>
|
||||
</vector>
|
Loading…
Reference in New Issue