Fix leptos 0.6 migration

This commit is contained in:
Florian RICHER 2024-02-18 15:34:23 +01:00
parent ed6d446728
commit deb8244597
4 changed files with 70 additions and 411 deletions

View file

@ -11,42 +11,39 @@ use crate::app::{
pub async fn get_posts(
tag: Option<String>
) -> Result<Vec<Post>, ServerFnError> {
leptos_actix::extract(
|data: actix_web::web::Data<crate::app::models::Data>| async move {
let data = data.into_inner();
let default = vec![];
let posts = match tag {
Some(tag) => data.posts_by_tag.get(&tag).unwrap_or(&default),
None => &data.posts
};
posts.iter()
.map(|post| {
Post {
metadata: post.metadata.clone(),
content: post.content.clone(),
}
})
.collect::<Vec<_>, >()
},
).await
let data : actix_web::web::Data<crate::app::models::Data> = leptos_actix::extract().await?;
let data = data.into_inner();
let default = vec![];
let posts = match tag {
Some(tag) => data.posts_by_tag.get(&tag).unwrap_or(&default),
None => &data.posts
};
Ok(
posts.iter()
.map(|post| {
Post {
metadata: post.metadata.clone(),
content: post.content.clone(),
}
})
.collect::<Vec<_>, >()
)
}
#[server]
pub async fn get_post(
slug: String
) -> Result<Post, ServerFnError> {
leptos_actix::extract(
|data: actix_web::web::Data<crate::app::models::Data>| async move {
let data = data.into_inner();
data.posts_by_slug.get(&slug)
.and_then(|post| Some(Post {
metadata: post.metadata.clone(),
content: post.content.clone(),
}))
},
)
.await
.and_then(|post| post.ok_or_else(|| ServerFnError::ServerError("Post not found".to_string())))
let data : actix_web::web::Data<crate::app::models::Data> = leptos_actix::extract().await?;
let data = data.into_inner();
data.posts_by_slug.get(&slug).map(|post| Post {
metadata: post.metadata.clone(),
content: post.content.clone(),
})
.ok_or(ServerFnError::ServerError("Post not found".to_string()))
}
#[component]
@ -130,7 +127,7 @@ pub fn PostList() -> impl IntoView {
};
let filter_view = move || {
tag().and_then(|tag| Some(view! {
tag().map(|tag| Some(view! {
<div class="mx-auto max-w-3xl mb-5">
Tag sélectionné : <A class="tag" href="/posts".to_string()>{tag}<leptos_icons::Icon icon=icondata::IoClose class="scale-125 ml-1 inline" /></A>
</div>