From 64e93649afd29c94de60e87437b8bb6249a60c14 Mon Sep 17 00:00:00 2001 From: dannyzou18 Date: Wed, 22 May 2024 20:24:30 -0400 Subject: [PATCH] Completed Adding Artist component, front and back --- src/api/artists.rs | 2 +- src/components/add_artist.rs | 26 +++++++++++++++++++++++--- src/components/upload_dropdown.rs | 1 - 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/api/artists.rs b/src/api/artists.rs index 8e89454..fc0b81f 100644 --- a/src/api/artists.rs +++ b/src/api/artists.rs @@ -33,7 +33,7 @@ pub async fn add_artist(artist_name: String) -> Result<(), ServerFnError> { diesel::insert_into(artists) .values(&new_artist) .execute(db) - .map_err(|e| ServerFnError::::ServerError(format!("Error creating playlist: {}", e)))?; + .map_err(|e| ServerFnError::::ServerError(format!("Error adding artist: {}", e)))?; Ok(()) } diff --git a/src/components/add_artist.rs b/src/components/add_artist.rs index d227a24..4e1232a 100644 --- a/src/components/add_artist.rs +++ b/src/components/add_artist.rs @@ -16,11 +16,25 @@ pub fn AddArtistBtn(add_artist_open: RwSignal) -> impl IntoView { } #[component] pub fn AddArtist(open: RwSignal) -> impl IntoView { + let artist_name = create_rw_signal("".to_string()); + let close_dialog = move |ev: leptos::ev::MouseEvent| { ev.prevent_default(); open.set(false); }; - + let on_add_artist = move |ev: leptos::ev::SubmitEvent| { + ev.prevent_default(); + let artist_name_clone = artist_name.get(); + spawn_local(async move { + let add_artist_result = add_artist(artist_name_clone).await; + if let Err(err) = add_artist_result { + log!("Error adding artist: {:?}", err); + } else if let Ok(artist) = add_artist_result { + log!("Added artist: {:?}", artist); + artist_name.set("".to_string()); + } + }) + }; view! { @@ -29,9 +43,15 @@ pub fn AddArtist(open: RwSignal) -> impl IntoView {

Add Artist

-
+
- + Artist Name
diff --git a/src/components/upload_dropdown.rs b/src/components/upload_dropdown.rs index fc16176..6be435b 100644 --- a/src/components/upload_dropdown.rs +++ b/src/components/upload_dropdown.rs @@ -1,6 +1,5 @@ use leptos::*; use leptos_icons::*; -use leptos::leptos_dom::*; use crate::components::upload::*; use crate::components::add_artist::*;