feat: show toast instead of dialog on media download success
Replace the interruptive AlertDialog with a brief Android Toast when media downloads complete. Errors still show the full dialog for visibility.
This commit is contained in:
+13
-2
@@ -23,6 +23,8 @@ package com.vitorpamplona.amethyst.ui.components
|
|||||||
import android.Manifest
|
import android.Manifest
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
import android.os.Handler
|
||||||
|
import android.os.Looper
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
import android.widget.Toast
|
import android.widget.Toast
|
||||||
import androidx.compose.animation.AnimatedVisibility
|
import androidx.compose.animation.AnimatedVisibility
|
||||||
@@ -301,6 +303,15 @@ private fun DialogContent(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun showToastOnMain(
|
||||||
|
context: Context,
|
||||||
|
resId: Int,
|
||||||
|
) {
|
||||||
|
Handler(Looper.getMainLooper()).post {
|
||||||
|
Toast.makeText(context.applicationContext, resId, Toast.LENGTH_SHORT).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private suspend fun saveMediaToGallery(
|
private suspend fun saveMediaToGallery(
|
||||||
content: BaseMediaContent,
|
content: BaseMediaContent,
|
||||||
localContext: Context,
|
localContext: Context,
|
||||||
@@ -324,7 +335,7 @@ private suspend fun saveMediaToGallery(
|
|||||||
},
|
},
|
||||||
localContext,
|
localContext,
|
||||||
onSuccess = {
|
onSuccess = {
|
||||||
accountViewModel.toastManager.toast(success, success)
|
showToastOnMain(localContext, success)
|
||||||
},
|
},
|
||||||
onError = {
|
onError = {
|
||||||
accountViewModel.toastManager.toast(failure, null, it)
|
accountViewModel.toastManager.toast(failure, null, it)
|
||||||
@@ -337,7 +348,7 @@ private suspend fun saveMediaToGallery(
|
|||||||
content.mimeType,
|
content.mimeType,
|
||||||
localContext,
|
localContext,
|
||||||
onSuccess = {
|
onSuccess = {
|
||||||
accountViewModel.toastManager.toast(success, success)
|
showToastOnMain(localContext, success)
|
||||||
},
|
},
|
||||||
onError = { innerIt ->
|
onError = { innerIt ->
|
||||||
accountViewModel.toastManager.toast(failure, null, innerIt)
|
accountViewModel.toastManager.toast(failure, null, innerIt)
|
||||||
|
|||||||
+8
-1
@@ -23,7 +23,10 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn
|
|||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
|
import android.os.Handler
|
||||||
|
import android.os.Looper
|
||||||
import android.util.LruCache
|
import android.util.LruCache
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.Immutable
|
import androidx.compose.runtime.Immutable
|
||||||
import androidx.compose.runtime.Stable
|
import androidx.compose.runtime.Stable
|
||||||
@@ -1709,7 +1712,11 @@ class AccountViewModel(
|
|||||||
mimeType = mimeType,
|
mimeType = mimeType,
|
||||||
localContext = localContext,
|
localContext = localContext,
|
||||||
onSuccess = {
|
onSuccess = {
|
||||||
toastManager.toast(R.string.video_saved_to_the_gallery, R.string.video_saved_to_the_gallery)
|
Handler(Looper.getMainLooper()).post {
|
||||||
|
Toast
|
||||||
|
.makeText(localContext.applicationContext, R.string.video_saved_to_the_gallery, Toast.LENGTH_SHORT)
|
||||||
|
.show()
|
||||||
|
}
|
||||||
},
|
},
|
||||||
onError = {
|
onError = {
|
||||||
toastManager.toast(R.string.failed_to_save_the_video, null, it)
|
toastManager.toast(R.string.failed_to_save_the_video, null, it)
|
||||||
|
|||||||
Reference in New Issue
Block a user