mars-v2-frontend/src/hooks/useAutoLend.ts

54 lines
1.8 KiB
TypeScript
Raw Normal View History

2023-10-23 12:04:17 +00:00
import { LocalStorageKeys } from 'constants/localStorageKeys'
2023-07-05 14:43:11 +00:00
import useCurrentAccount from 'hooks/useCurrentAccount'
import useLocalStorage from 'hooks/useLocalStorage'
import useStore from 'store'
2023-07-05 14:43:11 +00:00
export default function useAutoLend(): {
2023-07-05 14:43:11 +00:00
autoLendEnabledAccountIds: string[]
toggleAutoLend: (accountId: string) => void
isAutoLendEnabledForCurrentAccount: boolean
setAutoLendOnAllAccounts: (lendAssets: boolean) => void
enableAutoLendAccountId: (accountId: string) => void
2023-07-05 14:43:11 +00:00
} {
const accounts = useStore((s) => s.accounts)
2023-07-05 14:43:11 +00:00
const currentAccount = useCurrentAccount()
const [autoLendEnabledAccountIds, setAutoLendEnabledAccountIds] = useLocalStorage<string[]>(
2023-10-23 12:04:17 +00:00
LocalStorageKeys.AUTO_LEND_ENABLED_ACCOUNT_IDS,
2023-07-05 14:43:11 +00:00
[],
)
const toggleAutoLend = (accountId: string) => {
const setOfAccountIds = new Set(autoLendEnabledAccountIds)
setOfAccountIds.has(accountId)
? setOfAccountIds.delete(accountId)
: setOfAccountIds.add(accountId)
setAutoLendEnabledAccountIds(Array.from(setOfAccountIds))
}
const isAutoLendEnabledForCurrentAccount = currentAccount
? autoLendEnabledAccountIds.includes(currentAccount.id)
: false
const setAutoLendOnAllAccounts = (lendAssets: boolean) => {
const allAccountIds = accounts ? accounts.map((account) => account.id) : []
setAutoLendEnabledAccountIds(lendAssets ? allAccountIds : [])
}
const enableAutoLendAccountId = (accountId: string) => {
const setOfAccountIds = new Set(autoLendEnabledAccountIds)
if (!setOfAccountIds.has(accountId)) setOfAccountIds.add(accountId)
setAutoLendEnabledAccountIds(Array.from(setOfAccountIds))
}
2023-07-05 14:43:11 +00:00
return {
autoLendEnabledAccountIds,
toggleAutoLend,
isAutoLendEnabledForCurrentAccount,
setAutoLendOnAllAccounts,
enableAutoLendAccountId,
}
}