Skip to content

Commit 19fca69

Browse files
committed
fix: update useQueries options for referentially stable results:
- see: TanStack/query#5219
1 parent 98dff87 commit 19fca69

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
({
@@ -175,7 +183,15 @@ export function useUserPositionsTotalReserves(
175183
}
176184
),
177185
],
186+
combine(results) {
187+
return {
188+
data: results.map((result) => result.data),
189+
pending: results.some((result) => result.isPending),
190+
};
191+
},
178192
});
193+
194+
return data;
179195
}
180196

181197
export interface ShareValueContext {
@@ -209,15 +225,17 @@ export function useUserPositionsContext(
209225
return useMemo<UserPositionDepositContext[]>(() => {
210226
return (selectedPoolDeposits || []).flatMap<UserPositionDepositContext>(
211227
(deposit) => {
212-
const totalSharesResponse = userPositionsTotalShares.find(
213-
({ data }) => {
214-
return !!data;
215-
}
216-
);
228+
const totalSharesResponse =
229+
userPositionsTotalShares?.find(
230+
// todo: FIX
231+
(data) => {
232+
return !!data;
233+
}
234+
) ?? undefined;
217235

218236
// find the upper and lower reserves that match this position
219-
const lowerReserveResponse = userPositionsTotalReserves.find(
220-
({ data }) => {
237+
const lowerReserveResponse =
238+
userPositionsTotalReserves?.find((data) => {
221239
return (
222240
data?.poolReserves?.tokenIn === deposit.pairID?.token0 &&
223241
data?.poolReserves?.pairID?.token0 === deposit.pairID?.token0 &&
@@ -226,10 +244,9 @@ export function useUserPositionsContext(
226244
deposit.lowerTickIndex.toString() &&
227245
data?.poolReserves?.fee.toString() === deposit.fee.toString()
228246
);
229-
}
230-
);
231-
const upperReserveResponse = userPositionsTotalReserves.find(
232-
({ data }) => {
247+
}) ?? undefined;
248+
const upperReserveResponse =
249+
userPositionsTotalReserves?.find((data) => {
233250
return (
234251
data?.poolReserves?.tokenIn === deposit.pairID?.token1 &&
235252
data?.poolReserves?.pairID?.token0 === deposit.pairID?.token0 &&
@@ -238,8 +255,7 @@ export function useUserPositionsContext(
238255
deposit.upperTickIndex.toString() &&
239256
data?.poolReserves?.fee.toString() === deposit.fee.toString()
240257
);
241-
}
242-
);
258+
}) ?? undefined;
243259
const token0 = allTokens.find(
244260
(token) => token.address === deposit.pairID.token0
245261
);
@@ -252,38 +268,36 @@ export function useUserPositionsContext(
252268
const token0Context: ShareValueContext | undefined = deposit &&
253269
totalSharesResponse &&
254270
lowerReserveResponse && {
255-
token: lowerReserveResponse.data?.poolReserves?.tokenIn ?? '',
271+
token: lowerReserveResponse.poolReserves?.tokenIn ?? '',
256272
tickIndex: new BigNumber(
257-
lowerReserveResponse.data?.poolReserves?.tickIndex.toString() ??
258-
0
273+
lowerReserveResponse.poolReserves?.tickIndex.toString() ?? 0
259274
),
260275
userShares: new BigNumber(deposit.sharesOwned),
261276
dexTotalShares: new BigNumber(
262-
totalSharesResponse?.data?.amount?.amount ?? 0
277+
totalSharesResponse.amount?.amount ?? 0
263278
),
264279
// start with empty value, will be filled in next step
265280
userReserves: new BigNumber(0),
266281
dexTotalReserves: new BigNumber(
267-
lowerReserveResponse.data?.poolReserves?.reserves ?? 0
282+
lowerReserveResponse.poolReserves?.reserves ?? 0
268283
),
269284
};
270285

271286
const token1Context: ShareValueContext | undefined = deposit &&
272287
totalSharesResponse &&
273288
upperReserveResponse && {
274-
token: upperReserveResponse.data?.poolReserves?.tokenIn ?? '',
289+
token: upperReserveResponse.poolReserves?.tokenIn ?? '',
275290
tickIndex: new BigNumber(
276-
upperReserveResponse.data?.poolReserves?.tickIndex.toString() ??
277-
0
291+
upperReserveResponse.poolReserves?.tickIndex.toString() ?? 0
278292
),
279293
userShares: new BigNumber(deposit.sharesOwned),
280294
dexTotalShares: new BigNumber(
281-
totalSharesResponse?.data?.amount?.amount ?? 0
295+
totalSharesResponse?.amount?.amount ?? 0
282296
),
283297
// start with empty value, will be filled in next step
284298
userReserves: new BigNumber(0),
285299
dexTotalReserves: new BigNumber(
286-
upperReserveResponse.data?.poolReserves?.reserves ?? 0
300+
upperReserveResponse.poolReserves?.reserves ?? 0
287301
),
288302
};
289303
return [

0 commit comments

Comments
 (0)