fix(playlist): fix state management in playlist commands

- Change playlist commands to use AppState instead of direct Arc<Mutex>
- Add playlist management endpoint paths for future use
This commit is contained in:
vicrodh committed 2026-01-09 12:13:46 -06:00
1 parent 8f4a47b2d8
commit 83654866f1
2 files changed
+12 -8

No files matched your search

+5
View File
@@ -24,6 +24,11 @@ pub mod paths {
pub const PLAYLIST_GET: &str = "/playlist/get";
pub const PLAYLIST_SEARCH: &str = "/playlist/search";
pub const PLAYLIST_GET_USER_PLAYLISTS: &str = "/playlist/getUserPlaylists";
pub const PLAYLIST_CREATE: &str = "/playlist/create";
pub const PLAYLIST_DELETE: &str = "/playlist/delete";
pub const PLAYLIST_ADD_TRACKS: &str = "/playlist/addTracks";
pub const PLAYLIST_DELETE_TRACKS: &str = "/playlist/deleteTracks";
pub const PLAYLIST_UPDATE: &str = "/playlist/update";
// Favorites
pub const FAVORITE_GET_USER_FAVORITES: &str = "/favorite/getUserFavorites";
+7 -8
View File
@@ -1,19 +1,18 @@
//! Playlist-related Tauri commands
use tauri::State;
use tokio::sync::Mutex;
use crate::api::client::QobuzClient;
use crate::api::models::{Playlist, SearchResultsPage};
use crate::AppState;
/// Get user's playlists
#[tauri::command]
pub async fn get_user_playlists(
client: State<'_, std::sync::Arc<Mutex<QobuzClient>>>,
state: State<'_, AppState>,
) -> Result<Vec<Playlist>, String> {
log::info!("Command: get_user_playlists");
let client = client.lock().await;
let client = state.client.lock().await;
client
.get_user_playlists()
.await
@@ -24,11 +23,11 @@ pub async fn get_user_playlists(
#[tauri::command]
pub async fn get_playlist(
playlist_id: u64,
client: State<'_, std::sync::Arc<Mutex<QobuzClient>>>,
state: State<'_, AppState>,
) -> Result<Playlist, String> {
log::info!("Command: get_playlist {}", playlist_id);
let client = client.lock().await;
let client = state.client.lock().await;
client
.get_playlist(playlist_id)
.await
@@ -40,11 +39,11 @@ pub async fn get_playlist(
pub async fn search_playlists(
query: String,
limit: Option<u32>,
client: State<'_, std::sync::Arc<Mutex<QobuzClient>>>,
state: State<'_, AppState>,
) -> Result<SearchResultsPage<Playlist>, String> {
log::info!("Command: search_playlists \"{}\"", query);
let client = client.lock().await;
let client = state.client.lock().await;
client
.search_playlists(&query, limit.unwrap_or(20))
.await