mirror of
https://github.com/bitwarden/android.git
synced 2025-12-10 20:07:59 -06:00
[PM-24411] Extract Authenticator functions from IntentManager (#5702)
This commit is contained in:
parent
b9cc664efa
commit
b0b4379307
@ -1,9 +1,6 @@
|
||||
package com.bitwarden.authenticator.ui.authenticator.feature.itemlisting
|
||||
|
||||
import android.Manifest
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.provider.Settings
|
||||
import android.widget.Toast
|
||||
import androidx.compose.foundation.Image
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
@ -83,6 +80,8 @@ import com.bitwarden.authenticator.ui.platform.composition.LocalPermissionsManag
|
||||
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.permissions.PermissionsManager
|
||||
import com.bitwarden.authenticator.ui.platform.theme.Typography
|
||||
import com.bitwarden.authenticator.ui.platform.util.startAuthenticatorAppSettings
|
||||
import com.bitwarden.authenticator.ui.platform.util.startBitwardenAccountSettings
|
||||
import com.bitwarden.ui.platform.base.util.EventsEffect
|
||||
import com.bitwarden.ui.platform.components.util.rememberVectorPainter
|
||||
import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme
|
||||
@ -139,10 +138,7 @@ fun ItemListingScreen(
|
||||
|
||||
is ItemListingEvent.NavigateToEditItem -> onNavigateToEditItemScreen(event.id)
|
||||
is ItemListingEvent.NavigateToAppSettings -> {
|
||||
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
|
||||
intent.data = Uri.parse("package:" + context.packageName)
|
||||
|
||||
intentManager.startActivity(intent = intent)
|
||||
intentManager.startAuthenticatorAppSettings(context)
|
||||
}
|
||||
|
||||
ItemListingEvent.NavigateToBitwardenListing -> {
|
||||
@ -156,7 +152,7 @@ fun ItemListingScreen(
|
||||
}
|
||||
|
||||
ItemListingEvent.NavigateToBitwardenSettings -> {
|
||||
intentManager.startMainBitwardenAppAccountSettings()
|
||||
intentManager.startBitwardenAccountSettings()
|
||||
}
|
||||
|
||||
is ItemListingEvent.ShowFirstTimeSyncSnackbar -> {
|
||||
|
||||
@ -19,16 +19,6 @@ interface IntentManager {
|
||||
*/
|
||||
fun startActivity(intent: Intent)
|
||||
|
||||
/**
|
||||
* Start the main Bitwarden app with scheme that routes to the account security screen.
|
||||
*/
|
||||
fun startMainBitwardenAppAccountSettings()
|
||||
|
||||
/**
|
||||
* Starts the application's settings activity.
|
||||
*/
|
||||
fun startApplicationDetailsSettingsActivity()
|
||||
|
||||
/**
|
||||
* Start an activity to view the given [uri] in an external browser.
|
||||
*/
|
||||
|
||||
@ -6,7 +6,6 @@ import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.provider.MediaStore
|
||||
import android.provider.Settings
|
||||
import android.webkit.MimeTypeMap
|
||||
import androidx.activity.compose.ManagedActivityResultLauncher
|
||||
import androidx.activity.compose.rememberLauncherForActivityResult
|
||||
@ -14,7 +13,6 @@ import androidx.activity.result.ActivityResult
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.net.toUri
|
||||
import com.bitwarden.annotation.OmitFromCoverage
|
||||
import com.bitwarden.ui.platform.model.FileData
|
||||
import com.bitwarden.ui.platform.resource.BitwardenString
|
||||
@ -30,7 +28,7 @@ class IntentManagerImpl(
|
||||
override fun startActivity(intent: Intent) {
|
||||
try {
|
||||
context.startActivity(intent)
|
||||
} catch (e: ActivityNotFoundException) {
|
||||
} catch (_: ActivityNotFoundException) {
|
||||
// no-op
|
||||
}
|
||||
}
|
||||
@ -75,12 +73,6 @@ class IntentManagerImpl(
|
||||
putExtra(Intent.EXTRA_TITLE, fileName)
|
||||
}
|
||||
|
||||
override fun startApplicationDetailsSettingsActivity() {
|
||||
val intent = Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
|
||||
intent.data = "package:$context.packageName".toUri()
|
||||
startActivity(intent = intent)
|
||||
}
|
||||
|
||||
override fun launchUri(uri: Uri) {
|
||||
val newUri = if (uri.scheme == null) {
|
||||
uri.buildUpon().scheme("https").build()
|
||||
@ -90,17 +82,6 @@ class IntentManagerImpl(
|
||||
startActivity(Intent(Intent.ACTION_VIEW, newUri))
|
||||
}
|
||||
|
||||
override fun startMainBitwardenAppAccountSettings() {
|
||||
startActivity(
|
||||
Intent(
|
||||
Intent.ACTION_VIEW,
|
||||
"bitwarden://settings/account_security".toUri(),
|
||||
).apply {
|
||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
private fun getLocalFileData(uri: Uri): FileData? =
|
||||
context
|
||||
.contentResolver
|
||||
|
||||
@ -0,0 +1,34 @@
|
||||
@file:OmitFromCoverage
|
||||
|
||||
package com.bitwarden.authenticator.ui.platform.util
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.provider.Settings
|
||||
import androidx.core.net.toUri
|
||||
import com.bitwarden.annotation.OmitFromCoverage
|
||||
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManager
|
||||
|
||||
/**
|
||||
* Launches the authenticator app settings.
|
||||
*/
|
||||
fun IntentManager.startAuthenticatorAppSettings(context: Context) {
|
||||
startActivity(
|
||||
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
|
||||
.setData("package:${context.packageName}".toUri()),
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Launches the Bitwarden account settings.
|
||||
*/
|
||||
fun IntentManager.startBitwardenAccountSettings() {
|
||||
startActivity(
|
||||
Intent(
|
||||
Intent.ACTION_VIEW,
|
||||
"bitwarden://settings/account_security".toUri(),
|
||||
).apply {
|
||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
},
|
||||
)
|
||||
}
|
||||
@ -15,6 +15,7 @@ import com.bitwarden.authenticator.ui.authenticator.feature.model.VerificationCo
|
||||
import com.bitwarden.authenticator.ui.platform.base.AuthenticatorComposeTest
|
||||
import com.bitwarden.authenticator.ui.platform.manager.intent.IntentManager
|
||||
import com.bitwarden.authenticator.ui.platform.manager.permissions.FakePermissionManager
|
||||
import com.bitwarden.authenticator.ui.platform.util.startBitwardenAccountSettings
|
||||
import com.bitwarden.core.data.repository.util.bufferedMutableSharedFlow
|
||||
import com.bitwarden.ui.platform.feature.settings.appearance.model.AppTheme
|
||||
import com.bitwarden.ui.util.asText
|
||||
@ -23,6 +24,7 @@ import com.bitwarden.ui.util.onNodeWithTextAfterScroll
|
||||
import io.mockk.every
|
||||
import io.mockk.just
|
||||
import io.mockk.mockk
|
||||
import io.mockk.mockkStatic
|
||||
import io.mockk.runs
|
||||
import io.mockk.verify
|
||||
import kotlinx.coroutines.flow.MutableStateFlow
|
||||
@ -181,9 +183,11 @@ class ItemListingScreenTest : AuthenticatorComposeTest() {
|
||||
@Test
|
||||
@Suppress("MaxLineLength")
|
||||
fun `on NavigateToBitwardenSettings receive should launch bitwarden account security deep link`() {
|
||||
every { intentManager.startMainBitwardenAppAccountSettings() } just runs
|
||||
mutableEventFlow.tryEmit(ItemListingEvent.NavigateToBitwardenSettings)
|
||||
verify { intentManager.startMainBitwardenAppAccountSettings() }
|
||||
mockkStatic(IntentManager::startBitwardenAccountSettings) {
|
||||
every { intentManager.startBitwardenAccountSettings() } just runs
|
||||
mutableEventFlow.tryEmit(ItemListingEvent.NavigateToBitwardenSettings)
|
||||
verify { intentManager.startBitwardenAccountSettings() }
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user