-
Notifications
You must be signed in to change notification settings - Fork 2
/
App.js
121 lines (102 loc) · 3.13 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/* global AlgoSigner */
import './App.css';
import {Button, Container, Header, Message} from "semantic-ui-react";
import {useState, useCallback} from "react";
/**
* React Component displaying a title, a button doing some (AlgoSigner-related) actions
* and a message with the result.
*
* @param buttonAction is a (potentially async) function called when clicking on the button
* and returning the result to be displayed
*/
const ExampleAlgoSigner = ({title, buttonText, buttonAction}) => {
const [result, setResult] = useState("");
const onClick = useCallback(async () => {
const r = await buttonAction();
setResult(r);
}, [buttonAction]);
return (
<>
<Header as="h2" dividing>{title}</Header>
<Button primary={true} onClick={onClick}>{buttonText}</Button>
<Message>
<code>
{result}
</code>
</Message>
</>
);
};
// The following components are all demonstrating some features of AlgoSigner
const CheckAlgoSigner = () => {
const action = useCallback(() => {
if (typeof AlgoSigner !== 'undefined') {
return "AlgoSigner is installed.";
} else {
return "AlgoSigner is NOT installed.";
}
}, []);
return <ExampleAlgoSigner title="CheckAlgoSigner" buttonText="Check" buttonAction={action}/>
};
const ConnectAlgoSigner = () => {
const action = useCallback(async () => {
try {
const r = await AlgoSigner.connect();
return JSON.stringify(r, null, 2);
} catch (e) {
console.error(e);
return JSON.stringify(e, null, 2);
}
}, []);
return <ExampleAlgoSigner title="Connect to AlgoSigner" buttonText="Connect" buttonAction={action}/>
};
const GetAccounts = () => {
const action = useCallback(async () => {
try {
const r = await AlgoSigner.accounts({
ledger: 'TestNet'
});
return JSON.stringify(r, null, 2);
} catch (e) {
console.error(e);
return JSON.stringify(e, null, 2);
}
}, []);
return <ExampleAlgoSigner title="Get TestNet Accounts" buttonText="Get Accounts" buttonAction={action}/>
};
const GetStatus = () => {
const action = useCallback(async () => {
try {
const r = await AlgoSigner.algod({
ledger: 'TestNet',
path: '/v2/status'
});
return JSON.stringify(r, null, 2);
} catch (e) {
console.error(e);
return JSON.stringify(e, null, 2);
}
}, []);
return <ExampleAlgoSigner title="Get TestNet Algod Status" buttonText="Get Status" buttonAction={action}/>
};
const App = () => {
return (
<Container className="App">
<Header as="h1" dividing>Simple React Examples Using AlgoSigner</Header>
<p>
This React App shows some very simple examples using AlgoSigner.
See <a
href="https://purestake.github.io/algosigner-dapp-example">https://purestake.github.io/algosigner-dapp-example</a> for
more examples.
</p>
<p>
<a href="https://github.com/fabrice102/algosigner-dapp-react-example">See code in GitHub.</a>
</p>
<CheckAlgoSigner/>
<ConnectAlgoSigner/>
<GetAccounts/>
<GetStatus/>
</Container>
);
};
export default App;