Skip to content

Commit e2b9ca4

Browse files
committed
simplify name generation
1 parent 134e367 commit e2b9ca4

File tree

1 file changed

+82
-48
lines changed

1 file changed

+82
-48
lines changed

src/client/client.ts

Lines changed: 82 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -3880,6 +3880,10 @@ export class Client {
38803880
orderIDs: string[],
38813881
marketName: string
38823882
): Promise<CancelledOrder[]> {
3883+
if (orderIDs.length === 0) {
3884+
return []
3885+
}
3886+
38833887
const [a, b] = marketName.split('_')
38843888
await this.prefillRPoolIfNeededForAssets(
38853889
a as CryptoCurrency,
@@ -3894,10 +3898,8 @@ export class Client {
38943898
})
38953899
)
38963900

3897-
const names = ['A', 'B', 'C', 'D', 'E', 'F'].slice(
3898-
0,
3899-
cancelOrdersPayloads.length
3900-
)
3901+
const names = this.generateNames(cancelOrdersPayloads.length)
3902+
39013903
const params = names
39023904
.map(name => `$p${name}:CancelOrderParams!, $s${name}:Signature!`)
39033905
.join(',')
@@ -3927,17 +3929,19 @@ export class Client {
39273929
public async placeLimitOrders(
39283930
params: PlaceLimitOrderParams[]
39293931
): Promise<OrdersPlaced> {
3932+
if (params.length === 0) {
3933+
return {
3934+
orders: []
3935+
}
3936+
}
39303937
await this.prefillRPoolIfNeededForAssets(
39313938
params[0].limitPrice.currencyA,
39323939
params[0].limitPrice.currencyB
39333940
)
39343941

39353942
const placeLimitOrderPayloads = await this.generatePlaceOrdersParams(params)
3943+
const names = this.generateNames(placeLimitOrderPayloads.length)
39363944

3937-
const names = ['A', 'B', 'C', 'D', 'E', 'F'].slice(
3938-
0,
3939-
placeLimitOrderPayloads.length
3940-
)
39413945
const paramNames = names
39423946
.map(name => `$p${name}:PlaceLimitOrderParams!, $s${name}:Signature!`)
39433947
.join(',')
@@ -3971,48 +3975,16 @@ export class Client {
39713975
) as OrderPlaced[]
39723976
}
39733977
} catch (e) {
3978+
if (e.message.includes(MISSING_NONCES)) {
3979+
await this.updateTradedAssetNonces()
3980+
}
39743981
return {
39753982
error: e,
39763983
orders: []
39773984
}
39783985
}
39793986
}
39803987

3981-
private generatePlaceOrdersParams = async (
3982-
params: PlaceLimitOrderParams[]
3983-
): Promise<PayloadSignature[]> => {
3984-
return await Promise.all(
3985-
params.map(async param => {
3986-
const { nonceOrder, noncesFrom, noncesTo } = this.getNoncesForTrade(
3987-
param.marketName,
3988-
param.buyOrSell
3989-
)
3990-
const normalizedAmount = normalizeAmountForMarket(
3991-
param.amount,
3992-
this.marketData[param.marketName]
3993-
)
3994-
const normalizedLimitPrice = normalizePriceForMarket(
3995-
param.limitPrice,
3996-
this.marketData[param.marketName]
3997-
)
3998-
const placeLimitOrderParams = createPlaceLimitOrderParams(
3999-
param.allowTaker,
4000-
normalizedAmount,
4001-
param.buyOrSell,
4002-
param.cancellationPolicy,
4003-
normalizedLimitPrice,
4004-
param.marketName,
4005-
noncesFrom,
4006-
noncesTo,
4007-
nonceOrder,
4008-
param.cancelAt
4009-
)
4010-
const signedPayload = await this.signPayload(placeLimitOrderParams)
4011-
return signedPayload
4012-
})
4013-
)
4014-
}
4015-
40163988
/**
40173989
* Cancel a list of orders by ID.
40183990
*
@@ -4046,8 +4018,7 @@ export class Client {
40464018

40474019
const placeLimitOrderPayloads = await this.generatePlaceOrdersParams(orders)
40484020

4049-
const allNames = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K']
4050-
const cancelNames = allNames.slice(0, cancelOrdersPayloads.length)
4021+
const cancelNames = this.generateNames(cancelOrdersPayloads.length)
40514022
const cancelParams = cancelNames
40524023
.map(name => `$p${name}:CancelOrderParams!, $s${name}:Signature!`)
40534024
.join(',')
@@ -4058,10 +4029,11 @@ export class Client {
40584029
)
40594030
.join('\n')
40604031

4061-
const placeNames = allNames.slice(
4062-
cancelOrdersPayloads.length,
4063-
cancelOrdersPayloads.length + orders.length
4032+
const placeNames = this.generateNames(
4033+
orders.length,
4034+
cancelOrdersPayloads.length
40644035
)
4036+
40654037
const placeOrderParams = placeNames
40664038
.map(name => `$p${name}:PlaceLimitOrderParams!, $s${name}:Signature!`)
40674039
.join(',')
@@ -4107,11 +4079,73 @@ export class Client {
41074079
.map(k => result.data[k]) as CancelledOrder[]
41084080
}
41094081
} catch (e) {
4082+
if (e.message.includes(MISSING_NONCES)) {
4083+
await this.updateTradedAssetNonces()
4084+
}
41104085
return {
41114086
error: e,
41124087
orders: [],
41134088
cancelled: []
41144089
}
41154090
}
41164091
}
4092+
4093+
private generatePlaceOrdersParams = async (
4094+
params: PlaceLimitOrderParams[]
4095+
): Promise<PayloadSignature[]> => {
4096+
return await Promise.all(
4097+
params.map(async param => {
4098+
const { nonceOrder, noncesFrom, noncesTo } = this.getNoncesForTrade(
4099+
param.marketName,
4100+
param.buyOrSell
4101+
)
4102+
const normalizedAmount = normalizeAmountForMarket(
4103+
param.amount,
4104+
this.marketData[param.marketName]
4105+
)
4106+
const normalizedLimitPrice = normalizePriceForMarket(
4107+
param.limitPrice,
4108+
this.marketData[param.marketName]
4109+
)
4110+
const placeLimitOrderParams = createPlaceLimitOrderParams(
4111+
param.allowTaker,
4112+
normalizedAmount,
4113+
param.buyOrSell,
4114+
param.cancellationPolicy,
4115+
normalizedLimitPrice,
4116+
param.marketName,
4117+
noncesFrom,
4118+
noncesTo,
4119+
nonceOrder,
4120+
param.cancelAt
4121+
)
4122+
const signedPayload = await this.signPayload(placeLimitOrderParams)
4123+
return signedPayload
4124+
})
4125+
)
4126+
}
4127+
4128+
private generateNames = (total: number, offset: number = 0): string[] => {
4129+
const names = [
4130+
'A',
4131+
'B',
4132+
'C',
4133+
'D',
4134+
'E',
4135+
'F',
4136+
'G',
4137+
'H',
4138+
'I',
4139+
'J',
4140+
'K',
4141+
'L',
4142+
'M',
4143+
'N',
4144+
'O',
4145+
'P',
4146+
'Q'
4147+
]
4148+
4149+
return names.slice(offset, offset + total)
4150+
}
41174151
}

0 commit comments

Comments
 (0)