diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/ankiquest/AnkiquestNotifier.kt b/AnkiDroid/src/main/java/com/ichi2/anki/ankiquest/AnkiquestNotifier.kt
index ad77a8f9da1c..5f99039d5ba2 100644
--- a/AnkiDroid/src/main/java/com/ichi2/anki/ankiquest/AnkiquestNotifier.kt
+++ b/AnkiDroid/src/main/java/com/ichi2/anki/ankiquest/AnkiquestNotifier.kt
@@ -71,13 +71,17 @@ object AnkiquestNotifier {
val tag = 5_140_000 + (id % 1_000_000).toInt()
val title = entry.getString("title")
val body = entry.getString("body")
+ val shownBody =
+ entry.optJSONObject("reply_to")?.optString("body")?.takeIf { it.isNotBlank() }?.let { original ->
+ AnkiquestLanguage.context(context).getString(R.string.ankiquest_reply_context, body, original)
+ } ?: body
val answerable = entry.optString("sender").isNotEmpty() && !entry.optBoolean("replied")
if (fresh &&
notify(
context,
tag,
title,
- body,
+ shownBody,
notificationIntent(context, entry, account),
if (answerable) {
AnkiquestReply.actions(
@@ -85,7 +89,7 @@ object AnkiquestNotifier {
id,
tag,
title,
- body,
+ shownBody,
account,
scope,
entry.optString("kind", "completion"),
diff --git a/AnkiDroid/src/main/res/values-de/ankiquest.xml b/AnkiDroid/src/main/res/values-de/ankiquest.xml
index 640def4aa3f9..9d6ff39ef845 100644
--- a/AnkiDroid/src/main/res/values-de/ankiquest.xml
+++ b/AnkiDroid/src/main/res/values-de/ankiquest.xml
@@ -18,6 +18,7 @@
Wähle mindestens eine Person oder schalte das Teilen aus.
@string/save
Antwort
+ %1$s\n\nAls Antwort auf: %2$s
Anstupser
Benachrichtige mich, wenn ein Platz, mein bester Tag oder die nächste Stufe in Reichweite ist
Erfolge feiern
diff --git a/AnkiDroid/src/main/res/values-es/ankiquest.xml b/AnkiDroid/src/main/res/values-es/ankiquest.xml
index 9ae1cb674c49..e841f9d8ea51 100644
--- a/AnkiDroid/src/main/res/values-es/ankiquest.xml
+++ b/AnkiDroid/src/main/res/values-es/ankiquest.xml
@@ -25,6 +25,7 @@
Selecciona al menos una persona o desactiva el envío.
Guardar
Responder
+ %1$s\n\nEn respuesta a: %2$s
Toques
Avísame cuando pueda alcanzar un puesto, mi mejor día o el siguiente nivel
Celebraciones
diff --git a/AnkiDroid/src/main/res/values-fr/ankiquest.xml b/AnkiDroid/src/main/res/values-fr/ankiquest.xml
index 08f088e9deef..ecae0564f09b 100644
--- a/AnkiDroid/src/main/res/values-fr/ankiquest.xml
+++ b/AnkiDroid/src/main/res/values-fr/ankiquest.xml
@@ -18,6 +18,7 @@
Choisis au moins une personne ou désactive le partage.
@string/save
Réponse
+ %1$s\n\nEn réponse à : %2$s
Coups de pouce
Préviens-moi quand une place, mon meilleur jour ou le prochain niveau est à portée
Célébrations
diff --git a/AnkiDroid/src/main/res/values-pt/ankiquest.xml b/AnkiDroid/src/main/res/values-pt/ankiquest.xml
index fd4eafe09f30..aa1265a1d3cb 100644
--- a/AnkiDroid/src/main/res/values-pt/ankiquest.xml
+++ b/AnkiDroid/src/main/res/values-pt/ankiquest.xml
@@ -18,6 +18,7 @@
Escolhe pelo menos uma pessoa ou desativa a partilha.
@string/save
Responder
+ %1$s\n\nEm resposta a: %2$s
Lembretes
Avisa-me quando uma posição, o meu melhor dia ou o próximo nível estiver ao alcance
Celebrações
diff --git a/AnkiDroid/src/main/res/values/ankiquest.xml b/AnkiDroid/src/main/res/values/ankiquest.xml
index d457c1d16794..3a29171d42c5 100644
--- a/AnkiDroid/src/main/res/values/ankiquest.xml
+++ b/AnkiDroid/src/main/res/values/ankiquest.xml
@@ -23,6 +23,7 @@
Select at least one person, or switch sharing off.
@string/save
Reply
+ %1$s\n\nIn reply to: %2$s
ankiquestNudges
Nudges
Tell me when a place, my best day or the next level is within reach
diff --git a/AnkiDroid/src/test/java/com/ichi2/anki/ankiquest/AnkiquestNotifierTest.kt b/AnkiDroid/src/test/java/com/ichi2/anki/ankiquest/AnkiquestNotifierTest.kt
index e3bf80246ecd..9b017c0c4da6 100644
--- a/AnkiDroid/src/test/java/com/ichi2/anki/ankiquest/AnkiquestNotifierTest.kt
+++ b/AnkiDroid/src/test/java/com/ichi2/anki/ankiquest/AnkiquestNotifierTest.kt
@@ -34,6 +34,23 @@ import kotlin.test.assertTrue
@RunWith(AndroidJUnit4::class)
@Config(sdk = [32])
class AnkiquestNotifierTest : RobolectricTest() {
+ @Test
+ fun `a reply alert shows the message it answers`() {
+ val manager = targetContext.getSystemService()!!
+ val account = replyAccount()
+ val reply =
+ message(1, 30)
+ .put("sender", "cerro")
+ .put("kind", "reply")
+ .put("body", "Good job!")
+ .put("reply_to", JSONObject().put("title", "Deck complete").put("body", "Cerro finished Spanish."))
+ AnkiquestNotifier.onDeckCompletions(targetContext, account.notificationAccount, JSONArray().put(reply), account.scope)
+ val posted = shadowOf(manager).getNotification(5_140_001)
+ val shown = posted.extras.getCharSequence(Notification.EXTRA_BIG_TEXT).toString()
+ assertTrue(shown.contains("Cerro finished Spanish."))
+ assertTrue(shown.contains("Good job!"))
+ }
+
@Test
fun `Spanish contextual replies follow the Anki language and retain notification kind`() {
val manager = targetContext.getSystemService()!!