@orderly.network/hooks 1.1.5-rc.0 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/dataProvider.d.ts +4 -3
- package/esm/dataProvider.d.ts.map +1 -1
- package/esm/dataProvider.js +5 -0
- package/esm/index.d.ts +4 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +2 -0
- package/esm/orderly/useMarketsStream.d.ts.map +1 -1
- package/esm/orderly/useMarketsStream.js +1 -0
- package/esm/orderly/useMaxQty.d.ts.map +1 -1
- package/esm/orderly/useMaxQty.js +14 -27
- package/esm/orderly/useOrderEntry.js +19 -6
- package/esm/orderly/useOrderStream.d.ts +10 -1
- package/esm/orderly/useOrderStream.d.ts.map +1 -1
- package/esm/orderly/useOrderStream.js +29 -26
- package/esm/orderly/useOrderbookStream.d.ts.map +1 -1
- package/esm/orderly/useOrderbookStream.js +20 -13
- package/esm/orderly/usePositionStream.js +1 -1
- package/esm/orderly/usePrivateDataObserver.d.ts.map +1 -1
- package/esm/orderly/usePrivateDataObserver.js +62 -42
- package/esm/services/painter/backgroundPaint.d.ts +4 -4
- package/esm/services/painter/basePaint.d.ts +17 -8
- package/esm/services/painter/basePaint.d.ts.map +1 -1
- package/esm/services/painter/dataPaint.d.ts +4 -3
- package/esm/services/painter/dataPaint.d.ts.map +1 -1
- package/esm/services/painter/dataPaint.js +72 -35
- package/esm/services/painter/layout.config.d.ts +2 -2
- package/esm/services/painter/layout.config.d.ts.map +1 -1
- package/esm/services/painter/layout.config.js +13 -8
- package/esm/services/painter/painter.d.ts +6 -4
- package/esm/services/painter/painter.d.ts.map +1 -1
- package/esm/services/painter/painter.js +4 -4
- package/esm/unuse/apiPrefixMiddleware.d.ts.map +1 -1
- package/esm/unuse/apiPrefixMiddleware.js +0 -2
- package/esm/useLocalStorage.d.ts.map +1 -1
- package/esm/useLocalStorage.js +2 -4
- package/esm/useMutation.d.ts +4 -1
- package/esm/useMutation.d.ts.map +1 -1
- package/esm/useMutation.js +29 -2
- package/esm/usePoster.d.ts +30 -4
- package/esm/usePoster.d.ts.map +1 -1
- package/esm/usePoster.js +95 -24
- package/esm/utils/dev.d.ts +2 -0
- package/esm/utils/dev.d.ts.map +1 -0
- package/esm/utils/dev.js +18 -0
- package/esm/utils/swr.d.ts +10 -0
- package/esm/utils/swr.d.ts.map +1 -0
- package/esm/utils/swr.js +195 -0
- package/esm/version.d.ts +1 -1
- package/esm/version.d.ts.map +1 -1
- package/esm/version.js +2 -2
- package/lib/dataProvider.d.ts +4 -3
- package/lib/dataProvider.d.ts.map +1 -1
- package/lib/dataProvider.js +5 -0
- package/lib/index.d.ts +4 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +4 -1
- package/lib/orderly/useMarketsStream.d.ts.map +1 -1
- package/lib/orderly/useMarketsStream.js +1 -0
- package/lib/orderly/useMaxQty.d.ts.map +1 -1
- package/lib/orderly/useMaxQty.js +14 -27
- package/lib/orderly/useOrderEntry.js +16 -3
- package/lib/orderly/useOrderStream.d.ts +10 -1
- package/lib/orderly/useOrderStream.d.ts.map +1 -1
- package/lib/orderly/useOrderStream.js +29 -26
- package/lib/orderly/useOrderbookStream.d.ts.map +1 -1
- package/lib/orderly/useOrderbookStream.js +20 -13
- package/lib/orderly/usePositionStream.js +1 -1
- package/lib/orderly/usePrivateDataObserver.d.ts.map +1 -1
- package/lib/orderly/usePrivateDataObserver.js +61 -41
- package/lib/services/painter/backgroundPaint.d.ts +4 -4
- package/lib/services/painter/basePaint.d.ts +17 -8
- package/lib/services/painter/basePaint.d.ts.map +1 -1
- package/lib/services/painter/dataPaint.d.ts +4 -3
- package/lib/services/painter/dataPaint.d.ts.map +1 -1
- package/lib/services/painter/dataPaint.js +72 -35
- package/lib/services/painter/layout.config.d.ts +2 -2
- package/lib/services/painter/layout.config.d.ts.map +1 -1
- package/lib/services/painter/layout.config.js +14 -9
- package/lib/services/painter/painter.d.ts +6 -4
- package/lib/services/painter/painter.d.ts.map +1 -1
- package/lib/services/painter/painter.js +4 -4
- package/lib/unuse/apiPrefixMiddleware.d.ts.map +1 -1
- package/lib/unuse/apiPrefixMiddleware.js +0 -2
- package/lib/useLocalStorage.d.ts.map +1 -1
- package/lib/useLocalStorage.js +2 -4
- package/lib/useMutation.d.ts +4 -1
- package/lib/useMutation.d.ts.map +1 -1
- package/lib/useMutation.js +29 -2
- package/lib/usePoster.d.ts +30 -4
- package/lib/usePoster.d.ts.map +1 -1
- package/lib/usePoster.js +93 -22
- package/lib/utils/dev.d.ts +2 -0
- package/lib/utils/dev.d.ts.map +1 -0
- package/lib/utils/dev.js +20 -0
- package/lib/utils/swr.d.ts +10 -0
- package/lib/utils/swr.d.ts.map +1 -0
- package/lib/utils/swr.js +200 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.d.ts.map +1 -1
- package/lib/version.js +2 -2
- package/package.json +8 -8
|
@@ -11,40 +11,32 @@ const useMarkPricesStream_1 = require("./useMarkPricesStream");
|
|
|
11
11
|
const useMutation_1 = require("../useMutation");
|
|
12
12
|
const version_1 = __importDefault(require("../version"));
|
|
13
13
|
const dataProvider_1 = require("../dataProvider");
|
|
14
|
-
const
|
|
14
|
+
const swr_1 = require("../utils/swr");
|
|
15
|
+
const useEventEmitter_1 = require("../useEventEmitter");
|
|
16
|
+
const useOrderStream = (
|
|
17
|
+
/**
|
|
18
|
+
* Orders query params
|
|
19
|
+
*/
|
|
20
|
+
params, options) => {
|
|
15
21
|
const { status, symbol, side, size = 100 } = params;
|
|
16
22
|
const { data: markPrices = {} } = (0, useMarkPricesStream_1.useMarkPricesStream)();
|
|
17
|
-
const
|
|
23
|
+
const ee = (0, useEventEmitter_1.useEventEmitter)();
|
|
24
|
+
const { regesterKeyHandler, unregisterKeyHandler } = (0, dataProvider_1.useDataCenterContext)();
|
|
18
25
|
const [doCancelOrder, { error: cancelOrderError, isMutating: cancelMutating },] = (0, useMutation_1.useMutation)("/v1/order", "DELETE");
|
|
19
26
|
const [doUpdateOrder, { error: updateOrderError, isMutating: updateMutating },] = (0, useMutation_1.useMutation)("/v1/order", "PUT");
|
|
20
27
|
const [doCanceAlgolOrder, { error: cancelAlgoOrderError, isMutating: cancelAlgoMutating },] = (0, useMutation_1.useMutation)("/v1/algo/order", "DELETE");
|
|
21
28
|
const [doUpdateAlgoOrder, { error: updateAlgoOrderError, isMutating: updateAlgoMutating },] = (0, useMutation_1.useMutation)("/v1/algo/order", "PUT");
|
|
22
|
-
const getKey = (pageIndex, previousPageData) => {
|
|
23
|
-
// reached the end
|
|
24
|
-
if (previousPageData && !previousPageData.rows?.length)
|
|
25
|
-
return null;
|
|
26
|
-
const search = new URLSearchParams([
|
|
27
|
-
["size", size.toString()],
|
|
28
|
-
["page", `${pageIndex + 1}`],
|
|
29
|
-
["source_type", "ALL"],
|
|
30
|
-
]);
|
|
31
|
-
if (status) {
|
|
32
|
-
search.set(`status`, status);
|
|
33
|
-
}
|
|
34
|
-
if (symbol) {
|
|
35
|
-
search.set(`symbol`, symbol);
|
|
36
|
-
}
|
|
37
|
-
if (side) {
|
|
38
|
-
search.set(`side`, side);
|
|
39
|
-
}
|
|
40
|
-
return `/v1/orders?${search.toString()}`;
|
|
41
|
-
};
|
|
42
29
|
(0, react_1.useEffect)(() => {
|
|
43
30
|
const formatKey = (value) => (value ? `:${value}` : "");
|
|
44
31
|
const key = `orders${formatKey(status)}${formatKey(symbol)}${formatKey(side)}`;
|
|
45
|
-
regesterKeyHandler(key,
|
|
46
|
-
|
|
47
|
-
|
|
32
|
+
regesterKeyHandler?.(key, (0, swr_1.generateKeyFun)({ status, symbol, side, size }));
|
|
33
|
+
return () => {
|
|
34
|
+
if (!options?.stopOnUnmount)
|
|
35
|
+
return;
|
|
36
|
+
unregisterKeyHandler(key);
|
|
37
|
+
};
|
|
38
|
+
}, [status, symbol, side, options?.keeplive]);
|
|
39
|
+
const ordersResponse = (0, usePrivateInfiniteQuery_1.usePrivateInfiniteQuery)((0, swr_1.generateKeyFun)({ status, symbol, side, size }), {
|
|
48
40
|
initialSize: 1,
|
|
49
41
|
// revalidateFirstPage: false,
|
|
50
42
|
// onError: (err) => {
|
|
@@ -59,6 +51,7 @@ const useOrderStream = (params) => {
|
|
|
59
51
|
}
|
|
60
52
|
return ordersResponse.data?.map((item) => item.rows)?.flat();
|
|
61
53
|
}, [ordersResponse.data]);
|
|
54
|
+
// console.log(ordersResponse.data);
|
|
62
55
|
const orders = (0, react_1.useMemo)(() => {
|
|
63
56
|
if (!flattenOrders) {
|
|
64
57
|
return null;
|
|
@@ -103,7 +96,17 @@ const useOrderStream = (params) => {
|
|
|
103
96
|
* update algo order
|
|
104
97
|
*/
|
|
105
98
|
const updateAlgoOrder = (0, react_1.useCallback)((orderId, order) => {
|
|
106
|
-
return _updateOrder(orderId, order, "algoOrder")
|
|
99
|
+
return _updateOrder(orderId, order, "algoOrder").then((res) => {
|
|
100
|
+
// TODO: remove this when the WS service provides the correct data
|
|
101
|
+
ee.emit("algoOrder:cache", {
|
|
102
|
+
// ...res.data.rows[0],
|
|
103
|
+
...order,
|
|
104
|
+
order_id: Number(orderId),
|
|
105
|
+
// trigger_price: price,
|
|
106
|
+
});
|
|
107
|
+
//------------fix end----------------
|
|
108
|
+
return res;
|
|
109
|
+
});
|
|
107
110
|
}, []);
|
|
108
111
|
const _cancelOrder = (0, react_1.useCallback)((orderId, type, symbol) => {
|
|
109
112
|
switch (type) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOrderbookStream.d.ts","sourceRoot":"","sources":["../../src/orderly/useOrderbookStream.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC;AAErC,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB,CAAC;AAyFF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,SAAS,SAClB,MAAM,WACJ,OAAO,QACV,aAAa,KAClB,
|
|
1
|
+
{"version":3,"file":"useOrderbookStream.d.ts","sourceRoot":"","sources":["../../src/orderly/useOrderbookStream.ts"],"names":[],"mappings":"AAUA,MAAM,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC;AAErC,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,IAAI,EAAE,aAAa,EAAE,CAAC;CACvB,CAAC;AAyFF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,UACnB,MAAM,GAAG,SAAS,SAClB,MAAM,WACJ,OAAO,QACV,aAAa,KAClB,aAyDF,CAAC;AAgCF,eAAO,MAAM,cAAc,SAAU,aAAa,UAAU,aAAa;;;CAWxE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,kBAAkB,WACrB,MAAM,YACL,aAAa,YACZ,gBAAgB;;;;;;;;;;;2BAgIgB,MAAM;;;;;;;;;IAmDjD,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
|
@@ -98,18 +98,22 @@ const reduceOrderbook = (depth, level, padding, data) => {
|
|
|
98
98
|
if (askPrice <= bidPrice) {
|
|
99
99
|
// console.log("xxxxxxxxxxx reset ask list begin", [...asks], { ...asks[0] });
|
|
100
100
|
asks.shift();
|
|
101
|
-
|
|
101
|
+
let logStr = "";
|
|
102
102
|
for (let index = 0; index < asks.length; index++) {
|
|
103
103
|
if (index === 0) {
|
|
104
104
|
const quantity = asks[index][1] + askQty;
|
|
105
105
|
asks[index][1] = quantity;
|
|
106
106
|
asks[index][2] = quantity;
|
|
107
|
-
asks[index][3] += newAmount;
|
|
107
|
+
// asks[index][3] += newAmount;
|
|
108
|
+
// FIXME: fix this code later
|
|
109
|
+
asks[index][3] = Math.ceil(quantity) * asks[index][0];
|
|
108
110
|
}
|
|
109
111
|
else {
|
|
110
|
-
asks[index][3] += newAmount;
|
|
112
|
+
// asks[index][3] += newAmount;
|
|
113
|
+
// FIXME: fix this code later
|
|
114
|
+
asks[index][3] = asks[index][0] * asks[index][1] + asks[index - 1][3];
|
|
111
115
|
}
|
|
112
|
-
|
|
116
|
+
logStr += `index: ${index} ${asks[index]}\n`;
|
|
113
117
|
}
|
|
114
118
|
// console.log("xxxxxxxxxxx reset ask list end", logStr);
|
|
115
119
|
}
|
|
@@ -189,6 +193,8 @@ const useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
189
193
|
// const [level, setLevel] = useState(() => options?.level ?? 10);
|
|
190
194
|
const config = (0, useSymbolsInfo_1.useSymbolsInfo)()[symbol];
|
|
191
195
|
const [depth, setDepth] = (0, react_1.useState)();
|
|
196
|
+
// markPrice, lastPrice
|
|
197
|
+
const prevMiddlePrice = (0, react_1.useRef)(0);
|
|
192
198
|
const depths = (0, react_1.useMemo)(() => {
|
|
193
199
|
const tick = config("quote_tick");
|
|
194
200
|
return [tick, tick * 10, tick * 100, tick * 1000];
|
|
@@ -236,6 +242,7 @@ const useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
236
242
|
ignore = true;
|
|
237
243
|
// clean the data;
|
|
238
244
|
setData(INIT_DATA);
|
|
245
|
+
prevMiddlePrice.current = 0;
|
|
239
246
|
};
|
|
240
247
|
}, [symbol]);
|
|
241
248
|
// const {data:markPrices} = useMarkPricesStream();
|
|
@@ -264,6 +271,7 @@ const useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
264
271
|
});
|
|
265
272
|
return () => {
|
|
266
273
|
ignore = true;
|
|
274
|
+
prevMiddlePrice.current = 0;
|
|
267
275
|
subscription?.(); //unsubscribe
|
|
268
276
|
};
|
|
269
277
|
}, [symbol, requestData]);
|
|
@@ -274,12 +282,10 @@ const useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
274
282
|
//
|
|
275
283
|
setDepth(() => depth);
|
|
276
284
|
}, []);
|
|
277
|
-
// markPrice, lastPrice
|
|
278
|
-
const prevMiddlePrice = (0, react_1.useRef)(0);
|
|
279
285
|
const middlePrice = (0, react_1.useMemo)(() => {
|
|
280
286
|
let asksFrist = 0, bidsFirst = 0;
|
|
281
287
|
if (data.asks.length > 0) {
|
|
282
|
-
asksFrist = data.asks[
|
|
288
|
+
asksFrist = data.asks[0][0];
|
|
283
289
|
}
|
|
284
290
|
if (data.bids.length > 0) {
|
|
285
291
|
bidsFirst = data.bids[0][0];
|
|
@@ -287,7 +293,7 @@ const useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
287
293
|
if (isNaN(asksFrist) || isNaN(bidsFirst) || !ticker)
|
|
288
294
|
return 0;
|
|
289
295
|
return [asksFrist, bidsFirst, ticker["24h_close"]].sort()[1];
|
|
290
|
-
}, [ticker, data]);
|
|
296
|
+
}, [ticker?.["24h_close"], data]);
|
|
291
297
|
(0, react_1.useEffect)(() => {
|
|
292
298
|
prevMiddlePrice.current = middlePrice;
|
|
293
299
|
}, [middlePrice]);
|
|
@@ -297,11 +303,12 @@ const useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
297
303
|
});
|
|
298
304
|
// emit the asks0 and bids0
|
|
299
305
|
(0, react_1.useEffect)(() => {
|
|
300
|
-
|
|
301
|
-
reducedData.asks?.[
|
|
302
|
-
reducedData.bids?.[0]?.[0]
|
|
303
|
-
]
|
|
304
|
-
|
|
306
|
+
const updateData = [
|
|
307
|
+
reducedData.asks?.[reducedData.asks.length - 1]?.[0],
|
|
308
|
+
reducedData.bids?.[0]?.[0]
|
|
309
|
+
];
|
|
310
|
+
eventEmitter.emit("orderbook:update", updateData);
|
|
311
|
+
}, [reducedData.asks?.[reducedData.asks.length - 1]?.[0], reducedData.bids?.[0]?.[0]]);
|
|
305
312
|
return [
|
|
306
313
|
{
|
|
307
314
|
asks: reducedData.asks.slice(-level),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePrivateDataObserver.d.ts","sourceRoot":"","sources":["../../src/orderly/usePrivateDataObserver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"usePrivateDataObserver.d.ts","sourceRoot":"","sources":["../../src/orderly/usePrivateDataObserver.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAIjD,eAAO,MAAM,sBAAsB;uBAEd,MAAM,KAAK,IAAI,MAAM,EAAE,cAAc,CAAC;UA4K1D,CAAC"}
|
|
@@ -6,39 +6,58 @@ const useWS_1 = require("../useWS");
|
|
|
6
6
|
const swr_1 = require("swr");
|
|
7
7
|
const useAccount_1 = require("../useAccount");
|
|
8
8
|
const infinite_1 = require("swr/infinite");
|
|
9
|
-
const use_debounce_1 = require("use-debounce");
|
|
10
9
|
const useEventEmitter_1 = require("../useEventEmitter");
|
|
11
|
-
const
|
|
10
|
+
const swr_2 = require("../utils/swr");
|
|
12
11
|
const usePrivateDataObserver = (options) => {
|
|
13
12
|
const ws = (0, useWS_1.useWS)();
|
|
14
|
-
const { mutate } =
|
|
13
|
+
// const { mutate } = useSWRConfig();
|
|
15
14
|
const ee = (0, useEventEmitter_1.useEventEmitter)();
|
|
16
15
|
const { state } = (0, useAccount_1.useAccount)();
|
|
17
|
-
|
|
16
|
+
// TODO: remove this when the WS service provides the correct data
|
|
17
|
+
const algoOrderCacheQuneue = (0, react_1.useRef)([]);
|
|
18
|
+
const updateOrders = (data, isAlgoOrder) => {
|
|
18
19
|
const map = options.getKeysMap("orders");
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
20
|
+
// console.log("$$$$$$$$$$$$", data, algoOrderCacheQuneue.current);
|
|
21
|
+
if (isAlgoOrder) {
|
|
22
|
+
/// TODO: remove this when the WS service provides the correct data
|
|
23
|
+
if (algoOrderCacheQuneue.current.length) {
|
|
24
|
+
const index = algoOrderCacheQuneue.current.findIndex((item) => item.order_id === data.algoOrderId);
|
|
25
|
+
if (index > -1) {
|
|
26
|
+
data = {
|
|
27
|
+
...data,
|
|
28
|
+
...algoOrderCacheQuneue.current[index],
|
|
29
|
+
};
|
|
30
|
+
algoOrderCacheQuneue.current.splice(index, 1);
|
|
31
|
+
}
|
|
29
32
|
}
|
|
33
|
+
}
|
|
34
|
+
map.forEach((getKey, key) => {
|
|
35
|
+
(0, swr_1.mutate)((0, infinite_1.unstable_serialize)((index, prevData) => [
|
|
36
|
+
getKey(index, prevData),
|
|
37
|
+
state.accountId,
|
|
38
|
+
]), (prevData) => {
|
|
39
|
+
return (0, swr_2.updateOrdersHandler)(key, data, prevData);
|
|
40
|
+
}, {
|
|
41
|
+
revalidate: false,
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
// emit events;
|
|
45
|
+
// ee.emit("orders:changed", {
|
|
46
|
+
// ...data,
|
|
47
|
+
// status: data.status || (data as WSMessage.AlgoOrder).algoStatus,
|
|
48
|
+
// });
|
|
49
|
+
ee.emit("orders:changed", {
|
|
50
|
+
...data,
|
|
51
|
+
status: data.status || data.algoStatus,
|
|
30
52
|
});
|
|
31
|
-
|
|
32
|
-
// ee.emit("orders:changed");
|
|
33
|
-
}, 500);
|
|
53
|
+
};
|
|
34
54
|
// orders
|
|
35
55
|
(0, react_1.useEffect)(() => {
|
|
36
56
|
if (!state.accountId)
|
|
37
57
|
return;
|
|
38
58
|
const unsubscribe = ws.privateSubscribe("executionreport", {
|
|
39
59
|
onMessage: (data) => {
|
|
40
|
-
updateOrders(data);
|
|
41
|
-
ee.emit("orders:changed", data);
|
|
60
|
+
updateOrders(data, false);
|
|
42
61
|
},
|
|
43
62
|
});
|
|
44
63
|
return () => unsubscribe?.();
|
|
@@ -49,13 +68,18 @@ const usePrivateDataObserver = (options) => {
|
|
|
49
68
|
return;
|
|
50
69
|
const unsubscribe = ws.privateSubscribe("algoexecutionreport", {
|
|
51
70
|
onMessage: (data) => {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
71
|
+
setTimeout(() => {
|
|
72
|
+
if (Array.isArray(data)) {
|
|
73
|
+
data.forEach((item) => {
|
|
74
|
+
updateOrders(item, true);
|
|
75
|
+
// ee.emit("orders:changed", { ...item, status: item.algoStatus });
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
updateOrders(data, true);
|
|
80
|
+
// ee.emit("orders:changed", { ...data, status: data.algoStatus });
|
|
81
|
+
}
|
|
82
|
+
}, 100);
|
|
59
83
|
},
|
|
60
84
|
});
|
|
61
85
|
return () => unsubscribe?.();
|
|
@@ -70,7 +94,7 @@ const usePrivateDataObserver = (options) => {
|
|
|
70
94
|
const { positions: nextPostions } = data;
|
|
71
95
|
// console.log("ws----- positions data-----", data);
|
|
72
96
|
// updatePositions();
|
|
73
|
-
mutate(key, (prevPositions) => {
|
|
97
|
+
(0, swr_1.mutate)(key, (prevPositions) => {
|
|
74
98
|
// return nextPostions;
|
|
75
99
|
if (!!prevPositions) {
|
|
76
100
|
return {
|
|
@@ -112,19 +136,15 @@ const usePrivateDataObserver = (options) => {
|
|
|
112
136
|
unsubscribe?.();
|
|
113
137
|
};
|
|
114
138
|
}, [state.accountId]);
|
|
139
|
+
// cache algo orders
|
|
140
|
+
(0, react_1.useEffect)(() => {
|
|
141
|
+
const handler = (data) => {
|
|
142
|
+
algoOrderCacheQuneue.current.push(data);
|
|
143
|
+
};
|
|
144
|
+
ee.on("algoOrder:cache", handler);
|
|
145
|
+
return () => {
|
|
146
|
+
ee.off("algoOrder:cache", handler);
|
|
147
|
+
};
|
|
148
|
+
}, []);
|
|
115
149
|
};
|
|
116
150
|
exports.usePrivateDataObserver = usePrivateDataObserver;
|
|
117
|
-
const getSessionStorage = (key, initialValue) => {
|
|
118
|
-
// Prevent build error "window is undefined" but keep keep working
|
|
119
|
-
if (typeof window === "undefined") {
|
|
120
|
-
return initialValue;
|
|
121
|
-
}
|
|
122
|
-
try {
|
|
123
|
-
const item = window.sessionStorage.getItem(key);
|
|
124
|
-
return item ? (0, json_1.parseJSON)(item) : initialValue;
|
|
125
|
-
}
|
|
126
|
-
catch (error) {
|
|
127
|
-
console.warn(`Error reading sessionStorage key “${key}”:`, error);
|
|
128
|
-
return initialValue;
|
|
129
|
-
}
|
|
130
|
-
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { BasePaint, type
|
|
1
|
+
import { BasePaint, type DrawOptions } from "./basePaint";
|
|
2
2
|
export declare class BackgroundPaint extends BasePaint {
|
|
3
3
|
private img;
|
|
4
|
-
draw(options:
|
|
5
|
-
_drawColor(options:
|
|
6
|
-
_drawImage(options:
|
|
4
|
+
draw(options: DrawOptions): Promise<void>;
|
|
5
|
+
_drawColor(options: DrawOptions): void;
|
|
6
|
+
_drawImage(options: DrawOptions): Promise<void>;
|
|
7
7
|
private loadImg;
|
|
8
8
|
}
|
|
9
9
|
//# sourceMappingURL=backgroundPaint.d.ts.map
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { PosterPainter } from "./painter";
|
|
2
2
|
export type posterDataSource = {
|
|
3
|
+
/**
|
|
4
|
+
* slogan of the poster
|
|
5
|
+
*/
|
|
3
6
|
message?: string;
|
|
4
7
|
position: {
|
|
5
8
|
symbol: string;
|
|
@@ -17,7 +20,7 @@ export type posterDataSource = {
|
|
|
17
20
|
*/
|
|
18
21
|
ROI: number;
|
|
19
22
|
/**
|
|
20
|
-
* The informations of the position, such as open price, opened at, mark price, quantity
|
|
23
|
+
* The informations of the position, such as open price, opened at, mark price, quantity and custom message.
|
|
21
24
|
*/
|
|
22
25
|
informations: {
|
|
23
26
|
title: string;
|
|
@@ -51,23 +54,29 @@ export type layoutInfo = {
|
|
|
51
54
|
bottom: number;
|
|
52
55
|
}>;
|
|
53
56
|
};
|
|
54
|
-
export type
|
|
57
|
+
export type PosterLayoutConfig = {
|
|
55
58
|
message?: layoutInfo;
|
|
56
59
|
domain?: layoutInfo;
|
|
57
60
|
position?: layoutInfo;
|
|
58
|
-
unrealizedPnl?: layoutInfo
|
|
59
|
-
|
|
61
|
+
unrealizedPnl?: layoutInfo & {
|
|
62
|
+
secondaryColor: string;
|
|
63
|
+
secondaryFontSize: number;
|
|
64
|
+
};
|
|
65
|
+
informations?: layoutInfo & {
|
|
66
|
+
labelColor?: string;
|
|
67
|
+
};
|
|
60
68
|
updateTime?: layoutInfo;
|
|
61
69
|
};
|
|
62
|
-
export type
|
|
70
|
+
export type DrawOptions = {
|
|
63
71
|
/**
|
|
64
72
|
* Color of common text
|
|
65
73
|
*/
|
|
66
74
|
color?: string;
|
|
75
|
+
fontFamily?: string;
|
|
67
76
|
/**
|
|
68
77
|
* Lose color
|
|
69
78
|
*/
|
|
70
|
-
|
|
79
|
+
lossColor?: string;
|
|
71
80
|
/**
|
|
72
81
|
* Profit color
|
|
73
82
|
*/
|
|
@@ -79,12 +88,12 @@ export type drawOptions = {
|
|
|
79
88
|
backgroundColor?: string;
|
|
80
89
|
backgroundImg?: string;
|
|
81
90
|
data?: posterDataSource;
|
|
82
|
-
layout?:
|
|
91
|
+
layout?: PosterLayoutConfig;
|
|
83
92
|
};
|
|
84
93
|
export declare abstract class BasePaint {
|
|
85
94
|
protected ctx: CanvasRenderingContext2D;
|
|
86
95
|
protected painter: PosterPainter;
|
|
87
96
|
constructor(ctx: CanvasRenderingContext2D, painter: PosterPainter);
|
|
88
|
-
abstract draw(options:
|
|
97
|
+
abstract draw(options: DrawOptions): Promise<void>;
|
|
89
98
|
}
|
|
90
99
|
//# sourceMappingURL=basePaint.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"basePaint.d.ts","sourceRoot":"","sources":["../../../src/services/painter/basePaint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QAEf,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACvB;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB;;WAEG;QACH,GAAG,EAAE,MAAM,CAAC;QACZ;;WAEG;QACH,GAAG,EAAE,MAAM,CAAC;QACZ;;WAEG;QACH,YAAY,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QACjD;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,QAAQ,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"basePaint.d.ts","sourceRoot":"","sources":["../../../src/services/painter/basePaint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QAEf,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QACvB;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAC;QACjB;;WAEG;QACH,GAAG,EAAE,MAAM,CAAC;QACZ;;WAEG;QACH,GAAG,EAAE,MAAM,CAAC;QACZ;;WAEG;QACH,YAAY,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QACjD;;WAEG;QACH,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,YAAY,CAAC,EAAE,kBAAkB,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;CACJ,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,UAAU,CAAC;IAErB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,aAAa,CAAC,EAAE,UAAU,GAAG;QAC3B,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IAEF,YAAY,CAAC,EAAE,UAAU,GAAG;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,8BAAsB,SAAS;IAE3B,SAAS,CAAC,GAAG,EAAE,wBAAwB;IACvC,SAAS,CAAC,OAAO,EAAE,aAAa;gBADtB,GAAG,EAAE,wBAAwB,EAC7B,OAAO,EAAE,aAAa;IAElC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;CACnD"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { BasePaint,
|
|
1
|
+
import { BasePaint, DrawOptions } from "./basePaint";
|
|
2
2
|
export declare class DataPaint extends BasePaint {
|
|
3
3
|
private positionInfoCellWidth;
|
|
4
4
|
private DEFAULT_PROFIT_COLOR;
|
|
5
|
-
private
|
|
6
|
-
|
|
5
|
+
private DEFAULT_LOSS_COLOR;
|
|
6
|
+
private transformTop;
|
|
7
|
+
draw(options: DrawOptions): Promise<void>;
|
|
7
8
|
private drawMessage;
|
|
8
9
|
private drawPosition;
|
|
9
10
|
private drawUnrealizedPnL;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataPaint.d.ts","sourceRoot":"","sources":["../../../src/services/painter/dataPaint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AAGjE,qBAAa,SAAU,SAAQ,SAAS;IACtC,OAAO,CAAC,qBAAqB,CAAO;IAEpC,OAAO,CAAC,oBAAoB,CAAoB;IAChD,OAAO,CAAC,kBAAkB,CAAsB;
|
|
1
|
+
{"version":3,"file":"dataPaint.d.ts","sourceRoot":"","sources":["../../../src/services/painter/dataPaint.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAc,MAAM,aAAa,CAAC;AAGjE,qBAAa,SAAU,SAAQ,SAAS;IACtC,OAAO,CAAC,qBAAqB,CAAO;IAEpC,OAAO,CAAC,oBAAoB,CAAoB;IAChD,OAAO,CAAC,kBAAkB,CAAsB;IAEhD,OAAO,CAAC,YAAY,CAAK;IAEnB,IAAI,CAAC,OAAO,EAAE,WAAW;IAoC/B,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,YAAY;IA2EpB,OAAO,CAAC,iBAAiB;IAyEzB,OAAO,CAAC,gBAAgB;IAoCxB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,SAAS;IAuCjB,OAAO,CAAC,MAAM;CAGf"}
|