Removed the context and went to just Signals.
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "bard"
|
name = "bard"
|
||||||
version = "0.0.21"
|
version = "0.0.22"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
description = "Dioxus components that will display a Tavern blogging system Blog."
|
description = "Dioxus components that will display a Tavern blogging system Blog."
|
||||||
repository = "/CyberMages/tavern"
|
repository = "/CyberMages/tavern"
|
||||||
|
|||||||
@ -243,7 +243,7 @@ pub fn BlogList(tags: Signal<HashSet<String>>, children: Element) -> Element
|
|||||||
#[component]
|
#[component]
|
||||||
pub fn TagSelector(toggled_tags: Signal<HashSet<String>>) -> Element
|
pub fn TagSelector(toggled_tags: Signal<HashSet<String>>) -> Element
|
||||||
{
|
{
|
||||||
let mut categories = use_signal(Vec::<String>::new);
|
let mut categories = use_signal(|| Vec::<String>::new());
|
||||||
|
|
||||||
let tags = use_server_future(move || async move { get_tags().await })?;
|
let tags = use_server_future(move || async move { get_tags().await })?;
|
||||||
|
|
||||||
@ -304,13 +304,10 @@ pub fn TagSelector(toggled_tags: Signal<HashSet<String>>) -> Element
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
pub fn PostHeaderAuthor() -> Element
|
pub fn PostHeaderAuthor(adventurer: Signal<Option<Adventurer>>) -> Element
|
||||||
{
|
{
|
||||||
let author: Signal<Option<Adventurer>> =
|
|
||||||
use_context::<Signal<Option<Adventurer>>>();
|
|
||||||
|
|
||||||
rsx! {
|
rsx! {
|
||||||
match author()
|
match adventurer()
|
||||||
{
|
{
|
||||||
Some(author) =>
|
Some(author) =>
|
||||||
{
|
{
|
||||||
@ -333,11 +330,9 @@ pub fn PostHeaderAuthor() -> Element
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[component]
|
#[component]
|
||||||
pub fn PostHeader() -> Element
|
pub fn PostHeader(tale: Signal<Option<Tale>>,
|
||||||
|
adventurer: Signal<Option<Adventurer>>) -> Element
|
||||||
{
|
{
|
||||||
let tale: Signal<Option<Tale>> = use_context::<Signal<Option<Tale>>>();
|
|
||||||
let adventurer = use_context::<Signal<Option<Adventurer>>>();
|
|
||||||
|
|
||||||
let converted_tags = use_memo(move || {
|
let converted_tags = use_memo(move || {
|
||||||
tale().as_ref()
|
tale().as_ref()
|
||||||
.map(|t| {
|
.map(|t| {
|
||||||
@ -380,9 +375,9 @@ pub fn PostHeader() -> Element
|
|||||||
|
|
||||||
match adventurer()
|
match adventurer()
|
||||||
{
|
{
|
||||||
Some(author) =>
|
Some(_) =>
|
||||||
{
|
{
|
||||||
rsx! { PostHeaderAuthor {} }
|
rsx! { PostHeaderAuthor { adventurer: adventurer } }
|
||||||
}
|
}
|
||||||
|
|
||||||
None =>
|
None =>
|
||||||
@ -396,18 +391,19 @@ pub fn PostHeader() -> Element
|
|||||||
#[component]
|
#[component]
|
||||||
pub fn BlogPost(slug: Signal<String>, children: Element) -> Element
|
pub fn BlogPost(slug: Signal<String>, children: Element) -> Element
|
||||||
{
|
{
|
||||||
|
// The tale depends on the post future resolving.
|
||||||
|
let mut tale: Signal<Option<Tale>> = use_signal(|| None);
|
||||||
|
let mut adventurer = use_signal(|| None);
|
||||||
|
|
||||||
// Run a once off server fetch of the unchanging blog data.
|
// Run a once off server fetch of the unchanging blog data.
|
||||||
let post = use_server_future(move || {
|
let post = use_server_future(move ||
|
||||||
|
{
|
||||||
// Make this reactive so that as the page changes it should rerun this.
|
// Make this reactive so that as the page changes it should rerun this.
|
||||||
let url_slug = slug();
|
let url_slug = slug();
|
||||||
|
|
||||||
async move { get_blog_post(url_slug).await }
|
async move { get_blog_post(url_slug).await }
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
// The tale depends on the post future resolving.
|
|
||||||
let mut tale: Signal<Option<Tale>> = use_signal(|| None);
|
|
||||||
use_context_provider(|| tale);
|
|
||||||
|
|
||||||
let author = use_server_future(move || {
|
let author = use_server_future(move || {
|
||||||
let handle = match tale()
|
let handle = match tale()
|
||||||
{
|
{
|
||||||
@ -419,9 +415,6 @@ pub fn BlogPost(slug: Signal<String>, children: Element) -> Element
|
|||||||
async move { get_author(handle).await }
|
async move { get_author(handle).await }
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
let mut adventurer = use_signal(|| None);
|
|
||||||
use_context_provider(|| adventurer);
|
|
||||||
|
|
||||||
use_effect(move || {
|
use_effect(move || {
|
||||||
if let Some(Ok(data)) = &*post.read()
|
if let Some(Ok(data)) = &*post.read()
|
||||||
{
|
{
|
||||||
@ -450,7 +443,11 @@ pub fn BlogPost(slug: Signal<String>, children: Element) -> Element
|
|||||||
{
|
{
|
||||||
rsx!
|
rsx!
|
||||||
{
|
{
|
||||||
PostHeader {}
|
PostHeader
|
||||||
|
{
|
||||||
|
tale: tale,
|
||||||
|
adventurer: adventurer
|
||||||
|
}
|
||||||
|
|
||||||
//Story {}
|
//Story {}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user