Skip to content

Commit c8dd707

Browse files
committed
fix: update useQueries options for referentially stable results:
- see: TanStack/query#5219
1 parent 83dd192 commit c8dd707

File tree

1 file changed

+39
-25
lines changed

1 file changed

+39
-25
lines changed

src/lib/web3/hooks/useUserShares.ts

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ export function useUserPositionsTotalShares(
8888
const lcdClient = useLcdClient();
8989
const selectedPoolDeposits = useUserDeposits(poolDepositFilter) || [];
9090

91-
return useQueries({
91+
const { data } = useQueries({
9292
queries: [
9393
...selectedPoolDeposits.flatMap(
9494
({ pairID: { token0, token1 } = {}, centerTickIndex, fee }) => {
@@ -107,7 +107,15 @@ export function useUserPositionsTotalShares(
107107
}
108108
),
109109
],
110+
combine(results) {
111+
return {
112+
data: results.map((result) => result.data),
113+
pending: results.some((result) => result.isPending),
114+
};
115+
},
110116
});
117+
118+
return data;
111119
}
112120

113121
// select a single token pair of user shares
@@ -135,7 +143,7 @@ export function useUserPositionsTotalReserves(
135143
const lcdClient = useLcdClient();
136144
const selectedPoolDeposits = useUserDeposits(poolDepositFilter) || [];
137145

138-
return useQueries({
146+
const { data } = useQueries({
139147
queries: [
140148
...selectedPoolDeposits.flatMap(
141149
({
@@ -173,7 +181,15 @@ export function useUserPositionsTotalReserves(
173181
}
174182
),
175183
],
184+
combine(results) {
185+
return {
186+
data: results.map((result) => result.data),
187+
pending: results.some((result) => result.isPending),
188+
};
189+
},
176190
});
191+
192+
return data;
177193
}
178194

179195
export interface ShareValueContext {
@@ -207,15 +223,17 @@ export function useUserPositionsContext(
207223
return useMemo<UserPositionDepositContext[]>(() => {
208224
return (selectedPoolDeposits || []).flatMap<UserPositionDepositContext>(
209225
(deposit) => {
210-
const totalSharesResponse = userPositionsTotalShares.find(
211-
({ data }) => {
212-
return !!data;
213-
}
214-
);
226+
const totalSharesResponse =
227+
userPositionsTotalShares?.find(
228+
// todo: FIX
229+
(data) => {
230+
return !!data;
231+
}
232+
) ?? undefined;
215233

216234
// find the upper and lower reserves that match this position
217-
const lowerReserveResponse = userPositionsTotalReserves.find(
218-
({ data }) => {
235+
const lowerReserveResponse =
236+
userPositionsTotalReserves?.find((data) => {
219237
return (
220238
data?.poolReserves?.tokenIn === deposit.pairID?.token0 &&
221239
data?.poolReserves?.pairID?.token0 === deposit.pairID?.token0 &&
@@ -224,10 +242,9 @@ export function useUserPositionsContext(
224242
deposit.lowerTickIndex.toString() &&
225243
data?.poolReserves?.fee.toString() === deposit.fee.toString()
226244
);
227-
}
228-
);
229-
const upperReserveResponse = userPositionsTotalReserves.find(
230-
({ data }) => {
245+
}) ?? undefined;
246+
const upperReserveResponse =
247+
userPositionsTotalReserves?.find((data) => {
231248
return (
232249
data?.poolReserves?.tokenIn === deposit.pairID?.token1 &&
233250
data?.poolReserves?.pairID?.token0 === deposit.pairID?.token0 &&
@@ -236,8 +253,7 @@ export function useUserPositionsContext(
236253
deposit.upperTickIndex.toString() &&
237254
data?.poolReserves?.fee.toString() === deposit.fee.toString()
238255
);
239-
}
240-
);
256+
}) ?? undefined;
241257
const token0 = allTokens.find(
242258
(token) => token.address === deposit.pairID.token0
243259
);
@@ -250,38 +266,36 @@ export function useUserPositionsContext(
250266
const token0Context: ShareValueContext | undefined = deposit &&
251267
totalSharesResponse &&
252268
lowerReserveResponse && {
253-
token: lowerReserveResponse.data?.poolReserves?.tokenIn ?? '',
269+
token: lowerReserveResponse.poolReserves?.tokenIn ?? '',
254270
tickIndex: new BigNumber(
255-
lowerReserveResponse.data?.poolReserves?.tickIndex.toString() ??
256-
0
271+
lowerReserveResponse.poolReserves?.tickIndex.toString() ?? 0
257272
),
258273
userShares: new BigNumber(deposit.sharesOwned),
259274
dexTotalShares: new BigNumber(
260-
totalSharesResponse?.data?.amount?.amount ?? 0
275+
totalSharesResponse.amount?.amount ?? 0
261276
),
262277
// start with empty value, will be filled in next step
263278
userReserves: new BigNumber(0),
264279
dexTotalReserves: new BigNumber(
265-
lowerReserveResponse.data?.poolReserves?.reserves ?? 0
280+
lowerReserveResponse.poolReserves?.reserves ?? 0
266281
),
267282
};
268283

269284
const token1Context: ShareValueContext | undefined = deposit &&
270285
totalSharesResponse &&
271286
upperReserveResponse && {
272-
token: upperReserveResponse.data?.poolReserves?.tokenIn ?? '',
287+
token: upperReserveResponse.poolReserves?.tokenIn ?? '',
273288
tickIndex: new BigNumber(
274-
upperReserveResponse.data?.poolReserves?.tickIndex.toString() ??
275-
0
289+
upperReserveResponse.poolReserves?.tickIndex.toString() ?? 0
276290
),
277291
userShares: new BigNumber(deposit.sharesOwned),
278292
dexTotalShares: new BigNumber(
279-
totalSharesResponse?.data?.amount?.amount ?? 0
293+
totalSharesResponse?.amount?.amount ?? 0
280294
),
281295
// start with empty value, will be filled in next step
282296
userReserves: new BigNumber(0),
283297
dexTotalReserves: new BigNumber(
284-
upperReserveResponse.data?.poolReserves?.reserves ?? 0
298+
upperReserveResponse.poolReserves?.reserves ?? 0
285299
),
286300
};
287301
return [

0 commit comments

Comments
 (0)