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
|
// https://developer.android.com/topic/libraries/architecture/room.html
|
||||||
|
|
||||||
@Database(
|
@Database(
|
||||||
version = 18,
|
version = 19,
|
||||||
entities = {
|
entities = {
|
||||||
EntityIdentity.class,
|
EntityIdentity.class,
|
||||||
EntityAccount.class,
|
EntityAccount.class,
|
||||||
|
@ -268,6 +268,14 @@ public abstract class DB extends RoomDatabase {
|
||||||
db.execSQL("ALTER TABLE `folder` ADD COLUMN `tbd` INTEGER");
|
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();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -51,6 +51,10 @@ public class EntityIdentity {
|
||||||
public String email;
|
public String email;
|
||||||
public String replyto;
|
public String replyto;
|
||||||
@NonNull
|
@NonNull
|
||||||
|
public Boolean delivery_receipt;
|
||||||
|
@NonNull
|
||||||
|
public Boolean read_receipt;
|
||||||
|
@NonNull
|
||||||
public Long account;
|
public Long account;
|
||||||
@NonNull
|
@NonNull
|
||||||
public String host; // SMTP
|
public String host; // SMTP
|
||||||
|
|
|
@ -80,6 +80,8 @@ public class FragmentIdentity extends FragmentEx {
|
||||||
private TextView tvEmail;
|
private TextView tvEmail;
|
||||||
private EditText etEmail;
|
private EditText etEmail;
|
||||||
private EditText etReplyTo;
|
private EditText etReplyTo;
|
||||||
|
private CheckBox cbDeliveryReceipt;
|
||||||
|
private CheckBox cbReadReceipt;
|
||||||
private Spinner spProvider;
|
private Spinner spProvider;
|
||||||
private EditText etDomain;
|
private EditText etDomain;
|
||||||
private Button btnAutoConfig;
|
private Button btnAutoConfig;
|
||||||
|
@ -137,6 +139,8 @@ public class FragmentIdentity extends FragmentEx {
|
||||||
tvEmail = view.findViewById(R.id.tvEmail);
|
tvEmail = view.findViewById(R.id.tvEmail);
|
||||||
etEmail = view.findViewById(R.id.etEmail);
|
etEmail = view.findViewById(R.id.etEmail);
|
||||||
etReplyTo = view.findViewById(R.id.etReplyTo);
|
etReplyTo = view.findViewById(R.id.etReplyTo);
|
||||||
|
cbDeliveryReceipt = view.findViewById(R.id.cbDeliveryReceipt);
|
||||||
|
cbReadReceipt = view.findViewById(R.id.cbReadReceipt);
|
||||||
|
|
||||||
spProvider = view.findViewById(R.id.spProvider);
|
spProvider = view.findViewById(R.id.spProvider);
|
||||||
|
|
||||||
|
@ -378,6 +382,8 @@ public class FragmentIdentity extends FragmentEx {
|
||||||
args.putString("name", etName.getText().toString());
|
args.putString("name", etName.getText().toString());
|
||||||
args.putString("email", etEmail.getText().toString());
|
args.putString("email", etEmail.getText().toString());
|
||||||
args.putString("replyto", etReplyTo.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.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.putInt("auth_type", account == null || account.auth_type == null ? Helper.AUTH_TYPE_PASSWORD : account.auth_type);
|
||||||
args.putString("host", etHost.getText().toString());
|
args.putString("host", etHost.getText().toString());
|
||||||
|
@ -400,6 +406,8 @@ public class FragmentIdentity extends FragmentEx {
|
||||||
long account = args.getLong("account");
|
long account = args.getLong("account");
|
||||||
String email = args.getString("email");
|
String email = args.getString("email");
|
||||||
String replyto = args.getString("replyto");
|
String replyto = args.getString("replyto");
|
||||||
|
boolean delivery_receipt = args.getBoolean("delivery_receipt");
|
||||||
|
boolean read_receipt = args.getBoolean("read_receipt");
|
||||||
String host = args.getString("host");
|
String host = args.getString("host");
|
||||||
boolean starttls = args.getBoolean("starttls");
|
boolean starttls = args.getBoolean("starttls");
|
||||||
boolean insecure = args.getBoolean("insecure");
|
boolean insecure = args.getBoolean("insecure");
|
||||||
|
@ -473,6 +481,8 @@ public class FragmentIdentity extends FragmentEx {
|
||||||
identity.account = account;
|
identity.account = account;
|
||||||
identity.email = email;
|
identity.email = email;
|
||||||
identity.replyto = replyto;
|
identity.replyto = replyto;
|
||||||
|
identity.delivery_receipt = delivery_receipt;
|
||||||
|
identity.read_receipt = read_receipt;
|
||||||
identity.host = host;
|
identity.host = host;
|
||||||
identity.starttls = starttls;
|
identity.starttls = starttls;
|
||||||
identity.insecure = insecure;
|
identity.insecure = insecure;
|
||||||
|
@ -576,6 +586,8 @@ public class FragmentIdentity extends FragmentEx {
|
||||||
etName.setText(identity == null ? null : identity.name);
|
etName.setText(identity == null ? null : identity.name);
|
||||||
etEmail.setText(identity == null ? null : identity.email);
|
etEmail.setText(identity == null ? null : identity.email);
|
||||||
etReplyTo.setText(identity == null ? null : identity.replyto);
|
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);
|
etHost.setText(identity == null ? null : identity.host);
|
||||||
cbStartTls.setChecked(identity == null ? false : identity.starttls);
|
cbStartTls.setChecked(identity == null ? false : identity.starttls);
|
||||||
cbInsecure.setChecked(identity == null ? false : identity.insecure);
|
cbInsecure.setChecked(identity == null ? false : identity.insecure);
|
||||||
|
|
|
@ -1661,6 +1661,12 @@ public class ServiceSynchronize extends LifecycleService {
|
||||||
if (ident.replyto != null)
|
if (ident.replyto != null)
|
||||||
imessage.setReplyTo(new Address[]{new InternetAddress(ident.replyto)});
|
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
|
// Create transport
|
||||||
// TODO: cache transport?
|
// TODO: cache transport?
|
||||||
Transport itransport = isession.getTransport(ident.starttls ? "smtp" : "smtps");
|
Transport itransport = isession.getTransport(ident.starttls ? "smtp" : "smtps");
|
||||||
|
|
|
@ -109,6 +109,24 @@
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/tvReplyTo" />
|
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 -->
|
<!--- provider -->
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
@ -119,7 +137,7 @@
|
||||||
android:text="@string/title_provider"
|
android:text="@string/title_provider"
|
||||||
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
android:textAppearance="@style/TextAppearance.AppCompat.Small"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toBottomOf="@id/etReplyTo" />
|
app:layout_constraintTop_toBottomOf="@id/cbReadReceipt" />
|
||||||
|
|
||||||
<Spinner
|
<Spinner
|
||||||
android:id="@+id/spProvider"
|
android:id="@+id/spProvider"
|
||||||
|
@ -435,6 +453,6 @@
|
||||||
android:id="@+id/grpAdvanced"
|
android:id="@+id/grpAdvanced"
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="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>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</ScrollView>
|
</ScrollView>
|
|
@ -120,6 +120,8 @@
|
||||||
<string name="title_identity_name">Your name</string>
|
<string name="title_identity_name">Your name</string>
|
||||||
<string name="title_identity_email">Your email address</string>
|
<string name="title_identity_email">Your email address</string>
|
||||||
<string name="title_identity_reply_to">Reply to 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_optional">Optional</string>
|
||||||
<string name="title_account_linked">Linked account</string>
|
<string name="title_account_linked">Linked account</string>
|
||||||
<string name="title_account_name">Account name</string>
|
<string name="title_account_name">Account name</string>
|
||||||
|
|
Loading…
Reference in New Issue