diff --git a/mobile/android/android-components/components/browser/state/src/main/java/mozilla/components/browser/state/reducer/TranslationsStateReducer.kt b/mobile/android/android-components/components/browser/state/src/main/java/mozilla/components/browser/state/reducer/TranslationsStateReducer.kt index 5d677d26c585..4f52023d86a5 100644 --- a/mobile/android/android-components/components/browser/state/src/main/java/mozilla/components/browser/state/reducer/TranslationsStateReducer.kt +++ b/mobile/android/android-components/components/browser/state/src/main/java/mozilla/components/browser/state/reducer/TranslationsStateReducer.kt @@ -88,6 +88,7 @@ internal object TranslationsStateReducer { isOfferTranslate = isOfferTranslate, isExpectedTranslate = isExpectedTranslate, isTranslated = true, + isTranslateProcessing = false, translationError = null, translationEngineState = action.translationEngineState, ) @@ -114,7 +115,6 @@ internal object TranslationsStateReducer { // The isTranslated state will be identified on a translation state change. state.copyWithTranslationsState(action.tabId) { it.copy( - isTranslateProcessing = false, translationError = null, ) } diff --git a/mobile/android/android-components/components/browser/state/src/test/java/mozilla/components/browser/state/action/TranslationsActionTest.kt b/mobile/android/android-components/components/browser/state/src/test/java/mozilla/components/browser/state/action/TranslationsActionTest.kt index 3a90ae41db7e..430c8cf804ed 100644 --- a/mobile/android/android-components/components/browser/state/src/test/java/mozilla/components/browser/state/action/TranslationsActionTest.kt +++ b/mobile/android/android-components/components/browser/state/src/test/java/mozilla/components/browser/state/action/TranslationsActionTest.kt @@ -93,6 +93,12 @@ class TranslationsActionTest { assertNull(tabState().translationsState.translationEngineState) assertFalse(tabState().translationsState.isTranslated) assertFalse(tabState().translationsState.isExpectedTranslate) + assertFalse(tabState().translationsState.isTranslateProcessing) + + // Set an initial state for is translate processing via a translation request: + store.dispatch(TranslationsAction.TranslateAction(tabId = tab.id, "en", "es", null)) + .joinBlocking() + assertTrue(tabState().translationsState.isTranslateProcessing) val translatedEngineState = TranslationEngineState( detectedLanguages = DetectedLanguages(documentLangTag = "es", supportedDocumentLang = true, userPreferredLangTag = "en"), @@ -109,6 +115,7 @@ class TranslationsActionTest { assertEquals(translatedEngineState, tabState().translationsState.translationEngineState) assertTrue(tabState().translationsState.isTranslated) assertFalse(tabState().translationsState.isExpectedTranslate) + assertFalse(tabState().translationsState.isTranslateProcessing) val nonTranslatedEngineState = TranslationEngineState( detectedLanguages = DetectedLanguages(documentLangTag = "es", supportedDocumentLang = true, userPreferredLangTag = "en"), @@ -269,7 +276,6 @@ class TranslationsActionTest { // Action success store.dispatch(TranslationsAction.TranslateSuccessAction(tabId = tab.id, operation = TranslationOperation.TRANSLATE)) .joinBlocking() - assertEquals(false, tabState().translationsState.isTranslateProcessing) assertEquals(null, tabState().translationsState.translationError) } @@ -393,6 +399,12 @@ class TranslationsActionTest { fun `WHEN a TranslateExceptionAction is dispatched due to an error THEN update the error condition according to the operation`() { // Initial state assertEquals(null, tabState().translationsState.translationError) + assertFalse(tabState().translationsState.isTranslateProcessing) + + // Set an initial state for is translate processing via a translation request: + store.dispatch(TranslationsAction.TranslateAction(tabId = tab.id, "en", "es", null)) + .joinBlocking() + assertTrue(tabState().translationsState.isTranslateProcessing) // TRANSLATE usage val translateError = TranslationError.CouldNotLoadLanguagesError(null) @@ -404,6 +416,8 @@ class TranslationsActionTest { ), ).joinBlocking() assertEquals(translateError, tabState().translationsState.translationError) + // A translate error should clear this state + assertFalse(tabState().translationsState.isTranslateProcessing) // RESTORE usage val restoreError = TranslationError.CouldNotRestoreError(null)