Skip to main content

edc_web_components/contexts/
my_did_provider_context.rs

1use 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}