Skip to content

Commit

Permalink
refactor: change function argument object type
Browse files Browse the repository at this point in the history
  • Loading branch information
graykode committed Apr 11, 2024
1 parent 6049c1e commit 5e9e472
Show file tree
Hide file tree
Showing 14 changed files with 1,023 additions and 836 deletions.
8 changes: 3 additions & 5 deletions src/apis/open-order.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ const getOpenOrders = async (
export async function fetchOpenOrders(
chainId: CHAIN_IDS,
userAddress: `0x${string}`,
rpcUrl?: string,
): Promise<OpenOrder[]> {
const {
data: { openOrders },
Expand All @@ -63,7 +62,7 @@ export async function fetchOpenOrders(
(address, index, self) =>
self.findIndex((c) => isAddressEqual(c, address)) === index,
)
.map((address) => fetchCurrency(chainId, address, rpcUrl)),
.map((address) => fetchCurrency(chainId, address)),
)
return openOrders.map((openOrder) =>
toOpenOrder(chainId, currencies, openOrder),
Expand All @@ -73,7 +72,6 @@ export async function fetchOpenOrders(
export async function fetchOpenOrder(
chainId: CHAIN_IDS,
id: string,
rpcUrl?: string,
): Promise<OpenOrder> {
const {
data: { openOrder },
Expand All @@ -82,8 +80,8 @@ export async function fetchOpenOrder(
throw new Error(`Open order not found: ${id}`)
}
const currencies = await Promise.all([
fetchCurrency(chainId, getAddress(openOrder.book.base.id), rpcUrl),
fetchCurrency(chainId, getAddress(openOrder.book.quote.id), rpcUrl),
fetchCurrency(chainId, getAddress(openOrder.book.base.id)),
fetchCurrency(chainId, getAddress(openOrder.book.quote.id)),
])
return toOpenOrder(chainId, currencies, openOrder)
}
Expand Down
58 changes: 34 additions & 24 deletions src/approval.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import { createWalletClient, HDAccount, http, PrivateKeyAccount } from 'viem'
import { CHAIN_IDS, CHAIN_MAP } from './constants/chain'
import { CONTRACT_ADDRESSES } from './constants/addresses'
import { fetchIsApprovedForAll } from './utils/approval'
import { decorator } from './utils/decorator'

const _abi = [
{
Expand Down Expand Up @@ -51,28 +52,37 @@ const _abi = [
* mnemonicToAccount('legal ...')
* )
*/
export const setApprovalOfOpenOrdersForAll = async (
chainId: CHAIN_IDS,
account: HDAccount | PrivateKeyAccount,
options?: {
rpcUrl: string
},
): Promise<`0x${string}` | undefined> => {
const isApprovedForAll = await fetchIsApprovedForAll(chainId, account.address)
if (isApprovedForAll) {
return undefined
}
const walletClient = createWalletClient({
chain: CHAIN_MAP[chainId],
account,
transport: options?.rpcUrl ? http(options.rpcUrl) : http(),
})
return walletClient.writeContract({
export const setApprovalOfOpenOrdersForAll = decorator(
async ({
chainId,
account,
chain: CHAIN_MAP[chainId],
address: CONTRACT_ADDRESSES[chainId]!.BookManager,
abi: _abi,
functionName: 'setApprovalForAll',
args: [CONTRACT_ADDRESSES[chainId]!.Controller, true],
})
}
options,
}: {
chainId: CHAIN_IDS
account: HDAccount | PrivateKeyAccount
options?: {
rpcUrl: string
}
}): Promise<`0x${string}` | undefined> => {
const isApprovedForAll = await fetchIsApprovedForAll(
chainId,
account.address,
)
if (isApprovedForAll) {
return undefined
}
const walletClient = createWalletClient({
chain: CHAIN_MAP[chainId],
account,
transport: options?.rpcUrl ? http(options.rpcUrl) : http(),
})
return walletClient.writeContract({
account,
chain: CHAIN_MAP[chainId],
address: CONTRACT_ADDRESSES[chainId]!.BookManager,
abi: _abi,
functionName: 'setApprovalForAll',
args: [CONTRACT_ADDRESSES[chainId]!.Controller, true],
})
},
)
Loading

0 comments on commit 5e9e472

Please sign in to comment.