Use App context when toasting from background tasks,

use App context to resolve error messages
This commit is contained in:
tzugen 2023-06-01 10:29:30 +02:00
parent c1013f6b80
commit e35a33edde
No known key found for this signature in database
GPG Key ID: 61E9C34BC10EC930
5 changed files with 13 additions and 11 deletions

View File

@ -58,7 +58,7 @@ public abstract class BackgroundTask<T> implements ProgressListener
protected String getErrorMessage(Throwable error)
{
return CommunicationError.getErrorMessage(error, activity);
return CommunicationError.getErrorMessage(error);
}
@Override

View File

@ -401,7 +401,7 @@ class EditServerFragment : Fragment(), OnBackPressedHandler {
Timber.w(exception)
ErrorDialog.Builder(requireContext())
.setTitle(R.string.error_label)
.setMessage(getErrorMessage(exception, context))
.setMessage(getErrorMessage(exception))
.show()
}
}

View File

@ -78,6 +78,7 @@ import org.moire.ultrasonic.R
import org.moire.ultrasonic.adapters.BaseAdapter
import org.moire.ultrasonic.adapters.TrackViewBinder
import org.moire.ultrasonic.api.subsonic.models.AlbumListType
import org.moire.ultrasonic.app.UApp
import org.moire.ultrasonic.audiofx.EqualizerController
import org.moire.ultrasonic.data.ActiveServerProvider.Companion.isOffline
import org.moire.ultrasonic.data.ActiveServerProvider.Companion.shouldUseId3Tags
@ -662,7 +663,6 @@ class PlayerFragment :
parentId = track.parent,
isAlbum = true
)
findNavController().navigate(action)
return true
}
@ -822,16 +822,16 @@ class PlayerFragment :
musicService.createPlaylist(null, playlistName, entries)
}.invokeOnCompletion {
if (it == null || it is CancellationException) {
Util.toast(context, R.string.download_playlist_done)
Util.toast(UApp.applicationContext(), R.string.download_playlist_done)
} else {
Timber.e(it, "Exception has occurred in savePlaylistInBackground")
val msg = String.format(
Locale.ROOT,
"%s %s",
resources.getString(R.string.download_playlist_error),
CommunicationError.getErrorMessage(it, context)
CommunicationError.getErrorMessage(it)
)
Util.toast(context, msg)
Util.toast(UApp.applicationContext(), msg)
}
}
}

View File

@ -20,6 +20,7 @@ import kotlinx.coroutines.CoroutineExceptionHandler
import org.moire.ultrasonic.R
import org.moire.ultrasonic.api.subsonic.ApiNotSupportedException
import org.moire.ultrasonic.api.subsonic.SubsonicRESTException
import org.moire.ultrasonic.app.UApp
import org.moire.ultrasonic.subsonic.getLocalizedErrorMessage
import timber.log.Timber
@ -46,14 +47,14 @@ object CommunicationError {
ErrorDialog(
context = context,
message = getErrorMessage(error, context)
message = getErrorMessage(error)
).show()
}
@JvmStatic
@Suppress("ReturnCount")
fun getErrorMessage(error: Throwable, context: Context?): String {
if (context == null) return "Couldn't get Error message, Context is null"
fun getErrorMessage(error: Throwable): String {
val context = UApp.applicationContext()
if (error is IOException && !Util.hasUsableNetwork()) {
return context.resources.getString(R.string.background_task_no_network)
} else if (error is FileNotFoundException) {

View File

@ -17,6 +17,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
import kotlinx.coroutines.launch
import org.moire.ultrasonic.R
import org.moire.ultrasonic.app.UApp
import timber.log.Timber
object CoroutinePatterns {
@ -40,7 +41,7 @@ fun CoroutineScope.executeTaskWithToast(
// Setup a handler when the job is done
job.invokeOnCompletion {
val toastString = if (it != null && it !is CancellationException) {
CommunicationError.getErrorMessage(it, fragment.context)
CommunicationError.getErrorMessage(it)
} else {
successString()
}
@ -49,7 +50,7 @@ fun CoroutineScope.executeTaskWithToast(
if (toastString == null) return@invokeOnCompletion
launch(Dispatchers.Main) {
Util.toast(fragment.context, toastString)
Util.toast(UApp.applicationContext(), toastString)
}
}