diff --git a/app/src/main/java/com/tangem/tap/common/extensions/Activity.kt b/app/src/main/java/com/tangem/tap/common/extensions/Activity.kt deleted file mode 100644 index ec4f3737f0..0000000000 --- a/app/src/main/java/com/tangem/tap/common/extensions/Activity.kt +++ /dev/null @@ -1,64 +0,0 @@ -package com.tangem.tap.common.extensions - -import android.app.Activity -import android.content.Intent -import android.net.Uri -import androidx.core.app.ShareCompat -import androidx.core.content.ContextCompat -import androidx.core.content.FileProvider -import java.io.File - -/** - * required since targetAndroid=30 - * - * - * - * - * - * - */ -@Deprecated("Use EmailSender instead") -fun Activity.sendEmail( - email: String, - subject: String, - message: String, - file: File? = null, - onFail: ((Exception) -> Unit)? = null, -) { - fun createEmailShareIntent(recipient: String, subject: String, text: String, file: File? = null): Intent { - val builder = ShareCompat.IntentBuilder.from(this) - .setType("message/rfc822") - .setEmailTo(arrayOf(recipient)) - .setSubject(subject) - .setText(text) - file?.let { builder.setStream(FileProvider.getUriForFile(this, "$packageName.provider", it)) } - return builder.intent - } - - val originalIntent = createEmailShareIntent(email, subject, message, file) - val emailFilterIntent = Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:")) - - val originalIntentResults = packageManager.queryIntentActivities(originalIntent, 0) - val emailFilterIntentResults = packageManager.queryIntentActivities(emailFilterIntent, 0) - - val targetedIntents = originalIntentResults - .filter { originalResult -> - emailFilterIntentResults.any { - originalResult.activityInfo.packageName == it.activityInfo.packageName - } - } - .map { - createEmailShareIntent(email, subject, message, file).apply { - setPackage(it.activityInfo.packageName) - } - } - .toMutableList() - try { - val chooserIntent = Intent.createChooser(targetedIntents.removeAt(0), "Send mail...") - chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedIntents.toTypedArray()) - chooserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - ContextCompat.startActivity(this, chooserIntent, null) - } catch (ex: Exception) { - onFail?.invoke(ex) - } -} \ No newline at end of file diff --git a/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/CameraDeniedBottomSheetConfig.kt b/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/CameraDeniedBottomSheetConfig.kt index 3d23eb1813..22e7790a45 100644 --- a/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/CameraDeniedBottomSheetConfig.kt +++ b/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/CameraDeniedBottomSheetConfig.kt @@ -3,6 +3,7 @@ package com.tangem.feature.qrscanning.presentation import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfigContent data class CameraDeniedBottomSheetConfig( + val onSettingsClick: () -> Unit, val onGalleryClick: () -> Unit, val onCancelClick: () -> Unit, ) : TangemBottomSheetConfigContent \ No newline at end of file diff --git a/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/QrScanningCameraDeniedBottomSheet.kt b/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/QrScanningCameraDeniedBottomSheet.kt index 7db2a37be4..ec162be095 100644 --- a/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/QrScanningCameraDeniedBottomSheet.kt +++ b/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/QrScanningCameraDeniedBottomSheet.kt @@ -1,9 +1,6 @@ package com.tangem.feature.qrscanning.presentation -import android.content.Intent import android.content.res.Configuration -import android.net.Uri -import android.provider.Settings import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding @@ -11,9 +8,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview -import androidx.core.content.ContextCompat import com.tangem.core.ui.components.SimpleSettingsRow import com.tangem.core.ui.components.bottomsheets.TangemBottomSheet import com.tangem.core.ui.components.bottomsheets.TangemBottomSheetConfig @@ -36,18 +31,11 @@ fun CameraDeniedBottomSheet(config: TangemBottomSheetConfig) { @Composable private fun CameraDeniedBottomSheet(content: CameraDeniedBottomSheetConfig) { - val context = LocalContext.current Column { SimpleSettingsRow( title = stringResourceSafe(id = R.string.qr_scanner_camera_denied_settings_button), icon = R.drawable.ic_settings_24, - onItemsClick = { - val intent = Intent( - Settings.ACTION_APPLICATION_DETAILS_SETTINGS, - Uri.fromParts("package", context.packageName, null), - ) - ContextCompat.startActivity(context, intent, null) - }, + onItemsClick = content.onSettingsClick, ) SimpleSettingsRow( title = stringResourceSafe(id = R.string.qr_scanner_camera_denied_gallery_button), @@ -98,6 +86,7 @@ private fun Preview_CameraDeniedBottomSheet() { isShow = true, onDismissRequest = {}, content = CameraDeniedBottomSheetConfig( + onSettingsClick = {}, onCancelClick = {}, onGalleryClick = {}, ), diff --git a/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/transformers/ShowCameraDeniedBottomSheetTransformer.kt b/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/transformers/ShowCameraDeniedBottomSheetTransformer.kt index 5677a023f8..340c70fdd8 100644 --- a/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/transformers/ShowCameraDeniedBottomSheetTransformer.kt +++ b/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/presentation/transformers/ShowCameraDeniedBottomSheetTransformer.kt @@ -15,6 +15,7 @@ internal class ShowCameraDeniedBottomSheetTransformer( isShow = true, onDismissRequest = clickIntents::onBackClick, content = CameraDeniedBottomSheetConfig( + onSettingsClick = clickIntents::onSettingsClick, onCancelClick = clickIntents::onBackClick, onGalleryClick = clickIntents::onGalleryClicked, ), diff --git a/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/viewmodel/QrScanningClickIntents.kt b/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/viewmodel/QrScanningClickIntents.kt index 57bc19b305..cc5dd3518a 100644 --- a/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/viewmodel/QrScanningClickIntents.kt +++ b/features/qr-scanning/impl/src/main/java/com/tangem/feature/qrscanning/viewmodel/QrScanningClickIntents.kt @@ -1,5 +1,6 @@ package com.tangem.feature.qrscanning.viewmodel +import com.tangem.core.navigation.settings.SettingsManager import com.tangem.domain.qrscanning.usecases.EmitQrScannedEventUseCase import com.tangem.feature.qrscanning.presentation.QrScanningStateController import com.tangem.feature.qrscanning.presentation.transformers.DismissBottomSheetTransformer @@ -20,12 +21,15 @@ internal interface QrScanningClickIntents { fun onQrScanned(qrCode: String) fun onGalleryClicked() + + fun onSettingsClick() } @ViewModelScoped internal class QrScanningClickIntentsImplementor @Inject constructor( private val stateHolder: QrScanningStateController, private val emitQrScannedEventUseCase: EmitQrScannedEventUseCase, + private val settingsManager: SettingsManager, private val dispatcher: CoroutineDispatcherProvider, ) : BaseQrScanningClickIntents(), QrScanningClickIntents { @@ -56,4 +60,8 @@ internal class QrScanningClickIntentsImplementor @Inject constructor( stateHolder.update(DismissBottomSheetTransformer()) } } + + override fun onSettingsClick() { + settingsManager.openSettings() + } } \ No newline at end of file