diff --git a/app/src/main/java/com/dkanada/gramophone/database/QueueSongDao.java b/app/src/main/java/com/dkanada/gramophone/database/QueueSongDao.java index 69796902..9cf9ec9d 100644 --- a/app/src/main/java/com/dkanada/gramophone/database/QueueSongDao.java +++ b/app/src/main/java/com/dkanada/gramophone/database/QueueSongDao.java @@ -45,4 +45,15 @@ public abstract class QueueSongDao { insertQueueSongs(queueSongs); } + + @Transaction + public void updateQueues(List playingQueue, List shuffledQueue) { + // copy queues by value to avoid concurrent modification exceptions from database + App.getDatabase().songDao().deleteSongs(); + App.getDatabase().songDao().insertSongs(new ArrayList<>(playingQueue)); + + deleteQueueSongs(); + setQueue(new ArrayList<>(playingQueue), 0); + setQueue(new ArrayList<>(shuffledQueue), 1); + } } diff --git a/app/src/main/java/com/dkanada/gramophone/service/QueueManager.java b/app/src/main/java/com/dkanada/gramophone/service/QueueManager.java index 86604c8e..ed783563 100644 --- a/app/src/main/java/com/dkanada/gramophone/service/QueueManager.java +++ b/app/src/main/java/com/dkanada/gramophone/service/QueueManager.java @@ -294,14 +294,7 @@ public class QueueManager { public void saveQueue() { PreferenceUtil.getInstance(context).setPosition(position); - - // copy queues by value to avoid concurrent modification exceptions from database - App.getDatabase().songDao().deleteSongs(); - App.getDatabase().songDao().insertSongs(new ArrayList<>(playingQueue)); - - App.getDatabase().queueSongDao().deleteQueueSongs(); - App.getDatabase().queueSongDao().setQueue(new ArrayList<>(playingQueue), 0); - App.getDatabase().queueSongDao().setQueue(new ArrayList<>(shuffledQueue), 1); + App.getDatabase().queueSongDao().updateQueues(playingQueue, shuffledQueue); } public int getRestoredProgress() {