edc_web_ui/components/
create_transfer_process.rs1use crate::contexts::use_edc_connector_context;
2use edc_connector_client::types::transfer_process::TransferRequest;
3use patternfly_yew::prelude::*;
4use yew::platform::spawn_local;
5use yew::prelude::*;
6
7#[function_component]
8pub fn CreateTransferProcess() -> Html {
9 let edc_connector_context = use_edc_connector_context();
10
11 let contract_id = use_state(|| "".to_string());
12 let counter_party_address = use_state(|| "".to_string());
13 let transfer_type = use_state(|| "".to_string());
14
15 let onsubmit = use_callback(
16 (
17 edc_connector_context,
18 contract_id.clone(),
19 counter_party_address.clone(),
20 transfer_type.clone(),
21 ),
22 |event: SubmitEvent,
23 (edc_connector_context, contract_id, counter_party_address, transfer_type)| {
24 event.prevent_default();
25
26 let edc_connector_context = edc_connector_context.clone();
27 let contract_id = (**contract_id).clone();
28 let counter_party_address = (**counter_party_address).clone();
29 let transfer_type = (**transfer_type).clone();
30
31 spawn_local(async move {
32 let transfer_request = TransferRequest::builder()
33 .contract_id(contract_id)
34 .counter_party_address(counter_party_address)
35 .transfer_type(transfer_type)
36 .build();
37
38 if let Some(client) = edc_connector_context.get_client() {
39 let _ = client
40 .transfer_processes()
41 .initiate(&transfer_request)
42 .await;
43 }
44 })
45 },
46 );
47
48 let onchange_contract_id = {
49 let contract_id = contract_id.clone();
50
51 use_callback((), move |value, _| {
52 contract_id.set(value);
53 })
54 };
55
56 let onchange_counter_party_address = {
57 let counter_party_address = counter_party_address.clone();
58
59 use_callback((), move |value, _| {
60 counter_party_address.set(value);
61 })
62 };
63
64 let onchange_transfer_type = {
65 let transfer_type = transfer_type.clone();
66
67 use_callback((), move |value, _| {
68 transfer_type.set(value);
69 })
70 };
71
72 let disabled = false;
73
74 html!(
75 <Form {onsubmit}>
76 <FormGroup
77 label={"Contract ID"}
78 required={true}
79 >
80 <TextInput
81 required={true}
82 value={(*contract_id).to_string()}
83 onchange={onchange_contract_id}
84 />
85 </FormGroup>
86
87 <FormGroup
88 label={"Counter Party Address"}
89 required={true}
90 >
91 <TextInput
92 required={true}
93 value={(*counter_party_address).to_string()}
94 onchange={onchange_counter_party_address}
95 />
96 </FormGroup>
97
98 <FormGroup
99 label={"Transfer Type"}
100 required={true}
101 >
102 <TextInput
103 required={true}
104 value={(*transfer_type).to_string()}
105 onchange={onchange_transfer_type}
106 />
107 </FormGroup>
108
109 <ActionGroup>
110 <Button
111 variant={ButtonVariant::Primary}
112 label="Submit"
113 r#type={ButtonType::Submit}
114 {disabled}
115 />
116 <Button variant={ButtonVariant::Secondary} label="Reset" r#type={ButtonType::Reset}/>
117 </ActionGroup>
118 </Form>
119 )
120}