[PM-13626] Remember last opened view for 5 minutes (#4574)

Signed-off-by: Andre Rosado <arosado@bitwarden.com>
Co-authored-by: Dave Severns <dseverns@livefront.com>
This commit is contained in:
aj-rosado
2025-01-28 19:41:11 +00:00
committed by GitHub
parent 3f1f9983e3
commit fe06bf48e7
41 changed files with 1042 additions and 36 deletions

View File

@@ -21,8 +21,8 @@ import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2CreateCredentialReques
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2CredentialAssertionRequest
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2GetCredentialsRequest
import com.x8bit.bitwarden.data.autofill.fido2.model.Fido2ValidateOriginResult
import com.x8bit.bitwarden.data.autofill.fido2.model.createMockFido2CredentialAssertionRequest
import com.x8bit.bitwarden.data.autofill.fido2.model.createMockFido2CreateCredentialRequest
import com.x8bit.bitwarden.data.autofill.fido2.model.createMockFido2CredentialAssertionRequest
import com.x8bit.bitwarden.data.autofill.fido2.model.createMockFido2GetCredentialsRequest
import com.x8bit.bitwarden.data.autofill.fido2.util.getFido2AssertionRequestOrNull
import com.x8bit.bitwarden.data.autofill.fido2.util.getFido2CreateCredentialRequestOrNull
@@ -34,9 +34,11 @@ import com.x8bit.bitwarden.data.autofill.model.AutofillSelectionData
import com.x8bit.bitwarden.data.autofill.util.getAutofillSaveItemOrNull
import com.x8bit.bitwarden.data.autofill.util.getAutofillSelectionDataOrNull
import com.x8bit.bitwarden.data.platform.base.FakeDispatcherManager
import com.x8bit.bitwarden.data.platform.manager.AppResumeManager
import com.x8bit.bitwarden.data.platform.manager.SpecialCircumstanceManager
import com.x8bit.bitwarden.data.platform.manager.SpecialCircumstanceManagerImpl
import com.x8bit.bitwarden.data.platform.manager.garbage.GarbageCollectionManager
import com.x8bit.bitwarden.data.platform.manager.model.AppResumeScreenData
import com.x8bit.bitwarden.data.platform.manager.model.CompleteRegistrationData
import com.x8bit.bitwarden.data.platform.manager.model.FirstTimeState
import com.x8bit.bitwarden.data.platform.manager.model.PasswordlessRequestData
@@ -130,6 +132,11 @@ class MainViewModelTest : BaseViewModelTest() {
}
private val savedStateHandle = SavedStateHandle()
private val appResumeManager: AppResumeManager = mockk {
every { setResumeScreen(any()) } just runs
every { clearResumeScreen() } just runs
}
@BeforeEach
fun setup() {
mockkStatic(
@@ -1061,6 +1068,28 @@ class MainViewModelTest : BaseViewModelTest() {
verify { authRepository.switchAccount(userId) }
}
@Suppress("MaxLineLength")
@Test
fun `on ResumeScreenDataReceived with null value, should call AppResumeManager clearResumeScreen`() {
val viewModel = createViewModel()
viewModel.trySendAction(
MainAction.ResumeScreenDataReceived(screenResumeData = null),
)
verify { appResumeManager.clearResumeScreen() }
}
@Suppress("MaxLineLength")
@Test
fun `on ResumeScreenDataReceived with data value, should call AppResumeManager setResumeScreen`() {
val viewModel = createViewModel()
viewModel.trySendAction(
MainAction.ResumeScreenDataReceived(screenResumeData = AppResumeScreenData.GeneratorScreen),
)
verify { appResumeManager.setResumeScreen(AppResumeScreenData.GeneratorScreen) }
}
private fun createViewModel(
initialSpecialCircumstance: SpecialCircumstance? = null,
) = MainViewModel(
@@ -1079,6 +1108,7 @@ class MainViewModelTest : BaseViewModelTest() {
savedStateHandle = savedStateHandle.apply {
set(SPECIAL_CIRCUMSTANCE_KEY, initialSpecialCircumstance)
},
appResumeManager = appResumeManager,
)
}