lev-stake-sol/components/HomePage.tsx

76 lines
1.8 KiB
TypeScript
Raw Normal View History

2023-10-10 21:07:55 -07:00
import usePositions from 'hooks/usePositions'
import NavTabs from './NavTabs'
import Positions from './Positions'
import Stake from './Stake'
import TransactionHistory from './TransactionHistory'
2023-11-10 09:58:04 -08:00
import mangoStore, { ActiveTab } from '@store/mangoStore'
import { useCallback, useEffect } from 'react'
2023-10-10 21:07:55 -07:00
import { BOOST_ACCOUNT_PREFIX } from 'utils/constants'
2024-03-02 18:02:29 -08:00
import HowItWorks from './HowItWorks'
2023-10-10 21:07:55 -07:00
const set = mangoStore.getState().set
const HomePage = () => {
2023-11-10 09:58:04 -08:00
const activeTab = mangoStore((s) => s.activeTab)
2023-10-10 21:07:55 -07:00
const selectedToken = mangoStore((s) => s.selectedToken)
const { positions } = usePositions()
2023-11-10 09:58:04 -08:00
const setActiveTab = useCallback((tab: ActiveTab) => {
return set((s) => {
s.activeTab = tab
})
}, [])
2023-10-10 21:07:55 -07:00
useEffect(() => {
const mangoAccounts = mangoStore.getState().mangoAccounts
const selectedMangoAccount = mangoAccounts.find(
(ma) =>
ma.name.toLowerCase() ===
`${(BOOST_ACCOUNT_PREFIX + selectedToken).toLowerCase()}`,
)
set((s) => {
s.mangoAccount.current = selectedMangoAccount
})
}, [selectedToken])
2024-02-20 04:59:49 -08:00
2023-10-10 21:07:55 -07:00
return (
<>
<div className="mb-6 grid grid-cols-3">
<NavTabs
activeValue={activeTab}
values={[
['Boost!', 0],
['Positions', positions.length],
['Activity', 0],
]}
onChange={setActiveTab}
/>
</div>
<TabContent activeTab={activeTab} setActiveTab={setActiveTab} />
2024-03-02 18:02:29 -08:00
<HowItWorks />
2023-10-10 21:07:55 -07:00
</>
)
}
export default HomePage
const TabContent = ({
activeTab,
setActiveTab,
}: {
activeTab: string
2023-11-10 09:58:04 -08:00
setActiveTab: (tab: ActiveTab) => void
2023-10-10 21:07:55 -07:00
}) => {
switch (activeTab) {
case 'Boost!':
return <Stake />
case 'Positions':
return <Positions setActiveTab={setActiveTab} />
case 'Activity':
return <TransactionHistory />
default:
return <Stake />
}
}