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;
}
}