Skip to main content

edc_web_components/contexts/
my_did_provider_context.rs

1use yew::prelude::*;
2
3#[derive(Clone, PartialEq)]
4pub struct MyDidProviderState {
5  my_did: String,
6}
7
8impl MyDidProviderState {
9  pub fn my_did(&self) -> &str {
10    &self.my_did
11  }
12}
13
14#[derive(Properties, PartialEq)]
15pub struct MyDidProviderContextProviderProps {
16  #[prop_or_default]
17  pub children: Html,
18  pub my_did: String,
19}
20
21#[component]
22pub fn MyDidProviderContextProvider(props: &MyDidProviderContextProviderProps) -> Html {
23  let my_did_provider_context = use_state(move || MyDidProviderState {
24    my_did: props.my_did.clone(),
25  });
26
27  use_effect_with(
28    (props.my_did.clone(), my_did_provider_context.setter()),
29    |(my_did, my_did_provider_context_setter)| {
30      my_did_provider_context_setter.set(MyDidProviderState {
31        my_did: my_did.clone(),
32      });
33    },
34  );
35
36  html! {
37    <ContextProvider<MyDidProviderState> context={(*my_did_provider_context).clone()}>
38      { props.children.clone() }
39    </ContextProvider<MyDidProviderState>>
40  }
41}
42
43#[hook]
44pub fn use_my_did_provider_context() -> Option<MyDidProviderState> {
45  use_context::<MyDidProviderState>()
46}