From af60a4a3ebcd7a43e415cf02ac9e05ec4594a6ec Mon Sep 17 00:00:00 2001 From: CappielloAntonio Date: Mon, 9 Aug 2021 00:23:09 +0200 Subject: [PATCH] Delete queue on logout --- .idea/misc.xml | 1 + .../play/adapter/ServerAdapter.java | 7 ++++--- .../play/database/AppDatabase.java | 2 +- .../play/database/dao/QueueDao.java | 18 +++++++++--------- .../cappielloantonio/play/model/Queue.java | 14 +------------- .../play/repository/ArtistRepository.java | 4 +++- .../play/repository/QueueRepository.java | 17 ++++++++++++----- .../play/ui/activity/MainActivity.java | 19 +++++++++++++++++++ .../play/ui/fragment/SettingsFragment.java | 4 +++- .../play/util/PreferenceUtil.java | 2 +- .../cappielloantonio/play/util/QueueUtil.java | 4 ++-- .../play/viewmodel/MainViewModel.java | 11 ++++------- 12 files changed, 60 insertions(+), 43 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 9a7274f1..ee58f749 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -19,6 +19,7 @@ + diff --git a/app/src/main/java/com/cappielloantonio/play/adapter/ServerAdapter.java b/app/src/main/java/com/cappielloantonio/play/adapter/ServerAdapter.java index 9bb73413..c453461e 100644 --- a/app/src/main/java/com/cappielloantonio/play/adapter/ServerAdapter.java +++ b/app/src/main/java/com/cappielloantonio/play/adapter/ServerAdapter.java @@ -89,6 +89,7 @@ public class ServerAdapter extends RecyclerView.Adapter> getAll(String server); + @Query("SELECT * FROM queue") + LiveData> getAll(); - @Query("SELECT * FROM queue WHERE server = :server") - List getAllSimple(String server); + @Query("SELECT * FROM queue") + List getAllSimple(); @Insert(onConflict = OnConflictStrategy.REPLACE) void insertAll(List songQueueObject); - @Query("DELETE FROM queue WHERE queue.track_order = :position AND server = :server") - void deleteByPosition(int position, String server); + @Query("DELETE FROM queue WHERE queue.track_order = :position") + void deleteByPosition(int position); - @Query("DELETE FROM queue WHERE server = :server") - void deleteAll(String server); + @Query("DELETE FROM queue") + void deleteAll(); - @Query("SELECT COUNT(*) FROM queue;") + @Query("SELECT COUNT(*) FROM queue") int count(); } \ 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 abe860c8..319d3e89 100644 --- a/app/src/main/java/com/cappielloantonio/play/model/Queue.java +++ b/app/src/main/java/com/cappielloantonio/play/model/Queue.java @@ -36,10 +36,7 @@ public class Queue { @ColumnInfo(name = "duration") private long duration; - @ColumnInfo(name = "server") - private String server; - - public Queue(int trackOrder, String songID, String title, String albumId, String albumName, String artistId, String artistName, String primary, long duration, String server) { + public Queue(int trackOrder, String songID, String title, String albumId, String albumName, String artistId, String artistName, String primary, long duration) { this.trackOrder = trackOrder; this.songID = songID; this.title = title; @@ -49,7 +46,6 @@ public class Queue { this.artistName = artistName; this.primary = primary; this.duration = duration; - this.server = server; } public int getTrackOrder() { @@ -123,12 +119,4 @@ public class Queue { public void setDuration(long duration) { this.duration = duration; } - - public String getServer() { - return server; - } - - public void setServer(String server) { - this.server = server; - } } diff --git a/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java b/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java index 5dcd6b35..7818ca17 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/ArtistRepository.java @@ -293,7 +293,9 @@ public class ArtistRepository { .enqueue(new Callback() { @Override public void onResponse(Call call, Response response) { - topSongs.setValue(MappingUtil.mapSong(response.body().getTopSongs().getSongs())); + if (response.body().getTopSongs() != null) { + topSongs.setValue(MappingUtil.mapSong(response.body().getTopSongs().getSongs())); + } } @Override 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 61327354..2e42425e 100644 --- a/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java +++ b/app/src/main/java/com/cappielloantonio/play/repository/QueueRepository.java @@ -1,6 +1,7 @@ package com.cappielloantonio.play.repository; import android.app.Application; +import android.util.Log; import androidx.lifecycle.LiveData; @@ -28,7 +29,7 @@ public class QueueRepository { } public LiveData> getLiveQueue() { - listLiveQueue = queueDao.getAll(PreferenceUtil.getInstance(App.getInstance()).getServerId()); + listLiveQueue = queueDao.getAll(); return listLiveQueue; } @@ -69,6 +70,12 @@ public class QueueRepository { thread.start(); } + public void deleteAll() { + DeleteAllThreadSafe deleteAll = new DeleteAllThreadSafe(queueDao); + Thread thread = new Thread(deleteAll); + thread.start(); + } + public int count() { int count = 0; @@ -96,7 +103,7 @@ public class QueueRepository { @Override public void run() { - songs = MappingUtil.mapQueue(queueDao.getAllSimple(PreferenceUtil.getInstance(App.getInstance()).getServerId())); + songs = MappingUtil.mapQueue(queueDao.getAllSimple()); } public List getSongs() { @@ -115,7 +122,7 @@ public class QueueRepository { @Override public void run() { - queueDao.insertAll(QueueUtil.getQueueElementsFromSongs(songs, PreferenceUtil.getInstance(App.getInstance()).getServerId())); + queueDao.insertAll(QueueUtil.getQueueElementsFromSongs(songs)); } } @@ -130,7 +137,7 @@ public class QueueRepository { @Override public void run() { - queueDao.deleteByPosition(position, PreferenceUtil.getInstance(App.getInstance()).getServerId()); + queueDao.deleteByPosition(position); } } @@ -143,7 +150,7 @@ public class QueueRepository { @Override public void run() { - queueDao.deleteAll(PreferenceUtil.getInstance(App.getInstance()).getServerId()); + queueDao.deleteAll(); } } diff --git a/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java b/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java index e9ec2d8f..e8b43430 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/activity/MainActivity.java @@ -13,10 +13,12 @@ import androidx.navigation.NavController; import androidx.navigation.fragment.NavHostFragment; import androidx.navigation.ui.NavigationUI; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.R; import com.cappielloantonio.play.broadcast.receiver.ConnectivityStatusBroadcastReceiver; import com.cappielloantonio.play.databinding.ActivityMainBinding; import com.cappielloantonio.play.model.Song; +import com.cappielloantonio.play.repository.QueueRepository; import com.cappielloantonio.play.service.MusicPlayerRemote; import com.cappielloantonio.play.ui.activity.base.BaseActivity; import com.cappielloantonio.play.ui.fragment.PlayerBottomSheetFragment; @@ -179,6 +181,9 @@ public class MainActivity extends BaseActivity { // NAVIGATION public void goToLogin() { + setBottomNavigationBarVisibility(false); + setBottomSheetVisibility(false); + if (Objects.requireNonNull(navController.getCurrentDestination()).getId() == R.id.landingFragment) { navController.navigate(R.id.action_landingFragment_to_loginFragment); } else if(Objects.requireNonNull(navController.getCurrentDestination()).getId() == R.id.settingsFragment) { @@ -197,9 +202,23 @@ public class MainActivity extends BaseActivity { } public void goFromLogin() { + isBottomSheetInPeek(mainViewModel.isQueueLoaded()); goToHome(); } + public void clearViewModel() { + this.getViewModelStore().clear(); + } + + public void quit() { + QueueRepository queueRepository = new QueueRepository(App.getInstance()); + queueRepository.deleteAll(); + + MusicPlayerRemote.quitPlaying(); + clearViewModel(); + goToLogin(); + } + @Override public void onBackPressed() { if (bottomSheetBehavior.getState() == BottomSheetBehavior.STATE_EXPANDED) diff --git a/app/src/main/java/com/cappielloantonio/play/ui/fragment/SettingsFragment.java b/app/src/main/java/com/cappielloantonio/play/ui/fragment/SettingsFragment.java index 45f2880e..ca15d4db 100644 --- a/app/src/main/java/com/cappielloantonio/play/ui/fragment/SettingsFragment.java +++ b/app/src/main/java/com/cappielloantonio/play/ui/fragment/SettingsFragment.java @@ -9,8 +9,10 @@ import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; +import com.cappielloantonio.play.App; import com.cappielloantonio.play.R; import com.cappielloantonio.play.helper.ThemeHelper; +import com.cappielloantonio.play.repository.QueueRepository; import com.cappielloantonio.play.ui.activity.MainActivity; import com.cappielloantonio.play.util.PreferenceUtil; @@ -50,7 +52,7 @@ public class SettingsFragment extends PreferenceFragmentCompat { PreferenceUtil.getInstance(requireContext()).setSalt(null); PreferenceUtil.getInstance(requireContext()).setServerId(null); - activity.goToLogin(); + activity.quit(); return true; }); diff --git a/app/src/main/java/com/cappielloantonio/play/util/PreferenceUtil.java b/app/src/main/java/com/cappielloantonio/play/util/PreferenceUtil.java index 0a30a2ea..8c02b303 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/PreferenceUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/util/PreferenceUtil.java @@ -91,7 +91,7 @@ public class PreferenceUtil { } public String getServerId() { - return mPreferences.getString(SERVER_ID, null); + return mPreferences.getString(SERVER_ID, ""); } public void setServerId(String serverId) { 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 dc7302f6..f9e01252 100644 --- a/app/src/main/java/com/cappielloantonio/play/util/QueueUtil.java +++ b/app/src/main/java/com/cappielloantonio/play/util/QueueUtil.java @@ -9,12 +9,12 @@ import java.util.List; public class QueueUtil { private static final String TAG = "QueueUtil"; - public static List getQueueElementsFromSongs(List songs, String serverID) { + public static List getQueueElementsFromSongs(List songs) { int counter = 0; 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(), serverID)); + queue.add(new Queue(counter, song.getId(), song.getTitle(), song.getAlbumId(), song.getAlbumName(), song.getArtistId(), song.getArtistName(), song.getPrimary(), song.getDuration())); counter++; } diff --git a/app/src/main/java/com/cappielloantonio/play/viewmodel/MainViewModel.java b/app/src/main/java/com/cappielloantonio/play/viewmodel/MainViewModel.java index 75f4a3c1..0e3a2a7f 100644 --- a/app/src/main/java/com/cappielloantonio/play/viewmodel/MainViewModel.java +++ b/app/src/main/java/com/cappielloantonio/play/viewmodel/MainViewModel.java @@ -10,18 +10,15 @@ import com.cappielloantonio.play.repository.QueueRepository; public class MainViewModel extends AndroidViewModel { private static final String TAG = "SearchViewModel"; - private QueueRepository queueRepository; + private Application application; public MainViewModel(@NonNull Application application) { super(application); - - queueRepository = new QueueRepository(application); + this.application = application; } public boolean isQueueLoaded() { - if (queueRepository.count() == 0) - return false; - - return true; + QueueRepository queueRepository = new QueueRepository(application); + return queueRepository.count() != 0; } }