mirror of https://github.com/M66B/FairEmail.git
Added request delivery/read receipt to identity
This commit is contained in:
parent
a59e665714
commit
3f2499698e
File diff suppressed because it is too large
Load Diff
|
@ -46,7 +46,7 @@ import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory;
|
|||
// https://developer.android.com/topic/libraries/architecture/room.html
|
||||
|
||||
@Database(
|
||||
version = 18,
|
||||
version = 19,
|
||||
entities = {
|
||||
EntityIdentity.class,
|
||||
EntityAccount.class,
|
||||
|
@ -268,6 +268,14 @@ public abstract class DB extends RoomDatabase {
|
|||
db.execSQL("ALTER TABLE `folder` ADD COLUMN `tbd` INTEGER");
|
||||
}
|
||||
})
|
||||
.addMigrations(new Migration(18, 19) {
|
||||
@Override
|
||||
public void migrate(SupportSQLiteDatabase db) {
|
||||
Log.i(Helper.TAG, "DB migration from version " + startVersion + " to " + endVersion);
|
||||
db.execSQL("ALTER TABLE `identity` ADD COLUMN `delivery_receipt` INTEGER NOT NULL DEFAULT 0");
|
||||
db.execSQL("ALTER TABLE `identity` ADD COLUMN `read_receipt` INTEGER NOT NULL DEFAULT 0");
|
||||
}
|
||||
})
|
||||
.build();
|
||||
}
|
||||
|
||||
|
|
|
@ -51,6 +51,10 @@ public class EntityIdentity {
|
|||
public String email;
|
||||
public String replyto;
|
||||
@NonNull
|
||||
public Boolean delivery_receipt;
|
||||
@NonNull
|
||||
public Boolean read_receipt;
|
||||
@NonNull
|
||||
public Long account;
|
||||
@NonNull
|
||||
public String host; // SMTP
|
||||
|
|
|
@ -80,6 +80,8 @@ public class FragmentIdentity extends FragmentEx {
|
|||
private TextView tvEmail;
|
||||
private EditText etEmail;
|
||||
private EditText etReplyTo;
|
||||
private CheckBox cbDeliveryReceipt;
|
||||
private CheckBox cbReadReceipt;
|
||||
private Spinner spProvider;
|
||||
private EditText etDomain;
|
||||
private Button btnAutoConfig;
|
||||
|
@ -137,6 +139,8 @@ public class FragmentIdentity extends FragmentEx {
|
|||
tvEmail = view.findViewById(R.id.tvEmail);
|
||||
etEmail = view.findViewById(R.id.etEmail);
|
||||
etReplyTo = view.findViewById(R.id.etReplyTo);
|
||||
cbDeliveryReceipt = view.findViewById(R.id.cbDeliveryReceipt);
|
||||
cbReadReceipt = view.findViewById(R.id.cbReadReceipt);
|
||||
|
||||
spProvider = view.findViewById(R.id.spProvider);
|
||||
|
||||
|
@ -378,6 +382,8 @@ public class FragmentIdentity extends FragmentEx {
|
|||
args.putString("name", etName.getText().toString());
|
||||
args.putString("email", etEmail.getText().toString());
|
||||
args.putString("replyto", etReplyTo.getText().toString());
|
||||
args.putBoolean("delivery_receipt", cbDeliveryReceipt.isChecked());
|
||||
args.putBoolean("read_receipt", cbReadReceipt.isChecked());
|
||||
args.putLong("account", account == null ? -1 : account.id);
|
||||
args.putInt("auth_type", account == null || account.auth_type == null ? Helper.AUTH_TYPE_PASSWORD : account.auth_type);
|
||||
args.putString("host", etHost.getText().toString());
|
||||
|
@ -400,6 +406,8 @@ public class FragmentIdentity extends FragmentEx {
|
|||
long account = args.getLong("account");
|
||||
String email = args.getString("email");
|
||||
String replyto = args.getString("replyto");
|
||||
boolean delivery_receipt = args.getBoolean("delivery_receipt");
|
||||
boolean read_receipt = args.getBoolean("read_receipt");
|
||||
String host = args.getString("host");
|
||||
boolean starttls = args.getBoolean("starttls");
|
||||
boolean insecure = args.getBoolean("insecure");
|
||||
|
@ -473,6 +481,8 @@ public class FragmentIdentity extends FragmentEx {
|
|||
identity.account = account;
|
||||
identity.email = email;
|
||||
identity.replyto = replyto;
|
||||
identity.delivery_receipt = delivery_receipt;
|
||||
identity.read_receipt = read_receipt;
|
||||
identity.host = host;
|
||||
identity.starttls = starttls;
|
||||
identity.insecure = insecure;
|
||||
|
@ -576,6 +586,8 @@ public class FragmentIdentity extends FragmentEx {
|
|||
etName.setText(identity == null ? null : identity.name);
|
||||
etEmail.setText(identity == null ? null : identity.email);
|
||||
etReplyTo.setText(identity == null ? null : identity.replyto);
|
||||
cbDeliveryReceipt.setChecked(identity == null ? false : identity.delivery_receipt);
|
||||
cbReadReceipt.setChecked(identity == null ? false : identity.read_receipt);
|
||||
etHost.setText(identity == null ? null : identity.host);
|
||||
cbStartTls.setChecked(identity == null ? false : identity.starttls);
|
||||
cbInsecure.setChecked(identity == null ? false : identity.insecure);
|
||||
|
|
|
@ -1661,6 +1661,12 @@ public class ServiceSynchronize extends LifecycleService {
|
|||
if (ident.replyto != null)
|
||||
imessage.setReplyTo(new Address[]{new InternetAddress(ident.replyto)});
|
||||
|
||||
if (ident.delivery_receipt)
|
||||
imessage.addHeader("Return-Receipt-To", ident.replyto == null ? ident.email : ident.replyto);
|
||||
|
||||
if (ident.read_receipt)
|
||||
imessage.addHeader("Disposition-Notification-To", ident.replyto == null ? ident.email : ident.replyto);
|
||||
|
||||
// Create transport
|
||||
// TODO: cache transport?
|
||||
Transport itransport = isession.getTransport(ident.starttls ? "smtp" : "smtps");
|
||||
|
|
|
@ -109,6 +109,24 @@
|
|||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/tvReplyTo" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbDeliveryReceipt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:text="@string/title_identity_delivery_receipt"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/etReplyTo" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/cbReadReceipt"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="12dp"
|
||||
android:text="@string/title_identity_read_receipt"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/cbDeliveryReceipt" />
|
||||
|
||||
<!--- provider -->
|
||||
|
||||
<TextView
|
||||
|
@ -119,7 +137,7 @@
|
|||
android:text="@string/title_provider"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@id/etReplyTo" />
|
||||
app:layout_constraintTop_toBottomOf="@id/cbReadReceipt" />
|
||||
|
||||
<Spinner
|
||||
android:id="@+id/spProvider"
|
||||
|
@ -435,6 +453,6 @@
|
|||
android:id="@+id/grpAdvanced"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="0dp"
|
||||
app:constraint_referenced_ids="tvEmail,etEmail,tvReplyTo,etReplyTo,tvProvider,spProvider,tvDomain,etDomain,btnAutoConfig,tvSmtp,tvInsecure,tvHost,etHost,cbStartTls,tvPort,etPort,tvUser,etUser,tvPassword,tilPassword,btnColor,vwColor,ibColorDefault,tvSignature,etSignature,ibPro,cbSynchronize,cbPrimary,tvSent,spSent" />
|
||||
app:constraint_referenced_ids="tvEmail,etEmail,tvReplyTo,etReplyTo,cbDeliveryReceipt,cbReadReceipt,tvProvider,spProvider,tvDomain,etDomain,btnAutoConfig,tvSmtp,tvInsecure,tvHost,etHost,cbStartTls,tvPort,etPort,tvUser,etUser,tvPassword,tilPassword,btnColor,vwColor,ibColorDefault,tvSignature,etSignature,ibPro,cbSynchronize,cbPrimary,tvSent,spSent" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</ScrollView>
|
|
@ -120,6 +120,8 @@
|
|||
<string name="title_identity_name">Your name</string>
|
||||
<string name="title_identity_email">Your email address</string>
|
||||
<string name="title_identity_reply_to">Reply to address</string>
|
||||
<string name="title_identity_read_receipt">Request read receipt</string>
|
||||
<string name="title_identity_delivery_receipt">Request delivery receipt</string>
|
||||
<string name="title_optional">Optional</string>
|
||||
<string name="title_account_linked">Linked account</string>
|
||||
<string name="title_account_name">Account name</string>
|
||||
|
|
Loading…
Reference in New Issue