Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/paltalabs/defindex into fea…
Browse files Browse the repository at this point in the history
…t/githubWorkflow
  • Loading branch information
MattPoblete committed Sep 30, 2024
2 parents 38fba41 + c540c6c commit 9920e38
Show file tree
Hide file tree
Showing 21 changed files with 346 additions and 16,412 deletions.
2 changes: 1 addition & 1 deletion apps/dapp/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/** @type {import("eslint").Linter.Config} */
module.exports = {
root: true,
extends: ["@repo/eslint-config/next.js"],
extends: ["@repo/eslint-config/next.js", "next", "next/typescript"],
parser: "@typescript-eslint/parser",
parserOptions: {
project: true,
Expand Down
3 changes: 2 additions & 1 deletion apps/dapp/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { ReactNode } from "react";
import { Providers } from "../src/providers/main-provider";
export default function RootLayout({
children,
}: {
children: React.ReactNode,
children: ReactNode,
}) {
return (
<html lang='en'>
Expand Down
14 changes: 4 additions & 10 deletions apps/dapp/app/page.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,15 @@
"use client";
import { Container } from '@chakra-ui/react'
import { useSorobanReact } from '@soroban-react/core'
import { DeployIndex } from "../src/components/DeployIndex/DeployIndex";
import ConnectButton from "@/components/Wallet/ConnectButton";
import ManageIndexes from '@/components/ManageIndexes/ManageIndexes';

export default function Home() {
const { address } = useSorobanReact()
return (
<Container textAlign={'center'} mt={16} mx={0} px={0} minW={'100vw'}>
<ConnectButton />
{address && (
<Container centerContent minW={'100vw'}>
<ManageIndexes />
{/* <DeployIndex /> */}
</Container>
)}
<Container mt={16} mx={0} px={0} minW={'100vw'}>
<Container centerContent textAlign={'center'} minW={'100vw'}>
<ManageIndexes />
</Container>
</Container>
);
}
1 change: 1 addition & 0 deletions apps/dapp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"@soroban-react/wallet-data": "9.1.13",
"@soroban-react/xbull": "^9.1.3",
"@stellar/stellar-sdk": "12.2.0",
"axios": "^1.7.7",
"framer-motion": "^11.3.0",
"next": "15.0.0-rc.0",
"react": "19.0.0-rc-f994737d14-20240522",
Expand Down
147 changes: 0 additions & 147 deletions apps/dapp/src/components/DeployIndex/AddNewAdapterButton.tsx

This file was deleted.

121 changes: 121 additions & 0 deletions apps/dapp/src/components/DeployIndex/AddNewStrategyButton.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
import { useEffect, useState } from 'react'
import {
Button,
Modal,
ModalOverlay,
ModalContent,
ModalHeader,
ModalFooter,
ModalBody,
ModalCloseButton,
useDisclosure,
IconButton,
FormControl,
Select,
Input
} from '@chakra-ui/react'
import { AddIcon } from '@chakra-ui/icons'
import { useAppDispatch, useAppSelector } from '@/store/lib/storeHooks'
import { pushStrategy, getDefaultStrategies, Strategy } from '@/store/lib/features/strategiesStore'
import { useSorobanReact } from '@soroban-react/core'

interface DefaultStrategy {
name: string;
address: string;
value: number;
}


function AddNewStrategyButton() {
const strategies = useAppSelector(state => state.strategies.strategies)
const dispatch = useAppDispatch();
const { activeChain } = useSorobanReact()
const [defaultStrategies, setDefaultStrategies] = useState<Strategy[]>([])
const [newStrategy, setNewStrategy] = useState<Strategy>()
const [newAddress, setNewAddress] = useState<string>()
const [newName, setNewName] = useState<string>()
const [selectValue, setSelectValue] = useState<string>('')


useEffect(() => {
const fetchStragegies = async () => {
const tempStrategies = await getDefaultStrategies(activeChain?.name?.toLowerCase() || 'testnet')
setDefaultStrategies(tempStrategies)
}
fetchStragegies()
}, [activeChain?.networkPassphrase])

const { isOpen, onOpen, onClose } = useDisclosure()
const handleOpenModal = () => {
isOpen ? onClose() : onOpen()
}

const resetForm = () => {
setNewStrategy({ address: '', name: '', value: 0 })
setNewAddress('')
setNewName('')
setSelectValue('')
}

const handleInputSelect = async (e: any) => {
const value = e.target.value
setSelectValue(value)
const isDefaultStrategy = await defaultStrategies.find(strategy => strategy.address === value)
if (!!isDefaultStrategy) {
setNewStrategy(isDefaultStrategy)
}
}

const addStrategy = async () => {
const isDefaultStrategy = await defaultStrategies.find(strategy => strategy.address === newStrategy?.address)
const hasEmptyFields = newStrategy?.address === '' || newStrategy?.name === '' || newName === '' || newAddress === ''
const strategyExists = strategies.find((strategy: Strategy) => strategy.address === newStrategy?.address)
if (strategyExists) {
console.error('Strategy already exists')
return false
}
if (hasEmptyFields && !isDefaultStrategy) {
console.error('Please fill all fields')
return false
}
await dispatch(pushStrategy(newStrategy!))
resetForm()
isOpen ? onClose() : onOpen()
}
return (
<>
<Button colorScheme="green" size="md" onClick={handleOpenModal} textAlign={'end'} isDisabled={defaultStrategies.length === 0}>
Add new strategy
</Button>
<Modal isOpen={isOpen} onClose={onClose} isCentered>
<ModalOverlay backdropFilter='blur(5px)' />
<ModalContent >
<ModalHeader>Add new strategy</ModalHeader>
<ModalCloseButton />
<ModalBody>

<Select placeholder='Select option' onChange={handleInputSelect} value={selectValue}>
{defaultStrategies.map((strategy, index) => (
<option key={strategy.name} value={strategy.address}>{(strategy.name != '') ? strategy.name : strategy.address}</option>
))}
</Select>
</ModalBody>

<ModalFooter>
<Button variant='ghost' mr={3} onClick={onClose}>
Close
</Button>
<IconButton
aria-label='add_strategy'
colorScheme='green'
icon={<AddIcon />}
onClick={addStrategy}
/>
</ModalFooter>
</ModalContent>
</Modal>
</>
)
}

export default AddNewStrategyButton
20 changes: 10 additions & 10 deletions apps/dapp/src/components/DeployIndex/ConfirmDelpoyModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import { IndexPreview } from "./IndexPreview";
import { DeploySteps } from "./DeploySteps";
import { useEffect, useState } from "react";
import { WarningIcon, CheckCircleIcon } from '@chakra-ui/icons'
import { resetAdapters } from "@/store/lib/features/adaptersStore";
import { resetStrategies, Strategy } from "@/store/lib/features/strategiesStore";

import { randomBytes } from "crypto";

Expand All @@ -48,8 +48,8 @@ export const ConfirmDelpoyModal = ({ isOpen, onClose }: { isOpen: boolean, onClo
index: 0
});
const factory = useFactoryCallback();
const adapters = useAppSelector(state => state.adapters.adapters);
const indexName = useAppSelector(state => state.adapters.adapterName)
const strategies: Strategy[] = useAppSelector(state => state.strategies.strategies);
const indexName = useAppSelector(state => state.strategies.strategyName)
const dispatch = useAppDispatch();
const [chartData, setChartData] = useState<ChartData[]>([]);
const [status, setStatus] = useState<Status>({
Expand Down Expand Up @@ -139,17 +139,17 @@ export const ConfirmDelpoyModal = ({ isOpen, onClose }: { isOpen: boolean, onClo
message: undefined
});
setActiveStep(0);
await dispatch(resetAdapters())
//await dispatch(resetStrategies())
onClose();
}

useEffect(() => {
const newChartData: ChartData[] = adapters.map((adapter: any, index: number) => {
const newChartData: ChartData[] = strategies.map((strategy: any, index: number) => {
return {
id: index,
label: adapter.name,
address: adapter.address,
value: adapter.value,
label: strategy.name,
address: strategy.address,
value: strategy.value,
}
});
const total = newChartData.reduce((acc: number, curr: any) => acc + curr.value, 0)
Expand All @@ -167,7 +167,7 @@ export const ConfirmDelpoyModal = ({ isOpen, onClose }: { isOpen: boolean, onClo
setChartData(newChartData);
return;
}
}, [adapters]);
}, [strategies]);

const autoCloseModal = async () => {
await new Promise(resolve => setTimeout(resolve, 5000))
Expand Down Expand Up @@ -214,7 +214,7 @@ export const ConfirmDelpoyModal = ({ isOpen, onClose }: { isOpen: boolean, onClo
<ModalFooter>
{(activeStep == 0 && !status.hasError) && (
<Button
aria-label='add_adapter'
aria-label='add_strategy'
colorScheme='green'
onClick={deployDefindex}>
Deploy
Expand Down
Loading

0 comments on commit 9920e38

Please sign in to comment.