Skip to content

Commit 245fcd7

Browse files
PM-14963: Add toast when login via device succeeds (#4351)
1 parent dbeb00b commit 245fcd7

File tree

3 files changed

+22
-11
lines changed

3 files changed

+22
-11
lines changed

app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ fun LoginWithDeviceScreen(
6161
) {
6262
val state by viewModel.stateFlow.collectAsStateWithLifecycle()
6363
val context = LocalContext.current
64+
val resources = context.resources
6465
EventsEffect(viewModel = viewModel) { event ->
6566
when (event) {
6667
LoginWithDeviceEvent.NavigateBack -> onNavigateBack()
@@ -73,7 +74,7 @@ fun LoginWithDeviceScreen(
7374
}
7475

7576
is LoginWithDeviceEvent.ShowToast -> {
76-
Toast.makeText(context, event.message, Toast.LENGTH_SHORT).show()
77+
Toast.makeText(context, event.message(resources), Toast.LENGTH_SHORT).show()
7778
}
7879
}
7980
}

app/src/main/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceViewModel.kt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.x8bit.bitwarden.data.auth.repository.util.generateUriForCaptcha
1313
import com.x8bit.bitwarden.ui.auth.feature.loginwithdevice.model.LoginWithDeviceType
1414
import com.x8bit.bitwarden.ui.auth.feature.loginwithdevice.util.toAuthRequestType
1515
import com.x8bit.bitwarden.ui.platform.base.BaseViewModel
16+
import com.x8bit.bitwarden.ui.platform.base.util.BackgroundEvent
1617
import com.x8bit.bitwarden.ui.platform.base.util.Text
1718
import com.x8bit.bitwarden.ui.platform.base.util.asText
1819
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -252,6 +253,7 @@ class LoginWithDeviceViewModel @Inject constructor(
252253
}
253254

254255
is LoginResult.Success -> {
256+
sendEvent(LoginWithDeviceEvent.ShowToast(R.string.login_approved.asText()))
255257
mutableStateFlow.update { it.copy(dialogState = null) }
256258
}
257259
}
@@ -494,8 +496,8 @@ sealed class LoginWithDeviceEvent {
494496
* Shows a toast with the given [message].
495497
*/
496498
data class ShowToast(
497-
val message: String,
498-
) : LoginWithDeviceEvent()
499+
val message: Text,
500+
) : LoginWithDeviceEvent(), BackgroundEvent
499501
}
500502

501503
/**

app/src/test/java/com/x8bit/bitwarden/ui/auth/feature/loginwithdevice/LoginWithDeviceViewModelTest.kt

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,8 @@ class LoginWithDeviceViewModelTest : BaseViewModelTest() {
162162
)
163163
} returns LoginResult.Success
164164
val viewModel = createViewModel()
165-
viewModel.stateFlow.test {
166-
assertEquals(DEFAULT_STATE, awaitItem())
165+
viewModel.stateEventFlow(backgroundScope) { stateFlow, eventFlow ->
166+
assertEquals(DEFAULT_STATE, stateFlow.awaitItem())
167167
mutableCreateAuthRequestWithUpdatesFlow.tryEmit(
168168
CreateAuthRequestResult.Success(
169169
authRequest = AUTH_REQUEST,
@@ -181,7 +181,7 @@ class LoginWithDeviceViewModelTest : BaseViewModelTest() {
181181
message = R.string.logging_in.asText(),
182182
),
183183
),
184-
awaitItem(),
184+
stateFlow.awaitItem(),
185185
)
186186
assertEquals(
187187
DEFAULT_STATE.copy(
@@ -191,7 +191,11 @@ class LoginWithDeviceViewModelTest : BaseViewModelTest() {
191191
dialogState = null,
192192
loginData = DEFAULT_LOGIN_DATA,
193193
),
194-
awaitItem(),
194+
stateFlow.awaitItem(),
195+
)
196+
assertEquals(
197+
LoginWithDeviceEvent.ShowToast(R.string.login_approved.asText()),
198+
eventFlow.awaitItem(),
195199
)
196200
}
197201

@@ -227,8 +231,8 @@ class LoginWithDeviceViewModelTest : BaseViewModelTest() {
227231
)
228232
val viewModel = createViewModel(initialState)
229233

230-
viewModel.stateFlow.test {
231-
assertEquals(initialState, awaitItem())
234+
viewModel.stateEventFlow(backgroundScope) { stateFlow, eventFlow ->
235+
assertEquals(initialState, stateFlow.awaitItem())
232236
mutableCreateAuthRequestWithUpdatesFlow.tryEmit(
233237
CreateAuthRequestResult.Success(
234238
authRequest = AUTH_REQUEST,
@@ -246,7 +250,7 @@ class LoginWithDeviceViewModelTest : BaseViewModelTest() {
246250
),
247251
loginData = DEFAULT_LOGIN_DATA,
248252
),
249-
awaitItem(),
253+
stateFlow.awaitItem(),
250254
)
251255
assertEquals(
252256
initialState.copy(
@@ -256,7 +260,11 @@ class LoginWithDeviceViewModelTest : BaseViewModelTest() {
256260
dialogState = null,
257261
loginData = DEFAULT_LOGIN_DATA,
258262
),
259-
awaitItem(),
263+
stateFlow.awaitItem(),
264+
)
265+
assertEquals(
266+
LoginWithDeviceEvent.ShowToast(R.string.login_approved.asText()),
267+
eventFlow.awaitItem(),
260268
)
261269
}
262270

0 commit comments

Comments
 (0)