From 76f4f1d021f9fa6f9af2bf938fc00f6061902bd0 Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Thu, 12 Aug 2021 17:56:03 +0200 Subject: [PATCH] Added lastPlay info in queue model --- .../play/database/AppDatabase.java | 2 +- .../play/database/dao/QueueDao.java | 3 +++ .../cappielloantonio/play/model/Queue.java | 14 +++++++++++- .../play/repository/QueueRepository.java | 22 +++++++++++++++++++ .../play/service/MusicService.java | 4 ++++ .../cappielloantonio/play/util/QueueUtil.java | 2 +- 6 files changed, 44 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/cappielloantonio/play/database/AppDatabase.java b/app/src/main/java/com/cappielloantonio/play/database/AppDatabase.java index d13a2156..33cb6112 100644 --- a/app/src/main/java/com/cappielloantonio/play/database/AppDatabase.java +++ b/app/src/main/java/com/cappielloantonio/play/database/AppDatabase.java @@ -15,7 +15,7 @@ import com.cappielloantonio.play.model.Queue; import com.cappielloantonio.play.model.RecentSearch; import com.cappielloantonio.play.model.Server; -@Database(entities = {Queue.class, Server.class, RecentSearch.class, Download.class}, version = 14, exportSchema = false) +@Database(entities = {Queue.class, Server.class, RecentSearch.class, Download.class}, version = 15, exportSchema = false) public abstract class AppDatabase extends RoomDatabase { private static final String TAG = "AppDatabase"; diff --git a/app/src/main/java/com/cappielloantonio/play/database/dao/QueueDao.java b/app/src/main/java/com/cappielloantonio/play/database/dao/QueueDao.java index ce489055..ce16a0e5 100644 --- a/app/src/main/java/com/cappielloantonio/play/database/dao/QueueDao.java +++ b/app/src/main/java/com/cappielloantonio/play/database/dao/QueueDao.java @@ -29,4 +29,7 @@ public interface QueueDao { @Query("SELECT COUNT(*) FROM queue") int count(); + + @Query("UPDATE queue SET last_play=:timestamp WHERE id=:id") + void setLastPlay(String id, long timestamp); } \ No newline at end of file diff --git a/app/src/main/java/com/cappielloantonio/play/model/Queue.java b/app/src/main/java/com/cappielloantonio/play/model/Queue.java index 319d3e89..363f42d2 100644 --- a/app/src/main/java/com/cappielloantonio/play/model/Queue.java +++ b/app/src/main/java/com/cappielloantonio/play/model/Queue.java @@ -36,7 +36,10 @@ public class Queue { @ColumnInfo(name = "duration") private long duration; - public Queue(int trackOrder, String songID, String title, String albumId, String albumName, String artistId, String artistName, String primary, long duration) { + @ColumnInfo(name = "last_play") + private long lastPlay; + + public Queue(int trackOrder, String songID, String title, String albumId, String albumName, String artistId, String artistName, String primary, long duration, long lastPlay) { this.trackOrder = trackOrder; this.songID = songID; this.title = title; @@ -46,6 +49,7 @@ public class Queue { this.artistName = artistName; this.primary = primary; this.duration = duration; + this.lastPlay = lastPlay; } public int getTrackOrder() { @@ -119,4 +123,12 @@ public class Queue { public void setDuration(long duration) { this.duration = duration; } + + public long getLastPlay() { + return lastPlay; + } + + public void setLastPlay(long lastPlay) { + this.lastPlay = lastPlay; + } } diff --git a/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java index 2e42425e..359ba9d6 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java @@ -14,6 +14,7 @@ import com.cappielloantonio.play.util.MappingUtil; import com.cappielloantonio.play.util.PreferenceUtil; import com.cappielloantonio.play.util.QueueUtil; +import java.time.Instant; import java.util.ArrayList; import java.util.List; @@ -93,6 +94,12 @@ public class QueueRepository { return count; } + public void setTimestamp(Song song) { + SetTimestampThreadSafe delete = new SetTimestampThreadSafe(queueDao, song.getId()); + Thread thread = new Thread(delete); + thread.start(); + } + private static class GetSongsThreadSafe implements Runnable { private QueueDao queueDao; private List songs; @@ -171,4 +178,19 @@ public class QueueRepository { return count; } } + + private static class SetTimestampThreadSafe implements Runnable { + private QueueDao queueDao; + private String songId; + + public SetTimestampThreadSafe(QueueDao queueDao, String songId) { + this.queueDao = queueDao; + this.songId = songId; + } + + @Override + public void run() { + queueDao.setLastPlay(songId, Instant.now().toEpochMilli()); + } + } } diff --git a/app/src/main/java/com/cappielloantonio/play/service/MusicService.java b/app/src/main/java/com/cappielloantonio/play/service/MusicService.java index c51c6bdd..d56d0430 100644 --- a/app/src/main/java/com/cappielloantonio/play/service/MusicService.java +++ b/app/src/main/java/com/cappielloantonio/play/service/MusicService.java @@ -32,6 +32,7 @@ import com.cappielloantonio.play.R; import com.cappielloantonio.play.broadcast.receiver.MediaButtonIntentReceiver; import com.cappielloantonio.play.interfaces.Playback; import com.cappielloantonio.play.model.Playlist; +import com.cappielloantonio.play.model.Queue; import com.cappielloantonio.play.model.Song; import com.cappielloantonio.play.repository.QueueRepository; import com.cappielloantonio.play.repository.SongRepository; @@ -598,7 +599,10 @@ public class MusicService extends Service implements Playback.PlaybackCallbacks private void increaseSongCount() { SongRepository songRepository = new SongRepository(App.getInstance()); + QueueRepository queueRepository = new QueueRepository(App.getInstance()); + songRepository.scrobble(getCurrentSong().getId()); + queueRepository.setTimestamp(getCurrentSong()); } @Override diff --git a/app/src/main/java/com/cappielloantonio/play/util/QueueUtil.java b/app/src/main/java/com/cappielloantonio/play/util/QueueUtil.java index f9e01252..0ae3caa2 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/QueueUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/util/QueueUtil.java @@ -14,7 +14,7 @@ public class QueueUtil { List queue = new ArrayList<>(); for (Song song : songs) { - queue.add(new Queue(counter, song.getId(), song.getTitle(), song.getAlbumId(), song.getAlbumName(), song.getArtistId(), song.getArtistName(), song.getPrimary(), song.getDuration())); + queue.add(new Queue(counter, song.getId(), song.getTitle(), song.getAlbumId(), song.getAlbumName(), song.getArtistId(), song.getArtistName(), song.getPrimary(), song.getDuration(), 0)); counter++; }