From c5681f34430a672f5b9356a8fbf69efe05ead2a2 Mon Sep 17 00:00:00 2001 From: Matthew Pereira Date: Mon, 9 Dec 2024 08:51:52 -0800 Subject: [PATCH] add warning for weighted pool amounts --- .../app/v3/_components/ChooseTokens.tsx | 27 ++++++++++++++++--- packages/nextjs/hooks/v3/useUserDataStore.ts | 2 ++ .../hooks/v3/useValidatePoolCreationInput.ts | 6 +++-- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/packages/nextjs/app/v3/_components/ChooseTokens.tsx b/packages/nextjs/app/v3/_components/ChooseTokens.tsx index 84a3465..cc0d913 100644 --- a/packages/nextjs/app/v3/_components/ChooseTokens.tsx +++ b/packages/nextjs/app/v3/_components/ChooseTokens.tsx @@ -3,7 +3,7 @@ import { ChooseToken } from "./ChooseToken"; import { PoolType } from "@balancer/sdk"; import { PlusIcon } from "@heroicons/react/24/outline"; import { Alert } from "~~/components/common"; -import { initialTokenConfig, usePoolCreationStore, useVerifyProportionalInit } from "~~/hooks/v3"; +import { initialTokenConfig, usePoolCreationStore, useUserDataStore } from "~~/hooks/v3"; const MAX_TOKENS = { [PoolType.Weighted]: 8, @@ -12,7 +12,8 @@ const MAX_TOKENS = { export function ChooseTokens() { const { tokenConfigs, poolType, updatePool } = usePoolCreationStore(); - const isProportional = useVerifyProportionalInit(); + const { hasAgreedToWarning, updateUserData } = useUserDataStore(); + // const isProportional = useVerifyProportionalInit(); // Beware of javascript floating point precision issues if 100 % number of tokens is not equal to zero function handleAddToken() { @@ -60,7 +61,27 @@ export function ChooseTokens() { ))} - {!isProportional && Token USD values are not proportional to selected weights} + {poolType === PoolType.Weighted && ( + +
+ +
+
+ )} + + {/* {!isProportional && Token USD values are not proportional to selected weights} */} ); } diff --git a/packages/nextjs/hooks/v3/useUserDataStore.ts b/packages/nextjs/hooks/v3/useUserDataStore.ts index 741d9da..a1f9cb5 100644 --- a/packages/nextjs/hooks/v3/useUserDataStore.ts +++ b/packages/nextjs/hooks/v3/useUserDataStore.ts @@ -6,6 +6,7 @@ import { persist } from "zustand/middleware"; export type UserDataStore = { userTokenBalances: Record; hasEditedPoolInformation: boolean; + hasAgreedToWarning: boolean; updateUserData: (updates: Partial) => void; clearUserData: () => void; }; @@ -13,6 +14,7 @@ export type UserDataStore = { export const initialUserDataStore = { userTokenBalances: {}, hasEditedPoolInformation: false, + hasAgreedToWarning: false, }; // Stores all the data that will be used for pool creation diff --git a/packages/nextjs/hooks/v3/useValidatePoolCreationInput.ts b/packages/nextjs/hooks/v3/useValidatePoolCreationInput.ts index 6cbe3f3..c6d2627 100644 --- a/packages/nextjs/hooks/v3/useValidatePoolCreationInput.ts +++ b/packages/nextjs/hooks/v3/useValidatePoolCreationInput.ts @@ -7,7 +7,7 @@ import { MAX_POOL_NAME_LENGTH } from "~~/utils/constants"; export function useValidatePoolCreationInput() { const { isWrongNetwork } = useValidateNetwork(); const { data: walletClient } = useWalletClient(); - const { userTokenBalances } = useUserDataStore(); + const { userTokenBalances, hasAgreedToWarning } = useUserDataStore(); const { poolType, @@ -59,7 +59,9 @@ export function useValidatePoolCreationInput() { if (!token.isValidRateProvider) return false; } return true; - }) && isValidTokenWeights; + }) && + isValidTokenWeights && + (poolType !== PoolType.Weighted || hasAgreedToWarning); // Check tanstack query cache for pool hooks contract validity const { data: isValidPoolHooksContract } = useValidateHooksContract(isUsingHooks, poolHooksContract);