fix remaining issues with playlist updates
This commit is contained in:
parent
ea1c74be65
commit
5826430751
6 changed files with 29 additions and 25 deletions
|
|
@ -8,7 +8,6 @@ import android.text.Html;
|
|||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.model.Playlist;
|
||||
import com.kabouzeid.gramophone.model.PlaylistSong;
|
||||
import com.kabouzeid.gramophone.model.Song;
|
||||
import com.kabouzeid.gramophone.util.PlaylistUtil;
|
||||
|
|
@ -39,7 +38,7 @@ public class RemoveFromPlaylistDialog extends DialogFragment {
|
|||
@NonNull
|
||||
@Override
|
||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||
final List<Song> songs = getArguments().getParcelableArrayList("songs");
|
||||
final List<PlaylistSong> songs = getArguments().getParcelableArrayList("songs");
|
||||
|
||||
int title;
|
||||
CharSequence content;
|
||||
|
|
@ -59,7 +58,7 @@ public class RemoveFromPlaylistDialog extends DialogFragment {
|
|||
.onPositive((dialog, which) -> {
|
||||
if (getActivity() == null) return;
|
||||
|
||||
PlaylistSong song = (PlaylistSong) songs.get(0);
|
||||
PlaylistSong song = songs.get(0);
|
||||
PlaylistUtil.deleteItems(songs, song.playlistId);
|
||||
})
|
||||
.build();
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ import android.text.InputType;
|
|||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.kabouzeid.gramophone.R;
|
||||
import com.kabouzeid.gramophone.model.Playlist;
|
||||
import com.kabouzeid.gramophone.util.PlaylistUtil;
|
||||
|
||||
public class RenamePlaylistDialog extends DialogFragment {
|
||||
|
|
@ -15,10 +16,12 @@ public class RenamePlaylistDialog extends DialogFragment {
|
|||
private static final String PLAYLIST_ID = "playlist_id";
|
||||
|
||||
@NonNull
|
||||
public static RenamePlaylistDialog create(long playlistId) {
|
||||
public static RenamePlaylistDialog create(Playlist playlist) {
|
||||
RenamePlaylistDialog dialog = new RenamePlaylistDialog();
|
||||
|
||||
Bundle args = new Bundle();
|
||||
args.putLong(PLAYLIST_ID, playlistId);
|
||||
args.putString(PLAYLIST_ID, playlist.id);
|
||||
|
||||
dialog.setArguments(args);
|
||||
return dialog;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
package com.kabouzeid.gramophone.helper.menu;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import android.view.MenuItem;
|
||||
|
|
@ -33,7 +32,7 @@ public class PlaylistMenuHelper {
|
|||
AddToPlaylistDialog.create(new ArrayList<>(getPlaylistSongs(activity, playlist))).show(activity.getSupportFragmentManager(), "ADD_PLAYLIST");
|
||||
return true;
|
||||
case R.id.action_rename_playlist:
|
||||
RenamePlaylistDialog.create(playlist.id.hashCode()).show(activity.getSupportFragmentManager(), "RENAME_PLAYLIST");
|
||||
RenamePlaylistDialog.create(playlist).show(activity.getSupportFragmentManager(), "RENAME_PLAYLIST");
|
||||
return true;
|
||||
case R.id.action_delete_playlist:
|
||||
DeletePlaylistDialog.create(playlist).show(activity.getSupportFragmentManager(), "DELETE_PLAYLIST");
|
||||
|
|
|
|||
|
|
@ -6,10 +6,13 @@ import org.jellyfin.apiclient.model.dto.BaseItemDto;
|
|||
|
||||
public class PlaylistSong extends Song {
|
||||
public final String playlistId;
|
||||
public final String indexId;
|
||||
|
||||
public PlaylistSong(BaseItemDto itemDto, String playlistId) {
|
||||
public PlaylistSong(BaseItemDto itemDto, String playlist) {
|
||||
super(itemDto);
|
||||
this.playlistId = playlistId;
|
||||
|
||||
this.playlistId = playlist;
|
||||
this.indexId = itemDto.getPlaylistItemId();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -17,12 +20,14 @@ public class PlaylistSong extends Song {
|
|||
super.writeToParcel(dest, flags);
|
||||
|
||||
dest.writeString(this.playlistId);
|
||||
dest.writeString(this.indexId);
|
||||
}
|
||||
|
||||
protected PlaylistSong(Parcel in) {
|
||||
super(in);
|
||||
|
||||
this.playlistId = in.readString();
|
||||
this.indexId = in.readString();
|
||||
}
|
||||
|
||||
public static final Creator<PlaylistSong> CREATOR = new Creator<PlaylistSong>() {
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ import com.kabouzeid.gramophone.util.PlaylistUtil;
|
|||
import com.kabouzeid.gramophone.util.ViewUtil;
|
||||
import com.simplecityapps.recyclerview_fastscroll.views.FastScrollRecyclerView;
|
||||
|
||||
import org.jellyfin.apiclient.model.querying.ItemQuery;
|
||||
import org.jellyfin.apiclient.model.playlists.PlaylistItemQuery;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -78,8 +78,8 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
|||
setUpRecyclerView();
|
||||
setUpToolbar();
|
||||
|
||||
ItemQuery query = new ItemQuery();
|
||||
query.setParentId(playlist.id);
|
||||
PlaylistItemQuery query = new PlaylistItemQuery();
|
||||
query.setId(playlist.id);
|
||||
PlaylistUtil.getPlaylist(query, new MediaCallback() {
|
||||
@Override
|
||||
public void onLoadMedia(List<?> media) {
|
||||
|
|
@ -104,7 +104,7 @@ public class PlaylistDetailActivity extends AbsSlidingMusicPanelActivity impleme
|
|||
recyclerViewDragDropManager = new RecyclerViewDragDropManager();
|
||||
final GeneralItemAnimator animator = new RefactoredDefaultItemAnimator();
|
||||
adapter = new OrderablePlaylistSongAdapter(this, new ArrayList<>(), R.layout.item_list, false, this, (fromPosition, toPosition) -> {
|
||||
PlaylistUtil.moveItem(playlist.id, adapter.getDataSet().get(fromPosition), toPosition);
|
||||
PlaylistUtil.moveItem(playlist.id, (PlaylistSong) adapter.getDataSet().get(fromPosition), toPosition);
|
||||
Song song = adapter.getDataSet().remove(fromPosition);
|
||||
adapter.getDataSet().add(toPosition, song);
|
||||
adapter.notifyItemMoved(fromPosition, toPosition);
|
||||
|
|
|
|||
|
|
@ -10,25 +10,22 @@ import org.jellyfin.apiclient.interaction.EmptyResponse;
|
|||
import org.jellyfin.apiclient.interaction.Response;
|
||||
import org.jellyfin.apiclient.model.dto.BaseItemDto;
|
||||
import org.jellyfin.apiclient.model.playlists.PlaylistCreationRequest;
|
||||
import org.jellyfin.apiclient.model.querying.ItemQuery;
|
||||
import org.jellyfin.apiclient.model.playlists.PlaylistItemQuery;
|
||||
import org.jellyfin.apiclient.model.querying.ItemsResult;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PlaylistUtil {
|
||||
public static void getPlaylist(ItemQuery query, MediaCallback callback) {
|
||||
query.setIncludeItemTypes(new String[]{"Audio"});
|
||||
public static void getPlaylist(PlaylistItemQuery query, MediaCallback callback) {
|
||||
query.setUserId(App.getApiClient().getCurrentUserId());
|
||||
query.setLimit(100);
|
||||
query.setRecursive(true);
|
||||
if (QueryUtil.currentLibrary != null && query.getParentId() == null) query.setParentId(QueryUtil.currentLibrary.getId());
|
||||
App.getApiClient().GetItemsAsync(query, new Response<ItemsResult>() {
|
||||
App.getApiClient().GetPlaylistItems(query, new Response<ItemsResult>() {
|
||||
@Override
|
||||
public void onResponse(ItemsResult result) {
|
||||
List<PlaylistSong> songs = new ArrayList<>();
|
||||
for (BaseItemDto itemDto : result.getItems()) {
|
||||
songs.add(new PlaylistSong(itemDto, query.getParentId()));
|
||||
songs.add(new PlaylistSong(itemDto, query.getId()));
|
||||
}
|
||||
|
||||
callback.onLoadMedia(songs);
|
||||
|
|
@ -70,16 +67,17 @@ public class PlaylistUtil {
|
|||
App.getApiClient().AddToPlaylist(playlist, ids, user, new EmptyResponse());
|
||||
}
|
||||
|
||||
public static void deleteItems(final List<Song> songs, final String playlist) {
|
||||
public static void deleteItems(final List<PlaylistSong> songs, final String playlist) {
|
||||
String[] ids = new String[songs.size()];
|
||||
for (int i = 0; i < songs.size(); i++) {
|
||||
ids[i] = songs.get(i).id;
|
||||
ids[i] = songs.get(i).indexId;
|
||||
}
|
||||
|
||||
App.getApiClient().RemoveFromPlaylist(playlist, ids, new EmptyResponse());
|
||||
}
|
||||
|
||||
public static void moveItem(final String playlist, final Song song, int to) {
|
||||
public static void moveItem(final String playlist, final PlaylistSong song, int to) {
|
||||
App.getApiClient().MoveItem(playlist, song.indexId, to, new EmptyResponse());
|
||||
}
|
||||
|
||||
public static void renamePlaylist(final String playlist, final String name) {
|
||||
|
|
@ -99,7 +97,7 @@ public class PlaylistUtil {
|
|||
}
|
||||
|
||||
public static void renamePlaylistInner(final BaseItemDto itemDto) {
|
||||
// TODO find a method to upload metadata changes
|
||||
// at some point this could become metadata utilities
|
||||
// TODO at some point this should become metadata utilities
|
||||
App.getApiClient().UpdateItem(itemDto.getId(), itemDto, new EmptyResponse());
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue