Skip to content

Commit c865f59

Browse files
committed
feat(rpc): include aliases in ListOrders
This adds an optional alias field on the orders returned by `ListOrders` and enables and displays aliases automatically on `xucli listorders`. Closes #643.
1 parent 9cb7f4a commit c865f59

File tree

16 files changed

+793
-454
lines changed

16 files changed

+793
-454
lines changed

Diff for: docs/api.md

+20-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: lib/cli/commands/listorders.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ type FormattedTradingPairOrders = {
1111
orders: string[][],
1212
};
1313

14-
const COLUMNS = [19, 19, 12, 19, 19, 12];
14+
const COLUMNS = [15, 13, 18, 15, 13, 18];
1515
const COLUMNS_IN_ORDER_SIDE = COLUMNS.length / 2;
1616
const HEADER = [
1717
{ content: colors.green('Buy'), colSpan: 3 },
@@ -26,14 +26,13 @@ const SECONDARY_HEADER = [
2626
colors.red('Alias'),
2727
];
2828

29-
const addSide = (orderSide: Order.AsObject[]): string[] => {
29+
const addOrderToSide = (orderSide: Order.AsObject[]): string[] => {
3030
const order = orderSide.pop();
3131
if (order) {
32-
const isOwn = order.isOwnOrder ? 'X' : '';
3332
return [
3433
satsToCoinsStr(order.quantity),
3534
order.price.toString(),
36-
isOwn,
35+
order.nodeIdentifier!.alias,
3736
].map(i => order.isOwnOrder ? colors.cyan(i) : i);
3837
} else {
3938
return Array.from(Array(COLUMNS_IN_ORDER_SIDE)).map(() => '');
@@ -42,17 +41,17 @@ const addSide = (orderSide: Order.AsObject[]): string[] => {
4241

4342
export const formatOrders = (orders: ListOrdersResponse.AsObject) => {
4443
const formattedOrders: FormattedTradingPairOrders[] = [];
45-
orders.ordersMap.map(orderMapping => orderMapping[1]).forEach((tradingPair) => {
44+
orders.ordersMap.forEach(([pairId, tradingPair]) => {
4645
const buy = tradingPair.buyOrdersList;
4746
const sell = tradingPair.sellOrdersList;
4847
const totalRows = buy.length < sell.length
4948
? sell.length : buy.length;
5049
const tradingPairOrders = Array.from(Array(totalRows))
5150
.map(() => {
52-
return addSide(buy).concat(addSide(sell));
51+
return addOrderToSide(buy).concat(addOrderToSide(sell));
5352
});
5453
formattedOrders.push({
55-
pairId: tradingPair[0],
54+
pairId,
5655
orders: tradingPairOrders,
5756
});
5857
});
@@ -107,5 +106,6 @@ export const handler = async (argv: Arguments<any>) => {
107106
request.setPairId(pairId);
108107
request.setOwner(Number(Owner[argv.owner]));
109108
request.setLimit(argv.limit);
109+
request.setIncludeAliases(true);
110110
(await loadXudClient(argv)).listOrders(request, callback(argv, displayTables));
111111
};

Diff for: lib/grpc/GrpcService.ts

+30-4
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,37 @@ import { CurrencyInstance, OrderInstance, TradeInstance } from '../db/types';
55
import { LndInfo } from '../lndclient/types';
66
import { isOwnOrder, Order, OrderPortion, PlaceOrderEvent, PlaceOrderEventType, PlaceOrderResult } from '../orderbook/types';
77
import * as xudrpc from '../proto/xudrpc_pb';
8-
import Service from '../service/Service';
8+
import Service, { ServiceOrder } from '../service/Service';
99
import { SwapFailure, SwapSuccess } from '../swaps/types';
1010
import getGrpcError from './getGrpcError';
1111

1212
/**
1313
* Creates an xudrpc Order message from an [[Order]].
1414
*/
15+
const createServiceOrder = (order: ServiceOrder) => {
16+
const grpcOrder = new xudrpc.Order();
17+
grpcOrder.setCreatedAt(order.createdAt);
18+
grpcOrder.setId(order.id);
19+
if (order.hold) {
20+
grpcOrder.setHold(order.hold);
21+
}
22+
if (order.localId) {
23+
grpcOrder.setLocalId(order.localId);
24+
}
25+
grpcOrder.setIsOwnOrder(order.isOwnOrder);
26+
const nodeIdentifier = new xudrpc.NodeIdentifier();
27+
nodeIdentifier.setNodePubKey(order.nodeIdentifier.nodePubKey);
28+
if (order.nodeIdentifier.alias) {
29+
nodeIdentifier.setAlias(order.nodeIdentifier.alias);
30+
}
31+
grpcOrder.setNodeIdentifier(nodeIdentifier);
32+
grpcOrder.setPairId(order.pairId);
33+
grpcOrder.setPrice(order.price);
34+
grpcOrder.setQuantity(order.quantity);
35+
grpcOrder.setSide(order.side as number);
36+
return grpcOrder;
37+
};
38+
1539
const createOrder = (order: Order) => {
1640
const grpcOrder = new xudrpc.Order();
1741
grpcOrder.setCreatedAt(order.createdAt);
@@ -21,7 +45,9 @@ const createOrder = (order: Order) => {
2145
grpcOrder.setLocalId((order).localId);
2246
grpcOrder.setIsOwnOrder(true);
2347
} else {
24-
grpcOrder.setPeerPubKey((order).peerPubKey);
48+
const nodeIdentifier = new xudrpc.NodeIdentifier();
49+
nodeIdentifier.setNodePubKey(order.peerPubKey);
50+
grpcOrder.setNodeIdentifier(nodeIdentifier);
2551
grpcOrder.setIsOwnOrder(false);
2652
}
2753
grpcOrder.setPairId(order.pairId);
@@ -566,9 +592,9 @@ class GrpcService {
566592
const listOrdersResponse = this.service.listOrders(call.request.toObject());
567593
const response = new xudrpc.ListOrdersResponse();
568594

569-
const listOrdersList = <T extends Order>(orders: T[]) => {
595+
const listOrdersList = <T extends ServiceOrder>(orders: T[]) => {
570596
const ordersList: xudrpc.Order[] = [];
571-
orders.forEach(order => ordersList.push(createOrder(<Order>order)));
597+
orders.forEach(order => ordersList.push(createServiceOrder(order)));
572598
return ordersList;
573599
};
574600

Diff for: lib/orderbook/types.ts

+5
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,11 @@ type Stamp = OrderIdentifier & {
7676
initialQuantity: number;
7777
};
7878

79+
export type SortableOrder = {
80+
price: number;
81+
createdAt: number;
82+
};
83+
7984
export type OwnMarketOrder = MarketOrder & Local;
8085

8186
export type OwnLimitOrder = LimitOrder & Local;

Diff for: lib/p2p/Pool.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ class Pool extends EventEmitter {
148148
return this.nodeState.addresses;
149149
}
150150

151-
public getTokenIdentifier(currency: string) {
151+
public getTokenIdentifier = (currency: string) => {
152152
return this.nodeState.tokenIdentifiers[currency];
153153
}
154154

Diff for: lib/proto/xudrpc.swagger.json

+25-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: lib/proto/xudrpc_pb.d.ts

+34-20
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)