diff --git a/app/src/main/java/com/x8bit/bitwarden/data/platform/manager/FirstTimeActionManagerImpl.kt b/app/src/main/java/com/x8bit/bitwarden/data/platform/manager/FirstTimeActionManagerImpl.kt index e3f919dfe0..43b195e8f9 100644 --- a/app/src/main/java/com/x8bit/bitwarden/data/platform/manager/FirstTimeActionManagerImpl.kt +++ b/app/src/main/java/com/x8bit/bitwarden/data/platform/manager/FirstTimeActionManagerImpl.kt @@ -311,7 +311,9 @@ class FirstTimeActionManagerImpl @Inject constructor( flow = this, flow2 = vaultDiskSource.getCiphers(activeUserId), ) { currentValue, ciphers -> - currentValue && ciphers.none { it.login != null } + currentValue && ciphers.none { + it.login != null && it.organizationId == null + } } } .distinctUntilChanged() diff --git a/app/src/test/java/com/x8bit/bitwarden/data/platform/manager/FirstTimeActionManagerTest.kt b/app/src/test/java/com/x8bit/bitwarden/data/platform/manager/FirstTimeActionManagerTest.kt index 866293e945..b51da39078 100644 --- a/app/src/test/java/com/x8bit/bitwarden/data/platform/manager/FirstTimeActionManagerTest.kt +++ b/app/src/test/java/com/x8bit/bitwarden/data/platform/manager/FirstTimeActionManagerTest.kt @@ -330,9 +330,11 @@ class FirstTimeActionManagerTest { runTest { val mockJsonWithNoLogin = mockk { every { login } returns null + every { organizationId } returns null } val mockJsonWithLogin = mockk { every { login } returns mockk() + every { organizationId } returns null } fakeAuthDiskSource.userState = MOCK_USER_STATE // Enable feature flag so flow emits updates from disk. @@ -393,9 +395,11 @@ class FirstTimeActionManagerTest { runTest { val mockJsonWithNoLogin = mockk { every { login } returns null + every { organizationId } returns null } val mockJsonWithLogin = mockk { every { login } returns mockk() + every { organizationId } returns null } fakeAuthDiskSource.userState = MOCK_USER_STATE // Enable feature flag so flow emits updates from disk. @@ -418,6 +422,24 @@ class FirstTimeActionManagerTest { } } + @Test + fun `if there are login ciphers attached to an organization we should show coach marks`() = + runTest { + val mockJsonWithNoLoginAndWithOrganizationId = mockk { + every { login } returns mockk() + every { organizationId } returns "1234" + } + fakeAuthDiskSource.userState = MOCK_USER_STATE + // Enable feature flag so flow emits updates from disk. + mutableOnboardingFeatureFlow.update { true } + mutableCiphersListFlow.update { + listOf(mockJsonWithNoLoginAndWithOrganizationId) + } + firstTimeActionManager.shouldShowGeneratorCoachMarkFlow.test { + assertTrue(awaitItem()) + } + } + @Suppress("MaxLineLength") @Test fun `markCoachMarkTourCompleted for the GENERATOR type sets the value to true in the disk source for should show generator coach mark`() {