mirror of https://github.com/M66B/FairEmail.git
Decode Sensitivity header
This commit is contained in:
parent
4977d372e8
commit
e71f92c938
File diff suppressed because it is too large
Load Diff
|
@ -6396,6 +6396,10 @@ public class AdapterMessage extends RecyclerView.Adapter<AdapterMessage.ViewHold
|
||||||
same = false;
|
same = false;
|
||||||
log("ui_importance changed", next.id);
|
log("ui_importance changed", next.id);
|
||||||
}
|
}
|
||||||
|
if (!Objects.equals(prev.sensitivity, next.sensitivity)) {
|
||||||
|
same = false;
|
||||||
|
log("sensitivity changed", next.id);
|
||||||
|
}
|
||||||
if (!Objects.equals(prev.receipt_request, next.receipt_request)) {
|
if (!Objects.equals(prev.receipt_request, next.receipt_request)) {
|
||||||
same = false;
|
same = false;
|
||||||
log("receipt_request changed", next.id);
|
log("receipt_request changed", next.id);
|
||||||
|
|
|
@ -2852,6 +2852,7 @@ class Core {
|
||||||
message.deliveredto = helper.getDeliveredTo();
|
message.deliveredto = helper.getDeliveredTo();
|
||||||
message.thread = helper.getThreadId(context, account.id, folder.id, 0);
|
message.thread = helper.getThreadId(context, account.id, folder.id, 0);
|
||||||
message.priority = helper.getPriority();
|
message.priority = helper.getPriority();
|
||||||
|
message.sensitivity = helper.getSensitivity();
|
||||||
message.auto_submitted = helper.getAutoSubmitted();
|
message.auto_submitted = helper.getAutoSubmitted();
|
||||||
message.receipt_request = helper.getReceiptRequested();
|
message.receipt_request = helper.getReceiptRequested();
|
||||||
message.receipt_to = helper.getReceiptTo();
|
message.receipt_to = helper.getReceiptTo();
|
||||||
|
@ -3833,6 +3834,7 @@ class Core {
|
||||||
if (BuildConfig.DEBUG && message.thread.startsWith("outlook:"))
|
if (BuildConfig.DEBUG && message.thread.startsWith("outlook:"))
|
||||||
message.warning = message.thread;
|
message.warning = message.thread;
|
||||||
message.priority = helper.getPriority();
|
message.priority = helper.getPriority();
|
||||||
|
message.sensitivity = helper.getSensitivity();
|
||||||
|
|
||||||
for (String keyword : keywords)
|
for (String keyword : keywords)
|
||||||
if (MessageHelper.FLAG_LOW_IMPORTANCE.equals(keyword))
|
if (MessageHelper.FLAG_LOW_IMPORTANCE.equals(keyword))
|
||||||
|
|
|
@ -71,7 +71,7 @@ import io.requery.android.database.sqlite.SQLiteDatabase;
|
||||||
// https://developer.android.com/topic/libraries/architecture/room.html
|
// https://developer.android.com/topic/libraries/architecture/room.html
|
||||||
|
|
||||||
@Database(
|
@Database(
|
||||||
version = 220,
|
version = 221,
|
||||||
entities = {
|
entities = {
|
||||||
EntityIdentity.class,
|
EntityIdentity.class,
|
||||||
EntityAccount.class,
|
EntityAccount.class,
|
||||||
|
@ -2239,6 +2239,12 @@ public abstract class DB extends RoomDatabase {
|
||||||
logMigration(startVersion, endVersion);
|
logMigration(startVersion, endVersion);
|
||||||
db.execSQL("ALTER TABLE `message` ADD COLUMN `tls` INTEGER");
|
db.execSQL("ALTER TABLE `message` ADD COLUMN `tls` INTEGER");
|
||||||
}
|
}
|
||||||
|
}).addMigrations(new Migration(220, 221) {
|
||||||
|
@Override
|
||||||
|
public void migrate(@NonNull SupportSQLiteDatabase db) {
|
||||||
|
logMigration(startVersion, endVersion);
|
||||||
|
db.execSQL("ALTER TABLE `message` ADD COLUMN `sensitivity` INTEGER");
|
||||||
|
}
|
||||||
}).addMigrations(new Migration(998, 999) {
|
}).addMigrations(new Migration(998, 999) {
|
||||||
@Override
|
@Override
|
||||||
public void migrate(@NonNull SupportSQLiteDatabase db) {
|
public void migrate(@NonNull SupportSQLiteDatabase db) {
|
||||||
|
|
|
@ -104,6 +104,10 @@ public class EntityMessage implements Serializable {
|
||||||
static final Integer PRIORITIY_NORMAL = 1;
|
static final Integer PRIORITIY_NORMAL = 1;
|
||||||
static final Integer PRIORITIY_HIGH = 2;
|
static final Integer PRIORITIY_HIGH = 2;
|
||||||
|
|
||||||
|
static final Integer SENSITIVITY_PERSONAL = 1;
|
||||||
|
static final Integer SENSITIVITY_PRIVATE = 2;
|
||||||
|
static final Integer SENSITIVITY_CONFIDENTIAL = 3;
|
||||||
|
|
||||||
static final Integer DSN_NONE = 0;
|
static final Integer DSN_NONE = 0;
|
||||||
static final Integer DSN_RECEIPT = 1;
|
static final Integer DSN_RECEIPT = 1;
|
||||||
static final Integer DSN_HARD_BOUNCE = 2;
|
static final Integer DSN_HARD_BOUNCE = 2;
|
||||||
|
@ -139,6 +143,7 @@ public class EntityMessage implements Serializable {
|
||||||
public String thread; // compose = null
|
public String thread; // compose = null
|
||||||
public Integer priority;
|
public Integer priority;
|
||||||
public Integer importance;
|
public Integer importance;
|
||||||
|
public Integer sensitivity;
|
||||||
public Boolean auto_submitted;
|
public Boolean auto_submitted;
|
||||||
@ColumnInfo(name = "receipt")
|
@ColumnInfo(name = "receipt")
|
||||||
public Integer dsn;
|
public Integer dsn;
|
||||||
|
@ -562,6 +567,8 @@ public class EntityMessage implements Serializable {
|
||||||
Objects.equals(this.wasforwardedfrom, other.wasforwardedfrom) &&
|
Objects.equals(this.wasforwardedfrom, other.wasforwardedfrom) &&
|
||||||
Objects.equals(this.thread, other.thread) &&
|
Objects.equals(this.thread, other.thread) &&
|
||||||
Objects.equals(this.priority, other.priority) &&
|
Objects.equals(this.priority, other.priority) &&
|
||||||
|
Objects.equals(this.importance, other.importance) &&
|
||||||
|
Objects.equals(this.sensitivity, other.sensitivity) &&
|
||||||
Objects.equals(this.dsn, other.dsn) &&
|
Objects.equals(this.dsn, other.dsn) &&
|
||||||
Objects.equals(this.receipt_request, other.receipt_request) &&
|
Objects.equals(this.receipt_request, other.receipt_request) &&
|
||||||
MessageHelper.equal(this.receipt_to, other.receipt_to) &&
|
MessageHelper.equal(this.receipt_to, other.receipt_to) &&
|
||||||
|
|
|
@ -1583,6 +1583,27 @@ public class MessageHelper {
|
||||||
return priority;
|
return priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Integer getSensitivity() throws MessagingException {
|
||||||
|
ensureHeaders();
|
||||||
|
|
||||||
|
// https://www.rfc-editor.org/rfc/rfc4021.html#section-2.1.55
|
||||||
|
String header = imessage.getHeader("Sensitivity", null);
|
||||||
|
|
||||||
|
if (TextUtils.isEmpty(header))
|
||||||
|
return null;
|
||||||
|
|
||||||
|
header = header.toLowerCase(Locale.ROOT);
|
||||||
|
|
||||||
|
if (header.contains("personal"))
|
||||||
|
return EntityMessage.SENSITIVITY_PERSONAL;
|
||||||
|
if (header.contains("private"))
|
||||||
|
return EntityMessage.SENSITIVITY_PRIVATE;
|
||||||
|
if (header.contains("company")) // company-confidential
|
||||||
|
return EntityMessage.SENSITIVITY_CONFIDENTIAL;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
Boolean getAutoSubmitted() throws MessagingException {
|
Boolean getAutoSubmitted() throws MessagingException {
|
||||||
// https://tools.ietf.org/html/rfc3834
|
// https://tools.ietf.org/html/rfc3834
|
||||||
String header = imessage.getHeader("Auto-Submitted", null);
|
String header = imessage.getHeader("Auto-Submitted", null);
|
||||||
|
|
Loading…
Reference in New Issue