From e79d1c1290e012ef24c0a3edb6acd5aaba1667e0 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 25 Sep 2024 13:48:17 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../navigation/email/AndroidEmailSender.kt | 31 ++++++++++++------- .../navigation/email/EmailSenderModule.kt | 18 +++++++++++ .../core/navigation/di/EmailSenderModule.kt | 22 ------------- 3 files changed, 37 insertions(+), 34 deletions(-) rename {core/navigation/src/main/java/com/tangem => app/src/main/java/com/tangem/tap}/core/navigation/email/AndroidEmailSender.kt (61%) create mode 100644 app/src/main/java/com/tangem/tap/di/core/navigation/email/EmailSenderModule.kt delete mode 100644 core/navigation/src/main/java/com/tangem/core/navigation/di/EmailSenderModule.kt diff --git a/core/navigation/src/main/java/com/tangem/core/navigation/email/AndroidEmailSender.kt b/app/src/main/java/com/tangem/tap/core/navigation/email/AndroidEmailSender.kt similarity index 61% rename from core/navigation/src/main/java/com/tangem/core/navigation/email/AndroidEmailSender.kt rename to app/src/main/java/com/tangem/tap/core/navigation/email/AndroidEmailSender.kt index d6fe4b6d35..e38ae3919c 100644 --- a/core/navigation/src/main/java/com/tangem/core/navigation/email/AndroidEmailSender.kt +++ b/app/src/main/java/com/tangem/tap/core/navigation/email/AndroidEmailSender.kt @@ -1,27 +1,34 @@ -package com.tangem.core.navigation.email +package com.tangem.tap.core.navigation.email -import android.content.Context import android.content.Intent import android.net.Uri +import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ShareCompat import androidx.core.content.ContextCompat import androidx.core.content.FileProvider +import com.tangem.core.navigation.email.EmailSender +import com.tangem.tap.foregroundActivityObserver import timber.log.Timber /** * Implementation of email sender for Android * - * @property context context - * [REDACTED_AUTHOR] */ -internal class AndroidEmailSender(private val context: Context) : EmailSender { +internal class AndroidEmailSender : EmailSender { override fun send(email: EmailSender.Email, onFail: ((Exception) -> Unit)?) { - val originalIntent = createEmailShareIntent(email) + val activity = foregroundActivityObserver.foregroundActivity + + if (activity == null) { + Timber.e("Foreground activity not found") + return + } + + val originalIntent = createEmailShareIntent(activity, email) val emailFilterIntent = Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:")) - val packageManager = context.packageManager + val packageManager = activity.packageManager val originalIntentResults = packageManager.queryIntentActivities(originalIntent, 0) val emailFilterIntentResults = packageManager.queryIntentActivities(emailFilterIntent, 0) @@ -32,7 +39,7 @@ internal class AndroidEmailSender(private val context: Context) : EmailSender { } } .map { - createEmailShareIntent(email).apply { setPackage(it.activityInfo.packageName) } + createEmailShareIntent(activity, email).apply { setPackage(it.activityInfo.packageName) } } .toMutableList() @@ -41,14 +48,14 @@ internal class AndroidEmailSender(private val context: Context) : EmailSender { putExtra(Intent.EXTRA_INITIAL_INTENTS, targetedIntents.toTypedArray()) } - ContextCompat.startActivity(context, chooserIntent, null) + ContextCompat.startActivity(activity, chooserIntent, null) } catch (ex: Exception) { Timber.e("Failed to send email: $ex") } } - private fun createEmailShareIntent(email: EmailSender.Email): Intent { - val builder = ShareCompat.IntentBuilder(context) + private fun createEmailShareIntent(activity: AppCompatActivity, email: EmailSender.Email): Intent { + val builder = ShareCompat.IntentBuilder(activity) .setType("message/rfc822") .setEmailTo(arrayOf(email.address)) .setSubject(email.subject) @@ -56,7 +63,7 @@ internal class AndroidEmailSender(private val context: Context) : EmailSender { email.attachment?.let { builder.setStream( - FileProvider.getUriForFile(context, "${context.packageName}.provider", it), + FileProvider.getUriForFile(activity, "${activity.packageName}.provider", it), ) } diff --git a/app/src/main/java/com/tangem/tap/di/core/navigation/email/EmailSenderModule.kt b/app/src/main/java/com/tangem/tap/di/core/navigation/email/EmailSenderModule.kt new file mode 100644 index 0000000000..b986cfe46d --- /dev/null +++ b/app/src/main/java/com/tangem/tap/di/core/navigation/email/EmailSenderModule.kt @@ -0,0 +1,18 @@ +package com.tangem.tap.di.core.navigation.email + +import com.tangem.core.navigation.email.EmailSender +import com.tangem.tap.core.navigation.email.AndroidEmailSender +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +internal object EmailSenderModule { + + @Provides + @Singleton + fun provideEmailSender(): EmailSender = AndroidEmailSender() +} \ No newline at end of file diff --git a/core/navigation/src/main/java/com/tangem/core/navigation/di/EmailSenderModule.kt b/core/navigation/src/main/java/com/tangem/core/navigation/di/EmailSenderModule.kt deleted file mode 100644 index 0651ea8926..0000000000 --- a/core/navigation/src/main/java/com/tangem/core/navigation/di/EmailSenderModule.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.tangem.core.navigation.di - -import android.content.Context -import com.tangem.core.navigation.email.AndroidEmailSender -import com.tangem.core.navigation.email.EmailSender -import dagger.Module -import dagger.Provides -import dagger.hilt.InstallIn -import dagger.hilt.android.components.ActivityComponent -import dagger.hilt.android.qualifiers.ActivityContext -import dagger.hilt.android.scopes.ActivityScoped - -@Module -@InstallIn(ActivityComponent::class) -internal object EmailSenderModule { - - @Provides - @ActivityScoped - fun provideEmailSender(@ActivityContext context: Context): EmailSender { - return AndroidEmailSender(context) - } -} \ No newline at end of file