diff --git a/FAQ.md b/FAQ.md
index 889c50fa18..924fbf8318 100644
--- a/FAQ.md
+++ b/FAQ.md
@@ -950,6 +950,7 @@ but even Google's Chrome cannot handle this.
* Did you know there is an advanced option to mark messages read when they are moved and that archiving and trashing is also moving?
* Did you know that you can select text (or an email address) in any app on recent Android versions and let FairEmail search for it? You'll need to set a primary account and an archive folder for this to work, so FairEmail knows where to search. There will be 'FairEmail' in the menu with copy, cut, etc.
* Did you know that FairEmail has a tablet mode? Rotate your device in landscape mode and conversation threads will be opened in a second column if there is enough screen space.
+* Did you know that you can long press a reply template to create a draft message from the template?
diff --git a/app/src/main/java/eu/faircode/email/AdapterAnswer.java b/app/src/main/java/eu/faircode/email/AdapterAnswer.java
index fc8a5cade3..3f5612c2b6 100644
--- a/app/src/main/java/eu/faircode/email/AdapterAnswer.java
+++ b/app/src/main/java/eu/faircode/email/AdapterAnswer.java
@@ -21,6 +21,7 @@ package eu.faircode.email;
import android.content.Context;
import android.content.Intent;
+import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -34,6 +35,7 @@ import java.util.List;
import java.util.Locale;
import androidx.annotation.NonNull;
+import androidx.lifecycle.LifecycleOwner;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.ListUpdateCallback;
@@ -41,12 +43,15 @@ import androidx.recyclerview.widget.RecyclerView;
public class AdapterAnswer extends RecyclerView.Adapter {
private Context context;
+ private LifecycleOwner owner;
private LayoutInflater inflater;
private List all = new ArrayList<>();
private List filtered = new ArrayList<>();
- public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
+ private EntityAccount primary = null;
+
+ public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
View itemView;
TextView tvName;
@@ -59,10 +64,12 @@ public class AdapterAnswer extends RecyclerView.Adapter() {
+ @Override
+ protected EntityAccount onExecute(Context context, Bundle args) {
+ return DB.getInstance(context).account().getPrimaryAccount();
+ }
+
+ @Override
+ protected void onExecuted(Bundle args, EntityAccount account) {
+ primary = account;
+ }
+
+ @Override
+ protected void onException(Bundle args, Throwable ex) {
+ Helper.unexpectedError(AdapterAnswer.this.context, AdapterAnswer.this.owner, ex);
+ }
+ }.execute(context, owner, new Bundle(), "answer:account:primary");
}
public void set(@NonNull List answers) {
diff --git a/app/src/main/java/eu/faircode/email/FragmentAnswers.java b/app/src/main/java/eu/faircode/email/FragmentAnswers.java
index 2a84052ed0..d10df52745 100644
--- a/app/src/main/java/eu/faircode/email/FragmentAnswers.java
+++ b/app/src/main/java/eu/faircode/email/FragmentAnswers.java
@@ -63,7 +63,7 @@ public class FragmentAnswers extends FragmentEx {
LinearLayoutManager llm = new LinearLayoutManager(getContext());
rvAnswer.setLayoutManager(llm);
- adapter = new AdapterAnswer(getContext());
+ adapter = new AdapterAnswer(getContext(), getViewLifecycleOwner());
rvAnswer.setAdapter(adapter);
fab.setOnClickListener(new View.OnClickListener() {
diff --git a/app/src/main/java/eu/faircode/email/FragmentCompose.java b/app/src/main/java/eu/faircode/email/FragmentCompose.java
index 6c6f40154a..a715988295 100644
--- a/app/src/main/java/eu/faircode/email/FragmentCompose.java
+++ b/app/src/main/java/eu/faircode/email/FragmentCompose.java
@@ -1520,6 +1520,13 @@ public class FragmentCompose extends FragmentEx {
result.draft.subject = args.getString("subject", "");
body = args.getString("body", "");
body = body.replaceAll("\\r?\\n", "
");
+
+ if (answer > 0) {
+ String text = db.answer().getAnswer(answer).text;
+ text = text.replace("$name$", "");
+ text = text.replace("$email$", "");
+ body = text + body;
+ }
} else {
result.draft.thread = ref.thread;