From 7f07764b68a567603f9ff138cf92c09788846e7f Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Sun, 17 Jul 2022 16:00:17 -0600 Subject: [PATCH] playback: fix delayed actions not working Fix an issue on some devices where the delayed actions system would not work on startup. Apparently onStart can be called several times with the same intent. No, I am not joking. What the actual hell. This would cause any delayed action other than Restore to be overwritten. The only hard rule about android is that there are no rules. I hate this platform so much. --- .../java/org/oxycblt/auxio/MainActivity.kt | 38 +++++++++++++------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt index 17402d30e..096012009 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt @@ -67,28 +67,42 @@ class MainActivity : AppCompatActivity() { startService(Intent(this, IndexerService::class.java)) startService(Intent(this, PlaybackService::class.java)) - // If we have a valid intent, use that. Otherwise, restore the playback state. - playbackModel.startDelayedAction( - intentToDelayedAction(intent) ?: PlaybackViewModel.DelayedAction.RestoreState) + logD("YOU FUCKING RETARD DO BASCIS ${intent?.action}") + + if (!intentToDelayedAction(intent)) { + playbackModel.startDelayedAction(PlaybackViewModel.DelayedAction.RestoreState) + } } override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) - intentToDelayedAction(intent)?.let(playbackModel::startDelayedAction) + intentToDelayedAction(intent) } - private fun intentToDelayedAction(intent: Intent?): PlaybackViewModel.DelayedAction? { - if (intent == null || intent.getBooleanExtra(KEY_INTENT_USED, false)) { - return null + private fun intentToDelayedAction(intent: Intent?): Boolean { + if (intent == null) { + return false + } + + if (intent.getBooleanExtra(KEY_INTENT_USED, false)) { + return true } intent.putExtra(KEY_INTENT_USED, true) - return when (intent.action) { - Intent.ACTION_VIEW -> intent.data?.let { PlaybackViewModel.DelayedAction.Open(it) } - AuxioApp.INTENT_KEY_SHORTCUT_SHUFFLE -> PlaybackViewModel.DelayedAction.ShuffleAll - else -> null - } + val action = + when (intent.action) { + Intent.ACTION_VIEW -> + PlaybackViewModel.DelayedAction.Open(intent.data ?: return false) + AuxioApp.INTENT_KEY_SHORTCUT_SHUFFLE -> { + PlaybackViewModel.DelayedAction.ShuffleAll + } + else -> return false + } + + playbackModel.startDelayedAction(action) + + return true } private fun setupTheme() {