diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceScreen.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceScreen.kt index 6c517e9a8d..e64ce67985 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceScreen.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceScreen.kt @@ -61,6 +61,7 @@ fun LoginWithDeviceScreen( ) { val state by viewModel.stateFlow.collectAsStateWithLifecycle() val context = LocalContext.current + val resources = context.resources EventsEffect(viewModel = viewModel) { event -> when (event) { LoginWithDeviceEvent.NavigateBack -> onNavigateBack() @@ -73,7 +74,7 @@ fun LoginWithDeviceScreen( } is LoginWithDeviceEvent.ShowToast -> { - Toast.makeText(context, event.message, Toast.LENGTH_SHORT).show() + Toast.makeText(context, event.message(resources), Toast.LENGTH_SHORT).show() } } } diff --git a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceViewModel.kt b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceViewModel.kt index 80e7d28d75..7382e09471 100644 --- a/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceViewModel.kt +++ b/app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceViewModel.kt @@ -13,6 +13,7 @@ import com.x8bit.bitwarden.data.auth.repository.util.generateUriForCaptcha import com.x8bit.bitwarden.ui.auth.feature.loginwithdevice.model.LoginWithDeviceType import com.x8bit.bitwarden.ui.auth.feature.loginwithdevice.util.toAuthRequestType import com.x8bit.bitwarden.ui.platform.base.BaseViewModel +import com.x8bit.bitwarden.ui.platform.base.util.BackgroundEvent import com.x8bit.bitwarden.ui.platform.base.util.Text import com.x8bit.bitwarden.ui.platform.base.util.asText import dagger.hilt.android.lifecycle.HiltViewModel @@ -252,6 +253,7 @@ class LoginWithDeviceViewModel @Inject constructor( } is LoginResult.Success -> { + sendEvent(LoginWithDeviceEvent.ShowToast(R.string.login_approved.asText())) mutableStateFlow.update { it.copy(dialogState = null) } } } @@ -494,8 +496,8 @@ sealed class LoginWithDeviceEvent { * Shows a toast with the given [message]. */ data class ShowToast( - val message: String, - ) : LoginWithDeviceEvent() + val message: Text, + ) : LoginWithDeviceEvent(), BackgroundEvent } /** diff --git a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceViewModelTest.kt b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceViewModelTest.kt index 8b67e2f609..0686d46fef 100644 --- a/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceViewModelTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceViewModelTest.kt @@ -162,8 +162,8 @@ class LoginWithDeviceViewModelTest : BaseViewModelTest() { ) } returns LoginResult.Success val viewModel = createViewModel() - viewModel.stateFlow.test { - assertEquals(DEFAULT_STATE, awaitItem()) + viewModel.stateEventFlow(backgroundScope) { stateFlow, eventFlow -> + assertEquals(DEFAULT_STATE, stateFlow.awaitItem()) mutableCreateAuthRequestWithUpdatesFlow.tryEmit( CreateAuthRequestResult.Success( authRequest = AUTH_REQUEST, @@ -181,7 +181,7 @@ class LoginWithDeviceViewModelTest : BaseViewModelTest() { message = R.string.logging_in.asText(), ), ), - awaitItem(), + stateFlow.awaitItem(), ) assertEquals( DEFAULT_STATE.copy( @@ -191,7 +191,11 @@ class LoginWithDeviceViewModelTest : BaseViewModelTest() { dialogState = null, loginData = DEFAULT_LOGIN_DATA, ), - awaitItem(), + stateFlow.awaitItem(), + ) + assertEquals( + LoginWithDeviceEvent.ShowToast(R.string.login_approved.asText()), + eventFlow.awaitItem(), ) } @@ -227,8 +231,8 @@ class LoginWithDeviceViewModelTest : BaseViewModelTest() { ) val viewModel = createViewModel(initialState) - viewModel.stateFlow.test { - assertEquals(initialState, awaitItem()) + viewModel.stateEventFlow(backgroundScope) { stateFlow, eventFlow -> + assertEquals(initialState, stateFlow.awaitItem()) mutableCreateAuthRequestWithUpdatesFlow.tryEmit( CreateAuthRequestResult.Success( authRequest = AUTH_REQUEST, @@ -246,7 +250,7 @@ class LoginWithDeviceViewModelTest : BaseViewModelTest() { ), loginData = DEFAULT_LOGIN_DATA, ), - awaitItem(), + stateFlow.awaitItem(), ) assertEquals( initialState.copy( @@ -256,7 +260,11 @@ class LoginWithDeviceViewModelTest : BaseViewModelTest() { dialogState = null, loginData = DEFAULT_LOGIN_DATA, ), - awaitItem(), + stateFlow.awaitItem(), + ) + assertEquals( + LoginWithDeviceEvent.ShowToast(R.string.login_approved.asText()), + eventFlow.awaitItem(), ) }