edc_web_components/contexts/
my_did_provider_context.rs1use std::{ops::Deref, rc::Rc};
2use yew::prelude::*;
3
4#[derive(Debug, PartialEq, Clone)]
5pub enum MyDidProviderAction {}
6
7#[derive(Clone, PartialEq)]
8pub struct MyDidProviderState {
9 my_did: String,
10}
11
12impl MyDidProviderState {
13 pub fn my_did(&self) -> &str {
14 &self.my_did
15 }
16}
17
18impl Reducible for MyDidProviderState {
19 type Action = MyDidProviderAction;
20
21 fn reduce(self: Rc<Self>, _action: Self::Action) -> Rc<Self> {
22 let new_self = self.deref().clone();
23
24 new_self.into()
25 }
26}
27
28#[derive(Properties, PartialEq)]
29pub struct MyDidProviderContextProviderProps {
30 #[prop_or_default]
31 pub children: Html,
32 pub my_did: String,
33}
34
35#[component]
36pub fn MyDidProviderContextProvider(props: &MyDidProviderContextProviderProps) -> Html {
37 let my_did_provider_context = use_reducer(move || MyDidProviderState {
38 my_did: props.my_did.clone(),
39 });
40
41 html! {
42 <ContextProvider<MyDidProviderContext> context={my_did_provider_context}>
43 { props.children.clone() }
44 </ContextProvider<MyDidProviderContext>>
45 }
46}
47
48pub type MyDidProviderContext = UseReducerHandle<MyDidProviderState>;
49
50#[hook]
51pub fn use_my_did_provider_context() -> Option<MyDidProviderContext> {
52 use_context::<MyDidProviderContext>()
53}