Skip to content

Commit deedc17

Browse files
committed
feat: improves write hooks examples
1 parent 20bf5ca commit deedc17

File tree

1 file changed

+158
-5
lines changed

1 file changed

+158
-5
lines changed

packages/react/src/transactions.ts

Lines changed: 158 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,41 @@ import { type UseAsyncTask, useAsyncTask } from './helpers';
2222
* A hook that provides a way to supply assets to an Aave market.
2323
*
2424
* ```ts
25-
* const [supply, { loading, error, data }] = useSupply();
25+
* const [supply, supplying] = useSupply();
26+
* const [sendTransaction, sending] = useSendTransaction(wallet);
27+
*
28+
* const loading = supplying.loading && sending.loading;
29+
* const error = supplying.error || sending.error;
30+
* const data = supplying.data || sending.data;
31+
*
32+
* // …
33+
*
34+
* const result = await supply({ ... })
35+
* .andThen((plan) => {
36+
* switch (plan.__typename) {
37+
* case 'TransactionRequest':
38+
* return sendTransaction(plan);
39+
*
40+
* case 'ApprovalRequired':
41+
* return sendTransaction(plan.approval)
42+
* .andThen(() => sendTransaction(plan.originalTransaction));
43+
* }
44+
* });
45+
*
46+
* if (result.isErr()) {
47+
* switch (error.name) {
48+
* case 'SigningError':
49+
* console.error(`Failed to sign the transaction: ${error.message}`);
50+
* break;
51+
*
52+
* case 'ValidationError':
53+
* console.error(`Insufficient balance: ${error.cause.required.value} required.`);
54+
* break;
55+
* }
56+
* return;
57+
* }
58+
*
59+
* console.log('Transaction sent with hash:', result.value);
2660
* ```
2761
*/
2862
export function useSupply(): UseAsyncTask<
@@ -39,7 +73,41 @@ export function useSupply(): UseAsyncTask<
3973
* A hook that provides a way to borrow assets from an Aave market.
4074
*
4175
* ```ts
42-
* const [borrow, { loading, error, data }] = useBorrow();
76+
* const [borrow, borrowing] = useBorrow();
77+
* const [sendTransaction, sending] = useSendTransaction(wallet);
78+
*
79+
* const loading = borrowing.loading && sending.loading;
80+
* const error = borrowing.error || sending.error;
81+
* const data = borrowing.data || sending.data;
82+
*
83+
* // …
84+
*
85+
* const result = await borrow({ ... })
86+
* .andThen((plan) => {
87+
* switch (plan.__typename) {
88+
* case 'TransactionRequest':
89+
* return sendTransaction(plan);
90+
*
91+
* case 'ApprovalRequired':
92+
* return sendTransaction(plan.approval)
93+
* .andThen(() => sendTransaction(plan.originalTransaction));
94+
* }
95+
* });
96+
*
97+
* if (result.isErr()) {
98+
* switch (error.name) {
99+
* case 'SigningError':
100+
* console.error(`Failed to sign the transaction: ${error.message}`);
101+
* break;
102+
*
103+
* case 'ValidationError':
104+
* console.error(`Insufficient balance: ${error.cause.required.value} required.`);
105+
* break;
106+
* }
107+
* return;
108+
* }
109+
*
110+
* console.log('Transaction sent with hash:', result.value);
43111
* ```
44112
*/
45113
export function useBorrow(): UseAsyncTask<
@@ -56,7 +124,41 @@ export function useBorrow(): UseAsyncTask<
56124
* A hook that provides a way to repay borrowed assets to an Aave market.
57125
*
58126
* ```ts
59-
* const [repay, { loading, error, data }] = useRepay();
127+
* const [repay, repaying] = useRepay();
128+
* const [sendTransaction, sending] = useSendTransaction(wallet);
129+
*
130+
* const loading = repaying.loading && sending.loading;
131+
* const error = repaying.error || sending.error;
132+
* const data = repaying.data || sending.data;
133+
*
134+
* // …
135+
*
136+
* const result = await repay({ ... })
137+
* .andThen((plan) => {
138+
* switch (plan.__typename) {
139+
* case 'TransactionRequest':
140+
* return sendTransaction(plan);
141+
*
142+
* case 'ApprovalRequired':
143+
* return sendTransaction(plan.approval)
144+
* .andThen(() => sendTransaction(plan.originalTransaction));
145+
* }
146+
* });
147+
*
148+
* if (result.isErr()) {
149+
* switch (error.name) {
150+
* case 'SigningError':
151+
* console.error(`Failed to sign the transaction: ${error.message}`);
152+
* break;
153+
*
154+
* case 'ValidationError':
155+
* console.error(`Insufficient balance: ${error.cause.required.value} required.`);
156+
* break;
157+
* }
158+
* return;
159+
* }
160+
*
161+
* console.log('Transaction sent with hash:', result.value);
60162
* ```
61163
*/
62164
export function useRepay(): UseAsyncTask<
@@ -73,7 +175,41 @@ export function useRepay(): UseAsyncTask<
73175
* A hook that provides a way to withdraw supplied assets from an Aave market.
74176
*
75177
* ```ts
76-
* const [withdraw, { loading, error, data }] = useWithdraw();
178+
* const [withdraw, withdrawing] = useWithdraw();
179+
* const [sendTransaction, sending] = useSendTransaction(wallet);
180+
*
181+
* const loading = withdrawing.loading && sending.loading;
182+
* const error = withdrawing.error || sending.error;
183+
* const data = withdrawing.data || sending.data;
184+
*
185+
* // …
186+
*
187+
* const result = await withdraw({ ... })
188+
* .andThen((plan) => {
189+
* switch (plan.__typename) {
190+
* case 'TransactionRequest':
191+
* return sendTransaction(plan);
192+
*
193+
* case 'ApprovalRequired':
194+
* return sendTransaction(plan.approval)
195+
* .andThen(() => sendTransaction(plan.originalTransaction));
196+
* }
197+
* });
198+
*
199+
* if (result.isErr()) {
200+
* switch (error.name) {
201+
* case 'SigningError':
202+
* console.error(`Failed to sign the transaction: ${error.message}`);
203+
* break;
204+
*
205+
* case 'ValidationError':
206+
* console.error(`Insufficient balance: ${error.cause.required.value} required.`);
207+
* break;
208+
* }
209+
* return;
210+
* }
211+
*
212+
* console.log('Transaction sent with hash:', result.value);
77213
* ```
78214
*/
79215
export function useWithdraw(): UseAsyncTask<
@@ -90,7 +226,24 @@ export function useWithdraw(): UseAsyncTask<
90226
* A hook that provides a way to toggle eMode for a user in an Aave market.
91227
*
92228
* ```ts
93-
* const [toggleEMode, { loading, error, data }] = useEModeToggle();
229+
* const [toggleEMode, toggling] = useEModeToggle();
230+
* const [sendTransaction, sending] = useSendTransaction(wallet);
231+
*
232+
* const loading = toggling.loading && sending.loading;
233+
* const error = toggling.error || sending.error;
234+
* const data = toggling.data || sending.data;
235+
*
236+
* // …
237+
*
238+
* const result = await toggleEMode({ ... })
239+
* .andThen(sendTransaction);
240+
*
241+
* if (result.isErr()) {
242+
* console.error(`Failed to sign the transaction: ${error.message}`);
243+
* return;
244+
* }
245+
*
246+
* console.log('Transaction sent with hash:', result.value);
94247
* ```
95248
*/
96249
export function useEModeToggle(): UseAsyncTask<

0 commit comments

Comments
 (0)