@turtleclub/hooks 0.3.0 → 0.3.1
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/dist/index.cjs +11 -133
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +11 -133
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
- package/src/campaigns-v2/index.ts +0 -1
- package/src/campaigns-v2/useUserCampaignPositions.ts +11 -29
- package/src/campaigns-v2/useTonCampaignPositions.ts +0 -141
package/dist/index.cjs
CHANGED
|
@@ -468,7 +468,6 @@ __export(campaigns_v2_exports, {
|
|
|
468
468
|
useEvmCampaignPositions: () => useEvmCampaignPositions,
|
|
469
469
|
useKatanaCampaign: () => useKatanaCampaign,
|
|
470
470
|
useTacCampaign: () => useTacCampaign,
|
|
471
|
-
useTonCampaignPositions: () => useTonCampaignPositions,
|
|
472
471
|
useUserCampaignPositions: () => useUserCampaignPositions
|
|
473
472
|
});
|
|
474
473
|
|
|
@@ -4267,149 +4266,28 @@ function useEvmCampaignPositions({
|
|
|
4267
4266
|
return result;
|
|
4268
4267
|
}
|
|
4269
4268
|
|
|
4270
|
-
// src/campaigns-v2/useTonCampaignPositions.ts
|
|
4271
|
-
var import_react4 = require("react");
|
|
4272
|
-
var import_react_query19 = require("@tanstack/react-query");
|
|
4273
|
-
var import_ton = require("@ton/ton");
|
|
4274
|
-
function useTonCampaignPositions({
|
|
4275
|
-
campaignName,
|
|
4276
|
-
userAddress
|
|
4277
|
-
}) {
|
|
4278
|
-
const { vaults } = useCampaign(campaignName);
|
|
4279
|
-
const isTestnet = userAddress?.includes("0Q");
|
|
4280
|
-
const tonClient4 = (0, import_react4.useMemo)(() => {
|
|
4281
|
-
const endpoint = isTestnet ? "https://testnet-v4.tonhubapi.com" : "https://mainnet-v4.tonhubapi.com";
|
|
4282
|
-
return new import_ton.TonClient4({ endpoint });
|
|
4283
|
-
}, [isTestnet]);
|
|
4284
|
-
const tonVaults = (0, import_react4.useMemo)(() => {
|
|
4285
|
-
if (!userAddress) return [];
|
|
4286
|
-
return vaults.filter(
|
|
4287
|
-
(vault) => vault.vedaProviderConfig?.deployments[0]
|
|
4288
|
-
);
|
|
4289
|
-
}, [vaults, userAddress]);
|
|
4290
|
-
const {
|
|
4291
|
-
data: positions,
|
|
4292
|
-
isLoading,
|
|
4293
|
-
error: queryError,
|
|
4294
|
-
refetch: refetchUserPositions
|
|
4295
|
-
} = (0, import_react_query19.useQuery)({
|
|
4296
|
-
queryKey: ["ton-positions", userAddress, campaignName, tonVaults.length],
|
|
4297
|
-
queryFn: async () => {
|
|
4298
|
-
if (!userAddress || tonVaults.length === 0) {
|
|
4299
|
-
return {
|
|
4300
|
-
userPositions: [],
|
|
4301
|
-
userTotalTVL: 0
|
|
4302
|
-
};
|
|
4303
|
-
}
|
|
4304
|
-
const userPositionsById = {};
|
|
4305
|
-
let userTotalTVL = 0;
|
|
4306
|
-
for (const vault of tonVaults) {
|
|
4307
|
-
let userBalance = 0n;
|
|
4308
|
-
let userVaultTVL = 0;
|
|
4309
|
-
if (vault.vedaProviderConfig?.deployments[0].chainId === 239) {
|
|
4310
|
-
const apiEndpoint = isTestnet ? "https://testnet.tonapi.io/v2" : "https://tonapi.io/v2";
|
|
4311
|
-
const response = await fetch(`${apiEndpoint}/accounts/${userAddress}/jettons`);
|
|
4312
|
-
const data = await response.json();
|
|
4313
|
-
const tacTONBalance = data.balances?.find(
|
|
4314
|
-
(balance) => balance.jetton?.symbol === "tacTON"
|
|
4315
|
-
);
|
|
4316
|
-
if (tacTONBalance) {
|
|
4317
|
-
const rawBalance = BigInt(tacTONBalance.balance);
|
|
4318
|
-
const decimals = tacTONBalance.jetton?.decimals || 9;
|
|
4319
|
-
const readableBalance = Number(rawBalance) / Math.pow(10, decimals);
|
|
4320
|
-
userVaultTVL = readableBalance * 2.9629 * (1.4 / 2008.205653);
|
|
4321
|
-
userBalance = BigInt(Math.floor(readableBalance * 1e9));
|
|
4322
|
-
} else {
|
|
4323
|
-
userBalance = 0n;
|
|
4324
|
-
userVaultTVL = 0;
|
|
4325
|
-
}
|
|
4326
|
-
}
|
|
4327
|
-
if (userBalance > 0n || userVaultTVL > 0) {
|
|
4328
|
-
const existingPosition = userPositionsById[vault.id];
|
|
4329
|
-
if (existingPosition) {
|
|
4330
|
-
userPositionsById[vault.id] = {
|
|
4331
|
-
vault,
|
|
4332
|
-
userBalance: existingPosition.userBalance + userBalance,
|
|
4333
|
-
userTVL: existingPosition.userTVL + userVaultTVL
|
|
4334
|
-
};
|
|
4335
|
-
} else {
|
|
4336
|
-
userPositionsById[vault.id] = {
|
|
4337
|
-
vault,
|
|
4338
|
-
userBalance,
|
|
4339
|
-
userTVL: userVaultTVL
|
|
4340
|
-
};
|
|
4341
|
-
}
|
|
4342
|
-
userTotalTVL += userVaultTVL;
|
|
4343
|
-
}
|
|
4344
|
-
}
|
|
4345
|
-
const userPositions = Object.values(userPositionsById);
|
|
4346
|
-
return {
|
|
4347
|
-
userPositions,
|
|
4348
|
-
userTotalTVL
|
|
4349
|
-
};
|
|
4350
|
-
},
|
|
4351
|
-
enabled: !!userAddress && tonVaults.length > 0,
|
|
4352
|
-
staleTime: 3e4,
|
|
4353
|
-
// 30 seconds
|
|
4354
|
-
gcTime: 6e4,
|
|
4355
|
-
// 1 minute
|
|
4356
|
-
refetchOnMount: false,
|
|
4357
|
-
refetchOnWindowFocus: false,
|
|
4358
|
-
refetchOnReconnect: false
|
|
4359
|
-
});
|
|
4360
|
-
const invalidateUserPositions = (0, import_react4.useCallback)(async () => {
|
|
4361
|
-
await refetchUserPositions();
|
|
4362
|
-
}, [refetchUserPositions]);
|
|
4363
|
-
const result = (0, import_react4.useMemo)(
|
|
4364
|
-
() => ({
|
|
4365
|
-
userPositions: positions?.userPositions ?? [],
|
|
4366
|
-
userTotalTVL: positions?.userTotalTVL ?? 0,
|
|
4367
|
-
isLoading,
|
|
4368
|
-
error: queryError,
|
|
4369
|
-
invalidateUserPositions
|
|
4370
|
-
}),
|
|
4371
|
-
[positions, isLoading, queryError, invalidateUserPositions]
|
|
4372
|
-
);
|
|
4373
|
-
return result;
|
|
4374
|
-
}
|
|
4375
|
-
|
|
4376
4269
|
// src/campaigns-v2/useUserCampaignPositions.ts
|
|
4377
|
-
var
|
|
4270
|
+
var import_react4 = require("react");
|
|
4378
4271
|
function useUserCampaignPositions({
|
|
4379
4272
|
campaignName,
|
|
4380
4273
|
userAddress
|
|
4381
4274
|
}) {
|
|
4382
4275
|
const { vaults } = useCampaign(campaignName);
|
|
4383
|
-
const
|
|
4384
|
-
(vault) => vault.vedaProviderConfig?.[1]
|
|
4385
|
-
);
|
|
4386
|
-
const hasEVMVaults = vaults.some(
|
|
4387
|
-
(vault) => !vault.vedaProviderConfig?.[1]
|
|
4388
|
-
);
|
|
4276
|
+
const hasEVMVaults = vaults.some((vault) => !vault.vedaProviderConfig?.[1]);
|
|
4389
4277
|
const evmPositions = useEvmCampaignPositions({
|
|
4390
4278
|
campaignName,
|
|
4391
4279
|
userAddress: hasEVMVaults ? userAddress : void 0
|
|
4392
4280
|
});
|
|
4393
|
-
const
|
|
4394
|
-
|
|
4395
|
-
|
|
4396
|
-
});
|
|
4397
|
-
const userPositions = (0, import_react5.useMemo)(() => [
|
|
4398
|
-
...evmPositions.userPositions,
|
|
4399
|
-
...tonPositions.userPositions
|
|
4400
|
-
], [evmPositions.userPositions, tonPositions.userPositions]);
|
|
4401
|
-
const userTotalTVL = (0, import_react5.useMemo)(
|
|
4402
|
-
() => evmPositions.userTotalTVL + tonPositions.userTotalTVL,
|
|
4403
|
-
[evmPositions.userTotalTVL, tonPositions.userTotalTVL]
|
|
4281
|
+
const userPositions = (0, import_react4.useMemo)(
|
|
4282
|
+
() => [...evmPositions.userPositions],
|
|
4283
|
+
[evmPositions.userPositions]
|
|
4404
4284
|
);
|
|
4405
|
-
const
|
|
4406
|
-
const
|
|
4407
|
-
const
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
]);
|
|
4412
|
-
}, [evmPositions.invalidateUserPositions, tonPositions.invalidateUserPositions]);
|
|
4285
|
+
const userTotalTVL = (0, import_react4.useMemo)(() => evmPositions.userTotalTVL, [evmPositions.userTotalTVL]);
|
|
4286
|
+
const isLoading = evmPositions.isLoading;
|
|
4287
|
+
const error = evmPositions.error;
|
|
4288
|
+
const invalidateUserPositions = (0, import_react4.useCallback)(async () => {
|
|
4289
|
+
await Promise.all([evmPositions.invalidateUserPositions()]);
|
|
4290
|
+
}, [evmPositions.invalidateUserPositions]);
|
|
4413
4291
|
return {
|
|
4414
4292
|
userPositions,
|
|
4415
4293
|
userTotalTVL,
|