diff --git a/scripts/watch.sh b/scripts/watch.sh index 5744766..1377839 100755 --- a/scripts/watch.sh +++ b/scripts/watch.sh @@ -7,7 +7,7 @@ IBIS_BACKEND_PORT="${IBIS_BACKEND_PORT:-8081}" # https://stackoverflow.com/a/52033580 (trap 'kill 0' SIGINT; # start frontend - trunk serve -w src/frontend/ --proxy-backend http://127.0.0.1:$IBIS_BACKEND_PORT & + CARGO_TARGET_DIR=target/frontend trunk serve -w src/frontend/ --proxy-backend http://127.0.0.1:$IBIS_BACKEND_PORT & # # start backend, with separate target folder to avoid rebuilds from arch change - CARGO_TARGET_DIR=target/backend cargo watch -x run + cargo watch -x run ) diff --git a/src/backend/api/article.rs b/src/backend/api/article.rs index 7805a08..124069d 100644 --- a/src/backend/api/article.rs +++ b/src/backend/api/article.rs @@ -216,9 +216,15 @@ pub(in crate::backend::api) async fn fork_article( pub(super) async fn resolve_article( Query(query): Query, data: Data, -) -> MyResult> { - let article = ObjectId::from(query.id).dereference(&data).await?; - Ok(Json(article)) +) -> MyResult> { + let article: DbArticle = ObjectId::from(query.id).dereference(&data).await?; + let edits = DbEdit::read_for_article(&article, &data.db_connection)?; + let latest_version = edits.last().unwrap().hash.clone(); + Ok(Json(ArticleView { + article, + edits, + latest_version, + })) } /// Search articles for matching title or body text. diff --git a/src/frontend/api.rs b/src/frontend/api.rs index f84e9b4..0f0ad15 100644 --- a/src/frontend/api.rs +++ b/src/frontend/api.rs @@ -156,7 +156,7 @@ impl ApiClient { Ok(handle_json_res(req).await.unwrap()) } - pub async fn resolve_article(&self, id: Url) -> MyResult { + pub async fn resolve_article(&self, id: Url) -> MyResult { let resolve_object = ResolveObject { id }; self.get_query("article/resolve", Some(resolve_object)) .await diff --git a/src/frontend/pages/search.rs b/src/frontend/pages/search.rs index 044c7ca..c8825bc 100644 --- a/src/frontend/pages/search.rs +++ b/src/frontend/pages/search.rs @@ -31,7 +31,7 @@ pub fn Search() -> impl IntoView { join!(search, resolve_article, resolve_instance); search_results.instance = resolve_instance.ok(); if let Ok(article) = resolve_article { - search_results.articles.push(article); + search_results.articles.push(article.article); } search_results.articles.append(&mut search.unwrap()) } else {