Skip to content
Extraits de code Groupes Projets
Vérifiée Valider a6019e26 rédigé par Kubat's avatar Kubat
Parcourir les fichiers

AMADEUS: When making operations on playlists, send requests to lektord

NOTE: The hashmap thing is still a bit buggy...
parent e0684f5f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion!197Draft: Refactor the whole code.
......@@ -22,7 +22,7 @@ use iced::{
};
use iced_aw::{native::Split, split};
use lektor_lib::{requests::*, ConnectConfigPtr};
use lektor_payloads::{KId, Kara, PlayState, PlayStateWithCurrent};
use lektor_payloads::{KId, Kara, KaraFilter, PlayState, PlayStateWithCurrent};
use lektor_utils::{config::UserConfig, log};
use std::{future::Future, sync::Arc};
......@@ -250,6 +250,12 @@ impl Amadeus {
playlists::Request::Inner(plt, karalist::Request(req)) => {
self.handle_kara_request(req, Some(plt))
}
playlists::Request::AddTo(name, id) => {
send(add_to_playlist(cfg, name, KaraFilter::KId(id)))
}
playlists::Request::RemoveFrom(name, id) => {
send(remove_from_playlist(cfg, name, KaraFilter::KId(id)))
}
},
// Search/Database
......@@ -315,27 +321,35 @@ impl Amadeus {
// Need to open a modal to take decision.
(None, RemoveFromPlaylist(id)) => {
let plts = self.playlist_list().to_vec();
let on_select = OnPlaylistSelectCallback::new(move |name| {
playlists::Message::RemoveKaraFromPlaylist(name, id.clone()).into()
let callback = OnPlaylistSelectCallback::new(move |name| {
Message::from_iter([
playlists::Request::RemoveFrom(name.clone(), id.clone()).into(),
playlists::Message::RemoveKaraFromPlaylist(name, id.clone()).into(),
])
});
Command::perform(async {}, |_| {
ShowModal::ChoosePlaylist(plts, on_select).into()
})
let action = |_| ShowModal::ChoosePlaylist(plts, callback).into();
Command::perform(async {}, action)
}
(Some(plt), AddToPlaylist(id)) => {
let plts = self.playlist_list().to_vec();
self.with_kara(id, |kara| {
self.with_kara(id.clone(), |kara| {
let cb = OnPlaylistSelectCallback::new(move |name| {
playlists::Message::AddKaraToPlaylist(name, kara.clone()).into()
Message::from_iter([
playlists::Request::AddTo(name.clone(), id.clone()).into(),
playlists::Message::AddKaraToPlaylist(name, kara.clone()).into(),
])
});
ShowModal::ChoosePlaylistExpect(plt, plts, cb).into()
})
}
(None, AddToPlaylist(id)) => {
let plts = self.playlist_list().to_vec();
self.with_kara(id, |kara| {
self.with_kara(id.clone(), |kara| {
let cb = OnPlaylistSelectCallback::new(move |name| {
playlists::Message::AddKaraToPlaylist(name, kara.clone()).into()
Message::from_iter([
playlists::Request::AddTo(name.clone(), id.clone()).into(),
playlists::Message::AddKaraToPlaylist(name, kara.clone()).into(),
])
});
ShowModal::ChoosePlaylist(plts, cb).into()
})
......
......@@ -32,6 +32,12 @@ pub enum Request {
/// Refresh a playlist.
Refresh(Arc<str>),
/// Add a [KId] to a playlist.
AddTo(Arc<str>, KId),
/// Remove a [KId] from a playlist.
RemoveFrom(Arc<str>, KId),
/// Inner playlist event, wrapper around the [karalist::Request]
Inner(Arc<str>, karalist::Request),
}
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter