edc_web_components/contexts/
my_did_provider_context.rs1use 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}