diff --git a/apps/web/src/data/DAOCreationWagmiLSRepository.ts b/apps/web/src/data/DAOCreationWagmiLSRepository.ts index 82353ea..197bf3c 100644 --- a/apps/web/src/data/DAOCreationWagmiLSRepository.ts +++ b/apps/web/src/data/DAOCreationWagmiLSRepository.ts @@ -154,6 +154,18 @@ export class DAOCreationWagmiLSRepository implements DAOCreationRepository { } } } + + async getDAOCompatibleTokens(): Promise { + return [ + new TokenInfo("Optimism", "OP", "0x00000", "/token-logos/optimism-ethereum-op-logo.svg"), + new TokenInfo("USDT", "USDT", "0x00000", "../"), + new TokenInfo("DAI", "DAI", "0x00000", "../"), + new TokenInfo("USDC", "USDC", "0x00000", "../"), + new TokenInfo("GNO", "GNO", "0x00000", "../"), + new TokenInfo("GIV", "GIV", "0x00000", "../"), + ]; + } + } \ No newline at end of file diff --git a/apps/web/src/domain/model/TokenInfo.ts b/apps/web/src/domain/model/TokenInfo.ts index b0bc407..248f4a2 100644 --- a/apps/web/src/domain/model/TokenInfo.ts +++ b/apps/web/src/domain/model/TokenInfo.ts @@ -2,11 +2,13 @@ export class TokenInfo { tokenName: string|undefined; tokenSymbol: string|undefined; tokenAddress: string|undefined; + tokenLogo: string|undefined; - constructor(tokenName?: string, tokenSymbol?: string, tokenAddress?: string) { + constructor(tokenName?: string, tokenSymbol?: string, tokenAddress?: string, tokenLogo?: string) { this.tokenName = tokenName; this.tokenSymbol = tokenSymbol; this.tokenAddress = tokenAddress; + this.tokenLogo = tokenLogo; } // setting values @@ -22,7 +24,6 @@ export class TokenInfo { this.tokenAddress = value; } - // getting values getTokenName(): string|undefined { @@ -37,4 +38,8 @@ export class TokenInfo { return this.tokenAddress; } + getTokenLogo(): string|undefined { + return this.tokenLogo; + } + } \ No newline at end of file diff --git a/apps/web/src/domain/repository/DAOCreationRepository.ts b/apps/web/src/domain/repository/DAOCreationRepository.ts index c0e8886..3d104c2 100644 --- a/apps/web/src/domain/repository/DAOCreationRepository.ts +++ b/apps/web/src/domain/repository/DAOCreationRepository.ts @@ -1,6 +1,7 @@ import { DAOCreationResult } from "../model/DAOCreationResult"; import { DAOInfoStatus } from "../enum/DAOInfoStatus"; import { DAOInfo } from "../model/DAOInfo"; +import { TokenInfo } from "../model/TokenInfo"; export interface DAOCreationRepository { @@ -19,4 +20,7 @@ export interface DAOCreationRepository { // create DAO isDAOInfoValid(daoInfo: DAOInfo) : DAOInfoStatus; createDAO() : Promise; + + // Obtain compatible reserve tokens + getDAOCompatibleTokens(): Promise; // } \ No newline at end of file diff --git a/apps/web/src/presentation/components/launchpad/abc/ABCSettingsModelController.ts b/apps/web/src/presentation/components/launchpad/abc/ABCSettingsModelController.ts index f980957..0eaf52e 100644 --- a/apps/web/src/presentation/components/launchpad/abc/ABCSettingsModelController.ts +++ b/apps/web/src/presentation/components/launchpad/abc/ABCSettingsModelController.ts @@ -6,61 +6,58 @@ import { TokenInfo } from "../../../../domain/model/TokenInfo"; export function useABCSettingsModelController(daoCreationRepository: DAOCreationRepository) { const [augmentedBondingCurveSettings, setAugmentedBondingCurveSettings] = useState(new ABCConfig( - daoCreationRepository.getDAOInfo().getABCConfig().reserveRatio??0, - daoCreationRepository.getDAOInfo().getABCConfig().getReserveInitialBalance()??0, - daoCreationRepository.getDAOInfo().getABCConfig().entryTribute??0, - daoCreationRepository.getDAOInfo().getABCConfig().exitTribute??0, - new TokenInfo(daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenAddress??'', daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenSymbol??''), + daoCreationRepository.getDAOInfo().getABCConfig().reserveRatio ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().getReserveInitialBalance() ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().entryTribute ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().exitTribute ?? 0, + new TokenInfo(daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenAddress ?? '', daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenSymbol ?? ''), )); - const collateralTokenList = [ - { address: "0x00000", symbol: "OP", logo: "/token-logos/optimism-ethereum-op-logo.svg" }, - { address: "0x00000", symbol: "USDT", logo: "../"}, - { address: "0x00000", symbol: "DAI", logo: "../"}, - { address: "0x00000", symbol: "USDC", logo: "../" }, - { address: "0x00000", symbol: "GNO", logo: "../" }, - { address: "0x00000", symbol: "GIV", logo: "../" }, - ]; + const [collateralTokenList, setCollateralTokenList] = useState([]); useEffect(() => { async function init() { - await daoCreationRepository.loadDAOInfo(); - setAugmentedBondingCurveSettings(new ABCConfig( - daoCreationRepository.getDAOInfo().getABCConfig().reserveRatio??0, - daoCreationRepository.getDAOInfo().getABCConfig().getReserveInitialBalance()??0, - daoCreationRepository.getDAOInfo().getABCConfig().entryTribute??0, - daoCreationRepository.getDAOInfo().getABCConfig().exitTribute??0, - new TokenInfo(daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenAddress??'', daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenSymbol??''), - )); + await daoCreationRepository.loadDAOInfo(); + setAugmentedBondingCurveSettings(new ABCConfig( + daoCreationRepository.getDAOInfo().getABCConfig().reserveRatio ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().getReserveInitialBalance() ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().entryTribute ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().exitTribute ?? 0, + new TokenInfo(daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenAddress ?? '', daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenSymbol ?? ''), + )); + await daoCreationRepository.getDAOCompatibleTokens().then((tokens) => { + setCollateralTokenList(tokens); + }); } init(); - }, []); + }, []); + const handleReserveRatioChange = (value: string) => { const re = /[^0-9]+/g; const numericValue = Number(value.replaceAll(re, '')); const updatedSettings = new ABCConfig( numericValue, - daoCreationRepository.getDAOInfo().getABCConfig().getReserveInitialBalance()??0, - daoCreationRepository.getDAOInfo().getABCConfig().entryTribute??0, - daoCreationRepository.getDAOInfo().getABCConfig().exitTribute??0, - new TokenInfo(daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenAddress??'', daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenSymbol??''), + daoCreationRepository.getDAOInfo().getABCConfig().getReserveInitialBalance() ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().entryTribute ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().exitTribute ?? 0, + new TokenInfo(daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenAddress ?? '', daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenSymbol ?? ''), ); setAugmentedBondingCurveSettings(updatedSettings); setABCConfig(updatedSettings, daoCreationRepository); }; const handleCollateralTokenChange = (event: React.ChangeEvent) => { - const selectedToken = collateralTokenList.find(token => token.symbol === event.target.value); + const selectedToken = collateralTokenList.find(token => token.tokenSymbol === event.target.value); if (selectedToken) { const updatedSettings = new ABCConfig( - daoCreationRepository.getDAOInfo().getABCConfig().reserveRatio??0, - daoCreationRepository.getDAOInfo().getABCConfig().getReserveInitialBalance()??0, - daoCreationRepository.getDAOInfo().getABCConfig().entryTribute??0, - daoCreationRepository.getDAOInfo().getABCConfig().exitTribute??0, - new TokenInfo(selectedToken.address, selectedToken.symbol), + daoCreationRepository.getDAOInfo().getABCConfig().reserveRatio ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().getReserveInitialBalance() ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().entryTribute ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().exitTribute ?? 0, + new TokenInfo(selectedToken.tokenAddress, selectedToken.tokenSymbol), ); - + setAugmentedBondingCurveSettings(updatedSettings); setABCConfig(updatedSettings, daoCreationRepository); } @@ -68,11 +65,11 @@ export function useABCSettingsModelController(daoCreationRepository: DAOCreation const handleInitialReserveChange = (value: number) => { const updatedSettings = new ABCConfig( - daoCreationRepository.getDAOInfo().getABCConfig().reserveRatio??0, + daoCreationRepository.getDAOInfo().getABCConfig().reserveRatio ?? 0, value, - daoCreationRepository.getDAOInfo().getABCConfig().entryTribute??0, - daoCreationRepository.getDAOInfo().getABCConfig().exitTribute??0, - new TokenInfo(daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenAddress??'', daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenSymbol??''), + daoCreationRepository.getDAOInfo().getABCConfig().entryTribute ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().exitTribute ?? 0, + new TokenInfo(daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenAddress ?? '', daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenSymbol ?? ''), ); setAugmentedBondingCurveSettings(updatedSettings); setABCConfig(updatedSettings, daoCreationRepository); @@ -80,11 +77,11 @@ export function useABCSettingsModelController(daoCreationRepository: DAOCreation const handleEntryTributeChange = (value: number) => { const updatedSettings = new ABCConfig( - daoCreationRepository.getDAOInfo().getABCConfig().reserveRatio??0, - daoCreationRepository.getDAOInfo().getABCConfig().getReserveInitialBalance()??0, + daoCreationRepository.getDAOInfo().getABCConfig().reserveRatio ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().getReserveInitialBalance() ?? 0, value, - daoCreationRepository.getDAOInfo().getABCConfig().exitTribute??0, - new TokenInfo(daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenAddress??'', daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenSymbol??''), + daoCreationRepository.getDAOInfo().getABCConfig().exitTribute ?? 0, + new TokenInfo(daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenAddress ?? '', daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenSymbol ?? ''), ); setAugmentedBondingCurveSettings(updatedSettings); setABCConfig(updatedSettings, daoCreationRepository); @@ -92,11 +89,11 @@ export function useABCSettingsModelController(daoCreationRepository: DAOCreation const handleExitTributeChange = (value: number) => { const updatedSettings = new ABCConfig( - daoCreationRepository.getDAOInfo().getABCConfig().reserveRatio??0, - daoCreationRepository.getDAOInfo().getABCConfig().getReserveInitialBalance()??0, - daoCreationRepository.getDAOInfo().getABCConfig().entryTribute??0, + daoCreationRepository.getDAOInfo().getABCConfig().reserveRatio ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().getReserveInitialBalance() ?? 0, + daoCreationRepository.getDAOInfo().getABCConfig().entryTribute ?? 0, value, - new TokenInfo(daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenAddress??'', daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenSymbol??''), + new TokenInfo(daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenAddress ?? '', daoCreationRepository.getDAOInfo().getABCConfig().collateralToken?.tokenSymbol ?? ''), ); setAugmentedBondingCurveSettings(updatedSettings); setABCConfig(updatedSettings, daoCreationRepository); diff --git a/apps/web/src/presentation/components/launchpad/abc/AugmentedBondingCurveSettings.tsx b/apps/web/src/presentation/components/launchpad/abc/AugmentedBondingCurveSettings.tsx index fb8f961..ab63907 100644 --- a/apps/web/src/presentation/components/launchpad/abc/AugmentedBondingCurveSettings.tsx +++ b/apps/web/src/presentation/components/launchpad/abc/AugmentedBondingCurveSettings.tsx @@ -90,10 +90,10 @@ export default function AugmentedBondingCurveSettings({ onStepCompletionChanged