@tronweb3/tronwallet-adapter-react-hooks 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -0
- package/README.md +236 -0
- package/lib/cjs/WalletProvider.js +243 -0
- package/lib/cjs/WalletProvider.js.map +1 -0
- package/lib/cjs/index.js +20 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/package.json +1 -0
- package/lib/cjs/useLocalStorage.js +43 -0
- package/lib/cjs/useLocalStorage.js.map +1 -0
- package/lib/cjs/useWallet.js +61 -0
- package/lib/cjs/useWallet.js.map +1 -0
- package/lib/esm/WalletProvider.js +204 -0
- package/lib/esm/WalletProvider.js.map +1 -0
- package/lib/esm/index.js +4 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/useLocalStorage.js +39 -0
- package/lib/esm/useLocalStorage.js.map +1 -0
- package/lib/esm/useWallet.js +57 -0
- package/lib/esm/useWallet.js.map +1 -0
- package/lib/types/WalletProvider.d.ts +11 -0
- package/lib/types/WalletProvider.d.ts.map +1 -0
- package/lib/types/index.d.ts +4 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/useLocalStorage.d.ts +3 -0
- package/lib/types/useLocalStorage.d.ts.map +1 -0
- package/lib/types/useWallet.d.ts +23 -0
- package/lib/types/useWallet.d.ts.map +1 -0
- package/package.json +53 -0
- package/src/WalletProvider.tsx +275 -0
- package/src/index.ts +3 -0
- package/src/useLocalStorage.ts +39 -0
- package/src/useWallet.ts +80 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
Copyright (c) 2022-Present, tronprotocol
|
|
3
|
+
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
in the Software without restriction, including without limitation the rights
|
|
7
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
furnished to do so, subject to the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be included in all
|
|
12
|
+
copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
# @tronweb3/tronwallet-adapter-react-hooks
|
|
2
|
+
|
|
3
|
+
`@tronweb3/tronwallet-adapter-react-hooks` provides a `useWallet()` hook which will make it easy to "Connect Wallet" and listen to the state change for developers.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @tronweb3/tronwallet-adapter-react-hooks @tronweb3/tronwallet-abstract-adapter @tronweb3/tronwallet-adapters
|
|
9
|
+
# or pnpm install @tronweb3/tronwallet-adapter-react-hooks @tronweb3/tronwallet-abstract-adapter @tronweb3/tronwallet-adapters
|
|
10
|
+
# or yarn install @tronweb3/tronwallet-adapter-react-hooks @tronweb3/tronwallet-abstract-adapter @tronweb3/tronwallet-adapters
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
`@tronweb3/tronwallet-adapter-react-hooks` uses [`Context` of React](https://reactjs.org/docs/context.html) to maintain a shared data. So developers need to wrap `App` content within the `WalletProvider`.
|
|
16
|
+
|
|
17
|
+
You can provide a `onError` callback to handle various errors such as `WalletConnectionError`, `WalletNotFoundError`.
|
|
18
|
+
|
|
19
|
+
```jsx
|
|
20
|
+
import { useWallet, WalletProvider } from '@tronweb3/tronwallet-adapter-react-hooks';
|
|
21
|
+
import { WalletDisconnectedError, WalletError, WalletNotFoundError } from '@tronweb3/tronwallet-abstract-adapter';
|
|
22
|
+
import toast, { Toaster } from 'react-hot-toast';
|
|
23
|
+
|
|
24
|
+
function App() {
|
|
25
|
+
// use `react-hot-toast` npm package to notify user what happened here
|
|
26
|
+
function onError(e: WalletError) {
|
|
27
|
+
if (e instanceof WalletNotFoundError) {
|
|
28
|
+
toast.error(e.message);
|
|
29
|
+
} else if (e instanceof WalletDisconnectedError) {
|
|
30
|
+
toast.error(e.message);
|
|
31
|
+
} else toast.error(e.message);
|
|
32
|
+
}
|
|
33
|
+
return (
|
|
34
|
+
<WalletProvider onError={onError}>
|
|
35
|
+
<ConnectComponent></ConnectComponent>
|
|
36
|
+
<Profile></Profile>
|
|
37
|
+
</WalletProvider>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
function ConnectComponent() {
|
|
41
|
+
const { connect, disconnect, select, connected } = useWallet();
|
|
42
|
+
return (<div>
|
|
43
|
+
<button type="button" onClick={() => select('TronLink Adapter' as any)}> Select TronLink</button>
|
|
44
|
+
<button type="button" disabled={connected} onClick={connect}>Connect</button><br>
|
|
45
|
+
<button type="button" disabled={!connected} onClick={disconnect}>Disconnect</button>
|
|
46
|
+
</div>);
|
|
47
|
+
}
|
|
48
|
+
function Profile() {
|
|
49
|
+
const { address, connected, wallet } = useWallet();
|
|
50
|
+
return (<div>
|
|
51
|
+
<p> <span>Connection Status:</span> {connected ? 'Connected' : 'Disconnected'}</p>
|
|
52
|
+
<p> <span>Your selected Wallet:</span> {wallet?.adapter.name} </p>
|
|
53
|
+
<p> <span>Your Address:</span> {address} </p>
|
|
54
|
+
</div>);
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## `WalletProvider`
|
|
59
|
+
|
|
60
|
+
`WalletProvider` and `useWallet` work together like `Context.Provider` and `useContext()`. There is a `WalletProviderContext` underlying which maintains some state and can be obtained with `useWallet`. So developers need to wrap application components with `WalletProvider`.
|
|
61
|
+
|
|
62
|
+
```jsx
|
|
63
|
+
function App() {
|
|
64
|
+
return (
|
|
65
|
+
<div>
|
|
66
|
+
<WalletProvider>/* here is application components */</WalletProvider>
|
|
67
|
+
</div>
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Props
|
|
73
|
+
|
|
74
|
+
#### adapters:
|
|
75
|
+
|
|
76
|
+
- Required: `false`
|
|
77
|
+
- Type: `Adapter[]`
|
|
78
|
+
- Default: `[ new TronLinkAdapter() ]`
|
|
79
|
+
|
|
80
|
+
Used to specify what wallet adapters are supported. All wallet adapters can be imported from `@tronweb3/tronwallet-adapters` package or their standalone package.
|
|
81
|
+
|
|
82
|
+
- Example
|
|
83
|
+
```jsx
|
|
84
|
+
import { TronLinkAdapter } from '@tronweb3/tronwallet-adapters';
|
|
85
|
+
function App() {
|
|
86
|
+
const adapters = useMemo(() => [new TronLinkAdapter()]);
|
|
87
|
+
return (
|
|
88
|
+
<div>
|
|
89
|
+
<WalletProvider adapters={adapters}>/* here is application components */</WalletProvider>
|
|
90
|
+
</div>
|
|
91
|
+
);
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### onError
|
|
96
|
+
|
|
97
|
+
- Required: `false`
|
|
98
|
+
- Type: `(error: WalletError): void`
|
|
99
|
+
- Default: `function(error) { console.error(error); }`
|
|
100
|
+
|
|
101
|
+
Used to handle errors occured when use wallet. Developers can use the callback to tell users what happened according to the `error` type. All error types can be found [here](https://github.com/tronprotocol/tronwallet-adapter/blob/main/packages/adapters/abstract-adapter/src/errors.ts).
|
|
102
|
+
|
|
103
|
+
- Example
|
|
104
|
+
```jsx
|
|
105
|
+
functon onError(e) {
|
|
106
|
+
if (e instanceof WalletNotFoundError) {
|
|
107
|
+
console.error(e.message);
|
|
108
|
+
} else if (e instanceof WalletDisconnectedError) {
|
|
109
|
+
console.error(e.message);
|
|
110
|
+
} else console.error(e.message);
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
#### autoConnect
|
|
115
|
+
|
|
116
|
+
- Required: `false`
|
|
117
|
+
- Type: `boolean`
|
|
118
|
+
- Default: `true`
|
|
119
|
+
|
|
120
|
+
Whether connect to the specified wallet automatically when loading the page and selecting a wallet.
|
|
121
|
+
|
|
122
|
+
#### localStorageKey
|
|
123
|
+
|
|
124
|
+
- Required: `false`
|
|
125
|
+
- Type: `string`
|
|
126
|
+
- Default: `tronAdapterName`
|
|
127
|
+
|
|
128
|
+
Specified the key used to cache wallet name in `localStorage`. When user select a wallet, applications will cache the wallet name to localStorage.
|
|
129
|
+
|
|
130
|
+
## `useWallet()`
|
|
131
|
+
|
|
132
|
+
`useWallet` is a react hook providing a set of properties and methods which can be used to select and connect wallet, get wallet state and so on.
|
|
133
|
+
|
|
134
|
+
> `useWallet()` must be used in the descendant components of `WalletProvider`!
|
|
135
|
+
|
|
136
|
+
### Properties
|
|
137
|
+
|
|
138
|
+
#### `autoConnect`
|
|
139
|
+
|
|
140
|
+
- Type: `boolean`
|
|
141
|
+
Synchronous with `autoConnect` property passed to `WalletProvider`.
|
|
142
|
+
|
|
143
|
+
#### `wallet`
|
|
144
|
+
|
|
145
|
+
- Type: `Wallet | null`
|
|
146
|
+
The wallet current selected. If no wallet is selected, the value is `null`.
|
|
147
|
+
|
|
148
|
+
`Wallet` is defined as follow:
|
|
149
|
+
|
|
150
|
+
```typescript
|
|
151
|
+
interface Wallet {
|
|
152
|
+
adapter: Adapter; // wallet adapter
|
|
153
|
+
state: AdapterState;
|
|
154
|
+
}
|
|
155
|
+
enum AdapterState {
|
|
156
|
+
NotFound = 'NotFound',
|
|
157
|
+
Disconnect = 'Disconnected',
|
|
158
|
+
Connected = 'Connected',
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### `address`
|
|
163
|
+
|
|
164
|
+
- Type: `string | null`
|
|
165
|
+
Address of current selected wallet. If no wallet is selected, the value is `null`.
|
|
166
|
+
|
|
167
|
+
#### `wallets`
|
|
168
|
+
|
|
169
|
+
- Type: `Wallet[]`
|
|
170
|
+
Wallet list based on current used adapters when initial `WalletProvider`.
|
|
171
|
+
|
|
172
|
+
#### `connecting`
|
|
173
|
+
|
|
174
|
+
- Type: `boolean`
|
|
175
|
+
Indicate if is connecting to the wallet.
|
|
176
|
+
|
|
177
|
+
#### `connected`
|
|
178
|
+
|
|
179
|
+
- Type: `boolean`
|
|
180
|
+
Indicate if is connected with the wallet.
|
|
181
|
+
|
|
182
|
+
#### `disconnecting`
|
|
183
|
+
|
|
184
|
+
- Type: `boolean`
|
|
185
|
+
Indicate if is connecting to the wallet.
|
|
186
|
+
|
|
187
|
+
### Methods
|
|
188
|
+
|
|
189
|
+
#### select
|
|
190
|
+
|
|
191
|
+
- Type: `(walletAdapterName: AdapterName) => void`
|
|
192
|
+
Select a wallet by walletAdapterName. Valid adapters can be found [here](https://github.com/tronprotocol/tronwallet-adapter/tree/main/packages/adapters/adapters)
|
|
193
|
+
|
|
194
|
+
#### connect
|
|
195
|
+
|
|
196
|
+
- Type: `() => Promise<void>`
|
|
197
|
+
Connect to current selected wallet.
|
|
198
|
+
|
|
199
|
+
#### disconnect
|
|
200
|
+
|
|
201
|
+
- Type: `() => Promise<void>`
|
|
202
|
+
Disconnect from current selected wallet.
|
|
203
|
+
|
|
204
|
+
### signTransaction
|
|
205
|
+
|
|
206
|
+
- Type: `(transaction: Transaction) => Promise<SignedTransaction>`
|
|
207
|
+
Sign a unsigned transaction. This method is the same as TronWeb API.
|
|
208
|
+
|
|
209
|
+
### signMessage
|
|
210
|
+
|
|
211
|
+
- Type: `(message: string) => Promise<string>`
|
|
212
|
+
Sign a message.
|
|
213
|
+
|
|
214
|
+
### Example
|
|
215
|
+
|
|
216
|
+
```js
|
|
217
|
+
import { useWallet } from '@tronweb3/tronwallet-adapter-react-hooks';
|
|
218
|
+
import { AdapterName } from '@tronweb3/tronwallet-abstract-adapter';
|
|
219
|
+
|
|
220
|
+
function Content() {
|
|
221
|
+
const { connect, disconnect, select, connected } = useWallet();
|
|
222
|
+
return (
|
|
223
|
+
<div>
|
|
224
|
+
<button type="button" onClick={() => select('TronLink Adapter')}>
|
|
225
|
+
Select TronLink
|
|
226
|
+
</button>
|
|
227
|
+
<button type="button" disabled={connected} onClick={connect}>
|
|
228
|
+
Connect
|
|
229
|
+
</button>
|
|
230
|
+
<button type="button" disabled={!connected} onClick={disconnect}>
|
|
231
|
+
Disconnect
|
|
232
|
+
</button>
|
|
233
|
+
</div>
|
|
234
|
+
);
|
|
235
|
+
}
|
|
236
|
+
```
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.WalletProvider = void 0;
|
|
36
|
+
const tronwallet_abstract_adapter_1 = require("@tronweb3/tronwallet-abstract-adapter");
|
|
37
|
+
const tronwallet_adapter_tronlink_1 = require("@tronweb3/tronwallet-adapter-tronlink");
|
|
38
|
+
const react_1 = __importStar(require("react"));
|
|
39
|
+
const useWallet_js_1 = require("./useWallet.js");
|
|
40
|
+
const useLocalStorage_js_1 = require("./useLocalStorage.js");
|
|
41
|
+
const initialState = {
|
|
42
|
+
wallet: null,
|
|
43
|
+
address: null,
|
|
44
|
+
connected: false,
|
|
45
|
+
adapter: null,
|
|
46
|
+
};
|
|
47
|
+
const WalletProvider = function ({ children, adapters: adaptersPro = null, onError = (error) => console.error(error), localStorageKey = 'tronAdapterName', autoConnect = true, }) {
|
|
48
|
+
const [name, setName] = (0, useLocalStorage_js_1.useLocalStorage)(localStorageKey, null);
|
|
49
|
+
const [{ wallet, connected, address, adapter }, setState] = (0, react_1.useState)(initialState);
|
|
50
|
+
const [connecting, setConnecting] = (0, react_1.useState)(false);
|
|
51
|
+
const [disconnecting, setDisconnecting] = (0, react_1.useState)(false);
|
|
52
|
+
const isConnecting = (0, react_1.useRef)(false);
|
|
53
|
+
const isDisconnecting = (0, react_1.useRef)(false);
|
|
54
|
+
// set default supported adapters
|
|
55
|
+
const adapters = (0, react_1.useMemo)(() => {
|
|
56
|
+
if (adaptersPro === null) {
|
|
57
|
+
return [new tronwallet_adapter_tronlink_1.TronLinkAdapter()];
|
|
58
|
+
}
|
|
59
|
+
return adaptersPro;
|
|
60
|
+
}, [adaptersPro]);
|
|
61
|
+
const [wallets, setWallets] = (0, react_1.useState)(() => adapters.map((adapter) => ({
|
|
62
|
+
adapter,
|
|
63
|
+
state: adapter.state,
|
|
64
|
+
})));
|
|
65
|
+
(0, react_1.useEffect)(function () {
|
|
66
|
+
setWallets((prevWallets) => adapters.map((adapter, index) => {
|
|
67
|
+
const wallet = prevWallets[index];
|
|
68
|
+
if (wallet && wallet.adapter === adapter && wallet.state === adapter.state) {
|
|
69
|
+
return wallet;
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
adapter,
|
|
73
|
+
state: adapter.state,
|
|
74
|
+
};
|
|
75
|
+
}));
|
|
76
|
+
function handleStateChange() {
|
|
77
|
+
setWallets((prevWallets) => {
|
|
78
|
+
const index = prevWallets.findIndex((wallet) => wallet.adapter === this);
|
|
79
|
+
if (index === -1) {
|
|
80
|
+
return prevWallets;
|
|
81
|
+
}
|
|
82
|
+
return prevWallets.map((wallet, idx) => {
|
|
83
|
+
if (idx === index) {
|
|
84
|
+
return Object.assign(Object.assign({}, wallet), { state: wallet.adapter.state });
|
|
85
|
+
}
|
|
86
|
+
return wallet;
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
adapters.forEach((adapter) => adapter.on('stateChanged', handleStateChange, adapter));
|
|
91
|
+
return () => adapters.forEach((adapter) => adapter.off('stateChanged', handleStateChange, adapter));
|
|
92
|
+
}, [adapters]);
|
|
93
|
+
// Set state when choosen wallet changes
|
|
94
|
+
(0, react_1.useEffect)(function () {
|
|
95
|
+
const wallet = name && wallets.find((item) => item.adapter.name === name);
|
|
96
|
+
if (wallet) {
|
|
97
|
+
setState({
|
|
98
|
+
wallet,
|
|
99
|
+
adapter: wallet.adapter,
|
|
100
|
+
connected: wallet.adapter.connected,
|
|
101
|
+
address: wallet.adapter.address,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
setState(initialState);
|
|
106
|
+
}
|
|
107
|
+
}, [name, wallets]);
|
|
108
|
+
const handleConnect = (0, react_1.useCallback)(function () {
|
|
109
|
+
if (!adapter) {
|
|
110
|
+
return setName(null);
|
|
111
|
+
}
|
|
112
|
+
setState((state) => (Object.assign(Object.assign({}, state), { connected: adapter.connected, address: adapter.address })));
|
|
113
|
+
}, [adapter, setName]);
|
|
114
|
+
const handleDisconnect = (0, react_1.useCallback)(function () {
|
|
115
|
+
setName(null);
|
|
116
|
+
}, [setName]);
|
|
117
|
+
const handleError = (0, react_1.useCallback)(function (error) {
|
|
118
|
+
onError(error);
|
|
119
|
+
return error;
|
|
120
|
+
}, [onError]);
|
|
121
|
+
const handleAccountChange = (0, react_1.useCallback)(function (address) {
|
|
122
|
+
setState((state) => (Object.assign(Object.assign({}, state), { address })));
|
|
123
|
+
}, []);
|
|
124
|
+
(0, react_1.useEffect)(function () {
|
|
125
|
+
if (adapter) {
|
|
126
|
+
adapter.on('connect', handleConnect);
|
|
127
|
+
adapter.on('disconnect', handleDisconnect);
|
|
128
|
+
adapter.on('error', handleError);
|
|
129
|
+
adapter.on('accountsChanged', handleAccountChange);
|
|
130
|
+
return () => {
|
|
131
|
+
adapter.off('connect', handleConnect);
|
|
132
|
+
adapter.off('disconnect', handleDisconnect);
|
|
133
|
+
adapter.off('error', handleError);
|
|
134
|
+
adapter.off('accountsChanged', handleAccountChange);
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}, [adapter, handleConnect, handleDisconnect, handleError, handleAccountChange]);
|
|
138
|
+
// disconnect the previous when wallet changes
|
|
139
|
+
(0, react_1.useEffect)(() => {
|
|
140
|
+
return () => {
|
|
141
|
+
adapter === null || adapter === void 0 ? void 0 : adapter.disconnect();
|
|
142
|
+
};
|
|
143
|
+
}, [adapter]);
|
|
144
|
+
// auto connect
|
|
145
|
+
(0, react_1.useEffect)(function () {
|
|
146
|
+
if (isConnecting.current ||
|
|
147
|
+
connected ||
|
|
148
|
+
!autoConnect ||
|
|
149
|
+
!adapter ||
|
|
150
|
+
adapter.state !== tronwallet_abstract_adapter_1.AdapterState.Disconnect) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
(function connect() {
|
|
154
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
155
|
+
isConnecting.current = true;
|
|
156
|
+
setConnecting(true);
|
|
157
|
+
try {
|
|
158
|
+
yield adapter.connect();
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
setName(null);
|
|
162
|
+
}
|
|
163
|
+
finally {
|
|
164
|
+
setConnecting(false);
|
|
165
|
+
isConnecting.current = false;
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
})();
|
|
169
|
+
}, [isConnecting, autoConnect, adapter, connected, setName]);
|
|
170
|
+
const connect = (0, react_1.useCallback)(function () {
|
|
171
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
172
|
+
if (isConnecting.current || isDisconnecting.current || connected) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
if (!adapter)
|
|
176
|
+
throw handleError(new tronwallet_abstract_adapter_1.WalletNotSelectedError());
|
|
177
|
+
isConnecting.current = true;
|
|
178
|
+
setConnecting(true);
|
|
179
|
+
try {
|
|
180
|
+
yield adapter.connect();
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
setName(null);
|
|
184
|
+
throw error;
|
|
185
|
+
}
|
|
186
|
+
finally {
|
|
187
|
+
setConnecting(false);
|
|
188
|
+
isConnecting.current = false;
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
}, [isConnecting, isDisconnecting, adapter, connected, handleError, setName]);
|
|
192
|
+
const disconnect = (0, react_1.useCallback)(function () {
|
|
193
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
194
|
+
if (isDisconnecting.current)
|
|
195
|
+
return;
|
|
196
|
+
if (!adapter)
|
|
197
|
+
return setName(null);
|
|
198
|
+
isDisconnecting.current = true;
|
|
199
|
+
setDisconnecting(true);
|
|
200
|
+
try {
|
|
201
|
+
yield adapter.disconnect();
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
setName(null);
|
|
205
|
+
throw error;
|
|
206
|
+
}
|
|
207
|
+
finally {
|
|
208
|
+
setDisconnecting(false);
|
|
209
|
+
isDisconnecting.current = false;
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
}, [adapter, isDisconnecting, setName]);
|
|
213
|
+
const signTransaction = (0, react_1.useCallback)(function (transaction, privateKey) {
|
|
214
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
215
|
+
if (!adapter)
|
|
216
|
+
throw handleError(new tronwallet_abstract_adapter_1.WalletNotSelectedError());
|
|
217
|
+
return yield adapter.signTransaction(transaction, privateKey);
|
|
218
|
+
});
|
|
219
|
+
}, [adapter, handleError]);
|
|
220
|
+
const signMessage = (0, react_1.useCallback)(function (message, privateKey) {
|
|
221
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
222
|
+
if (!adapter)
|
|
223
|
+
throw handleError(new tronwallet_abstract_adapter_1.WalletNotSelectedError());
|
|
224
|
+
return yield adapter.signMessage(message, privateKey);
|
|
225
|
+
});
|
|
226
|
+
}, [adapter, handleError]);
|
|
227
|
+
return (react_1.default.createElement(useWallet_js_1.WalletContext.Provider, { value: {
|
|
228
|
+
autoConnect,
|
|
229
|
+
wallets,
|
|
230
|
+
wallet,
|
|
231
|
+
address,
|
|
232
|
+
connecting,
|
|
233
|
+
connected,
|
|
234
|
+
disconnecting,
|
|
235
|
+
select: setName,
|
|
236
|
+
connect,
|
|
237
|
+
disconnect,
|
|
238
|
+
signTransaction,
|
|
239
|
+
signMessage,
|
|
240
|
+
} }, children));
|
|
241
|
+
};
|
|
242
|
+
exports.WalletProvider = WalletProvider;
|
|
243
|
+
//# sourceMappingURL=WalletProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WalletProvider.js","sourceRoot":"","sources":["../../src/WalletProvider.tsx"],"names":[],"mappings":"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"}
|
package/lib/cjs/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./useLocalStorage.js"), exports);
|
|
18
|
+
__exportStar(require("./useWallet.js"), exports);
|
|
19
|
+
__exportStar(require("./WalletProvider.js"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,uDAAqC;AACrC,iDAA+B;AAC/B,sDAAoC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "type": "commonjs" }
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useLocalStorage = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
const tronwallet_abstract_adapter_1 = require("@tronweb3/tronwallet-abstract-adapter");
|
|
6
|
+
function useLocalStorage(key, defaultState) {
|
|
7
|
+
const [state, setState] = (0, react_1.useState)(() => {
|
|
8
|
+
try {
|
|
9
|
+
const value = localStorage.getItem(key);
|
|
10
|
+
if (value)
|
|
11
|
+
return JSON.parse(value);
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
if ((0, tronwallet_abstract_adapter_1.isInBrowser)()) {
|
|
15
|
+
console.error(error);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return defaultState;
|
|
19
|
+
});
|
|
20
|
+
const isFirstRender = (0, react_1.useRef)(true);
|
|
21
|
+
(0, react_1.useEffect)(() => {
|
|
22
|
+
if (isFirstRender.current) {
|
|
23
|
+
isFirstRender.current = false;
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
if (state === null) {
|
|
28
|
+
localStorage.removeItem(key);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
localStorage.setItem(key, JSON.stringify(state));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
if ((0, tronwallet_abstract_adapter_1.isInBrowser)()) {
|
|
36
|
+
console.error(error);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}, [state, key]);
|
|
40
|
+
return [state, setState];
|
|
41
|
+
}
|
|
42
|
+
exports.useLocalStorage = useLocalStorage;
|
|
43
|
+
//# sourceMappingURL=useLocalStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useLocalStorage.js","sourceRoot":"","sources":["../../src/useLocalStorage.ts"],"names":[],"mappings":";;;AACA,iCAAoD;AACpD,uFAAoE;AAEpE,SAAgB,eAAe,CAAI,GAAW,EAAE,YAAe;IAC3D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAI,GAAG,EAAE;QACvC,IAAI;YACA,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,KAAK;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAM,CAAC;SAC5C;QAAC,OAAO,KAAc,EAAE;YACrB,IAAI,IAAA,yCAAW,GAAE,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACxB;SACJ;QAED,OAAO,YAAY,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,MAAM,aAAa,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IACnC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACX,IAAI,aAAa,CAAC,OAAO,EAAE;YACvB,aAAa,CAAC,OAAO,GAAG,KAAK,CAAC;YAC9B,OAAO;SACV;QACD,IAAI;YACA,IAAI,KAAK,KAAK,IAAI,EAAE;gBAChB,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aAChC;iBAAM;gBACH,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;aACpD;SACJ;QAAC,OAAO,KAAU,EAAE;YACjB,IAAI,IAAA,yCAAW,GAAE,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACxB;SACJ;IACL,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IAEjB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAlCD,0CAkCC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useWallet = exports.WalletContext = void 0;
|
|
4
|
+
const react_1 = require("react");
|
|
5
|
+
function printError() {
|
|
6
|
+
console.error(`
|
|
7
|
+
You are using WalletContext without provide the WalletContext.Provider.
|
|
8
|
+
Please wrap your sub-components with a WalletProvider and provide required values.
|
|
9
|
+
`);
|
|
10
|
+
}
|
|
11
|
+
const DEFAULT_CONTEXT = {
|
|
12
|
+
autoConnect: false,
|
|
13
|
+
connecting: false,
|
|
14
|
+
connected: false,
|
|
15
|
+
disconnecting: false,
|
|
16
|
+
/* eslint-disable */
|
|
17
|
+
select(_name) {
|
|
18
|
+
printError();
|
|
19
|
+
},
|
|
20
|
+
connect() {
|
|
21
|
+
printError();
|
|
22
|
+
return Promise.reject();
|
|
23
|
+
},
|
|
24
|
+
disconnect() {
|
|
25
|
+
printError();
|
|
26
|
+
return Promise.reject();
|
|
27
|
+
},
|
|
28
|
+
signTransaction(_transaction) {
|
|
29
|
+
printError();
|
|
30
|
+
return Promise.reject();
|
|
31
|
+
},
|
|
32
|
+
signMessage(_message) {
|
|
33
|
+
printError();
|
|
34
|
+
return Promise.reject();
|
|
35
|
+
},
|
|
36
|
+
/* eslint-enable */
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(DEFAULT_CONTEXT, 'wallets', {
|
|
39
|
+
get() {
|
|
40
|
+
printError();
|
|
41
|
+
return [];
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
Object.defineProperty(DEFAULT_CONTEXT, 'wallet', {
|
|
45
|
+
get() {
|
|
46
|
+
printError();
|
|
47
|
+
return null;
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
Object.defineProperty(DEFAULT_CONTEXT, 'address', {
|
|
51
|
+
get() {
|
|
52
|
+
printError();
|
|
53
|
+
return null;
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
exports.WalletContext = (0, react_1.createContext)(DEFAULT_CONTEXT);
|
|
57
|
+
function useWallet() {
|
|
58
|
+
return (0, react_1.useContext)(exports.WalletContext);
|
|
59
|
+
}
|
|
60
|
+
exports.useWallet = useWallet;
|
|
61
|
+
//# sourceMappingURL=useWallet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWallet.js","sourceRoot":"","sources":["../../src/useWallet.ts"],"names":[],"mappings":";;;AACA,iCAAkD;AAsBlD,SAAS,UAAU;IACf,OAAO,CAAC,KAAK,CAAC;;;CAGjB,CAAC,CAAC;AACH,CAAC;AACD,MAAM,eAAe,GAAG;IACpB,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAChB,aAAa,EAAE,KAAK;IACpB,oBAAoB;IACpB,MAAM,CAAC,KAAkB;QACrB,UAAU,EAAE,CAAC;IACjB,CAAC;IACD,OAAO;QACH,UAAU,EAAE,CAAC;QACb,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,UAAU;QACN,UAAU,EAAE,CAAC;QACb,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,eAAe,CAAC,YAAyB;QACrC,UAAU,EAAE,CAAC;QACb,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,WAAW,CAAC,QAAgB;QACxB,UAAU,EAAE,CAAC;QACb,OAAO,OAAO,CAAC,MAAM,EAAE,CAAC;IAC5B,CAAC;IACD,mBAAmB;CACA,CAAC;AAExB,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,SAAS,EAAE;IAC9C,GAAG;QACC,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACd,CAAC;CACJ,CAAC,CAAC;AACH,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,QAAQ,EAAE;IAC7C,GAAG;QACC,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAC,CAAC;AACH,MAAM,CAAC,cAAc,CAAC,eAAe,EAAE,SAAS,EAAE;IAC9C,GAAG;QACC,UAAU,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,IAAA,qBAAa,EAAqB,eAAqC,CAAC,CAAC;AACtG,SAAgB,SAAS;IACrB,OAAO,IAAA,kBAAU,EAAC,qBAAa,CAAC,CAAC;AACrC,CAAC;AAFD,8BAEC"}
|