fix custom playlist sortorder handling

This commit is contained in:
Simon 2025-07-12 22:24:02 +07:00
parent 2b709ce9c1
commit 454952d9dd
No known key found for this signature in database
GPG Key ID: 2C15AA5E89985DD4
5 changed files with 36 additions and 25 deletions

View File

@ -160,6 +160,7 @@ class SearchProcess:
"playlist_last_refresh": playlist_last_refresh,
}
)
print(playlist_dict)
return dict(sorted(playlist_dict.items()))

View File

@ -325,6 +325,7 @@ class YoutubePlaylist(YouTubeItem):
self.delete_metadata()
def create(self, name):
"""create custom playlist"""
self.json_data = {
"playlist_id": self.youtube_id,
"playlist_active": False,
@ -337,6 +338,7 @@ class YoutubePlaylist(YouTubeItem):
"playlist_description": False,
"playlist_thumbnail": False,
"playlist_subscribed": False,
"playlist_sort_order": "top",
}
self.upload_to_es()
self.get_playlist_art()

View File

@ -45,7 +45,7 @@ class QueryBuilder:
type_parsed = getattr(PlaylistTypesEnum, playlist_type.upper()).value
return {"match": {"playlist_type.keyword": type_parsed}}
return {"match": {"playlist_types": type_parsed}}
def parse_sort(self) -> dict:
"""return sort"""

View File

@ -239,6 +239,12 @@ class PlaylistApiView(ApiBaseView):
error = ErrorResponseSerializer({"error": "playlist not found"})
return Response(error.data, status=404)
if self.response["playlist_type"] == "custom":
error = ErrorResponseSerializer(
{"error": f"playlist with ID {playlist_id} is custom"}
)
return Response(error.data, status=400)
subscribed = validated_data.get("playlist_subscribed")
sort_order = validated_data.get("playlist_sort_order")

View File

@ -288,31 +288,33 @@ const Playlist = () => {
/>
</div>
)}
<div className="toggle">
<span>Switch sort order:</span>
<div className="toggleBox">
<input
id="playlist_sort_order"
type="checkbox"
checked={playlist.playlist_sort_order === 'bottom'}
onChange={async () => {
const newSortOrder =
playlist.playlist_sort_order === 'top' ? 'bottom' : 'top';
await updatePlaylistSortOrder(playlist.playlist_id, newSortOrder);
setRefresh(true);
}}
/>
{playlist.playlist_sort_order === 'bottom' ? (
<label htmlFor="" className="onbtn">
On
</label>
) : (
<label htmlFor="" className="ofbtn">
Off
</label>
)}
{playlist.playlist_type !== 'custom' && (
<div className="toggle">
<span>Switch sort order:</span>
<div className="toggleBox">
<input
id="playlist_sort_order"
type="checkbox"
checked={playlist.playlist_sort_order === 'bottom'}
onChange={async () => {
const newSortOrder =
playlist.playlist_sort_order === 'top' ? 'bottom' : 'top';
await updatePlaylistSortOrder(playlist.playlist_id, newSortOrder);
setRefresh(true);
}}
/>
{playlist.playlist_sort_order === 'bottom' ? (
<label htmlFor="" className="onbtn">
On
</label>
) : (
<label htmlFor="" className="ofbtn">
Off
</label>
)}
</div>
</div>
</div>
)}
</div>
</div>
</div>