From eac875b9cb43ae99176d7bd36f50bd254557df6e Mon Sep 17 00:00:00 2001 From: Antoine POPINEAU Date: Wed, 30 Oct 2019 22:06:57 +0100 Subject: [PATCH] Clear queue on logout. --- .../com/github/apognu/otter/activities/SettingsActivity.kt | 4 ++++ .../java/com/github/apognu/otter/playback/PlayerService.kt | 2 ++ .../java/com/github/apognu/otter/playback/QueueManager.kt | 6 ++++++ app/src/main/java/com/github/apognu/otter/utils/EventBus.kt | 1 + 4 files changed, 13 insertions(+) diff --git a/app/src/main/java/com/github/apognu/otter/activities/SettingsActivity.kt b/app/src/main/java/com/github/apognu/otter/activities/SettingsActivity.kt index 042f3d8..33563cc 100644 --- a/app/src/main/java/com/github/apognu/otter/activities/SettingsActivity.kt +++ b/app/src/main/java/com/github/apognu/otter/activities/SettingsActivity.kt @@ -12,6 +12,8 @@ import androidx.preference.PreferenceFragmentCompat import androidx.preference.SeekBarPreference import com.github.apognu.otter.R import com.github.apognu.otter.utils.AppContext +import com.github.apognu.otter.utils.Command +import com.github.apognu.otter.utils.CommandBus import com.preference.PowerPreference class SettingsActivity : AppCompatActivity() { @@ -69,6 +71,8 @@ class SettingsFragment : PreferenceFragmentCompat(), SharedPreferences.OnSharedP context.cacheDir.deleteRecursively() + CommandBus.send(Command.ClearQueue) + activity?.setResult(MainActivity.ResultCode.LOGOUT.code) activity?.finish() } diff --git a/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt b/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt index bd8b60e..d568782 100644 --- a/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt +++ b/app/src/main/java/com/github/apognu/otter/playback/PlayerService.kt @@ -172,6 +172,8 @@ class PlayerService : Service() { is Command.NextTrack -> player.next() is Command.PreviousTrack -> previousTrack() is Command.Seek -> progress(message.progress) + + is Command.ClearQueue -> queue.clear() } if (player.playWhenReady) { diff --git a/app/src/main/java/com/github/apognu/otter/playback/QueueManager.kt b/app/src/main/java/com/github/apognu/otter/playback/QueueManager.kt index 9cee224..f4ab4c1 100644 --- a/app/src/main/java/com/github/apognu/otter/playback/QueueManager.kt +++ b/app/src/main/java/com/github/apognu/otter/playback/QueueManager.kt @@ -154,4 +154,10 @@ class QueueManager(val context: Context) { return metadata.getOrNull(current) } + + fun clear() { + metadata = mutableListOf() + datasources.clear() + current = -1 + } } \ No newline at end of file diff --git a/app/src/main/java/com/github/apognu/otter/utils/EventBus.kt b/app/src/main/java/com/github/apognu/otter/utils/EventBus.kt index 4c87a0b..56f8918 100644 --- a/app/src/main/java/com/github/apognu/otter/utils/EventBus.kt +++ b/app/src/main/java/com/github/apognu/otter/utils/EventBus.kt @@ -24,6 +24,7 @@ sealed class Command { class ReplaceQueue(val queue: List) : Command() class RemoveFromQueue(val track: Track) : Command() class MoveFromQueue(val oldPosition: Int, val newPosition: Int) : Command() + object ClearQueue : Command() class PlayTrack(val index: Int) : Command() }