From 290af2778006b5e858115059e09bb6bd0fb0d2d2 Mon Sep 17 00:00:00 2001 From: M66B Date: Thu, 2 Jul 2020 09:41:04 +0200 Subject: [PATCH] Added overriding/setting max message size --- .../eu/faircode/email/FragmentIdentity.java | 24 ++++++++++++++--- app/src/main/res/layout/fragment_identity.xml | 26 +++++++++++++++++-- app/src/main/res/values/strings.xml | 3 ++- 3 files changed, 46 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentIdentity.java b/app/src/main/java/eu/faircode/email/FragmentIdentity.java index 7ca916aa64..49578d79dd 100644 --- a/app/src/main/java/eu/faircode/email/FragmentIdentity.java +++ b/app/src/main/java/eu/faircode/email/FragmentIdentity.java @@ -113,6 +113,7 @@ public class FragmentIdentity extends FragmentBase { private EditText etCc; private EditText etBcc; private CheckBox cbUnicode; + private EditText etMaxSize; private Button btnSave; private ContentLoadingProgressBar pbSave; @@ -205,6 +206,7 @@ public class FragmentIdentity extends FragmentBase { etCc = view.findViewById(R.id.etCc); etBcc = view.findViewById(R.id.etBcc); cbUnicode = view.findViewById(R.id.cbUnicode); + etMaxSize = view.findViewById(R.id.etMaxSize); btnSave = view.findViewById(R.id.btnSave); pbSave = view.findViewById(R.id.pbSave); @@ -586,6 +588,7 @@ public class FragmentIdentity extends FragmentBase { args.putString("cc", etCc.getText().toString().trim()); args.putString("bcc", etBcc.getText().toString().trim()); args.putBoolean("unicode", cbUnicode.isChecked()); + args.putString("max_size", etMaxSize.getText().toString()); args.putLong("account", account == null ? -1 : account.id); args.putString("host", etHost.getText().toString().trim()); args.putBoolean("starttls", rgEncryption.getCheckedRadioButtonId() == R.id.radio_starttls); @@ -662,6 +665,7 @@ public class FragmentIdentity extends FragmentBase { String cc = args.getString("cc"); String bcc = args.getString("bcc"); boolean unicode = args.getBoolean("unicode"); + String max_size = args.getString("max_size"); boolean should = args.getBoolean("should"); @@ -738,6 +742,8 @@ public class FragmentIdentity extends FragmentBase { if (TextUtils.isEmpty(signature)) signature = null; + Long user_max_size = (TextUtils.isEmpty(max_size) ? null : Integer.parseInt(max_size) * 1000 * 1000L); + DB db = DB.getInstance(context); EntityIdentity identity = db.identity().getIdentity(id); @@ -799,6 +805,8 @@ public class FragmentIdentity extends FragmentBase { return true; if (!Objects.equals(identity.unicode, unicode)) return true; + if (user_max_size != null && !Objects.equals(identity.max_size, user_max_size)) + return true; return false; } @@ -818,6 +826,7 @@ public class FragmentIdentity extends FragmentBase { !Objects.equals(fingerprint, identity.fingerprint) || use_ip != identity.use_ip || !Objects.equals(ehlo, identity.ehlo) || + (user_max_size != null && !Objects.equals(user_max_size, identity.max_size)) || BuildConfig.DEBUG)); Log.i("Identity check=" + check); @@ -826,7 +835,7 @@ public class FragmentIdentity extends FragmentBase { last_connected = identity.last_connected; // Check SMTP server - Long max_size = null; + Long server_max_size = null; if (check) { // Create transport String protocol = (starttls ? "smtp" : "smtps"); @@ -838,7 +847,7 @@ public class FragmentIdentity extends FragmentBase { auth, provider, user, password, certificate, fingerprint); - max_size = iservice.getMaxSize(); + server_max_size = iservice.getMaxSize(); } } @@ -891,8 +900,15 @@ public class FragmentIdentity extends FragmentBase { identity.sign_key_alias = null; identity.error = null; identity.last_connected = last_connected; - if (max_size != null) - identity.max_size = max_size; + + if (user_max_size == null) + identity.max_size = server_max_size; + else { + if (server_max_size == null) + identity.max_size = user_max_size; + else + identity.max_size = Math.min(user_max_size, server_max_size); + } if (identity.primary) db.identity().resetPrimary(account); diff --git a/app/src/main/res/layout/fragment_identity.xml b/app/src/main/res/layout/fragment_identity.xml index 7a4a4791a7..56d6d9875d 100644 --- a/app/src/main/res/layout/fragment_identity.xml +++ b/app/src/main/res/layout/fragment_identity.xml @@ -685,6 +685,27 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvBccHint" /> + + + +