From f065777df2468ed2232880003fabc2261d0c594d Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Mon, 27 Feb 2023 13:54:17 -0500 Subject: [PATCH] Only shows translations if the result is different than the origin --- .../components/TranslateableRichTextViewer.kt | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/TranslateableRichTextViewer.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/TranslateableRichTextViewer.kt index e6c5ed4b1..9d8d5ffca 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/components/TranslateableRichTextViewer.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/components/TranslateableRichTextViewer.kt @@ -38,6 +38,8 @@ import com.vitorpamplona.amethyst.service.lang.LanguageTranslatorService import com.vitorpamplona.amethyst.service.lang.ResultOrError import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import java.util.Locale +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext @Composable fun TranslateableRichTextViewer( @@ -62,19 +64,21 @@ fun TranslateableRichTextViewer( val account = accountState?.account ?: return LaunchedEffect(accountState) { - LanguageTranslatorService.autoTranslate( - content, - account.dontTranslateFrom, - account.translateTo - ).addOnCompleteListener { task -> - if (task.isSuccessful) { - if (task.result.sourceLang != null && task.result.targetLang != null) { - val preference = account.preferenceBetween(task.result.sourceLang!!, task.result.targetLang!!) - showOriginal = preference == task.result.sourceLang + withContext(Dispatchers.IO) { + LanguageTranslatorService.autoTranslate( + content, + account.dontTranslateFrom, + account.translateTo + ).addOnCompleteListener { task -> + if (task.isSuccessful && content != task.result.result) { + if (task.result.sourceLang != null && task.result.targetLang != null) { + val preference = account.preferenceBetween(task.result.sourceLang!!, task.result.targetLang!!) + showOriginal = preference == task.result.sourceLang + } + translatedTextState.value = task.result + } else { + translatedTextState.value = ResultOrError(content, null, null, null) } - translatedTextState.value = task.result - } else { - translatedTextState.value = ResultOrError(content, null, null, null) } } }