Skip to main content

edc_web_components/components/
did_label.rs

1use crate::components::logo::Logo;
2use crate::contexts::use_did_resolver_context;
3use patternfly_yew::prelude::*;
4use yew::prelude::*;
5
6#[derive(Clone, PartialEq, Properties)]
7pub struct DidLabelProps {
8  pub did: String,
9}
10
11#[component]
12pub fn DidLabel(props: &DidLabelProps) -> Html {
13  let did_resolver_context = use_did_resolver_context();
14
15  let participant = use_memo(
16    (did_resolver_context.clone(), props.did.clone()),
17    |(did_resolver_context, did)| {
18      did_resolver_context
19        .as_ref()
20        .and_then(|did_resolver_context| {
21          did_resolver_context
22            .participant(did)
23            .map(|participant| (participant.name.clone(), participant.logo.clone()))
24        })
25        .unzip()
26    },
27  );
28
29  let (label, logo) = (*participant).clone();
30
31  let label = label.unwrap_or_else(|| props.did.clone());
32
33  html! {
34    <Split gutter=true>
35      <SplitItem>
36        <Logo url={logo.flatten()} width="24px" height="24px" />
37      </SplitItem>
38      <SplitItem>
39        <Tooltip text={props.did.clone()}>{ label }</Tooltip>
40      </SplitItem>
41    </Split>
42  }
43}