From 1158cb18ebf55a07e404c934078173ad20b03c62 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Thu, 25 Jan 2024 16:12:30 +0100 Subject: [PATCH] bugfix --- Cargo.toml | 5 +++ src/backend/api/article.rs | 1 - src/frontend/pages/article/edit.rs | 67 ++++++++++++++++-------------- 3 files changed, 40 insertions(+), 33 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 7e4b35b..3c232ff 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -79,3 +79,8 @@ site-addr = "127.0.0.1:8131" [lib] name = "ibis_lib" crate-type = ["cdylib", "rlib"] + +# This profile significantly speeds up build time. If debug info is needed you can comment the line +# out temporarily, but make sure to leave this in the main branch. +[profile.dev] +debug = 0 \ No newline at end of file diff --git a/src/backend/api/article.rs b/src/backend/api/article.rs index a4dc9dd..a336d28 100644 --- a/src/backend/api/article.rs +++ b/src/backend/api/article.rs @@ -71,7 +71,6 @@ pub(in crate::backend::api) async fn edit_article( DbConflict::delete(resolve_conflict_id, &data.db_connection)?; } let original_article = DbArticle::read_view(edit_form.article_id, &data.db_connection)?; - dbg!(&edit_form.new_text, &original_article.article.text); if edit_form.new_text == original_article.article.text { return Err(anyhow!("Edit contains no changes").into()); } diff --git a/src/frontend/pages/article/edit.rs b/src/frontend/pages/article/edit.rs index 345abe9..a23fa4f 100644 --- a/src/frontend/pages/article/edit.rs +++ b/src/frontend/pages/article/edit.rs @@ -1,4 +1,4 @@ -use crate::common::EditArticleData; +use crate::common::{ArticleView, EditArticleData}; use crate::frontend::app::GlobalState; use crate::frontend::components::article_nav::ArticleNav; use crate::frontend::pages::article_resource; @@ -12,41 +12,42 @@ pub fn EditArticle() -> impl IntoView { let article = article_resource(title.unwrap()); let (text, set_text) = create_signal(String::new()); - // TODO: set initial text, otherwise submit with no changes results in empty text - //article.with(|article| set_text.update(article.as_ref().unwrap().article.text.clone())); let (summary, set_summary) = create_signal(String::new()); let (edit_response, set_edit_response) = create_signal(None::<()>); let (edit_error, set_edit_error) = create_signal(None::); let (wait_for_response, set_wait_for_response) = create_signal(false); let button_is_disabled = Signal::derive(move || wait_for_response.get() || summary.get().is_empty()); - let submit_action = create_action(move |(new_text, summary): &(String, String)| { - let new_text = new_text.clone(); - let summary = summary.clone(); - async move { - let form = EditArticleData { - article_id: article.get().unwrap().article.id, - new_text, - summary, - previous_version_id: article.get().unwrap().latest_version, - resolve_conflict_id: None, - }; - set_wait_for_response.update(|w| *w = true); - let res = GlobalState::api_client().edit_article(&form).await; - set_wait_for_response.update(|w| *w = false); - match res { - Ok(_res) => { - set_edit_response.update(|v| *v = Some(())); - set_edit_error.update(|e| *e = None); - } - Err(err) => { - let msg = err.0.to_string(); - log::warn!("Unable to edit: {msg}"); - set_edit_error.update(|e| *e = Some(msg)); + let submit_action = create_action( + move |(new_text, summary, article): &(String, String, ArticleView)| { + let new_text = new_text.clone(); + let summary = summary.clone(); + let article = article.clone(); + async move { + let form = EditArticleData { + article_id: article.article.id, + new_text, + summary, + previous_version_id: article.latest_version, + resolve_conflict_id: None, + }; + set_wait_for_response.update(|w| *w = true); + let res = GlobalState::api_client().edit_article(&form).await; + set_wait_for_response.update(|w| *w = false); + match res { + Ok(_res) => { + set_edit_response.update(|v| *v = Some(())); + set_edit_error.update(|e| *e = None); + } + Err(err) => { + let msg = err.0.to_string(); + log::warn!("Unable to edit: {msg}"); + set_edit_error.update(|e| *e = Some(msg)); + } } } - } - }); + }, + ); view! { @@ -55,7 +56,9 @@ pub fn EditArticle() -> impl IntoView { fallback=move || { view! { { - move || article.get().map(|article| + move || article.get().map(|article| { + // set initial text, otherwise submit with no changes results in empty text + set_text.set(article.article.text.clone()); view! {

{article.article.title.replace('_', " ")}

@@ -63,7 +66,7 @@ pub fn EditArticle() -> impl IntoView { let val = event_target_value(&ev); set_text.update(|p| *p = val); }> - {article.article.text} + {article.article.text.clone()}
{move || { @@ -79,11 +82,11 @@ pub fn EditArticle() -> impl IntoView { }/> } - ) + }) }
}}>