Implemented the saving and loading functionality of the queue from the server

This commit is contained in:
antonio
2023-03-13 22:55:56 +01:00
parent cbb6239b90
commit f5a3ba49cc
13 changed files with 223 additions and 16 deletions

View File

@@ -1,6 +1,7 @@
package com.cappielloantonio.play.subsonic;
import com.cappielloantonio.play.subsonic.api.albumsonglist.AlbumSongListClient;
import com.cappielloantonio.play.subsonic.api.bookmarks.BookmarksClient;
import com.cappielloantonio.play.subsonic.api.browsing.BrowsingClient;
import com.cappielloantonio.play.subsonic.api.mediaannotation.MediaAnnotationClient;
import com.cappielloantonio.play.subsonic.api.medialibraryscanning.MediaLibraryScanningClient;
@@ -29,6 +30,7 @@ public class Subsonic {
private MediaAnnotationClient mediaAnnotationClient;
private PodcastClient podcastClient;
private MediaLibraryScanningClient mediaLibraryScanningClient;
private BookmarksClient bookmarksClient;
public Subsonic(SubsonicPreferences preferences) {
this.preferences = preferences;
@@ -101,6 +103,13 @@ public class Subsonic {
return mediaLibraryScanningClient;
}
public BookmarksClient getBookmarksClient() {
if (bookmarksClient == null) {
bookmarksClient = new BookmarksClient(this);
}
return bookmarksClient;
}
public String getUrl() {
String url = preferences.getServerUrl() + "/rest/";
return url.replace("//rest", "/rest");

View File

@@ -0,0 +1,33 @@
package com.cappielloantonio.play.subsonic.api.bookmarks;
import android.util.Log;
import com.cappielloantonio.play.subsonic.RetrofitClient;
import com.cappielloantonio.play.subsonic.Subsonic;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import java.util.List;
import retrofit2.Call;
public class BookmarksClient {
private static final String TAG = "BookmarksClient";
private final Subsonic subsonic;
private final BookmarksService bookmarksService;
public BookmarksClient(Subsonic subsonic) {
this.subsonic = subsonic;
this.bookmarksService = new RetrofitClient(subsonic).getRetrofit().create(BookmarksService.class);
}
public Call<ApiResponse> getPlayQueue() {
Log.d(TAG, "getPlayQueue()");
return bookmarksService.getPlayQueue(subsonic.getParams());
}
public Call<ApiResponse> savePlayQueue(List<String> ids, String current, long position) {
Log.d(TAG, "savePlayQueue()");
return bookmarksService.savePlayQueue(subsonic.getParams(), ids, current, position);
}
}

View File

@@ -0,0 +1,19 @@
package com.cappielloantonio.play.subsonic.api.bookmarks;
import com.cappielloantonio.play.subsonic.base.ApiResponse;
import java.util.List;
import java.util.Map;
import retrofit2.Call;
import retrofit2.http.GET;
import retrofit2.http.Query;
import retrofit2.http.QueryMap;
public interface BookmarksService {
@GET("getPlayQueue")
Call<ApiResponse> getPlayQueue(@QueryMap Map<String, String> params);
@GET("savePlayQueue")
Call<ApiResponse> savePlayQueue(@QueryMap Map<String, String> params, @Query("id") List<String> ids, @Query("current") String current, @Query("position") long position);
}

View File

@@ -1,12 +1,14 @@
package com.cappielloantonio.play.subsonic.models
import java.time.LocalDateTime
import com.google.gson.annotations.SerializedName
import java.util.*
class PlayQueue {
@SerializedName("entry")
var entries: List<Child>? = null
var current: Int? = null
var current: String? = null
var position: Long? = null
var username: String? = null
var changed: LocalDateTime? = null
var changed: Date? = null
var changedBy: String? = null
}