@orderly.network/hooks 2.10.1 → 2.10.2-alpha.0
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/dist/index.d.mts +140 -116
- package/dist/index.d.ts +140 -116
- package/dist/index.js +463 -460
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +54 -52
- package/dist/index.mjs.map +1 -1
- package/package.json +10 -10
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var net = require('@orderly.network/net');
|
|
4
4
|
var useSWR5 = require('swr');
|
|
5
5
|
var types = require('@orderly.network/types');
|
|
6
|
-
var
|
|
6
|
+
var React = require('react');
|
|
7
7
|
var utils = require('@orderly.network/utils');
|
|
8
8
|
var useSWRMutation = require('swr/mutation');
|
|
9
9
|
var useConstant = require('use-constant');
|
|
@@ -47,7 +47,7 @@ function _interopNamespace(e) {
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
var useSWR5__namespace = /*#__PURE__*/_interopNamespace(useSWR5);
|
|
50
|
-
var
|
|
50
|
+
var React__default = /*#__PURE__*/_interopDefault(React);
|
|
51
51
|
var useSWRMutation__default = /*#__PURE__*/_interopDefault(useSWRMutation);
|
|
52
52
|
var useConstant__default = /*#__PURE__*/_interopDefault(useConstant);
|
|
53
53
|
var useSWRInfinite__default = /*#__PURE__*/_interopDefault(useSWRInfinite);
|
|
@@ -64,26 +64,26 @@ var __export = (target, all) => {
|
|
|
64
64
|
// src/version.ts
|
|
65
65
|
if (typeof window !== "undefined") {
|
|
66
66
|
window.__ORDERLY_VERSION__ = window.__ORDERLY_VERSION__ || {};
|
|
67
|
-
window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "2.10.
|
|
67
|
+
window.__ORDERLY_VERSION__["@orderly.network/hooks"] = "2.10.2-alpha.0";
|
|
68
68
|
}
|
|
69
|
-
var version_default = "2.10.
|
|
69
|
+
var version_default = "2.10.2-alpha.0";
|
|
70
70
|
var fetcher = (url, init2 = {}, queryOptions) => net.get(url, init2, queryOptions?.formatter);
|
|
71
71
|
var noCacheConfig = {
|
|
72
72
|
dedupingInterval: 0,
|
|
73
73
|
revalidateOnMount: true,
|
|
74
74
|
revalidateIfStale: true
|
|
75
75
|
};
|
|
76
|
-
var OrderlyContext =
|
|
76
|
+
var OrderlyContext = React.createContext({
|
|
77
77
|
// configStore: new MemoryConfigStore(),
|
|
78
78
|
});
|
|
79
79
|
var useOrderlyContext = () => {
|
|
80
|
-
return
|
|
80
|
+
return React.useContext(OrderlyContext);
|
|
81
81
|
};
|
|
82
82
|
var OrderlyProvider = OrderlyContext.Provider;
|
|
83
83
|
|
|
84
84
|
// src/useConfig.ts
|
|
85
85
|
function useConfig(key, defaultValue) {
|
|
86
|
-
const { configStore } =
|
|
86
|
+
const { configStore } = React.useContext(OrderlyContext);
|
|
87
87
|
if (!configStore) {
|
|
88
88
|
throw new types.SDKError(
|
|
89
89
|
"useConfig must be used within OrderlyConfigProvider or OrderlyAppProvider"
|
|
@@ -196,7 +196,7 @@ var useLazyQuery = (query, options) => {
|
|
|
196
196
|
);
|
|
197
197
|
};
|
|
198
198
|
var useAccountInstance = () => {
|
|
199
|
-
const { configStore, keyStore, walletAdapters } =
|
|
199
|
+
const { configStore, keyStore, walletAdapters } = React.useContext(OrderlyContext);
|
|
200
200
|
if (!configStore)
|
|
201
201
|
throw new types.SDKError(
|
|
202
202
|
"configStore is not defined, please use OrderlyProvider"
|
|
@@ -317,16 +317,16 @@ var useEventEmitter = () => {
|
|
|
317
317
|
return ee;
|
|
318
318
|
});
|
|
319
319
|
};
|
|
320
|
-
var WalletConnectorContext =
|
|
320
|
+
var WalletConnectorContext = React.createContext({});
|
|
321
321
|
var useWalletConnector = () => {
|
|
322
|
-
return
|
|
322
|
+
return React.useContext(WalletConnectorContext);
|
|
323
323
|
};
|
|
324
324
|
|
|
325
325
|
// src/useTrack.ts
|
|
326
326
|
var useTrack = () => {
|
|
327
327
|
const ee = useEventEmitter();
|
|
328
328
|
const { wallet } = useWalletConnector();
|
|
329
|
-
const tracking =
|
|
329
|
+
const tracking = React.useCallback(
|
|
330
330
|
(eventName, params = {}) => {
|
|
331
331
|
utils.windowGuard(() => {
|
|
332
332
|
const location = window.location;
|
|
@@ -351,11 +351,11 @@ var useTrack = () => {
|
|
|
351
351
|
},
|
|
352
352
|
[wallet]
|
|
353
353
|
);
|
|
354
|
-
const track2 =
|
|
355
|
-
const setTrackUserId =
|
|
354
|
+
const track2 = React.useCallback(lodash.debounce(tracking, 500), [tracking]);
|
|
355
|
+
const setTrackUserId = React.useCallback((userId) => {
|
|
356
356
|
ee.emit(types.TrackerEventName.trackIdentifyUserId, userId);
|
|
357
357
|
}, []);
|
|
358
|
-
const setIdentify =
|
|
358
|
+
const setIdentify = React.useCallback((params) => {
|
|
359
359
|
ee.emit(types.TrackerEventName.trackIdentify, params);
|
|
360
360
|
}, []);
|
|
361
361
|
return {
|
|
@@ -367,7 +367,7 @@ var useTrack = () => {
|
|
|
367
367
|
};
|
|
368
368
|
var WS_NAME = "nativeWebsocketClient";
|
|
369
369
|
var useWS = () => {
|
|
370
|
-
const { configStore } =
|
|
370
|
+
const { configStore } = React.useContext(OrderlyContext);
|
|
371
371
|
const ws = useConstant__default.default(() => {
|
|
372
372
|
let websocketClient = core.SimpleDI.get(WS_NAME);
|
|
373
373
|
const account9 = core.SimpleDI.get(core.Account.instanceName);
|
|
@@ -405,7 +405,7 @@ var useWS = () => {
|
|
|
405
405
|
|
|
406
406
|
// src/useAccount.ts
|
|
407
407
|
var useAccount = () => {
|
|
408
|
-
const { configStore, keyStore } =
|
|
408
|
+
const { configStore, keyStore } = React.useContext(OrderlyContext);
|
|
409
409
|
if (!configStore)
|
|
410
410
|
throw new types.SDKError(
|
|
411
411
|
"configStore is not defined, please use OrderlyProvider"
|
|
@@ -416,18 +416,18 @@ var useAccount = () => {
|
|
|
416
416
|
);
|
|
417
417
|
}
|
|
418
418
|
const account9 = useAccountInstance();
|
|
419
|
-
const [state, setState] =
|
|
419
|
+
const [state, setState] = React.useState(account9.stateValue);
|
|
420
420
|
const { track: track2 } = useTrack();
|
|
421
421
|
const statusChangeHandler = (nextState) => {
|
|
422
422
|
setState(() => nextState);
|
|
423
423
|
};
|
|
424
|
-
|
|
424
|
+
React.useEffect(() => {
|
|
425
425
|
account9.on("change:status", statusChangeHandler);
|
|
426
426
|
return () => {
|
|
427
427
|
account9.off("change:status", statusChangeHandler);
|
|
428
428
|
};
|
|
429
429
|
}, [account9]);
|
|
430
|
-
const createOrderlyKey =
|
|
430
|
+
const createOrderlyKey = React.useCallback(
|
|
431
431
|
async (remember) => {
|
|
432
432
|
track2(types.TrackerEventName.signinSuccess, {
|
|
433
433
|
network: account9.chainId,
|
|
@@ -442,32 +442,32 @@ var useAccount = () => {
|
|
|
442
442
|
[account9, state]
|
|
443
443
|
);
|
|
444
444
|
const ws = useWS();
|
|
445
|
-
const switchAccount =
|
|
445
|
+
const switchAccount = React.useCallback(
|
|
446
446
|
async (accountId) => {
|
|
447
447
|
ws.closePrivate(3887, "switch account");
|
|
448
448
|
return account9.switchAccount(accountId);
|
|
449
449
|
},
|
|
450
450
|
[account9]
|
|
451
451
|
);
|
|
452
|
-
const createAccount =
|
|
452
|
+
const createAccount = React.useCallback(async () => {
|
|
453
453
|
return account9.createAccount();
|
|
454
454
|
}, [account9]);
|
|
455
|
-
const createSubAccount =
|
|
455
|
+
const createSubAccount = React.useCallback(
|
|
456
456
|
async (description) => {
|
|
457
457
|
return account9.createSubAccount(description);
|
|
458
458
|
},
|
|
459
459
|
[account9]
|
|
460
460
|
);
|
|
461
|
-
const updateSubAccount =
|
|
461
|
+
const updateSubAccount = React.useCallback(
|
|
462
462
|
async (value) => {
|
|
463
463
|
return account9.updateSubAccount(value);
|
|
464
464
|
},
|
|
465
465
|
[account9]
|
|
466
466
|
);
|
|
467
|
-
const refreshSubAccountBalances =
|
|
467
|
+
const refreshSubAccountBalances = React.useCallback(() => {
|
|
468
468
|
return account9.refreshSubAccountBalances();
|
|
469
469
|
}, [account9]);
|
|
470
|
-
const isSubAccount =
|
|
470
|
+
const isSubAccount = React.useMemo(() => {
|
|
471
471
|
return state.accountId !== state.mainAccountId;
|
|
472
472
|
}, [state]);
|
|
473
473
|
return {
|
|
@@ -543,23 +543,23 @@ var useInfiniteQuery = (getKey, options) => {
|
|
|
543
543
|
return result;
|
|
544
544
|
};
|
|
545
545
|
var useBoolean = (initialValue = false) => {
|
|
546
|
-
const [value, setValue] =
|
|
547
|
-
const setTrue =
|
|
548
|
-
const setFalse =
|
|
549
|
-
const toggle =
|
|
546
|
+
const [value, setValue] = React.useState(initialValue);
|
|
547
|
+
const setTrue = React.useCallback(() => setValue(true), []);
|
|
548
|
+
const setFalse = React.useCallback(() => setValue(false), []);
|
|
549
|
+
const toggle = React.useCallback(() => setValue((v) => !v), []);
|
|
550
550
|
return [value, { setTrue, setFalse, toggle }];
|
|
551
551
|
};
|
|
552
552
|
var useUpdatedRef = (val) => {
|
|
553
|
-
const latestRef =
|
|
553
|
+
const latestRef = React.useRef(val);
|
|
554
554
|
latestRef.current = val;
|
|
555
555
|
return latestRef;
|
|
556
556
|
};
|
|
557
557
|
var useMemoizedFn = (fn) => {
|
|
558
558
|
const safeFn = typeof fn === "function" ? fn : (() => {
|
|
559
559
|
});
|
|
560
|
-
const fnRef =
|
|
561
|
-
fnRef.current =
|
|
562
|
-
const wrapperRef =
|
|
560
|
+
const fnRef = React.useRef(safeFn);
|
|
561
|
+
fnRef.current = React.useMemo(() => safeFn, [safeFn]);
|
|
562
|
+
const wrapperRef = React.useRef(null);
|
|
563
563
|
if (!wrapperRef.current) {
|
|
564
564
|
wrapperRef.current = function(...args) {
|
|
565
565
|
return fnRef.current.apply(this, args);
|
|
@@ -567,52 +567,39 @@ var useMemoizedFn = (fn) => {
|
|
|
567
567
|
}
|
|
568
568
|
return wrapperRef.current;
|
|
569
569
|
};
|
|
570
|
+
var orderFilledAudio = null;
|
|
571
|
+
function getOrderFilledAudio() {
|
|
572
|
+
if (!orderFilledAudio) {
|
|
573
|
+
orderFilledAudio = new Audio();
|
|
574
|
+
}
|
|
575
|
+
return orderFilledAudio;
|
|
576
|
+
}
|
|
570
577
|
var useAudioPlayer = (src, options = {}) => {
|
|
571
|
-
const { volume = 1,
|
|
572
|
-
const
|
|
573
|
-
const
|
|
574
|
-
const
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
};
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
};
|
|
583
|
-
const onEnded = () => {
|
|
584
|
-
setStatus("ended");
|
|
585
|
-
};
|
|
586
|
-
const onError = () => {
|
|
587
|
-
setStatus("error");
|
|
588
|
-
};
|
|
589
|
-
const element = React2.useMemo(() => {
|
|
590
|
-
return React2__default.default.createElement("audio", {
|
|
591
|
-
controls: false,
|
|
592
|
-
ref: audioRef,
|
|
593
|
-
autoPlay,
|
|
594
|
-
src,
|
|
595
|
-
style: { display: "none" },
|
|
596
|
-
onPlay,
|
|
597
|
-
onPlaying,
|
|
598
|
-
onPause,
|
|
599
|
-
onEnded,
|
|
600
|
-
onError
|
|
601
|
-
});
|
|
602
|
-
}, [autoPlay, src, onPlay, onPlaying, onPause, onEnded, onError]);
|
|
603
|
-
React2.useEffect(() => {
|
|
604
|
-
const el = audioRef.current;
|
|
605
|
-
if (!el) {
|
|
606
|
-
return;
|
|
607
|
-
}
|
|
608
|
-
el.loop = loop ?? false;
|
|
578
|
+
const { volume = 1, enabled = true } = options;
|
|
579
|
+
const srcRef = React.useRef(src);
|
|
580
|
+
const enabledRef = React.useRef(enabled);
|
|
581
|
+
const volumeRef = React.useRef(volume);
|
|
582
|
+
React.useEffect(() => {
|
|
583
|
+
srcRef.current = src;
|
|
584
|
+
enabledRef.current = enabled;
|
|
585
|
+
volumeRef.current = volume;
|
|
586
|
+
}, [src, enabled, volume]);
|
|
587
|
+
React.useEffect(() => {
|
|
588
|
+
const el = getOrderFilledAudio();
|
|
609
589
|
el.volume = Math.max(0, Math.min(1, volume));
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
590
|
+
}, [volume]);
|
|
591
|
+
const play = React.useCallback(() => {
|
|
592
|
+
const currentSrc = srcRef.current;
|
|
593
|
+
const currentEnabled = enabledRef.current;
|
|
594
|
+
if (!currentEnabled || !currentSrc) return;
|
|
595
|
+
const el = getOrderFilledAudio();
|
|
596
|
+
el.pause();
|
|
597
|
+
el.src = currentSrc;
|
|
598
|
+
el.volume = Math.max(0, Math.min(1, volumeRef.current));
|
|
599
|
+
el.play()?.catch(() => {
|
|
600
|
+
});
|
|
601
|
+
}, []);
|
|
602
|
+
return { play };
|
|
616
603
|
};
|
|
617
604
|
|
|
618
605
|
// src/referral/swr.ts
|
|
@@ -658,10 +645,10 @@ var useDistribution = (params) => {
|
|
|
658
645
|
const loadMore = () => {
|
|
659
646
|
ordersResponse.setSize(ordersResponse.size + 1);
|
|
660
647
|
};
|
|
661
|
-
const total =
|
|
648
|
+
const total = React.useMemo(() => {
|
|
662
649
|
return ordersResponse.data?.[0]?.meta?.total || 0;
|
|
663
650
|
}, [ordersResponse.data?.[0]?.meta?.total]);
|
|
664
|
-
const flattenOrders =
|
|
651
|
+
const flattenOrders = React.useMemo(() => {
|
|
665
652
|
if (!ordersResponse.data) {
|
|
666
653
|
return null;
|
|
667
654
|
}
|
|
@@ -705,10 +692,10 @@ var useRefereeHistory = (params) => {
|
|
|
705
692
|
const loadMore = () => {
|
|
706
693
|
response.setSize(response.size + 1);
|
|
707
694
|
};
|
|
708
|
-
const total =
|
|
695
|
+
const total = React.useMemo(() => {
|
|
709
696
|
return response.data?.[0]?.meta?.total || 0;
|
|
710
697
|
}, [response.data?.[0]?.meta?.total]);
|
|
711
|
-
const flattenOrders =
|
|
698
|
+
const flattenOrders = React.useMemo(() => {
|
|
712
699
|
if (!response.data) {
|
|
713
700
|
return null;
|
|
714
701
|
}
|
|
@@ -729,7 +716,7 @@ var useRefereeHistory = (params) => {
|
|
|
729
716
|
var useCommission = (options) => {
|
|
730
717
|
const [referee, { refresh: refreshReferee, loadMore: loadMoreReferee }] = useRefereeHistory({ size: options?.size });
|
|
731
718
|
const [distribution, { refresh: refreshDistribution, loadMore: loadMoreDistribution, isLoading }] = useDistribution({ size: options?.size });
|
|
732
|
-
const commissionData =
|
|
719
|
+
const commissionData = React.useMemo(() => {
|
|
733
720
|
return distribution?.map((item) => {
|
|
734
721
|
if ("updated_time" in item) {
|
|
735
722
|
const updateTime = new Date(item.updated_time);
|
|
@@ -815,13 +802,13 @@ var useReferralRebateSummary = (params) => {
|
|
|
815
802
|
const loadMore = () => {
|
|
816
803
|
response.setSize(response.size + 1);
|
|
817
804
|
};
|
|
818
|
-
const meta =
|
|
805
|
+
const meta = React.useMemo(() => {
|
|
819
806
|
return response.data?.[0]?.meta;
|
|
820
807
|
}, [response.data]);
|
|
821
|
-
const total =
|
|
808
|
+
const total = React.useMemo(() => {
|
|
822
809
|
return meta?.total || 0;
|
|
823
810
|
}, [meta]);
|
|
824
|
-
const flattenOrders =
|
|
811
|
+
const flattenOrders = React.useMemo(() => {
|
|
825
812
|
if (!response.data) {
|
|
826
813
|
return null;
|
|
827
814
|
}
|
|
@@ -862,13 +849,13 @@ var useRefereeInfo = (params) => {
|
|
|
862
849
|
const loadMore = () => {
|
|
863
850
|
response.setSize(response.size + 1);
|
|
864
851
|
};
|
|
865
|
-
const meta =
|
|
852
|
+
const meta = React.useMemo(() => {
|
|
866
853
|
return response.data?.[0]?.meta;
|
|
867
854
|
}, [response.data]);
|
|
868
|
-
const total =
|
|
855
|
+
const total = React.useMemo(() => {
|
|
869
856
|
return meta?.total || 0;
|
|
870
857
|
}, [meta]);
|
|
871
|
-
const flattenOrders =
|
|
858
|
+
const flattenOrders = React.useMemo(() => {
|
|
872
859
|
if (!response.data) {
|
|
873
860
|
return null;
|
|
874
861
|
}
|
|
@@ -1015,7 +1002,7 @@ function parseJSON(value) {
|
|
|
1015
1002
|
function useLocalStorage(key, initialValue, options = {
|
|
1016
1003
|
parseJSON
|
|
1017
1004
|
}) {
|
|
1018
|
-
const readValue =
|
|
1005
|
+
const readValue = React.useCallback(() => {
|
|
1019
1006
|
if (typeof window === "undefined") {
|
|
1020
1007
|
return initialValue;
|
|
1021
1008
|
}
|
|
@@ -1026,8 +1013,8 @@ function useLocalStorage(key, initialValue, options = {
|
|
|
1026
1013
|
return initialValue;
|
|
1027
1014
|
}
|
|
1028
1015
|
}, [initialValue, key]);
|
|
1029
|
-
const [storedValue, setStoredValue] =
|
|
1030
|
-
const setValue =
|
|
1016
|
+
const [storedValue, setStoredValue] = React.useState(readValue);
|
|
1017
|
+
const setValue = React.useCallback(
|
|
1031
1018
|
(value) => {
|
|
1032
1019
|
try {
|
|
1033
1020
|
const newValue = value instanceof Function ? value(storedValue) : value;
|
|
@@ -1039,10 +1026,10 @@ function useLocalStorage(key, initialValue, options = {
|
|
|
1039
1026
|
},
|
|
1040
1027
|
[storedValue]
|
|
1041
1028
|
);
|
|
1042
|
-
|
|
1029
|
+
React.useEffect(() => {
|
|
1043
1030
|
setStoredValue(readValue());
|
|
1044
1031
|
}, []);
|
|
1045
|
-
|
|
1032
|
+
React.useEffect(() => {
|
|
1046
1033
|
const handleStorageChange = (event) => {
|
|
1047
1034
|
if (event?.key && event.key !== key) {
|
|
1048
1035
|
return;
|
|
@@ -2107,20 +2094,20 @@ var useReferralInfo = () => {
|
|
|
2107
2094
|
errorRetryCount: 3,
|
|
2108
2095
|
...noCacheConfig
|
|
2109
2096
|
});
|
|
2110
|
-
const isTrader =
|
|
2097
|
+
const isTrader = React.useMemo(() => {
|
|
2111
2098
|
if (typeof data?.referee_info?.referer_code === "undefined") {
|
|
2112
2099
|
return void 0;
|
|
2113
2100
|
}
|
|
2114
2101
|
return (data?.referee_info?.referer_code?.length || 0) > 0;
|
|
2115
2102
|
}, [data?.referee_info]);
|
|
2116
|
-
const isAffiliate =
|
|
2103
|
+
const isAffiliate = React.useMemo(() => {
|
|
2117
2104
|
if (typeof data?.referrer_info?.referral_codes === "undefined") {
|
|
2118
2105
|
return void 0;
|
|
2119
2106
|
}
|
|
2120
2107
|
return (data?.referrer_info?.referral_codes?.length || 0) > 0;
|
|
2121
2108
|
}, [data?.referrer_info]);
|
|
2122
2109
|
const [pinCodes] = useLocalStorage("orderly_referral_codes", []);
|
|
2123
|
-
const getFirstRefCode =
|
|
2110
|
+
const getFirstRefCode = React.useCallback(() => {
|
|
2124
2111
|
if (!data?.referrer_info?.referral_codes) {
|
|
2125
2112
|
return void 0;
|
|
2126
2113
|
}
|
|
@@ -2750,8 +2737,8 @@ var useTestTokenStore = createDataStore({
|
|
|
2750
2737
|
|
|
2751
2738
|
// src/usePreloadData.ts
|
|
2752
2739
|
var usePreLoadData = () => {
|
|
2753
|
-
const [timestampOffsetInitialized, setTimestampOffsetInitialized] =
|
|
2754
|
-
const { configStore, enableSwapDeposit } =
|
|
2740
|
+
const [timestampOffsetInitialized, setTimestampOffsetInitialized] = React.useState(false);
|
|
2741
|
+
const { configStore, enableSwapDeposit } = React.useContext(OrderlyContext);
|
|
2755
2742
|
const env = configStore.get("env");
|
|
2756
2743
|
const apiBaseUrl = configStore.get("apiBaseUrl");
|
|
2757
2744
|
const urlPrefix = env === "prod" ? "https://testnet-api.orderly.org" : configStore.get("apiBaseUrl");
|
|
@@ -2765,7 +2752,7 @@ var usePreLoadData = () => {
|
|
|
2765
2752
|
const mainTokenInfo = useMainTokenStore((state) => state.data);
|
|
2766
2753
|
const testTokenInfo = useTestTokenStore((state) => state.data);
|
|
2767
2754
|
const swapSupportInfo = useSwapSupportStore((state) => state.data);
|
|
2768
|
-
|
|
2755
|
+
React.useEffect(() => {
|
|
2769
2756
|
fetchMainTokens();
|
|
2770
2757
|
fetchSymbols(apiBaseUrl).then((symbols) => {
|
|
2771
2758
|
});
|
|
@@ -2773,18 +2760,18 @@ var usePreLoadData = () => {
|
|
|
2773
2760
|
brokerId: configStore.get("brokerId")
|
|
2774
2761
|
});
|
|
2775
2762
|
}, []);
|
|
2776
|
-
|
|
2763
|
+
React.useEffect(() => {
|
|
2777
2764
|
if (!urlPrefix) return;
|
|
2778
2765
|
fetchTestTokens(urlPrefix);
|
|
2779
2766
|
fetchTestChains(urlPrefix, {
|
|
2780
2767
|
brokerId: configStore.get("brokerId")
|
|
2781
2768
|
});
|
|
2782
2769
|
}, [urlPrefix]);
|
|
2783
|
-
|
|
2770
|
+
React.useEffect(() => {
|
|
2784
2771
|
if (!mainTokenInfo || !testTokenInfo) return;
|
|
2785
2772
|
setTokensInfo(env === "prod" ? mainTokenInfo : testTokenInfo);
|
|
2786
2773
|
}, [mainTokenInfo, testTokenInfo]);
|
|
2787
|
-
|
|
2774
|
+
React.useEffect(() => {
|
|
2788
2775
|
if (swapSupportInfo || !enableSwapDeposit) return;
|
|
2789
2776
|
fetchSwapSupport();
|
|
2790
2777
|
}, [swapSupportInfo, enableSwapDeposit]);
|
|
@@ -2802,7 +2789,7 @@ var usePreLoadData = () => {
|
|
|
2802
2789
|
errorRetryInterval: 500
|
|
2803
2790
|
}
|
|
2804
2791
|
);
|
|
2805
|
-
|
|
2792
|
+
React.useEffect(() => {
|
|
2806
2793
|
if (timestampOffsetInitialized) return;
|
|
2807
2794
|
if (typeof systemInfo !== "undefined") {
|
|
2808
2795
|
const serverTimestamp = systemInfo.timestamp;
|
|
@@ -2815,7 +2802,7 @@ var usePreLoadData = () => {
|
|
|
2815
2802
|
setTimestampOffsetInitialized(true);
|
|
2816
2803
|
}
|
|
2817
2804
|
}, [systemInfo, timestampOffsetInitialized]);
|
|
2818
|
-
const isDone =
|
|
2805
|
+
const isDone = React.useMemo(() => {
|
|
2819
2806
|
return timestampOffsetInitialized;
|
|
2820
2807
|
}, [timestampOffsetInitialized]);
|
|
2821
2808
|
return {
|
|
@@ -2824,7 +2811,7 @@ var usePreLoadData = () => {
|
|
|
2824
2811
|
};
|
|
2825
2812
|
};
|
|
2826
2813
|
function useSessionStorage(key, initialValue) {
|
|
2827
|
-
const readValue =
|
|
2814
|
+
const readValue = React.useCallback(() => {
|
|
2828
2815
|
if (typeof window === "undefined") {
|
|
2829
2816
|
return initialValue;
|
|
2830
2817
|
}
|
|
@@ -2835,7 +2822,7 @@ function useSessionStorage(key, initialValue) {
|
|
|
2835
2822
|
return initialValue;
|
|
2836
2823
|
}
|
|
2837
2824
|
}, [initialValue, key]);
|
|
2838
|
-
const [storedValue, setStoredValue] =
|
|
2825
|
+
const [storedValue, setStoredValue] = React.useState(readValue);
|
|
2839
2826
|
const setValue = (value) => {
|
|
2840
2827
|
try {
|
|
2841
2828
|
const newValue = value instanceof Function ? value(storedValue) : value;
|
|
@@ -2844,10 +2831,10 @@ function useSessionStorage(key, initialValue) {
|
|
|
2844
2831
|
} catch (error) {
|
|
2845
2832
|
}
|
|
2846
2833
|
};
|
|
2847
|
-
|
|
2834
|
+
React.useEffect(() => {
|
|
2848
2835
|
setStoredValue(readValue());
|
|
2849
2836
|
}, []);
|
|
2850
|
-
|
|
2837
|
+
React.useEffect(() => {
|
|
2851
2838
|
if (typeof window == "undefined") {
|
|
2852
2839
|
return;
|
|
2853
2840
|
}
|
|
@@ -2856,7 +2843,7 @@ function useSessionStorage(key, initialValue) {
|
|
|
2856
2843
|
window.removeEventListener?.("storage", handleStorageChange);
|
|
2857
2844
|
};
|
|
2858
2845
|
});
|
|
2859
|
-
const handleStorageChange =
|
|
2846
|
+
const handleStorageChange = React.useCallback(
|
|
2860
2847
|
(event) => {
|
|
2861
2848
|
if (event?.key && event.key !== key) {
|
|
2862
2849
|
return;
|
|
@@ -2918,7 +2905,7 @@ var useFeeState = () => {
|
|
|
2918
2905
|
};
|
|
2919
2906
|
}
|
|
2920
2907
|
);
|
|
2921
|
-
const takerFeeBps =
|
|
2908
|
+
const takerFeeBps = React.useMemo(() => {
|
|
2922
2909
|
if (wsAccountData?.accountDetail?.futuresTakerFeeRate) {
|
|
2923
2910
|
return wsAccountData?.accountDetail?.futuresTakerFeeRate;
|
|
2924
2911
|
}
|
|
@@ -2927,7 +2914,7 @@ var useFeeState = () => {
|
|
|
2927
2914
|
accountInfo?.futures_taker_fee_rate,
|
|
2928
2915
|
wsAccountData?.accountDetail?.futuresTakerFeeRate
|
|
2929
2916
|
]);
|
|
2930
|
-
const makerFeeBps =
|
|
2917
|
+
const makerFeeBps = React.useMemo(() => {
|
|
2931
2918
|
if (wsAccountData?.accountDetail?.futuresMakerFeeRate) {
|
|
2932
2919
|
return wsAccountData?.accountDetail?.futuresMakerFeeRate;
|
|
2933
2920
|
}
|
|
@@ -2936,7 +2923,7 @@ var useFeeState = () => {
|
|
|
2936
2923
|
accountInfo?.futures_maker_fee_rate,
|
|
2937
2924
|
wsAccountData?.accountDetail?.futuresMakerFeeRate
|
|
2938
2925
|
]);
|
|
2939
|
-
const rwaTakerFeeBps =
|
|
2926
|
+
const rwaTakerFeeBps = React.useMemo(() => {
|
|
2940
2927
|
if (wsAccountData?.accountDetail?.rwaFuturesTakerFeeRate) {
|
|
2941
2928
|
return wsAccountData?.accountDetail?.rwaFuturesTakerFeeRate;
|
|
2942
2929
|
}
|
|
@@ -2945,7 +2932,7 @@ var useFeeState = () => {
|
|
|
2945
2932
|
accountInfo?.rwa_taker_fee_rate,
|
|
2946
2933
|
wsAccountData?.accountDetail?.rwaFuturesTakerFeeRate
|
|
2947
2934
|
]);
|
|
2948
|
-
const rwaMakerFeeBps =
|
|
2935
|
+
const rwaMakerFeeBps = React.useMemo(() => {
|
|
2949
2936
|
if (wsAccountData?.accountDetail?.rwaFuturesMakerFeeRate) {
|
|
2950
2937
|
return wsAccountData?.accountDetail?.rwaFuturesMakerFeeRate;
|
|
2951
2938
|
}
|
|
@@ -2955,25 +2942,25 @@ var useFeeState = () => {
|
|
|
2955
2942
|
wsAccountData?.accountDetail?.rwaFuturesMakerFeeRate
|
|
2956
2943
|
]);
|
|
2957
2944
|
const refereeRebate = referralData?.referee_info?.referee_rebate_rate;
|
|
2958
|
-
const takerFee =
|
|
2945
|
+
const takerFee = React.useMemo(() => {
|
|
2959
2946
|
if (isAccountLoading || takerFeeBps === null || takerFeeBps === void 0) {
|
|
2960
2947
|
return "-";
|
|
2961
2948
|
}
|
|
2962
2949
|
return formatFractionAsPercent(bpsToFraction(takerFeeBps));
|
|
2963
2950
|
}, [isAccountLoading, takerFeeBps]);
|
|
2964
|
-
const makerFee =
|
|
2951
|
+
const makerFee = React.useMemo(() => {
|
|
2965
2952
|
if (isAccountLoading || makerFeeBps === null || makerFeeBps === void 0) {
|
|
2966
2953
|
return "-";
|
|
2967
2954
|
}
|
|
2968
2955
|
return formatFractionAsPercent(bpsToFraction(makerFeeBps));
|
|
2969
2956
|
}, [isAccountLoading, makerFeeBps]);
|
|
2970
|
-
const rwaTakerFee =
|
|
2957
|
+
const rwaTakerFee = React.useMemo(() => {
|
|
2971
2958
|
if (isAccountLoading || rwaTakerFeeBps === null || rwaTakerFeeBps === void 0) {
|
|
2972
2959
|
return "-";
|
|
2973
2960
|
}
|
|
2974
2961
|
return formatFractionAsPercent(bpsToFraction(rwaTakerFeeBps));
|
|
2975
2962
|
}, [isAccountLoading, rwaTakerFeeBps]);
|
|
2976
|
-
const rwaMakerFee =
|
|
2963
|
+
const rwaMakerFee = React.useMemo(() => {
|
|
2977
2964
|
if (isAccountLoading || rwaMakerFeeBps === null || rwaMakerFeeBps === void 0) {
|
|
2978
2965
|
return "-";
|
|
2979
2966
|
}
|
|
@@ -3065,7 +3052,7 @@ AmplitudeTracker.instanceName = "amplitudeTracker";
|
|
|
3065
3052
|
|
|
3066
3053
|
// src/useTrackInstance.ts
|
|
3067
3054
|
var useTrackingInstance = () => {
|
|
3068
|
-
const { configStore, amplitudeConfig } =
|
|
3055
|
+
const { configStore, amplitudeConfig } = React.useContext(OrderlyContext);
|
|
3069
3056
|
if (!configStore) {
|
|
3070
3057
|
throw new Error("configStore is not defined, please use OrderlyProvider");
|
|
3071
3058
|
}
|
|
@@ -3085,7 +3072,7 @@ var useTrackingInstance = () => {
|
|
|
3085
3072
|
return trackInstace;
|
|
3086
3073
|
};
|
|
3087
3074
|
var useKeyStore = () => {
|
|
3088
|
-
const ctx =
|
|
3075
|
+
const ctx = React.useContext(OrderlyContext);
|
|
3089
3076
|
return ctx.keyStore;
|
|
3090
3077
|
};
|
|
3091
3078
|
var useSimpleDI = () => {
|
|
@@ -3103,11 +3090,11 @@ var WsNetworkStatus = /* @__PURE__ */ ((WsNetworkStatus2) => {
|
|
|
3103
3090
|
})(WsNetworkStatus || {});
|
|
3104
3091
|
function useWsStatus() {
|
|
3105
3092
|
const ws = useWS();
|
|
3106
|
-
const [wsStatus, setWsStatus] =
|
|
3093
|
+
const [wsStatus, setWsStatus] = React.useState(
|
|
3107
3094
|
ws.client.public.readyState ? "connected" /* Connected */ : "disconnected" /* Disconnected */
|
|
3108
3095
|
);
|
|
3109
|
-
const connectCount =
|
|
3110
|
-
|
|
3096
|
+
const connectCount = React.useRef(0);
|
|
3097
|
+
React.useEffect(() => {
|
|
3111
3098
|
ws.on("status:change", (status) => {
|
|
3112
3099
|
const { type, isPrivate } = status;
|
|
3113
3100
|
if (!isPrivate) {
|
|
@@ -3136,10 +3123,10 @@ function useWsStatus() {
|
|
|
3136
3123
|
}, []);
|
|
3137
3124
|
return wsStatus;
|
|
3138
3125
|
}
|
|
3139
|
-
var StatusContext =
|
|
3126
|
+
var StatusContext = React.createContext({});
|
|
3140
3127
|
var StatusProvider = (props) => {
|
|
3141
3128
|
const wsStatus = useWsStatus();
|
|
3142
|
-
const memoizedValue =
|
|
3129
|
+
const memoizedValue = React.useMemo(() => {
|
|
3143
3130
|
return { ws: wsStatus };
|
|
3144
3131
|
}, [wsStatus]);
|
|
3145
3132
|
return /* @__PURE__ */ jsxRuntime.jsx(StatusContext.Provider, { value: memoizedValue, children: props.children });
|
|
@@ -3237,7 +3224,7 @@ var useMarketsStream = () => {
|
|
|
3237
3224
|
unsubscribe?.();
|
|
3238
3225
|
};
|
|
3239
3226
|
});
|
|
3240
|
-
const value =
|
|
3227
|
+
const value = React.useMemo(() => {
|
|
3241
3228
|
if (!futures) return null;
|
|
3242
3229
|
if (!tickers) return futures;
|
|
3243
3230
|
return futures.map((item) => {
|
|
@@ -3306,7 +3293,7 @@ var isCurrentlyClosed = (nextOpen, status, currentTime = Date.now()) => {
|
|
|
3306
3293
|
};
|
|
3307
3294
|
var useRwaSymbolsInfo = () => {
|
|
3308
3295
|
const symbolsInfo = useAppStore((state) => state.rwaSymbolsInfo);
|
|
3309
|
-
return
|
|
3296
|
+
return React.useMemo(() => createGetter({ ...symbolsInfo }), [symbolsInfo]);
|
|
3310
3297
|
};
|
|
3311
3298
|
var useRwaSymbolsInfoStore = () => {
|
|
3312
3299
|
return useAppStore((state) => state.rwaSymbolsInfo);
|
|
@@ -3382,7 +3369,7 @@ var useRwaSymbolsRuntimeStore = zustand.create(
|
|
|
3382
3369
|
var useInitRwaSymbolsRuntime = () => {
|
|
3383
3370
|
const rwaSymbolsInfo = useRwaSymbolsInfoStore();
|
|
3384
3371
|
const { startTimer, stopTimer, updateComputedStates } = useRwaSymbolsRuntimeStore();
|
|
3385
|
-
|
|
3372
|
+
React.useEffect(() => {
|
|
3386
3373
|
if (rwaSymbolsInfo && Object.keys(rwaSymbolsInfo).length > 0) {
|
|
3387
3374
|
updateComputedStates(rwaSymbolsInfo);
|
|
3388
3375
|
startTimer();
|
|
@@ -3396,7 +3383,7 @@ var useGetRwaSymbolInfo = (symbol) => {
|
|
|
3396
3383
|
const computedState = useRwaSymbolsRuntimeStore(
|
|
3397
3384
|
(state) => state.computedStates[symbol]
|
|
3398
3385
|
);
|
|
3399
|
-
return
|
|
3386
|
+
return React.useMemo(() => {
|
|
3400
3387
|
if (!computedState) {
|
|
3401
3388
|
return { isRwa: false };
|
|
3402
3389
|
}
|
|
@@ -3405,7 +3392,7 @@ var useGetRwaSymbolInfo = (symbol) => {
|
|
|
3405
3392
|
};
|
|
3406
3393
|
var useGetRwaSymbolOpenStatus = (symbol) => {
|
|
3407
3394
|
const { isRwa, open } = useGetRwaSymbolInfo(symbol);
|
|
3408
|
-
return
|
|
3395
|
+
return React.useMemo(() => {
|
|
3409
3396
|
return { isRwa, open };
|
|
3410
3397
|
}, [isRwa, open]);
|
|
3411
3398
|
};
|
|
@@ -3417,7 +3404,7 @@ var filterTimeInterval = (timeInterval, isRwa, thresholdMinutes) => {
|
|
|
3417
3404
|
};
|
|
3418
3405
|
var useGetRwaSymbolCloseTimeInterval = (symbol, thresholdMinutes = 30) => {
|
|
3419
3406
|
const { isRwa, open, closeTimeInterval, nextClose } = useGetRwaSymbolInfo(symbol);
|
|
3420
|
-
return
|
|
3407
|
+
return React.useMemo(() => {
|
|
3421
3408
|
const filteredInterval = filterTimeInterval(
|
|
3422
3409
|
closeTimeInterval,
|
|
3423
3410
|
isRwa,
|
|
@@ -3428,7 +3415,7 @@ var useGetRwaSymbolCloseTimeInterval = (symbol, thresholdMinutes = 30) => {
|
|
|
3428
3415
|
};
|
|
3429
3416
|
var useGetRwaSymbolOpenTimeInterval = (symbol, thresholdMinutes = 30) => {
|
|
3430
3417
|
const { isRwa, open, openTimeInterval, nextOpen } = useGetRwaSymbolInfo(symbol);
|
|
3431
|
-
return
|
|
3418
|
+
return React.useMemo(() => {
|
|
3432
3419
|
const filteredInterval = filterTimeInterval(
|
|
3433
3420
|
openTimeInterval,
|
|
3434
3421
|
isRwa,
|
|
@@ -3439,7 +3426,7 @@ var useGetRwaSymbolOpenTimeInterval = (symbol, thresholdMinutes = 30) => {
|
|
|
3439
3426
|
};
|
|
3440
3427
|
var useSymbolsInfo = () => {
|
|
3441
3428
|
const symbolsInfo = useAppStore((state) => state.symbolsInfo);
|
|
3442
|
-
return
|
|
3429
|
+
return React.useMemo(() => createGetter({ ...symbolsInfo }), [symbolsInfo]);
|
|
3443
3430
|
};
|
|
3444
3431
|
var useSymbolsInfoStore = () => {
|
|
3445
3432
|
return useAppStore((state) => state.symbolsInfo);
|
|
@@ -3457,9 +3444,9 @@ var MarketsType = /* @__PURE__ */ ((MarketsType2) => {
|
|
|
3457
3444
|
var MarketsStorageKey = "orderly_markets";
|
|
3458
3445
|
var DefaultFavoriteTab = { name: "Popular", id: 1 };
|
|
3459
3446
|
var useMarketsStore = () => {
|
|
3460
|
-
const { configStore } =
|
|
3447
|
+
const { configStore } = React.useContext(OrderlyContext);
|
|
3461
3448
|
const ee = useEventEmitter();
|
|
3462
|
-
const id =
|
|
3449
|
+
const id = React.useId();
|
|
3463
3450
|
const getStore = () => {
|
|
3464
3451
|
const store = configStore.get(MarketsStorageKey);
|
|
3465
3452
|
return store || getDefaultStoreData();
|
|
@@ -3494,14 +3481,14 @@ var useMarketsStore = () => {
|
|
|
3494
3481
|
const getTabSort = () => {
|
|
3495
3482
|
return getStoreByKey("tabSort", {});
|
|
3496
3483
|
};
|
|
3497
|
-
const [favoriteTabs, setFavoriteTabs] =
|
|
3498
|
-
const [selectedFavoriteTab, setSelectedFavoriteTab] =
|
|
3484
|
+
const [favoriteTabs, setFavoriteTabs] = React.useState(getFavoriteTabs);
|
|
3485
|
+
const [selectedFavoriteTab, setSelectedFavoriteTab] = React.useState(
|
|
3499
3486
|
getSelectedFavoriteTab
|
|
3500
3487
|
);
|
|
3501
|
-
const [favorites, setFavorites] =
|
|
3502
|
-
const [recent, setRecent] =
|
|
3503
|
-
const [newListing, setNewListing] =
|
|
3504
|
-
const [tabSort, setTabSort] =
|
|
3488
|
+
const [favorites, setFavorites] = React.useState(getFavorites);
|
|
3489
|
+
const [recent, setRecent] = React.useState(getRecent);
|
|
3490
|
+
const [newListing, setNewListing] = React.useState(getNewListing);
|
|
3491
|
+
const [tabSort, setTabSort] = React.useState(getTabSort);
|
|
3505
3492
|
const updateFavoriteTabs = (tab, operator) => {
|
|
3506
3493
|
const tabs = updateTabs(favoriteTabs, tab, operator);
|
|
3507
3494
|
setFavoriteTabs(tabs);
|
|
@@ -3540,7 +3527,7 @@ var useMarketsStore = () => {
|
|
|
3540
3527
|
};
|
|
3541
3528
|
setTabSort(map);
|
|
3542
3529
|
};
|
|
3543
|
-
|
|
3530
|
+
React.useEffect(() => {
|
|
3544
3531
|
updateStore({
|
|
3545
3532
|
favoriteTabs,
|
|
3546
3533
|
favorites,
|
|
@@ -3557,7 +3544,7 @@ var useMarketsStore = () => {
|
|
|
3557
3544
|
tabSort,
|
|
3558
3545
|
selectedFavoriteTab
|
|
3559
3546
|
]);
|
|
3560
|
-
|
|
3547
|
+
React.useEffect(() => {
|
|
3561
3548
|
const event = ({ id: srcId, key, data }) => {
|
|
3562
3549
|
if (srcId === id) {
|
|
3563
3550
|
return;
|
|
@@ -3599,10 +3586,10 @@ var useMarkets = (type = 2 /* ALL */) => {
|
|
|
3599
3586
|
const { data: futures } = useMarketsStream();
|
|
3600
3587
|
const symbolsInfo = useSymbolsInfo();
|
|
3601
3588
|
const rwaSymbolsInfo = useRwaSymbolsInfo();
|
|
3602
|
-
const [markets, setMarkets] =
|
|
3589
|
+
const [markets, setMarkets] = React.useState([]);
|
|
3603
3590
|
const store = useMarketsStore();
|
|
3604
3591
|
const { favorites, recent, newListing } = store;
|
|
3605
|
-
|
|
3592
|
+
React.useEffect(() => {
|
|
3606
3593
|
const markets2 = addFieldToMarkets(futures, symbolsInfo, rwaSymbolsInfo);
|
|
3607
3594
|
const filterList = filterMarkets({
|
|
3608
3595
|
markets: markets2,
|
|
@@ -3820,7 +3807,7 @@ var ExtendedConfigStore = class extends core.DefaultConfigStore {
|
|
|
3820
3807
|
};
|
|
3821
3808
|
var useWSObserver = (calculatorService) => {
|
|
3822
3809
|
const ws = useWS();
|
|
3823
|
-
|
|
3810
|
+
React.useEffect(() => {
|
|
3824
3811
|
const markPriceSubscription = ws.subscribe("markprices", {
|
|
3825
3812
|
onMessage: (message) => {
|
|
3826
3813
|
const data = /* @__PURE__ */ Object.create(null);
|
|
@@ -3976,10 +3963,10 @@ var orderBookService = OrderbookService.getInstance();
|
|
|
3976
3963
|
var orderbook_service_default = orderBookService;
|
|
3977
3964
|
var useMarkPrice = (symbol) => {
|
|
3978
3965
|
const ws = useWS();
|
|
3979
|
-
const [price, setPrice] =
|
|
3980
|
-
const symbolRef =
|
|
3966
|
+
const [price, setPrice] = React.useState(0);
|
|
3967
|
+
const symbolRef = React.useRef(symbol);
|
|
3981
3968
|
symbolRef.current = symbol;
|
|
3982
|
-
|
|
3969
|
+
React.useEffect(() => {
|
|
3983
3970
|
const unsubscribe = ws.subscribe(`${symbol}@markprice`, {
|
|
3984
3971
|
onMessage: (message) => {
|
|
3985
3972
|
if (message.symbol !== symbolRef.current) {
|
|
@@ -3997,7 +3984,7 @@ var useMarkPrice = (symbol) => {
|
|
|
3997
3984
|
};
|
|
3998
3985
|
var useIndexPrice = (symbol) => {
|
|
3999
3986
|
symbol = symbol.replace("PERP", "SPOT");
|
|
4000
|
-
const symbolRef =
|
|
3987
|
+
const symbolRef = React.useRef(symbol);
|
|
4001
3988
|
symbolRef.current = symbol;
|
|
4002
3989
|
const ws = useWS();
|
|
4003
3990
|
return useSWRSubscription__default.default(`${symbol}@indexprice`, (key, { next }) => {
|
|
@@ -4017,7 +4004,7 @@ var useIndexPrice = (symbol) => {
|
|
|
4017
4004
|
};
|
|
4018
4005
|
var useOpenInterest = (symbol) => {
|
|
4019
4006
|
const ws = useWS();
|
|
4020
|
-
const symbolRef =
|
|
4007
|
+
const symbolRef = React.useRef(symbol);
|
|
4021
4008
|
symbolRef.current = symbol;
|
|
4022
4009
|
return useSWRSubscription__default.default(`${symbol}@openinterest`, (key, { next }) => {
|
|
4023
4010
|
const unsubscribe = ws.subscribe(`${symbol}@openinterest`, {
|
|
@@ -4069,11 +4056,11 @@ var useTickerStream = (symbol) => {
|
|
|
4069
4056
|
revalidateOnFocus: false
|
|
4070
4057
|
}
|
|
4071
4058
|
);
|
|
4072
|
-
const [ticker, setTicker] =
|
|
4073
|
-
const symbolRef =
|
|
4059
|
+
const [ticker, setTicker] = React.useState();
|
|
4060
|
+
const symbolRef = React.useRef(symbol);
|
|
4074
4061
|
symbolRef.current = symbol;
|
|
4075
4062
|
const ws = useWS();
|
|
4076
|
-
|
|
4063
|
+
React.useEffect(() => {
|
|
4077
4064
|
const unsubscribe = ws.subscribe(
|
|
4078
4065
|
// { event: "subscribe", topic: "markprices" },
|
|
4079
4066
|
`${symbol}@ticker`,
|
|
@@ -4096,10 +4083,10 @@ var useTickerStream = (symbol) => {
|
|
|
4096
4083
|
const { data: indexPrice } = useIndexPrice(symbol);
|
|
4097
4084
|
const { data: openInterest } = useOpenInterest(symbol);
|
|
4098
4085
|
const marketMap = useMarketMap();
|
|
4099
|
-
const markPrice =
|
|
4086
|
+
const markPrice = React.useMemo(() => {
|
|
4100
4087
|
return markPrices?.[symbol];
|
|
4101
4088
|
}, [markPrices, symbol]);
|
|
4102
|
-
const value =
|
|
4089
|
+
const value = React.useMemo(() => {
|
|
4103
4090
|
if (!info) return null;
|
|
4104
4091
|
if (!ticker || ticker.symbol !== symbol) return info;
|
|
4105
4092
|
const config = {
|
|
@@ -4237,22 +4224,22 @@ var useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
4237
4224
|
}
|
|
4238
4225
|
const level = options?.level ?? 10;
|
|
4239
4226
|
const padding = options?.padding ?? true;
|
|
4240
|
-
const symbolRef =
|
|
4227
|
+
const symbolRef = React.useRef(symbol);
|
|
4241
4228
|
symbolRef.current = symbol;
|
|
4242
4229
|
const {
|
|
4243
4230
|
defaultOrderbookTickSizes: DEFAULT_TICK_SIZES2 = {},
|
|
4244
4231
|
defaultOrderbookSymbolDepths: DEFAULT_SYMBOL_DEPTHS2 = {}
|
|
4245
|
-
} =
|
|
4246
|
-
const [data, setData] =
|
|
4247
|
-
const [isLoading, setIsLoading] =
|
|
4232
|
+
} = React.useContext(OrderlyContext);
|
|
4233
|
+
const [data, setData] = React.useState(initial);
|
|
4234
|
+
const [isLoading, setIsLoading] = React.useState(true);
|
|
4248
4235
|
const config = useSymbolsInfo()[symbol];
|
|
4249
4236
|
const [depthObject, setDepthObject] = useLocalStorage(
|
|
4250
4237
|
ORDERLY_ORDERBOOK_DEPTH_KEY,
|
|
4251
4238
|
{}
|
|
4252
4239
|
);
|
|
4253
|
-
const prevMiddlePrice =
|
|
4240
|
+
const prevMiddlePrice = React.useRef(0);
|
|
4254
4241
|
const tick = config("quote_tick");
|
|
4255
|
-
const depths =
|
|
4242
|
+
const depths = React.useMemo(() => {
|
|
4256
4243
|
if (DEFAULT_SYMBOL_DEPTHS2[symbol]) {
|
|
4257
4244
|
return DEFAULT_SYMBOL_DEPTHS2[symbol];
|
|
4258
4245
|
}
|
|
@@ -4271,7 +4258,7 @@ var useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
4271
4258
|
}
|
|
4272
4259
|
return [tick];
|
|
4273
4260
|
}, [symbol, tick]);
|
|
4274
|
-
|
|
4261
|
+
React.useEffect(() => {
|
|
4275
4262
|
if (depthObject[symbol]) {
|
|
4276
4263
|
return;
|
|
4277
4264
|
}
|
|
@@ -4287,7 +4274,7 @@ var useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
4287
4274
|
}));
|
|
4288
4275
|
}
|
|
4289
4276
|
}, [depthObject, tick, symbol, DEFAULT_TICK_SIZES2]);
|
|
4290
|
-
const onDepthChange =
|
|
4277
|
+
const onDepthChange = React.useCallback(
|
|
4291
4278
|
(val) => {
|
|
4292
4279
|
setDepthObject((prev) => ({ ...prev, [symbol]: val }));
|
|
4293
4280
|
},
|
|
@@ -4296,7 +4283,7 @@ var useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
4296
4283
|
const ws = useWS();
|
|
4297
4284
|
const ticker = useTickerStream(symbol);
|
|
4298
4285
|
const eventEmitter = useEventEmitter();
|
|
4299
|
-
|
|
4286
|
+
React.useEffect(() => {
|
|
4300
4287
|
let needRequestFullOrderbook = true;
|
|
4301
4288
|
setIsLoading(true);
|
|
4302
4289
|
let fullOrderBookUpdateSub;
|
|
@@ -4361,17 +4348,17 @@ var useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
4361
4348
|
};
|
|
4362
4349
|
}, [symbol]);
|
|
4363
4350
|
const { data: markPrice } = useMarkPrice(symbol);
|
|
4364
|
-
const onItemClick =
|
|
4351
|
+
const onItemClick = React.useCallback((item) => {
|
|
4365
4352
|
eventEmitter.emit("orderbook:item:click", item);
|
|
4366
4353
|
}, []);
|
|
4367
4354
|
const reducedData = reduceOrderbook(depthObject[symbol], level, padding, {
|
|
4368
4355
|
asks: data.asks,
|
|
4369
4356
|
bids: data.bids
|
|
4370
4357
|
});
|
|
4371
|
-
|
|
4358
|
+
React.useEffect(() => {
|
|
4372
4359
|
eventEmitter.emit("orderbook:update", reducedData);
|
|
4373
4360
|
}, [reducedData]);
|
|
4374
|
-
const middlePrice =
|
|
4361
|
+
const middlePrice = React.useMemo(() => {
|
|
4375
4362
|
let asksFrist = 0;
|
|
4376
4363
|
let bidsFirst = 0;
|
|
4377
4364
|
if (data.asks.length > 0) {
|
|
@@ -4385,7 +4372,7 @@ var useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
4385
4372
|
}
|
|
4386
4373
|
return [asksFrist, bidsFirst, ticker["24h_close"]].sort()[1];
|
|
4387
4374
|
}, [ticker?.["24h_close"], data]);
|
|
4388
|
-
|
|
4375
|
+
React.useEffect(() => {
|
|
4389
4376
|
prevMiddlePrice.current = middlePrice;
|
|
4390
4377
|
}, [middlePrice]);
|
|
4391
4378
|
return [
|
|
@@ -4406,7 +4393,7 @@ var useOrderbookStream = (symbol, initial = INIT_DATA, options) => {
|
|
|
4406
4393
|
};
|
|
4407
4394
|
var useSymbolInfo = (symbol) => {
|
|
4408
4395
|
const infos = useSymbolsInfo();
|
|
4409
|
-
return
|
|
4396
|
+
return React.useMemo(() => {
|
|
4410
4397
|
return !symbol || infos.isNil ? null : infos[symbol];
|
|
4411
4398
|
}, [infos, symbol]);
|
|
4412
4399
|
};
|
|
@@ -4423,7 +4410,7 @@ var useFundingRatesStore = () => {
|
|
|
4423
4410
|
var DefaultTab = { name: "Popular", id: 1 };
|
|
4424
4411
|
var marketsKey = "markets";
|
|
4425
4412
|
var useMarket = (type) => {
|
|
4426
|
-
const { configStore } =
|
|
4413
|
+
const { configStore } = React.useContext(OrderlyContext);
|
|
4427
4414
|
const symbolsInfo = useSymbolsInfo();
|
|
4428
4415
|
const fundingRates = useFundingRates();
|
|
4429
4416
|
const { data: futures } = useMarketsStream();
|
|
@@ -4452,10 +4439,10 @@ var useMarket = (type) => {
|
|
|
4452
4439
|
});
|
|
4453
4440
|
}
|
|
4454
4441
|
}
|
|
4455
|
-
const getFavoriteTabs =
|
|
4442
|
+
const getFavoriteTabs = React.useMemo(() => {
|
|
4456
4443
|
return getStore("favoriteTabs", [{ ...DefaultTab }]);
|
|
4457
4444
|
}, []);
|
|
4458
|
-
const getFavorites =
|
|
4445
|
+
const getFavorites = React.useMemo(() => {
|
|
4459
4446
|
const curData = getStore("favorites", []);
|
|
4460
4447
|
const tabs = getFavoriteTabs;
|
|
4461
4448
|
const result = [];
|
|
@@ -4472,12 +4459,12 @@ var useMarket = (type) => {
|
|
|
4472
4459
|
updateStore("favorites", result);
|
|
4473
4460
|
return result;
|
|
4474
4461
|
}, [configStore]);
|
|
4475
|
-
const [favoriteTabs, setFavoriteTabs] =
|
|
4476
|
-
const [favorites, setFavorites] =
|
|
4477
|
-
const [recent, setRecent] =
|
|
4462
|
+
const [favoriteTabs, setFavoriteTabs] = React.useState(getFavoriteTabs);
|
|
4463
|
+
const [favorites, setFavorites] = React.useState(getFavorites);
|
|
4464
|
+
const [recent, setRecent] = React.useState(
|
|
4478
4465
|
getStore("recent", []).filter((e) => e)
|
|
4479
4466
|
);
|
|
4480
|
-
const [tabSort, setTabSort] =
|
|
4467
|
+
const [tabSort, setTabSort] = React.useState(
|
|
4481
4468
|
getStore("tabSort", {})
|
|
4482
4469
|
);
|
|
4483
4470
|
const updateFavoriteTabs = (tab, operator) => {
|
|
@@ -4557,7 +4544,7 @@ var useMarket = (type) => {
|
|
|
4557
4544
|
updateStore("favorites", curData);
|
|
4558
4545
|
setFavorites(() => curData);
|
|
4559
4546
|
};
|
|
4560
|
-
const marketsList =
|
|
4547
|
+
const marketsList = React.useMemo(() => {
|
|
4561
4548
|
const list = futures?.map((item) => {
|
|
4562
4549
|
const { open_interest = 0, index_price = 0 } = item;
|
|
4563
4550
|
const info = symbolsInfo[item.symbol];
|
|
@@ -4715,7 +4702,7 @@ var useLeverage = () => {
|
|
|
4715
4702
|
errorRetryCount: 3
|
|
4716
4703
|
// formatter: (data) => data,
|
|
4717
4704
|
});
|
|
4718
|
-
const updateLeverage =
|
|
4705
|
+
const updateLeverage = React.useCallback(
|
|
4719
4706
|
async (data2) => {
|
|
4720
4707
|
const res = await update(data2);
|
|
4721
4708
|
if (res.success) {
|
|
@@ -4726,19 +4713,19 @@ var useLeverage = () => {
|
|
|
4726
4713
|
},
|
|
4727
4714
|
[update, mutate6]
|
|
4728
4715
|
);
|
|
4729
|
-
const memoizedCurLeverage =
|
|
4716
|
+
const memoizedCurLeverage = React.useMemo(() => {
|
|
4730
4717
|
if (data?.max_leverage !== void 0) {
|
|
4731
4718
|
return Number(data.max_leverage);
|
|
4732
4719
|
}
|
|
4733
4720
|
return 1;
|
|
4734
4721
|
}, [data?.max_leverage]);
|
|
4735
|
-
const memoizedMaxLeverage =
|
|
4722
|
+
const memoizedMaxLeverage = React.useMemo(() => {
|
|
4736
4723
|
if (leverageConfig?.max_futures_leverage !== void 0) {
|
|
4737
4724
|
return Number(leverageConfig.max_futures_leverage);
|
|
4738
4725
|
}
|
|
4739
4726
|
return 1;
|
|
4740
4727
|
}, [leverageConfig?.max_futures_leverage]);
|
|
4741
|
-
const memoizedLeverageLevers =
|
|
4728
|
+
const memoizedLeverageLevers = React.useMemo(() => {
|
|
4742
4729
|
return generateLeverageLevers(memoizedMaxLeverage);
|
|
4743
4730
|
}, [memoizedMaxLeverage]);
|
|
4744
4731
|
return {
|
|
@@ -4762,13 +4749,13 @@ var useComputedLTV = (options = {}) => {
|
|
|
4762
4749
|
const { usdc, data: holdingList = [] } = useHoldingStream();
|
|
4763
4750
|
const { getIndexPrice } = useIndexPricesStream();
|
|
4764
4751
|
const { unsettledPnL } = useCollateral();
|
|
4765
|
-
const usdcBalance =
|
|
4752
|
+
const usdcBalance = React.useMemo(() => {
|
|
4766
4753
|
if (isUSDC && input) {
|
|
4767
4754
|
return new utils.Decimal(usdc?.holding ?? 0).add(input).toNumber();
|
|
4768
4755
|
}
|
|
4769
4756
|
return usdc?.holding ?? 0;
|
|
4770
4757
|
}, [usdc?.holding, input, isUSDC]);
|
|
4771
|
-
const getAdjustedQty =
|
|
4758
|
+
const getAdjustedQty = React.useCallback(
|
|
4772
4759
|
(item) => {
|
|
4773
4760
|
if (input && item.token === token) {
|
|
4774
4761
|
return new utils.Decimal(item?.holding ?? 0).add(input).toNumber();
|
|
@@ -4777,7 +4764,7 @@ var useComputedLTV = (options = {}) => {
|
|
|
4777
4764
|
},
|
|
4778
4765
|
[input, token]
|
|
4779
4766
|
);
|
|
4780
|
-
const memoizedLTV =
|
|
4767
|
+
const memoizedLTV = React.useMemo(() => {
|
|
4781
4768
|
return LTV({
|
|
4782
4769
|
usdcBalance,
|
|
4783
4770
|
upnl: unsettledPnL,
|
|
@@ -4816,8 +4803,8 @@ var useFundingRate = (symbol) => {
|
|
|
4816
4803
|
if (!symbol) {
|
|
4817
4804
|
throw new types.SDKError("Symbol is required");
|
|
4818
4805
|
}
|
|
4819
|
-
const [countDown, setCountDown] =
|
|
4820
|
-
const timerRef =
|
|
4806
|
+
const [countDown, setCountDown] = React.useState("00:00:00");
|
|
4807
|
+
const timerRef = React.useRef(null);
|
|
4821
4808
|
const { data, isLoading } = useQuery(
|
|
4822
4809
|
`/v1/public/funding_rate/${symbol}`,
|
|
4823
4810
|
{
|
|
@@ -4827,7 +4814,7 @@ var useFundingRate = (symbol) => {
|
|
|
4827
4814
|
}
|
|
4828
4815
|
}
|
|
4829
4816
|
);
|
|
4830
|
-
|
|
4817
|
+
React.useEffect(() => {
|
|
4831
4818
|
if (!data || isLoading) {
|
|
4832
4819
|
return;
|
|
4833
4820
|
}
|
|
@@ -4857,7 +4844,7 @@ var useFundingRate = (symbol) => {
|
|
|
4857
4844
|
}
|
|
4858
4845
|
};
|
|
4859
4846
|
}, [data, isLoading]);
|
|
4860
|
-
const est_funding_rate =
|
|
4847
|
+
const est_funding_rate = React.useMemo(() => {
|
|
4861
4848
|
if (!data) {
|
|
4862
4849
|
return;
|
|
4863
4850
|
}
|
|
@@ -4904,7 +4891,7 @@ var useFundingRateHistory = () => {
|
|
|
4904
4891
|
const { data: historyData, isLoading } = useQuery(
|
|
4905
4892
|
"/v1/public/market_info/funding_history"
|
|
4906
4893
|
);
|
|
4907
|
-
const getPositiveRates =
|
|
4894
|
+
const getPositiveRates = React.useCallback(
|
|
4908
4895
|
(data, period) => {
|
|
4909
4896
|
if (!data?.length) {
|
|
4910
4897
|
return {};
|
|
@@ -4922,7 +4909,7 @@ var useFundingRateHistory = () => {
|
|
|
4922
4909
|
},
|
|
4923
4910
|
[]
|
|
4924
4911
|
);
|
|
4925
|
-
return
|
|
4912
|
+
return React.useMemo(() => {
|
|
4926
4913
|
return {
|
|
4927
4914
|
data: historyData ?? types.EMPTY_LIST,
|
|
4928
4915
|
isLoading,
|
|
@@ -5735,7 +5722,7 @@ var scopes = [
|
|
|
5735
5722
|
var usePositionStream = (symbol = "all", options) => {
|
|
5736
5723
|
const { calcMode } = options || {};
|
|
5737
5724
|
const { includedPendingOrder = false } = options || {};
|
|
5738
|
-
const positionCalculator =
|
|
5725
|
+
const positionCalculator = React.useRef(null);
|
|
5739
5726
|
const calculatorService = useCalculatorService();
|
|
5740
5727
|
const [tpslOrders] = useOrderStream(
|
|
5741
5728
|
{
|
|
@@ -5751,7 +5738,7 @@ var usePositionStream = (symbol = "all", options) => {
|
|
|
5751
5738
|
const { positions: positionStatus } = useApiStatusStore(
|
|
5752
5739
|
(state) => state.apis
|
|
5753
5740
|
);
|
|
5754
|
-
|
|
5741
|
+
React.useEffect(() => {
|
|
5755
5742
|
if (symbol === "all") {
|
|
5756
5743
|
return;
|
|
5757
5744
|
}
|
|
@@ -5772,7 +5759,7 @@ var usePositionStream = (symbol = "all", options) => {
|
|
|
5772
5759
|
const { totalCollateral, totalValue, totalUnrealizedROI } = useAppStore(
|
|
5773
5760
|
(state) => state.portfolio
|
|
5774
5761
|
);
|
|
5775
|
-
const aggregated =
|
|
5762
|
+
const aggregated = React.useMemo(() => {
|
|
5776
5763
|
const data = formattedPositions[1];
|
|
5777
5764
|
if (!data) {
|
|
5778
5765
|
return {};
|
|
@@ -5868,9 +5855,9 @@ ramda.pathOr(0, [
|
|
|
5868
5855
|
"aggregated",
|
|
5869
5856
|
"unsettledPnL"
|
|
5870
5857
|
]);
|
|
5871
|
-
var DataCenterContext =
|
|
5858
|
+
var DataCenterContext = React.createContext({});
|
|
5872
5859
|
var useDataCenterContext = () => {
|
|
5873
|
-
return
|
|
5860
|
+
return React.useContext(DataCenterContext);
|
|
5874
5861
|
};
|
|
5875
5862
|
|
|
5876
5863
|
// src/orderly/useOrderStream/useOrderStream.ts
|
|
@@ -5884,10 +5871,10 @@ var useOrderStream = (params, options) => {
|
|
|
5884
5871
|
dateRange,
|
|
5885
5872
|
sourceTypeAll
|
|
5886
5873
|
} = params;
|
|
5887
|
-
const [includes2, setIncludes] =
|
|
5874
|
+
const [includes2, setIncludes] = React.useState(
|
|
5888
5875
|
params.includes ?? ["ALL"]
|
|
5889
5876
|
);
|
|
5890
|
-
const [excludes, setExcludes] =
|
|
5877
|
+
const [excludes, setExcludes] = React.useState(
|
|
5891
5878
|
params.excludes ?? []
|
|
5892
5879
|
);
|
|
5893
5880
|
const { data: markPrices } = useMarkPricesStream();
|
|
@@ -5910,7 +5897,7 @@ var useOrderStream = (params, options) => {
|
|
|
5910
5897
|
doUpdateAlgoOrder,
|
|
5911
5898
|
{ error: updateAlgoOrderError, isMutating: updateAlgoMutating }
|
|
5912
5899
|
] = useMutation("/v1/algo/order", "PUT");
|
|
5913
|
-
const normalOrderKeyFn =
|
|
5900
|
+
const normalOrderKeyFn = React.useMemo(() => {
|
|
5914
5901
|
return generateKeyFun2("/v1/orders", {
|
|
5915
5902
|
status,
|
|
5916
5903
|
symbol,
|
|
@@ -5921,7 +5908,7 @@ var useOrderStream = (params, options) => {
|
|
|
5921
5908
|
sourceTypeAll
|
|
5922
5909
|
});
|
|
5923
5910
|
}, [status, symbol, side, size, page, dateRange]);
|
|
5924
|
-
const algoOrderKeyFn =
|
|
5911
|
+
const algoOrderKeyFn = React.useMemo(() => {
|
|
5925
5912
|
return sourceTypeAll ? null : generateKeyFun2("/v1/algo/orders", {
|
|
5926
5913
|
status,
|
|
5927
5914
|
symbol,
|
|
@@ -5931,7 +5918,7 @@ var useOrderStream = (params, options) => {
|
|
|
5931
5918
|
dateRange
|
|
5932
5919
|
});
|
|
5933
5920
|
}, [status, symbol, side, dateRange, size]);
|
|
5934
|
-
|
|
5921
|
+
React.useEffect(() => {
|
|
5935
5922
|
const formatKey = (value) => value ? `:${value}` : "";
|
|
5936
5923
|
const key = `orders${formatKey(status)}${formatKey(symbol)}${formatKey(
|
|
5937
5924
|
side
|
|
@@ -5957,7 +5944,7 @@ var useOrderStream = (params, options) => {
|
|
|
5957
5944
|
formatter: (data) => data,
|
|
5958
5945
|
revalidateOnFocus: false
|
|
5959
5946
|
});
|
|
5960
|
-
const flattenOrders =
|
|
5947
|
+
const flattenOrders = React.useMemo(() => {
|
|
5961
5948
|
if (!normalOrdersResponse.data || !algoOrdersResponse.data && !sourceTypeAll) {
|
|
5962
5949
|
return null;
|
|
5963
5950
|
}
|
|
@@ -5982,7 +5969,7 @@ var useOrderStream = (params, options) => {
|
|
|
5982
5969
|
}
|
|
5983
5970
|
return orders2;
|
|
5984
5971
|
}, [normalOrdersResponse.data, algoOrdersResponse.data, includes2, excludes]);
|
|
5985
|
-
const orders =
|
|
5972
|
+
const orders = React.useMemo(() => {
|
|
5986
5973
|
if (!flattenOrders) {
|
|
5987
5974
|
return null;
|
|
5988
5975
|
}
|
|
@@ -6000,7 +5987,7 @@ var useOrderStream = (params, options) => {
|
|
|
6000
5987
|
return order;
|
|
6001
5988
|
});
|
|
6002
5989
|
}, [flattenOrders, markPrices, status]);
|
|
6003
|
-
const total =
|
|
5990
|
+
const total = React.useMemo(() => {
|
|
6004
5991
|
return orders?.length || 0;
|
|
6005
5992
|
}, [orders?.length]);
|
|
6006
5993
|
const cancelAlgoOrdersByTypes = (types$1, symbol2) => {
|
|
@@ -6019,7 +6006,7 @@ var useOrderStream = (params, options) => {
|
|
|
6019
6006
|
})
|
|
6020
6007
|
);
|
|
6021
6008
|
};
|
|
6022
|
-
const cancelAllOrders =
|
|
6009
|
+
const cancelAllOrders = React.useCallback(() => {
|
|
6023
6010
|
return Promise.all([
|
|
6024
6011
|
doCancelAllOrders(null),
|
|
6025
6012
|
doCancelAllAlgoOrders(null, { algo_type: types.AlgoOrderRootType.STOP }),
|
|
@@ -6028,7 +6015,7 @@ var useOrderStream = (params, options) => {
|
|
|
6028
6015
|
})
|
|
6029
6016
|
]);
|
|
6030
6017
|
}, [normalOrdersResponse.data, algoOrdersResponse.data]);
|
|
6031
|
-
const cancelAllPendingOrders =
|
|
6018
|
+
const cancelAllPendingOrders = React.useCallback(
|
|
6032
6019
|
(symbol2) => {
|
|
6033
6020
|
return Promise.all([
|
|
6034
6021
|
doCancelAllOrders(null, { ...symbol2 && { symbol: symbol2 } }),
|
|
@@ -6044,7 +6031,7 @@ var useOrderStream = (params, options) => {
|
|
|
6044
6031
|
},
|
|
6045
6032
|
[symbol]
|
|
6046
6033
|
);
|
|
6047
|
-
const cancelPostionOrdersByTypes =
|
|
6034
|
+
const cancelPostionOrdersByTypes = React.useCallback(
|
|
6048
6035
|
(symbol2, types) => {
|
|
6049
6036
|
return doCancelAllAlgoOrders(null, {
|
|
6050
6037
|
symbol: symbol2,
|
|
@@ -6053,7 +6040,7 @@ var useOrderStream = (params, options) => {
|
|
|
6053
6040
|
},
|
|
6054
6041
|
[algoOrdersResponse.data]
|
|
6055
6042
|
);
|
|
6056
|
-
const cancelAllTPSLOrders =
|
|
6043
|
+
const cancelAllTPSLOrders = React.useCallback(
|
|
6057
6044
|
(symbol2) => {
|
|
6058
6045
|
return cancelAlgoOrdersByTypes(
|
|
6059
6046
|
[types.AlgoOrderRootType.POSITIONAL_TP_SL, types.AlgoOrderRootType.TP_SL],
|
|
@@ -6062,7 +6049,7 @@ var useOrderStream = (params, options) => {
|
|
|
6062
6049
|
},
|
|
6063
6050
|
[algoOrdersResponse.data]
|
|
6064
6051
|
);
|
|
6065
|
-
const _updateOrder =
|
|
6052
|
+
const _updateOrder = React.useCallback(
|
|
6066
6053
|
(orderId, order, type) => {
|
|
6067
6054
|
switch (type) {
|
|
6068
6055
|
case "algoOrder":
|
|
@@ -6082,13 +6069,13 @@ var useOrderStream = (params, options) => {
|
|
|
6082
6069
|
},
|
|
6083
6070
|
[]
|
|
6084
6071
|
);
|
|
6085
|
-
const updateOrder =
|
|
6072
|
+
const updateOrder = React.useCallback((orderId, order) => {
|
|
6086
6073
|
return _updateOrder(orderId, order, "normalOrder");
|
|
6087
6074
|
}, []);
|
|
6088
|
-
const updateAlgoOrder =
|
|
6075
|
+
const updateAlgoOrder = React.useCallback((orderId, order) => {
|
|
6089
6076
|
return _updateOrder(orderId, order, "algoOrder");
|
|
6090
6077
|
}, []);
|
|
6091
|
-
const _cancelOrder =
|
|
6078
|
+
const _cancelOrder = React.useCallback(
|
|
6092
6079
|
(orderId, type, symbol2) => {
|
|
6093
6080
|
switch (type) {
|
|
6094
6081
|
case "algoOrder":
|
|
@@ -6122,15 +6109,15 @@ var useOrderStream = (params, options) => {
|
|
|
6122
6109
|
},
|
|
6123
6110
|
[]
|
|
6124
6111
|
);
|
|
6125
|
-
const cancelOrder =
|
|
6112
|
+
const cancelOrder = React.useCallback((orderId, symbol2) => {
|
|
6126
6113
|
return _cancelOrder(orderId, "normalOrder", symbol2);
|
|
6127
6114
|
}, []);
|
|
6128
|
-
const cancelAlgoOrder =
|
|
6115
|
+
const cancelAlgoOrder = React.useCallback((orderId, symbol2) => {
|
|
6129
6116
|
return _cancelOrder(orderId, "algoOrder", symbol2);
|
|
6130
6117
|
}, []);
|
|
6131
6118
|
const loadMore = () => {
|
|
6132
6119
|
};
|
|
6133
|
-
const cancelTPSLChildOrder =
|
|
6120
|
+
const cancelTPSLChildOrder = React.useCallback(
|
|
6134
6121
|
(orderId, rootAlgoOrderId) => {
|
|
6135
6122
|
return doUpdateAlgoOrder({
|
|
6136
6123
|
order_id: rootAlgoOrderId,
|
|
@@ -6144,7 +6131,7 @@ var useOrderStream = (params, options) => {
|
|
|
6144
6131
|
},
|
|
6145
6132
|
[]
|
|
6146
6133
|
);
|
|
6147
|
-
const updateTPSLOrder =
|
|
6134
|
+
const updateTPSLOrder = React.useCallback(
|
|
6148
6135
|
(orderId, childOrders) => {
|
|
6149
6136
|
if (!Array.isArray(childOrders)) {
|
|
6150
6137
|
throw new types.SDKError("Children orders is required");
|
|
@@ -6156,10 +6143,10 @@ var useOrderStream = (params, options) => {
|
|
|
6156
6143
|
},
|
|
6157
6144
|
[]
|
|
6158
6145
|
);
|
|
6159
|
-
const meta =
|
|
6146
|
+
const meta = React.useMemo(() => {
|
|
6160
6147
|
return normalOrdersResponse.data?.[0]?.meta;
|
|
6161
6148
|
}, [normalOrdersResponse.data?.[0]]);
|
|
6162
|
-
const refresh =
|
|
6149
|
+
const refresh = React.useCallback(() => {
|
|
6163
6150
|
normalOrdersResponse.mutate();
|
|
6164
6151
|
algoOrdersResponse.mutate();
|
|
6165
6152
|
}, []);
|
|
@@ -6428,9 +6415,9 @@ function calcByPrice(positions3, markPrice, indexPrice) {
|
|
|
6428
6415
|
}
|
|
6429
6416
|
var useSubAccountWS = (options) => {
|
|
6430
6417
|
const { accountId } = options;
|
|
6431
|
-
const { configStore } =
|
|
6418
|
+
const { configStore } = React.useContext(OrderlyContext);
|
|
6432
6419
|
const { state, account: account9 } = useAccount();
|
|
6433
|
-
const websocketClient =
|
|
6420
|
+
const websocketClient = React.useRef(
|
|
6434
6421
|
new net.WS({
|
|
6435
6422
|
networkId: configStore.get("networkId"),
|
|
6436
6423
|
// not need to subscribe public socket
|
|
@@ -6444,7 +6431,7 @@ var useSubAccountWS = (options) => {
|
|
|
6444
6431
|
}
|
|
6445
6432
|
})
|
|
6446
6433
|
);
|
|
6447
|
-
|
|
6434
|
+
React.useEffect(() => {
|
|
6448
6435
|
if (accountId && (state.status === types.AccountStatusEnum.EnableTrading || state.status === types.AccountStatusEnum.EnableTradingWithoutConnected)) {
|
|
6449
6436
|
websocketClient.current.openPrivate(accountId);
|
|
6450
6437
|
}
|
|
@@ -6463,11 +6450,11 @@ var useSubAccountDataObserver = (accountId) => {
|
|
|
6463
6450
|
const symbolsInfo = useSymbolsInfo();
|
|
6464
6451
|
const fundingRates = useFundingRatesStore();
|
|
6465
6452
|
const tokensInfo = useAppStore((state) => state.tokensInfo);
|
|
6466
|
-
const [holding, setHolding] =
|
|
6467
|
-
const [positions3, setPositions] =
|
|
6453
|
+
const [holding, setHolding] = React.useState([]);
|
|
6454
|
+
const [positions3, setPositions] = React.useState(
|
|
6468
6455
|
POSITION_EMPTY
|
|
6469
6456
|
);
|
|
6470
|
-
const [portfolio, setPortfolio] =
|
|
6457
|
+
const [portfolio, setPortfolio] = React.useState();
|
|
6471
6458
|
const { data: accountInfo } = useSubAccountQuery(
|
|
6472
6459
|
"/v1/client/info",
|
|
6473
6460
|
{ accountId, revalidateOnFocus: false }
|
|
@@ -6486,7 +6473,7 @@ var useSubAccountDataObserver = (accountId) => {
|
|
|
6486
6473
|
formatter: (data) => data.holding
|
|
6487
6474
|
}
|
|
6488
6475
|
);
|
|
6489
|
-
|
|
6476
|
+
React.useEffect(() => {
|
|
6490
6477
|
const portfolio2 = formatPortfolio({
|
|
6491
6478
|
holding,
|
|
6492
6479
|
positions: positions3,
|
|
@@ -6506,7 +6493,7 @@ var useSubAccountDataObserver = (accountId) => {
|
|
|
6506
6493
|
symbolsInfo,
|
|
6507
6494
|
tokensInfo
|
|
6508
6495
|
]);
|
|
6509
|
-
|
|
6496
|
+
React.useEffect(() => {
|
|
6510
6497
|
if (!positionsInfo) return;
|
|
6511
6498
|
if (positionsInfo.rows?.length === 0) {
|
|
6512
6499
|
setPositions(positionsInfo);
|
|
@@ -6533,12 +6520,12 @@ var useSubAccountDataObserver = (accountId) => {
|
|
|
6533
6520
|
markPrices,
|
|
6534
6521
|
indexPrices
|
|
6535
6522
|
]);
|
|
6536
|
-
|
|
6523
|
+
React.useEffect(() => {
|
|
6537
6524
|
if (holdingRes) {
|
|
6538
6525
|
setHolding(holdingRes);
|
|
6539
6526
|
}
|
|
6540
6527
|
}, [holdingRes]);
|
|
6541
|
-
|
|
6528
|
+
React.useEffect(() => {
|
|
6542
6529
|
if (!accountId) return;
|
|
6543
6530
|
const unsubscribe = ws.privateSubscribe(
|
|
6544
6531
|
{
|
|
@@ -6563,7 +6550,7 @@ var useSubAccountDataObserver = (accountId) => {
|
|
|
6563
6550
|
);
|
|
6564
6551
|
return () => unsubscribe?.();
|
|
6565
6552
|
}, [accountId]);
|
|
6566
|
-
|
|
6553
|
+
React.useEffect(() => {
|
|
6567
6554
|
if (!accountId) return;
|
|
6568
6555
|
const key = ["/v1/positions", accountId];
|
|
6569
6556
|
const unsubscribe = ws.privateSubscribe("position", {
|
|
@@ -6618,22 +6605,22 @@ function useSubAccountMaxWithdrawal(options) {
|
|
|
6618
6605
|
(state) => state.tokensInfo?.find((item) => item.token === token)
|
|
6619
6606
|
);
|
|
6620
6607
|
const { data: indexPrices } = useIndexPricesStream();
|
|
6621
|
-
const usdc =
|
|
6608
|
+
const usdc = React.useMemo(() => {
|
|
6622
6609
|
const usdc2 = holdings?.find((item) => item.token === "USDC");
|
|
6623
6610
|
return usdc2;
|
|
6624
6611
|
}, [holdings]);
|
|
6625
|
-
const holding =
|
|
6612
|
+
const holding = React.useMemo(() => {
|
|
6626
6613
|
return holdings?.find((item) => item?.token === token);
|
|
6627
6614
|
}, [holdings, token]);
|
|
6628
6615
|
const usdcBalance = usdc?.holding ?? 0;
|
|
6629
|
-
const indexPrice =
|
|
6616
|
+
const indexPrice = React.useMemo(() => {
|
|
6630
6617
|
if (token === "USDC") {
|
|
6631
6618
|
return 1;
|
|
6632
6619
|
}
|
|
6633
6620
|
const symbol = `PERP_${token}_USDC`;
|
|
6634
6621
|
return indexPrices[symbol] ?? 0;
|
|
6635
6622
|
}, [token, indexPrices]);
|
|
6636
|
-
const memoizedCollateralRatio =
|
|
6623
|
+
const memoizedCollateralRatio = React.useMemo(() => {
|
|
6637
6624
|
const { base_weight = 0, discount_factor = 0 } = tokenInfo || {};
|
|
6638
6625
|
const holdingQty = holding?.holding ?? 0;
|
|
6639
6626
|
return collateralRatio2({
|
|
@@ -6644,7 +6631,7 @@ function useSubAccountMaxWithdrawal(options) {
|
|
|
6644
6631
|
indexPrice
|
|
6645
6632
|
});
|
|
6646
6633
|
}, [holdings, tokenInfo, indexPrice, token, holding]);
|
|
6647
|
-
const maxAmount =
|
|
6634
|
+
const maxAmount = React.useMemo(() => {
|
|
6648
6635
|
if (token === "USDC") {
|
|
6649
6636
|
return maxWithdrawalUSDC({
|
|
6650
6637
|
USDCBalance: usdcBalance,
|
|
@@ -6676,10 +6663,10 @@ var useSubAccountAlgoOrderStream = (params, options) => {
|
|
|
6676
6663
|
const { status } = params;
|
|
6677
6664
|
const accountId = options.accountId;
|
|
6678
6665
|
const ee = useEventEmitter();
|
|
6679
|
-
const [includes2, setIncludes] =
|
|
6666
|
+
const [includes2, setIncludes] = React.useState(
|
|
6680
6667
|
params.includes ?? ["ALL"]
|
|
6681
6668
|
);
|
|
6682
|
-
const [excludes, setExcludes] =
|
|
6669
|
+
const [excludes, setExcludes] = React.useState(
|
|
6683
6670
|
params.excludes ?? []
|
|
6684
6671
|
);
|
|
6685
6672
|
const { data: markPrices } = useMarkPricesStream();
|
|
@@ -6705,7 +6692,7 @@ var useSubAccountAlgoOrderStream = (params, options) => {
|
|
|
6705
6692
|
}
|
|
6706
6693
|
);
|
|
6707
6694
|
const [doUpdateAlgoOrder, { isMutating: updateAlgoMutating }] = useSubAccountMutation("/v1/algo/order", "PUT", { accountId });
|
|
6708
|
-
const algoOrderKey =
|
|
6695
|
+
const algoOrderKey = React.useMemo(() => {
|
|
6709
6696
|
const { status: status2, symbol, side, size = 50, page = 1, dateRange } = params;
|
|
6710
6697
|
const search = new URLSearchParams([
|
|
6711
6698
|
["size", size.toString()],
|
|
@@ -6741,7 +6728,7 @@ var useSubAccountAlgoOrderStream = (params, options) => {
|
|
|
6741
6728
|
revalidateOnFocus: false
|
|
6742
6729
|
}
|
|
6743
6730
|
);
|
|
6744
|
-
const flattenOrders =
|
|
6731
|
+
const flattenOrders = React.useMemo(() => {
|
|
6745
6732
|
const orders2 = data?.rows || [];
|
|
6746
6733
|
if (includes2.includes("ALL") && excludes.length === 0) {
|
|
6747
6734
|
return orders2;
|
|
@@ -6759,7 +6746,7 @@ var useSubAccountAlgoOrderStream = (params, options) => {
|
|
|
6759
6746
|
}
|
|
6760
6747
|
return orders2;
|
|
6761
6748
|
}, [data, includes2, excludes]);
|
|
6762
|
-
const orders =
|
|
6749
|
+
const orders = React.useMemo(() => {
|
|
6763
6750
|
if (!flattenOrders) {
|
|
6764
6751
|
return null;
|
|
6765
6752
|
}
|
|
@@ -6793,7 +6780,7 @@ var useSubAccountAlgoOrderStream = (params, options) => {
|
|
|
6793
6780
|
})
|
|
6794
6781
|
);
|
|
6795
6782
|
};
|
|
6796
|
-
const cancelAllOrders =
|
|
6783
|
+
const cancelAllOrders = React.useCallback(() => {
|
|
6797
6784
|
return Promise.all([
|
|
6798
6785
|
doCancelAllAlgoOrders(null, { algo_type: types.AlgoOrderRootType.STOP }),
|
|
6799
6786
|
doCancelAllAlgoOrders(null, {
|
|
@@ -6801,10 +6788,10 @@ var useSubAccountAlgoOrderStream = (params, options) => {
|
|
|
6801
6788
|
})
|
|
6802
6789
|
]);
|
|
6803
6790
|
}, [data]);
|
|
6804
|
-
const cancelAllPendingOrders =
|
|
6791
|
+
const cancelAllPendingOrders = React.useCallback((symbol) => {
|
|
6805
6792
|
doCancelAllOrders(null, { ...symbol && { symbol } });
|
|
6806
6793
|
}, []);
|
|
6807
|
-
const cancelPostionOrdersByTypes =
|
|
6794
|
+
const cancelPostionOrdersByTypes = React.useCallback(
|
|
6808
6795
|
(symbol, types) => {
|
|
6809
6796
|
return doCancelAllAlgoOrders(null, {
|
|
6810
6797
|
symbol,
|
|
@@ -6813,7 +6800,7 @@ var useSubAccountAlgoOrderStream = (params, options) => {
|
|
|
6813
6800
|
},
|
|
6814
6801
|
[data]
|
|
6815
6802
|
);
|
|
6816
|
-
const cancelAllTPSLOrders =
|
|
6803
|
+
const cancelAllTPSLOrders = React.useCallback(
|
|
6817
6804
|
(symbol) => {
|
|
6818
6805
|
return cancelAlgoOrdersByTypes(
|
|
6819
6806
|
[types.AlgoOrderRootType.POSITIONAL_TP_SL, types.AlgoOrderRootType.TP_SL],
|
|
@@ -6822,7 +6809,7 @@ var useSubAccountAlgoOrderStream = (params, options) => {
|
|
|
6822
6809
|
},
|
|
6823
6810
|
[data]
|
|
6824
6811
|
);
|
|
6825
|
-
const _updateOrder =
|
|
6812
|
+
const _updateOrder = React.useCallback(
|
|
6826
6813
|
(orderId, order, type) => {
|
|
6827
6814
|
switch (type) {
|
|
6828
6815
|
case "algoOrder":
|
|
@@ -6842,13 +6829,13 @@ var useSubAccountAlgoOrderStream = (params, options) => {
|
|
|
6842
6829
|
},
|
|
6843
6830
|
[]
|
|
6844
6831
|
);
|
|
6845
|
-
const updateOrder =
|
|
6832
|
+
const updateOrder = React.useCallback((orderId, order) => {
|
|
6846
6833
|
return _updateOrder(orderId, order, "normalOrder");
|
|
6847
6834
|
}, []);
|
|
6848
|
-
const updateAlgoOrder =
|
|
6835
|
+
const updateAlgoOrder = React.useCallback((orderId, order) => {
|
|
6849
6836
|
return _updateOrder(orderId, order, "algoOrder");
|
|
6850
6837
|
}, []);
|
|
6851
|
-
const _cancelOrder =
|
|
6838
|
+
const _cancelOrder = React.useCallback(
|
|
6852
6839
|
(orderId, type, symbol) => {
|
|
6853
6840
|
switch (type) {
|
|
6854
6841
|
case "algoOrder":
|
|
@@ -6881,13 +6868,13 @@ var useSubAccountAlgoOrderStream = (params, options) => {
|
|
|
6881
6868
|
},
|
|
6882
6869
|
[]
|
|
6883
6870
|
);
|
|
6884
|
-
const cancelOrder =
|
|
6871
|
+
const cancelOrder = React.useCallback((orderId, symbol) => {
|
|
6885
6872
|
return _cancelOrder(orderId, "normalOrder", symbol);
|
|
6886
6873
|
}, []);
|
|
6887
|
-
const cancelAlgoOrder =
|
|
6874
|
+
const cancelAlgoOrder = React.useCallback((orderId, symbol) => {
|
|
6888
6875
|
return _cancelOrder(orderId, "algoOrder", symbol);
|
|
6889
6876
|
}, []);
|
|
6890
|
-
const cancelTPSLChildOrder =
|
|
6877
|
+
const cancelTPSLChildOrder = React.useCallback(
|
|
6891
6878
|
(orderId, rootAlgoOrderId) => {
|
|
6892
6879
|
return doUpdateAlgoOrder({
|
|
6893
6880
|
order_id: rootAlgoOrderId,
|
|
@@ -6901,7 +6888,7 @@ var useSubAccountAlgoOrderStream = (params, options) => {
|
|
|
6901
6888
|
},
|
|
6902
6889
|
[]
|
|
6903
6890
|
);
|
|
6904
|
-
const updateTPSLOrder =
|
|
6891
|
+
const updateTPSLOrder = React.useCallback(
|
|
6905
6892
|
(orderId, childOrders) => {
|
|
6906
6893
|
if (!Array.isArray(childOrders)) {
|
|
6907
6894
|
throw new types.SDKError("Children orders is required");
|
|
@@ -6916,7 +6903,7 @@ var useSubAccountAlgoOrderStream = (params, options) => {
|
|
|
6916
6903
|
const refresh = useDebounce.useDebouncedCallback(() => {
|
|
6917
6904
|
mutate6();
|
|
6918
6905
|
}, 200);
|
|
6919
|
-
|
|
6906
|
+
React.useEffect(() => {
|
|
6920
6907
|
const handler = (position) => {
|
|
6921
6908
|
if (position.account_id === accountId) {
|
|
6922
6909
|
refresh();
|
|
@@ -6956,13 +6943,13 @@ var useMarketTradeStream = (symbol, options = {}) => {
|
|
|
6956
6943
|
if (!symbol) {
|
|
6957
6944
|
throw new types.SDKError("Symbol is required");
|
|
6958
6945
|
}
|
|
6959
|
-
const [trades, setTrades] =
|
|
6960
|
-
const [isLoading, setIsLoading] =
|
|
6961
|
-
const symbolRef =
|
|
6946
|
+
const [trades, setTrades] = React.useState([]);
|
|
6947
|
+
const [isLoading, setIsLoading] = React.useState(false);
|
|
6948
|
+
const symbolRef = React.useRef(symbol);
|
|
6962
6949
|
symbolRef.current = symbol;
|
|
6963
6950
|
const { limit = 50 } = options;
|
|
6964
6951
|
const ws = useWS();
|
|
6965
|
-
|
|
6952
|
+
React.useEffect(() => {
|
|
6966
6953
|
setIsLoading(true);
|
|
6967
6954
|
setTrades(() => []);
|
|
6968
6955
|
ws.onceSubscribe(
|
|
@@ -6983,7 +6970,7 @@ var useMarketTradeStream = (symbol, options = {}) => {
|
|
|
6983
6970
|
}
|
|
6984
6971
|
);
|
|
6985
6972
|
}, [symbol]);
|
|
6986
|
-
|
|
6973
|
+
React.useEffect(() => {
|
|
6987
6974
|
const unsubscribe = ws.subscribe(
|
|
6988
6975
|
{
|
|
6989
6976
|
id: `${symbol}@trade`,
|
|
@@ -7047,7 +7034,7 @@ var useLeverageBySymbol = (symbol) => {
|
|
|
7047
7034
|
revalidateOnFocus: false
|
|
7048
7035
|
}
|
|
7049
7036
|
);
|
|
7050
|
-
|
|
7037
|
+
React.useEffect(() => {
|
|
7051
7038
|
if (!state.accountId || !symbol) return;
|
|
7052
7039
|
const unsubscribe = ws.privateSubscribe("account", {
|
|
7053
7040
|
onMessage: (data2) => {
|
|
@@ -7082,7 +7069,7 @@ var useMaxQty = (symbol, side, reduceOnly = false) => {
|
|
|
7082
7069
|
const { totalCollateral } = useCollateral();
|
|
7083
7070
|
const { data: markPrices } = useMarkPricesStream();
|
|
7084
7071
|
const symbolLeverage = useLeverageBySymbol(symbol);
|
|
7085
|
-
const maxQty =
|
|
7072
|
+
const maxQty = React.useMemo(() => {
|
|
7086
7073
|
if (!symbol) return 0;
|
|
7087
7074
|
const positionQty = perp.account.getQtyFromPositions(
|
|
7088
7075
|
positions3 === null ? [] : positions3,
|
|
@@ -7154,7 +7141,7 @@ var useMarginRatio = () => {
|
|
|
7154
7141
|
const { state } = useAccount();
|
|
7155
7142
|
const { data: markPrices } = useMarkPricesStream();
|
|
7156
7143
|
const { totalCollateral } = useCollateral();
|
|
7157
|
-
const marginRatio =
|
|
7144
|
+
const marginRatio = React.useMemo(() => {
|
|
7158
7145
|
if (!rows || !markPrices || !totalCollateral || rows.length === 0) {
|
|
7159
7146
|
return 0;
|
|
7160
7147
|
}
|
|
@@ -7164,13 +7151,13 @@ var useMarginRatio = () => {
|
|
|
7164
7151
|
positions: rows ?? types.EMPTY_LIST
|
|
7165
7152
|
});
|
|
7166
7153
|
}, [rows, markPrices, totalCollateral]);
|
|
7167
|
-
const currentLeverage =
|
|
7154
|
+
const currentLeverage = React.useMemo(() => {
|
|
7168
7155
|
if (state.status >= types.AccountStatusEnum.EnableTrading || state.status === types.AccountStatusEnum.EnableTradingWithoutConnected) {
|
|
7169
7156
|
return perp.account.currentLeverage(marginRatio);
|
|
7170
7157
|
}
|
|
7171
7158
|
return null;
|
|
7172
7159
|
}, [marginRatio, state.status]);
|
|
7173
|
-
const mmr =
|
|
7160
|
+
const mmr = React.useMemo(() => {
|
|
7174
7161
|
if (!rows || rows.length <= 0 || notional == null) {
|
|
7175
7162
|
return null;
|
|
7176
7163
|
}
|
|
@@ -7186,7 +7173,7 @@ var useMarginRatio = () => {
|
|
|
7186
7173
|
positionsNotional: notional
|
|
7187
7174
|
});
|
|
7188
7175
|
}, [rows, notional]);
|
|
7189
|
-
const maintenanceMargin =
|
|
7176
|
+
const maintenanceMargin = React.useMemo(() => {
|
|
7190
7177
|
if (!rows || rows.length <= 0 || notional == null) {
|
|
7191
7178
|
return null;
|
|
7192
7179
|
}
|
|
@@ -7217,16 +7204,16 @@ function useChains(networkId, options = {}) {
|
|
|
7217
7204
|
filteredChains: allowedChains,
|
|
7218
7205
|
customChains,
|
|
7219
7206
|
dataAdapter
|
|
7220
|
-
} =
|
|
7221
|
-
const filterFun =
|
|
7207
|
+
} = React.useContext(OrderlyContext);
|
|
7208
|
+
const filterFun = React.useRef(options?.filter);
|
|
7222
7209
|
filterFun.current = options?.filter;
|
|
7223
|
-
const chainsMap =
|
|
7210
|
+
const chainsMap = React.useRef(/* @__PURE__ */ new Map());
|
|
7224
7211
|
const needFetchFromAPI = options.forceAPI || !customChains;
|
|
7225
7212
|
const { data: tokenChainsRes, error: tokenError } = useMainTokenStore();
|
|
7226
7213
|
const testTokenChainsRes = useTestTokenStore((state) => state.data);
|
|
7227
7214
|
const chainInfos = useMainnetChainsStore((state) => state.data);
|
|
7228
7215
|
const testChainInfos = useTestnetChainsStore((state) => state.data);
|
|
7229
|
-
const chains =
|
|
7216
|
+
const chains = React.useMemo(() => {
|
|
7230
7217
|
if (!tokenChainsRes || !testTokenChainsRes || !chainInfos || !testChainInfos) {
|
|
7231
7218
|
return [];
|
|
7232
7219
|
}
|
|
@@ -7281,7 +7268,7 @@ function useChains(networkId, options = {}) {
|
|
|
7281
7268
|
allowedChains,
|
|
7282
7269
|
dataAdapter
|
|
7283
7270
|
]);
|
|
7284
|
-
const findByChainId =
|
|
7271
|
+
const findByChainId = React.useCallback(
|
|
7285
7272
|
(chainId, field) => {
|
|
7286
7273
|
const chain = chainsMap.current.get(chainId);
|
|
7287
7274
|
if (chain) {
|
|
@@ -7298,7 +7285,7 @@ function useChains(networkId, options = {}) {
|
|
|
7298
7285
|
},
|
|
7299
7286
|
[chains, chainsMap]
|
|
7300
7287
|
);
|
|
7301
|
-
const checkChainSupport =
|
|
7288
|
+
const checkChainSupport = React.useCallback(
|
|
7302
7289
|
(chainId, networkId2) => {
|
|
7303
7290
|
const _chains = Array.isArray(chains) ? chains : chains[networkId2];
|
|
7304
7291
|
return _checkChainSupport(chainId, _chains);
|
|
@@ -7423,7 +7410,7 @@ function useStorageChain() {
|
|
|
7423
7410
|
}
|
|
7424
7411
|
var useChain = (token) => {
|
|
7425
7412
|
const { data, isLoading } = useQuery("/v1/public/token");
|
|
7426
|
-
const chains =
|
|
7413
|
+
const chains = React.useMemo(() => {
|
|
7427
7414
|
if (!data) {
|
|
7428
7415
|
return null;
|
|
7429
7416
|
}
|
|
@@ -7458,7 +7445,7 @@ var useHoldingStream = () => {
|
|
|
7458
7445
|
}
|
|
7459
7446
|
}
|
|
7460
7447
|
);
|
|
7461
|
-
const usdc =
|
|
7448
|
+
const usdc = React.useMemo(() => {
|
|
7462
7449
|
const usdc2 = data?.find((item) => item.token === "USDC");
|
|
7463
7450
|
return usdc2;
|
|
7464
7451
|
}, [data]);
|
|
@@ -7510,13 +7497,13 @@ var useMaxWithdrawal = (token) => {
|
|
|
7510
7497
|
const { getIndexPrice } = useIndexPricesStream();
|
|
7511
7498
|
const indexPriceRef = useUpdatedRef(getIndexPrice(token));
|
|
7512
7499
|
const { usdc, data: holdings = [] } = useHoldingStream();
|
|
7513
|
-
const holding =
|
|
7500
|
+
const holding = React.useMemo(() => {
|
|
7514
7501
|
return holdings.find(
|
|
7515
7502
|
(item) => item.token?.toUpperCase() === token.toUpperCase()
|
|
7516
7503
|
);
|
|
7517
7504
|
}, [holdings, token]);
|
|
7518
7505
|
const usdcBalance = usdc?.holding ?? 0;
|
|
7519
|
-
const memoizedCollateralRatio =
|
|
7506
|
+
const memoizedCollateralRatio = React.useMemo(() => {
|
|
7520
7507
|
const { base_weight = 0, discount_factor = 0 } = tokenInfo || {};
|
|
7521
7508
|
const holdingQty = holding?.holding ?? 0;
|
|
7522
7509
|
return collateralRatio3({
|
|
@@ -7527,7 +7514,7 @@ var useMaxWithdrawal = (token) => {
|
|
|
7527
7514
|
indexPrice: indexPriceRef.current
|
|
7528
7515
|
});
|
|
7529
7516
|
}, [tokenInfo, holding?.holding, indexPriceRef]);
|
|
7530
|
-
const maxAmount =
|
|
7517
|
+
const maxAmount = React.useMemo(() => {
|
|
7531
7518
|
if (!token) {
|
|
7532
7519
|
return 0;
|
|
7533
7520
|
}
|
|
@@ -7576,14 +7563,14 @@ var useWithdraw = (options) => {
|
|
|
7576
7563
|
const [_, { findByChainId }] = useChains(void 0);
|
|
7577
7564
|
const { track: track2 } = useTrack();
|
|
7578
7565
|
const maxAmount = useMaxWithdrawal(token);
|
|
7579
|
-
const availableWithdraw =
|
|
7566
|
+
const availableWithdraw = React.useMemo(() => {
|
|
7580
7567
|
if (unsettledPnL < 0) {
|
|
7581
7568
|
return freeCollateral;
|
|
7582
7569
|
} else {
|
|
7583
7570
|
return freeCollateral - unsettledPnL;
|
|
7584
7571
|
}
|
|
7585
7572
|
}, [freeCollateral, unsettledPnL]);
|
|
7586
|
-
const targetChain =
|
|
7573
|
+
const targetChain = React.useMemo(() => {
|
|
7587
7574
|
let chain;
|
|
7588
7575
|
if (networkId === "testnet") {
|
|
7589
7576
|
chain = findByChainId(
|
|
@@ -7597,7 +7584,7 @@ var useWithdraw = (options) => {
|
|
|
7597
7584
|
}
|
|
7598
7585
|
return chain;
|
|
7599
7586
|
}, [networkId, findByChainId, srcChainId]);
|
|
7600
|
-
const dst =
|
|
7587
|
+
const dst = React.useMemo(() => {
|
|
7601
7588
|
const USDC = targetChain?.token_infos.find(
|
|
7602
7589
|
(token2) => token2.symbol === "USDC"
|
|
7603
7590
|
);
|
|
@@ -7609,7 +7596,7 @@ var useWithdraw = (options) => {
|
|
|
7609
7596
|
network: targetChain?.network_infos?.shortName
|
|
7610
7597
|
};
|
|
7611
7598
|
}, [targetChain]);
|
|
7612
|
-
const withdraw =
|
|
7599
|
+
const withdraw = React.useCallback(
|
|
7613
7600
|
(inputs) => {
|
|
7614
7601
|
return account9.assetsManager.withdraw({ ...inputs, decimals: decimals ?? 6 }).then((res) => {
|
|
7615
7602
|
if (res.success) {
|
|
@@ -7648,11 +7635,11 @@ var useWithdraw = (options) => {
|
|
|
7648
7635
|
};
|
|
7649
7636
|
};
|
|
7650
7637
|
var useDeposit = (options) => {
|
|
7651
|
-
const [quantity, setQuantity] =
|
|
7638
|
+
const [quantity, setQuantity] = React.useState("");
|
|
7652
7639
|
const { account: account9, state } = useAccount();
|
|
7653
7640
|
const { track: track2 } = useTrack();
|
|
7654
7641
|
const targetChain = useTargetChain(options.srcChainId);
|
|
7655
|
-
const dst =
|
|
7642
|
+
const dst = React.useMemo(() => {
|
|
7656
7643
|
const symbol = options.dstToken || "USDC";
|
|
7657
7644
|
const targetToken = targetChain?.token_infos.find(
|
|
7658
7645
|
(token) => token.symbol === symbol
|
|
@@ -7665,11 +7652,11 @@ var useDeposit = (options) => {
|
|
|
7665
7652
|
network: targetChain?.network_infos.shortName
|
|
7666
7653
|
};
|
|
7667
7654
|
}, [targetChain, options.dstToken]);
|
|
7668
|
-
const isNativeToken =
|
|
7655
|
+
const isNativeToken = React.useMemo(
|
|
7669
7656
|
() => types.isNativeTokenChecker(options.address),
|
|
7670
7657
|
[options.address]
|
|
7671
7658
|
);
|
|
7672
|
-
const vaultAddress =
|
|
7659
|
+
const vaultAddress = React.useMemo(() => {
|
|
7673
7660
|
if (dst?.chainId !== options.srcChainId) {
|
|
7674
7661
|
return options.crossChainRouteAddress;
|
|
7675
7662
|
}
|
|
@@ -7723,7 +7710,7 @@ var useDeposit = (options) => {
|
|
|
7723
7710
|
isNativeToken,
|
|
7724
7711
|
dst
|
|
7725
7712
|
});
|
|
7726
|
-
const resetApprove =
|
|
7713
|
+
const resetApprove = React.useCallback(
|
|
7727
7714
|
async (tokenAddress, decimal, vaultAddress2) => {
|
|
7728
7715
|
const result = await account9.assetsManager.approve({
|
|
7729
7716
|
address: tokenAddress,
|
|
@@ -7735,7 +7722,7 @@ var useDeposit = (options) => {
|
|
|
7735
7722
|
},
|
|
7736
7723
|
[account9, updateAllowanceWhenTxSuccess]
|
|
7737
7724
|
);
|
|
7738
|
-
const approve =
|
|
7725
|
+
const approve = React.useCallback(
|
|
7739
7726
|
async (amount) => {
|
|
7740
7727
|
if (!options.address) {
|
|
7741
7728
|
throw new Error("address is required");
|
|
@@ -7773,7 +7760,7 @@ var useDeposit = (options) => {
|
|
|
7773
7760
|
resetApprove
|
|
7774
7761
|
]
|
|
7775
7762
|
);
|
|
7776
|
-
const deposit =
|
|
7763
|
+
const deposit = React.useCallback(async () => {
|
|
7777
7764
|
await enquireAllowance();
|
|
7778
7765
|
const inputs = {
|
|
7779
7766
|
amount: quantity,
|
|
@@ -7838,8 +7825,8 @@ var useDeposit = (options) => {
|
|
|
7838
7825
|
};
|
|
7839
7826
|
function useBalance(options) {
|
|
7840
7827
|
const { srcToken, address, decimals, account: account9, status } = options;
|
|
7841
|
-
const [balance, setBalance] =
|
|
7842
|
-
const fetchBalance =
|
|
7828
|
+
const [balance, setBalance] = React.useState("0");
|
|
7829
|
+
const fetchBalance = React.useCallback(
|
|
7843
7830
|
async (address2, decimals2) => {
|
|
7844
7831
|
try {
|
|
7845
7832
|
if (types.isNativeTokenChecker(address2)) {
|
|
@@ -7862,26 +7849,26 @@ function useBalance(options) {
|
|
|
7862
7849
|
},
|
|
7863
7850
|
[srcToken, account9]
|
|
7864
7851
|
);
|
|
7865
|
-
const fetchBalances =
|
|
7852
|
+
const fetchBalances = React.useCallback(
|
|
7866
7853
|
async (tokens) => {
|
|
7867
7854
|
return account9.assetsManager.getBalances(tokens);
|
|
7868
7855
|
},
|
|
7869
7856
|
[account9]
|
|
7870
7857
|
);
|
|
7871
|
-
const key =
|
|
7858
|
+
const key = React.useMemo(() => {
|
|
7872
7859
|
if (!address || status < types.AccountStatusEnum.Connected) {
|
|
7873
7860
|
return null;
|
|
7874
7861
|
}
|
|
7875
7862
|
return ["balance", address, decimals];
|
|
7876
7863
|
}, [status, address, decimals]);
|
|
7877
|
-
const fetcher4 =
|
|
7864
|
+
const fetcher4 = React.useCallback(async () => {
|
|
7878
7865
|
if (!address) {
|
|
7879
7866
|
return "0";
|
|
7880
7867
|
}
|
|
7881
7868
|
const balance2 = await fetchBalance(address, decimals);
|
|
7882
7869
|
return balance2;
|
|
7883
7870
|
}, [address, decimals, fetchBalance]);
|
|
7884
|
-
const refreshInterval =
|
|
7871
|
+
const refreshInterval = React.useMemo(() => {
|
|
7885
7872
|
return account9.walletAdapter?.chainNamespace === types.ChainNamespace.solana ? 1e4 : 3e3;
|
|
7886
7873
|
}, [account9]);
|
|
7887
7874
|
const { data: swrBalance, isLoading: balanceRevalidating } = useSWR5__namespace.default(
|
|
@@ -7893,7 +7880,7 @@ function useBalance(options) {
|
|
|
7893
7880
|
errorRetryCount: 10
|
|
7894
7881
|
}
|
|
7895
7882
|
);
|
|
7896
|
-
|
|
7883
|
+
React.useEffect(() => {
|
|
7897
7884
|
if (swrBalance !== void 0) {
|
|
7898
7885
|
setBalance(swrBalance || "0");
|
|
7899
7886
|
}
|
|
@@ -7916,8 +7903,8 @@ function useAllowance(options) {
|
|
|
7916
7903
|
quantity,
|
|
7917
7904
|
chainId
|
|
7918
7905
|
} = options;
|
|
7919
|
-
const [allowance, setAllowance] =
|
|
7920
|
-
const fetchAllowance =
|
|
7906
|
+
const [allowance, setAllowance] = React.useState("0");
|
|
7907
|
+
const fetchAllowance = React.useCallback(
|
|
7921
7908
|
async (options2) => {
|
|
7922
7909
|
const { address: address2, decimals: decimals2, vaultAddress: vaultAddress2 } = options2;
|
|
7923
7910
|
if (!address2 || !decimals2 || !vaultAddress2) {
|
|
@@ -7935,16 +7922,16 @@ function useAllowance(options) {
|
|
|
7935
7922
|
},
|
|
7936
7923
|
[account9]
|
|
7937
7924
|
);
|
|
7938
|
-
const key =
|
|
7925
|
+
const key = React.useMemo(() => {
|
|
7939
7926
|
if (!address || !decimals || !vaultAddress || status < types.AccountStatusEnum.Connected) {
|
|
7940
7927
|
return null;
|
|
7941
7928
|
}
|
|
7942
7929
|
return ["allowance", address, vaultAddress, decimals];
|
|
7943
7930
|
}, [status, address, vaultAddress, decimals, account9]);
|
|
7944
|
-
const refreshInterval =
|
|
7931
|
+
const refreshInterval = React.useMemo(() => {
|
|
7945
7932
|
return account9.walletAdapter?.chainNamespace === types.ChainNamespace.solana ? 1e4 : 3e3;
|
|
7946
7933
|
}, [account9, chainId]);
|
|
7947
|
-
const fetcher4 =
|
|
7934
|
+
const fetcher4 = React.useCallback(async () => {
|
|
7948
7935
|
return fetchAllowance({ address, decimals, vaultAddress });
|
|
7949
7936
|
}, [address, decimals, vaultAddress, fetchAllowance]);
|
|
7950
7937
|
const {
|
|
@@ -7956,12 +7943,12 @@ function useAllowance(options) {
|
|
|
7956
7943
|
refreshInterval,
|
|
7957
7944
|
errorRetryCount: 10
|
|
7958
7945
|
});
|
|
7959
|
-
|
|
7946
|
+
React.useEffect(() => {
|
|
7960
7947
|
if (swrAllowance !== void 0) {
|
|
7961
7948
|
setAllowance(swrAllowance || "0");
|
|
7962
7949
|
}
|
|
7963
7950
|
}, [swrAllowance]);
|
|
7964
|
-
const updateAllowanceWhenTxSuccess =
|
|
7951
|
+
const updateAllowanceWhenTxSuccess = React.useCallback(
|
|
7965
7952
|
(txHash) => {
|
|
7966
7953
|
return account9.walletAdapter?.pollTransactionReceiptWithBackoff(txHash).then((receipt) => {
|
|
7967
7954
|
if (receipt.status === 1) {
|
|
@@ -7971,7 +7958,7 @@ function useAllowance(options) {
|
|
|
7971
7958
|
},
|
|
7972
7959
|
[account9]
|
|
7973
7960
|
);
|
|
7974
|
-
const enquireAllowance =
|
|
7961
|
+
const enquireAllowance = React.useCallback(async () => {
|
|
7975
7962
|
const _allowance = await fetchAllowance({
|
|
7976
7963
|
address,
|
|
7977
7964
|
decimals,
|
|
@@ -8001,7 +7988,7 @@ function useDepositFee(options) {
|
|
|
8001
7988
|
isNativeToken,
|
|
8002
7989
|
dst
|
|
8003
7990
|
} = options;
|
|
8004
|
-
const getDepositFee =
|
|
7991
|
+
const getDepositFee = React.useCallback(
|
|
8005
7992
|
async (quantity2) => {
|
|
8006
7993
|
if (!quantity2 || Number(quantity2) === 0 || isNaN(Number(quantity2))) {
|
|
8007
7994
|
return 0n;
|
|
@@ -8041,7 +8028,7 @@ function useDepositFee(options) {
|
|
|
8041
8028
|
dst
|
|
8042
8029
|
]
|
|
8043
8030
|
);
|
|
8044
|
-
const key =
|
|
8031
|
+
const key = React.useMemo(() => {
|
|
8045
8032
|
if (!dst?.address || !decimals || !vaultAddress || !dstToken || !quantity || !targetChain?.network_infos?.chain_id) {
|
|
8046
8033
|
return null;
|
|
8047
8034
|
}
|
|
@@ -8055,7 +8042,7 @@ function useDepositFee(options) {
|
|
|
8055
8042
|
quantity
|
|
8056
8043
|
];
|
|
8057
8044
|
}, [quantity, targetChain, decimals, dstToken, dst, vaultAddress]);
|
|
8058
|
-
const fetcher4 =
|
|
8045
|
+
const fetcher4 = React.useCallback(async () => {
|
|
8059
8046
|
const res = await getDepositFee(quantity);
|
|
8060
8047
|
return res;
|
|
8061
8048
|
}, [getDepositFee, quantity]);
|
|
@@ -8066,7 +8053,7 @@ function useDepositFee(options) {
|
|
|
8066
8053
|
} = useSWR5__namespace.default(key, fetcher4, {
|
|
8067
8054
|
revalidateOnFocus: true
|
|
8068
8055
|
});
|
|
8069
|
-
const depositFee =
|
|
8056
|
+
const depositFee = React.useMemo(() => {
|
|
8070
8057
|
const fee = data ?? 0n;
|
|
8071
8058
|
return BigInt(
|
|
8072
8059
|
new utils.Decimal(fee.toString()).mul(types.DEPOSIT_FEE_RATE).toFixed(0, utils.Decimal.ROUND_UP).toString()
|
|
@@ -8077,7 +8064,7 @@ function useDepositFee(options) {
|
|
|
8077
8064
|
function useTargetChain(srcChainId) {
|
|
8078
8065
|
const networkId = useConfig("networkId");
|
|
8079
8066
|
const [_, { findByChainId }] = useChains(void 0);
|
|
8080
|
-
const targetChain =
|
|
8067
|
+
const targetChain = React.useMemo(() => {
|
|
8081
8068
|
let chain;
|
|
8082
8069
|
if (networkId === "testnet") {
|
|
8083
8070
|
chain = findByChainId(
|
|
@@ -8124,7 +8111,7 @@ var useTransfer = (options) => {
|
|
|
8124
8111
|
accountId: fromAccountId
|
|
8125
8112
|
}
|
|
8126
8113
|
);
|
|
8127
|
-
const transfer =
|
|
8114
|
+
const transfer = React.useCallback(
|
|
8128
8115
|
async (token2, receivers) => {
|
|
8129
8116
|
return doTransfer({
|
|
8130
8117
|
token: token2,
|
|
@@ -8150,9 +8137,9 @@ var useTransfer = (options) => {
|
|
|
8150
8137
|
};
|
|
8151
8138
|
};
|
|
8152
8139
|
var useInternalTransfer = () => {
|
|
8153
|
-
const [submitting, setSubmitting] =
|
|
8140
|
+
const [submitting, setSubmitting] = React.useState(false);
|
|
8154
8141
|
const { account: account9 } = useAccount();
|
|
8155
|
-
const transfer =
|
|
8142
|
+
const transfer = React.useCallback(
|
|
8156
8143
|
async (inputs) => {
|
|
8157
8144
|
setSubmitting(true);
|
|
8158
8145
|
return account9.assetsManager.internalTransfer(inputs).then((res) => {
|
|
@@ -8224,7 +8211,7 @@ var useBalanceSubscription = (options) => {
|
|
|
8224
8211
|
var useWalletTopic = (options) => {
|
|
8225
8212
|
const ws = useWS();
|
|
8226
8213
|
const { state } = useAccount();
|
|
8227
|
-
|
|
8214
|
+
React.useEffect(() => {
|
|
8228
8215
|
if (!state.accountId) return;
|
|
8229
8216
|
const unsubscribe = ws.privateSubscribe(
|
|
8230
8217
|
{
|
|
@@ -8245,7 +8232,7 @@ var useWalletTopic = (options) => {
|
|
|
8245
8232
|
var useBalanceTopic = (options) => {
|
|
8246
8233
|
const ws = useWS();
|
|
8247
8234
|
const { state } = useAccount();
|
|
8248
|
-
|
|
8235
|
+
React.useEffect(() => {
|
|
8249
8236
|
if (!state.accountId) return;
|
|
8250
8237
|
const unsubscribe = ws.privateSubscribe(
|
|
8251
8238
|
{
|
|
@@ -8303,7 +8290,7 @@ var usePrivateDataObserver = (options) => {
|
|
|
8303
8290
|
revalidateOnFocus: false
|
|
8304
8291
|
}
|
|
8305
8292
|
);
|
|
8306
|
-
|
|
8293
|
+
React.useEffect(() => {
|
|
8307
8294
|
if (clientInfo) {
|
|
8308
8295
|
setAccountInfo(clientInfo);
|
|
8309
8296
|
}
|
|
@@ -8315,7 +8302,7 @@ var usePrivateDataObserver = (options) => {
|
|
|
8315
8302
|
}
|
|
8316
8303
|
// revalidateOnFocus: false,
|
|
8317
8304
|
});
|
|
8318
|
-
|
|
8305
|
+
React.useEffect(() => {
|
|
8319
8306
|
const handler = (state2) => {
|
|
8320
8307
|
if (!state2.accountId) {
|
|
8321
8308
|
calculatorService.stop();
|
|
@@ -8328,12 +8315,12 @@ var usePrivateDataObserver = (options) => {
|
|
|
8328
8315
|
account9.off(core.EVENT_NAMES.statusChanged, handler);
|
|
8329
8316
|
};
|
|
8330
8317
|
}, []);
|
|
8331
|
-
|
|
8318
|
+
React.useEffect(() => {
|
|
8332
8319
|
if (isPositionLoading) {
|
|
8333
8320
|
statusActions.updateApiLoading("positions", isPositionLoading);
|
|
8334
8321
|
}
|
|
8335
8322
|
}, [isPositionLoading, statusActions]);
|
|
8336
|
-
|
|
8323
|
+
React.useEffect(() => {
|
|
8337
8324
|
if (positions3 && Array.isArray(positions3.rows)) {
|
|
8338
8325
|
calculatorService.calc("position" /* POSITION */, positions3);
|
|
8339
8326
|
}
|
|
@@ -8345,7 +8332,7 @@ var usePrivateDataObserver = (options) => {
|
|
|
8345
8332
|
// revalidateOnFocus: false,
|
|
8346
8333
|
}
|
|
8347
8334
|
);
|
|
8348
|
-
|
|
8335
|
+
React.useEffect(() => {
|
|
8349
8336
|
if (!account9.accountId) return;
|
|
8350
8337
|
const unsubscribe = ws.privateSubscribe(
|
|
8351
8338
|
{
|
|
@@ -8365,11 +8352,11 @@ var usePrivateDataObserver = (options) => {
|
|
|
8365
8352
|
);
|
|
8366
8353
|
return () => unsubscribe?.();
|
|
8367
8354
|
}, [account9.accountId]);
|
|
8368
|
-
const isHoldingInit =
|
|
8369
|
-
|
|
8355
|
+
const isHoldingInit = React.useRef(false);
|
|
8356
|
+
React.useEffect(() => {
|
|
8370
8357
|
isHoldingInit.current = false;
|
|
8371
8358
|
}, [state.address]);
|
|
8372
|
-
|
|
8359
|
+
React.useEffect(() => {
|
|
8373
8360
|
if (!holding) {
|
|
8374
8361
|
return;
|
|
8375
8362
|
}
|
|
@@ -8427,7 +8414,7 @@ var usePrivateDataObserver = (options) => {
|
|
|
8427
8414
|
fieldChanges
|
|
8428
8415
|
});
|
|
8429
8416
|
};
|
|
8430
|
-
|
|
8417
|
+
React.useEffect(() => {
|
|
8431
8418
|
if (!state.accountId) {
|
|
8432
8419
|
return;
|
|
8433
8420
|
}
|
|
@@ -8441,7 +8428,7 @@ var usePrivateDataObserver = (options) => {
|
|
|
8441
8428
|
});
|
|
8442
8429
|
return () => unsubscribe?.();
|
|
8443
8430
|
}, [state.accountId, subOrder]);
|
|
8444
|
-
|
|
8431
|
+
React.useEffect(() => {
|
|
8445
8432
|
if (!state.accountId) return;
|
|
8446
8433
|
if (subOrder !== true) return;
|
|
8447
8434
|
const unsubscribe = ws.privateSubscribe("algoexecutionreport", {
|
|
@@ -8451,7 +8438,7 @@ var usePrivateDataObserver = (options) => {
|
|
|
8451
8438
|
});
|
|
8452
8439
|
return () => unsubscribe?.();
|
|
8453
8440
|
}, [state.accountId, subOrder]);
|
|
8454
|
-
|
|
8441
|
+
React.useEffect(() => {
|
|
8455
8442
|
if (!state.accountId) return;
|
|
8456
8443
|
const key = ["/v1/positions", state.accountId];
|
|
8457
8444
|
const unsubscribe = ws.privateSubscribe("account", {
|
|
@@ -8480,7 +8467,7 @@ var usePrivateDataObserver = (options) => {
|
|
|
8480
8467
|
});
|
|
8481
8468
|
return () => unsubscribe?.();
|
|
8482
8469
|
}, [state.accountId]);
|
|
8483
|
-
|
|
8470
|
+
React.useEffect(() => {
|
|
8484
8471
|
if (!state.accountId) {
|
|
8485
8472
|
return;
|
|
8486
8473
|
}
|
|
@@ -8535,7 +8522,7 @@ var useSymbolPriceRange = (symbol, side, price) => {
|
|
|
8535
8522
|
const priceScrope = config?.[symbol]("price_scope");
|
|
8536
8523
|
const { data: prices } = useMarkPricesStream();
|
|
8537
8524
|
const markPrice = price || prices?.[symbol];
|
|
8538
|
-
const range =
|
|
8525
|
+
const range = React.useMemo(() => {
|
|
8539
8526
|
if (config === void 0 || markPrice === void 0) {
|
|
8540
8527
|
return void 0;
|
|
8541
8528
|
}
|
|
@@ -10475,7 +10462,7 @@ function appendOrderMetadata(order, orderMetadata) {
|
|
|
10475
10462
|
// src/orderly/useTakeProfitAndStopLoss/useTPSL.ts
|
|
10476
10463
|
var useTaskProfitAndStopLossInternal = (position, options) => {
|
|
10477
10464
|
const isEditing = typeof options?.isEditing !== "undefined" ? options.isEditing : !!options?.defaultOrder;
|
|
10478
|
-
const [order, setOrder] =
|
|
10465
|
+
const [order, setOrder] = React.useState({
|
|
10479
10466
|
algo_order_id: options?.defaultOrder?.algo_order_id,
|
|
10480
10467
|
symbol: position.symbol,
|
|
10481
10468
|
side: Number(position.position_qty) > 0 ? types.OrderSide.BUY : types.OrderSide.SELL,
|
|
@@ -10500,15 +10487,15 @@ var useTaskProfitAndStopLossInternal = (position, options) => {
|
|
|
10500
10487
|
const [doCreateOrder, { isMutating: isCreateMutating }] = useSubAccountMutation("/v1/algo/order");
|
|
10501
10488
|
const [doUpdateOrder, { isMutating: isUpdateMutating }] = useSubAccountMutation("/v1/algo/order", "PUT");
|
|
10502
10489
|
const [doDeleteOrder] = useMutation("/v1/algo/order", "DELETE");
|
|
10503
|
-
const [errors, setErrors] =
|
|
10504
|
-
const [meta, setMeta] =
|
|
10490
|
+
const [errors, setErrors] = React.useState(null);
|
|
10491
|
+
const [meta, setMeta] = React.useState({
|
|
10505
10492
|
dirty: {},
|
|
10506
10493
|
submitted: false,
|
|
10507
10494
|
validated: false,
|
|
10508
10495
|
errors: null
|
|
10509
10496
|
});
|
|
10510
10497
|
const { orderMetadata } = useOrderlyContext();
|
|
10511
|
-
|
|
10498
|
+
React.useEffect(() => {
|
|
10512
10499
|
if (!isEditing || !options?.defaultOrder) return;
|
|
10513
10500
|
const trigger_prices = findTPSLFromOrder(options.defaultOrder);
|
|
10514
10501
|
const order2 = {};
|
|
@@ -10781,12 +10768,12 @@ var useMaxLeverage = (symbol) => {
|
|
|
10781
10768
|
const symbolsInfo = useSymbolsInfo();
|
|
10782
10769
|
const accountInfo = useAccountInfo();
|
|
10783
10770
|
const maxAccountLeverage = accountInfo?.max_leverage;
|
|
10784
|
-
const maxSymbolLeverage =
|
|
10771
|
+
const maxSymbolLeverage = React.useMemo(() => {
|
|
10785
10772
|
const symbolInfo = symbolsInfo[symbol];
|
|
10786
10773
|
const baseIMR = symbolInfo("base_imr");
|
|
10787
10774
|
return baseIMR ? 1 / baseIMR : 1;
|
|
10788
10775
|
}, [symbolsInfo, symbol]);
|
|
10789
|
-
const maxLeverage =
|
|
10776
|
+
const maxLeverage = React.useMemo(() => {
|
|
10790
10777
|
if (!maxAccountLeverage || !maxSymbolLeverage) {
|
|
10791
10778
|
return 1;
|
|
10792
10779
|
}
|
|
@@ -10797,7 +10784,7 @@ var useMaxLeverage = (symbol) => {
|
|
|
10797
10784
|
var useSymbolLeverage = (symbol) => {
|
|
10798
10785
|
const symbolInfo = useSymbolInfo(symbol);
|
|
10799
10786
|
const [update, { isMutating }] = useMutation("/v1/client/leverage");
|
|
10800
|
-
const maxLeverage =
|
|
10787
|
+
const maxLeverage = React.useMemo(() => {
|
|
10801
10788
|
const baseIMR = symbolInfo?.("base_imr");
|
|
10802
10789
|
return baseIMR ? 1 / baseIMR : 1;
|
|
10803
10790
|
}, [symbolInfo]);
|
|
@@ -10857,13 +10844,13 @@ var useAssetsHistory = (options, config) => {
|
|
|
10857
10844
|
// delay in ms
|
|
10858
10845
|
300
|
|
10859
10846
|
);
|
|
10860
|
-
|
|
10847
|
+
React.useEffect(() => {
|
|
10861
10848
|
ee.on("wallet:changed", updateList);
|
|
10862
10849
|
return () => {
|
|
10863
10850
|
ee.off("wallet:changed", updateList);
|
|
10864
10851
|
};
|
|
10865
10852
|
}, []);
|
|
10866
|
-
return
|
|
10853
|
+
return React.useMemo(
|
|
10867
10854
|
() => [data?.rows ?? types.EMPTY_LIST, { meta: data?.meta, isLoading }],
|
|
10868
10855
|
[data?.rows, data?.meta, isLoading]
|
|
10869
10856
|
);
|
|
@@ -10881,7 +10868,7 @@ var useStatisticsDaily = (params, options) => {
|
|
|
10881
10868
|
const diff = new Date(endDate2).getTime() - new Date(startDate2).getTime();
|
|
10882
10869
|
return diff / (1e3 * 60 * 60 * 24);
|
|
10883
10870
|
};
|
|
10884
|
-
const key =
|
|
10871
|
+
const key = React.useMemo(() => {
|
|
10885
10872
|
const searchParams = new URLSearchParams();
|
|
10886
10873
|
searchParams.set("page", page.toString());
|
|
10887
10874
|
searchParams.set(
|
|
@@ -10911,7 +10898,7 @@ var useStatisticsDaily = (params, options) => {
|
|
|
10911
10898
|
},
|
|
10912
10899
|
revalidateOnFocus: false
|
|
10913
10900
|
});
|
|
10914
|
-
const aggregateValue =
|
|
10901
|
+
const aggregateValue = React.useMemo(() => {
|
|
10915
10902
|
if (ignoreAggregation) {
|
|
10916
10903
|
return { vol: null, pnl: null, roi: null };
|
|
10917
10904
|
}
|
|
@@ -10928,11 +10915,23 @@ var useStatisticsDaily = (params, options) => {
|
|
|
10928
10915
|
}
|
|
10929
10916
|
return { vol: vol.toNumber(), pnl: pnl.toNumber(), roi: roi.toNumber() };
|
|
10930
10917
|
}, [data]);
|
|
10931
|
-
return
|
|
10918
|
+
return React.useMemo(
|
|
10932
10919
|
() => [data ?? types.EMPTY_LIST, { aggregateValue }],
|
|
10933
10920
|
[data, aggregateValue]
|
|
10934
10921
|
);
|
|
10935
10922
|
};
|
|
10923
|
+
var useUserStatistics = () => {
|
|
10924
|
+
const { data, isValidating } = usePrivateQuery(
|
|
10925
|
+
"/v1/client/statistics",
|
|
10926
|
+
{
|
|
10927
|
+
revalidateOnFocus: false
|
|
10928
|
+
}
|
|
10929
|
+
);
|
|
10930
|
+
return React.useMemo(
|
|
10931
|
+
() => [data ?? null, { isValidating }],
|
|
10932
|
+
[data, isValidating]
|
|
10933
|
+
);
|
|
10934
|
+
};
|
|
10936
10935
|
var useFundingFeeHistory = (params, options) => {
|
|
10937
10936
|
const { symbol, dataRange, page = 1, pageSize = 10 } = params;
|
|
10938
10937
|
const infos = useSymbolsInfo();
|
|
@@ -10957,7 +10956,7 @@ var useFundingFeeHistory = (params, options) => {
|
|
|
10957
10956
|
// keepPreviousData: true,
|
|
10958
10957
|
...options
|
|
10959
10958
|
});
|
|
10960
|
-
const parsedData =
|
|
10959
|
+
const parsedData = React.useMemo(() => {
|
|
10961
10960
|
if (!data || !Array.isArray(data?.rows) || infos.isNil) {
|
|
10962
10961
|
return null;
|
|
10963
10962
|
}
|
|
@@ -10969,7 +10968,7 @@ var useFundingFeeHistory = (params, options) => {
|
|
|
10969
10968
|
};
|
|
10970
10969
|
});
|
|
10971
10970
|
}, [data, infos]);
|
|
10972
|
-
return
|
|
10971
|
+
return React.useMemo(
|
|
10973
10972
|
() => [parsedData, { meta: data?.meta, isLoading, isValidating }],
|
|
10974
10973
|
[parsedData, data?.meta, isLoading, isValidating]
|
|
10975
10974
|
);
|
|
@@ -10996,7 +10995,7 @@ var useDistributionHistory = (parmas) => {
|
|
|
10996
10995
|
revalidateOnFocus: false,
|
|
10997
10996
|
errorRetryCount: 3
|
|
10998
10997
|
});
|
|
10999
|
-
const parsedData =
|
|
10998
|
+
const parsedData = React.useMemo(() => {
|
|
11000
10999
|
if (!Array.isArray(data?.rows) || !data?.rows.length || infos.isNil) {
|
|
11001
11000
|
return [];
|
|
11002
11001
|
}
|
|
@@ -11008,7 +11007,7 @@ var useDistributionHistory = (parmas) => {
|
|
|
11008
11007
|
};
|
|
11009
11008
|
});
|
|
11010
11009
|
}, [data, infos]);
|
|
11011
|
-
return
|
|
11010
|
+
return React.useMemo(
|
|
11012
11011
|
() => [
|
|
11013
11012
|
parsedData ?? types.EMPTY_LIST,
|
|
11014
11013
|
{ meta: data?.meta, isLoading, isValidating }
|
|
@@ -11019,7 +11018,7 @@ var useDistributionHistory = (parmas) => {
|
|
|
11019
11018
|
var useTransferHistory = (parmas) => {
|
|
11020
11019
|
const { dataRange, page, size, side, fromId, toId, main_sub_only } = parmas;
|
|
11021
11020
|
const infos = useSymbolsInfo();
|
|
11022
|
-
const memoizedQueryKey =
|
|
11021
|
+
const memoizedQueryKey = React.useMemo(() => {
|
|
11023
11022
|
const search = new URLSearchParams();
|
|
11024
11023
|
search.set("page", page.toString());
|
|
11025
11024
|
search.set("size", size.toString());
|
|
@@ -11042,13 +11041,13 @@ var useTransferHistory = (parmas) => {
|
|
|
11042
11041
|
errorRetryCount: 3
|
|
11043
11042
|
}
|
|
11044
11043
|
);
|
|
11045
|
-
const parsedData =
|
|
11044
|
+
const parsedData = React.useMemo(() => {
|
|
11046
11045
|
if (!Array.isArray(data?.rows) || !data?.rows.length || infos.isNil) {
|
|
11047
11046
|
return [];
|
|
11048
11047
|
}
|
|
11049
11048
|
return data.rows;
|
|
11050
11049
|
}, [data, infos]);
|
|
11051
|
-
return
|
|
11050
|
+
return React.useMemo(
|
|
11052
11051
|
() => [
|
|
11053
11052
|
parsedData ?? types.EMPTY_LIST,
|
|
11054
11053
|
{ meta: data?.meta, isLoading, mutate: mutate6 }
|
|
@@ -11059,7 +11058,7 @@ var useTransferHistory = (parmas) => {
|
|
|
11059
11058
|
var useVaultsHistory = (parmas) => {
|
|
11060
11059
|
const { dataRange, page, size } = parmas;
|
|
11061
11060
|
const infos = useSymbolsInfo();
|
|
11062
|
-
const memoizedQueryKey =
|
|
11061
|
+
const memoizedQueryKey = React__default.default.useMemo(() => {
|
|
11063
11062
|
const search = new URLSearchParams();
|
|
11064
11063
|
search.set("page", page.toString());
|
|
11065
11064
|
search.set("size", size.toString());
|
|
@@ -11077,13 +11076,13 @@ var useVaultsHistory = (parmas) => {
|
|
|
11077
11076
|
errorRetryCount: 3
|
|
11078
11077
|
}
|
|
11079
11078
|
);
|
|
11080
|
-
const parsedData =
|
|
11079
|
+
const parsedData = React__default.default.useMemo(() => {
|
|
11081
11080
|
if (!Array.isArray(data?.rows) || !data?.rows.length || infos.isNil) {
|
|
11082
11081
|
return [];
|
|
11083
11082
|
}
|
|
11084
11083
|
return data.rows;
|
|
11085
11084
|
}, [data, infos]);
|
|
11086
|
-
return
|
|
11085
|
+
return React.useMemo(
|
|
11087
11086
|
() => [parsedData ?? types.EMPTY_LIST, { meta: data?.meta, isLoading, mutate: mutate6 }],
|
|
11088
11087
|
[parsedData, data?.meta, isLoading, mutate6]
|
|
11089
11088
|
);
|
|
@@ -11094,10 +11093,10 @@ var MaintenanceStatus = /* @__PURE__ */ ((MaintenanceStatus2) => {
|
|
|
11094
11093
|
return MaintenanceStatus2;
|
|
11095
11094
|
})(MaintenanceStatus || {});
|
|
11096
11095
|
var useMaintenanceStatus = () => {
|
|
11097
|
-
const [status, setStatus] =
|
|
11098
|
-
const [startTime, setStartTime] =
|
|
11099
|
-
const [endTime, setEndTime] =
|
|
11100
|
-
const [brokerName, setBrokerName] =
|
|
11096
|
+
const [status, setStatus] = React.useState(0 /* None */);
|
|
11097
|
+
const [startTime, setStartTime] = React.useState();
|
|
11098
|
+
const [endTime, setEndTime] = React.useState();
|
|
11099
|
+
const [brokerName, setBrokerName] = React.useState("Orderly network");
|
|
11101
11100
|
const { data: systemInfo } = useQuery(
|
|
11102
11101
|
`/v1/public/system_info?source=maintenance`,
|
|
11103
11102
|
{
|
|
@@ -11108,7 +11107,7 @@ var useMaintenanceStatus = () => {
|
|
|
11108
11107
|
);
|
|
11109
11108
|
const ws = useWS();
|
|
11110
11109
|
const config = useConfig();
|
|
11111
|
-
|
|
11110
|
+
React.useEffect(() => {
|
|
11112
11111
|
if (!systemInfo) {
|
|
11113
11112
|
return;
|
|
11114
11113
|
}
|
|
@@ -11124,7 +11123,7 @@ var useMaintenanceStatus = () => {
|
|
|
11124
11123
|
setStatus(2 /* Maintenance */);
|
|
11125
11124
|
}
|
|
11126
11125
|
}, [systemInfo, config]);
|
|
11127
|
-
|
|
11126
|
+
React.useEffect(() => {
|
|
11128
11127
|
const unsubscribe = ws.subscribe(`maintenance_status`, {
|
|
11129
11128
|
onMessage: (message) => {
|
|
11130
11129
|
setStatus(message.status);
|
|
@@ -11164,12 +11163,13 @@ var useTokensInfo = () => {
|
|
|
11164
11163
|
};
|
|
11165
11164
|
var useTokenInfo = (token) => {
|
|
11166
11165
|
const tokensInfo = useAppStore((state) => state.tokensInfo);
|
|
11167
|
-
return
|
|
11166
|
+
return React.useMemo(() => {
|
|
11168
11167
|
return tokensInfo?.find((item) => item.token === token);
|
|
11169
11168
|
}, [tokensInfo, token]);
|
|
11170
11169
|
};
|
|
11171
11170
|
var useFutures = () => {
|
|
11172
11171
|
const { dataAdapter } = useOrderlyContext();
|
|
11172
|
+
const rwaSymbolsInfo = useRwaSymbolsInfoStore();
|
|
11173
11173
|
const { data } = useQuery("/v1/public/futures", {
|
|
11174
11174
|
// 24 hours
|
|
11175
11175
|
focusThrottleInterval: 1e3 * 60 * 60 * 24,
|
|
@@ -11184,12 +11184,14 @@ var useFutures = () => {
|
|
|
11184
11184
|
// updateMarket(data as API.MarketInfoExt[]);
|
|
11185
11185
|
// },
|
|
11186
11186
|
});
|
|
11187
|
-
const futures =
|
|
11187
|
+
const futures = React.useMemo(() => {
|
|
11188
11188
|
if (Array.isArray(data)) {
|
|
11189
|
-
return typeof dataAdapter?.symbolList === "function" ? dataAdapter.symbolList(data
|
|
11189
|
+
return typeof dataAdapter?.symbolList === "function" ? dataAdapter.symbolList(data, {
|
|
11190
|
+
rwaSymbolsInfo
|
|
11191
|
+
}) : data;
|
|
11190
11192
|
}
|
|
11191
11193
|
return [];
|
|
11192
|
-
}, [data, dataAdapter?.symbolList]);
|
|
11194
|
+
}, [data, dataAdapter?.symbolList, rwaSymbolsInfo]);
|
|
11193
11195
|
return {
|
|
11194
11196
|
data: futures
|
|
11195
11197
|
};
|
|
@@ -11208,7 +11210,7 @@ var usePublicDataObserver = () => {
|
|
|
11208
11210
|
(state) => state.actions
|
|
11209
11211
|
);
|
|
11210
11212
|
const symbols = useSymbolStore((state) => state.data);
|
|
11211
|
-
|
|
11213
|
+
React.useEffect(() => {
|
|
11212
11214
|
if (!symbols || !symbols?.length) {
|
|
11213
11215
|
return;
|
|
11214
11216
|
}
|
|
@@ -11272,7 +11274,7 @@ var usePublicDataObserver = () => {
|
|
|
11272
11274
|
});
|
|
11273
11275
|
const { data: futures } = useFutures();
|
|
11274
11276
|
const { updateMarket } = useMarketStore((state) => state.actions);
|
|
11275
|
-
|
|
11277
|
+
React.useEffect(() => {
|
|
11276
11278
|
updateMarket(futures);
|
|
11277
11279
|
}, [futures]);
|
|
11278
11280
|
};
|
|
@@ -11287,9 +11289,9 @@ function getEstFundingRate(data) {
|
|
|
11287
11289
|
return est_funding_rate;
|
|
11288
11290
|
}
|
|
11289
11291
|
var useDatabaseInitialization = () => {
|
|
11290
|
-
const [isInitialized, setIsInitialized] =
|
|
11291
|
-
const [error, setError] =
|
|
11292
|
-
|
|
11292
|
+
const [isInitialized, setIsInitialized] = React.useState(false);
|
|
11293
|
+
const [error, setError] = React.useState(null);
|
|
11294
|
+
React.useEffect(() => {
|
|
11293
11295
|
const initialize = async () => {
|
|
11294
11296
|
try {
|
|
11295
11297
|
await initializeAppDatabase(DEFAULT_DATABASE_CONFIG);
|
|
@@ -11311,13 +11313,13 @@ var DataCenterProvider = ({
|
|
|
11311
11313
|
const calculatorService = useCalculatorService();
|
|
11312
11314
|
usePublicDataObserver();
|
|
11313
11315
|
useWSObserver(calculatorService);
|
|
11314
|
-
const getKeyHandlerMapRef =
|
|
11316
|
+
const getKeyHandlerMapRef = React.useRef(/* @__PURE__ */ new Map());
|
|
11315
11317
|
usePrivateDataObserver({
|
|
11316
11318
|
getKeysMap(type) {
|
|
11317
11319
|
return getKeyHandlerMapRef.current;
|
|
11318
11320
|
}
|
|
11319
11321
|
});
|
|
11320
|
-
const memoizedValue =
|
|
11322
|
+
const memoizedValue = React.useMemo(() => {
|
|
11321
11323
|
return {
|
|
11322
11324
|
registerKeyHandler: (key, fun) => {
|
|
11323
11325
|
getKeyHandlerMapRef.current.set(key, fun);
|
|
@@ -11333,7 +11335,7 @@ var DataCenterProvider = ({
|
|
|
11333
11335
|
return /* @__PURE__ */ jsxRuntime.jsx(DataCenterContext.Provider, { value: memoizedValue, children });
|
|
11334
11336
|
};
|
|
11335
11337
|
var OrderlyConfigProvider = (props) => {
|
|
11336
|
-
const [account9, setAccount] =
|
|
11338
|
+
const [account9, setAccount] = React__default.default.useState(null);
|
|
11337
11339
|
const {
|
|
11338
11340
|
configStore,
|
|
11339
11341
|
keyStore,
|
|
@@ -11363,7 +11365,7 @@ var OrderlyConfigProvider = (props) => {
|
|
|
11363
11365
|
"If you have provided a custom `configStore` and the `brokerId` is set in the `configStore`, please remove the `brokerId` prop."
|
|
11364
11366
|
);
|
|
11365
11367
|
}
|
|
11366
|
-
const innerConfigStore =
|
|
11368
|
+
const innerConfigStore = React.useMemo(() => {
|
|
11367
11369
|
return new ProxyConfigStore(
|
|
11368
11370
|
configStore || new ExtendedConfigStore({
|
|
11369
11371
|
brokerId,
|
|
@@ -11372,22 +11374,22 @@ var OrderlyConfigProvider = (props) => {
|
|
|
11372
11374
|
})
|
|
11373
11375
|
);
|
|
11374
11376
|
}, [configStore, brokerId, brokerName, networkId]);
|
|
11375
|
-
const innerKeyStore =
|
|
11377
|
+
const innerKeyStore = React.useMemo(() => {
|
|
11376
11378
|
return keyStore || new core.LocalStorageStore(networkId);
|
|
11377
11379
|
}, [networkId, keyStore]);
|
|
11378
|
-
const innerWalletAdapters =
|
|
11380
|
+
const innerWalletAdapters = React.useMemo(() => {
|
|
11379
11381
|
return walletAdapters || [
|
|
11380
11382
|
new defaultEvmAdapter.DefaultEVMWalletAdapter(new web3ProviderEthers.EthersProvider()),
|
|
11381
11383
|
new defaultSolanaAdapter.DefaultSolanaWalletAdapter()
|
|
11382
11384
|
];
|
|
11383
11385
|
}, [walletAdapters]);
|
|
11384
|
-
const defaultOrderbookTickSizes =
|
|
11386
|
+
const defaultOrderbookTickSizes = React.useMemo(() => {
|
|
11385
11387
|
return orderbookDefaultTickSizes || DEFAULT_TICK_SIZES;
|
|
11386
11388
|
}, [orderbookDefaultTickSizes]);
|
|
11387
|
-
const defaultOrderbookSymbolDepths =
|
|
11389
|
+
const defaultOrderbookSymbolDepths = React.useMemo(() => {
|
|
11388
11390
|
return orderbookDefaultSymbolDepths || DEFAULT_SYMBOL_DEPTHS;
|
|
11389
11391
|
}, [orderbookDefaultSymbolDepths]);
|
|
11390
|
-
|
|
11392
|
+
React.useLayoutEffect(() => {
|
|
11391
11393
|
let account10 = core.SimpleDI.get(core.Account.instanceName);
|
|
11392
11394
|
if (!account10) {
|
|
11393
11395
|
account10 = new core.Account(
|
|
@@ -11403,13 +11405,13 @@ var OrderlyConfigProvider = (props) => {
|
|
|
11403
11405
|
}
|
|
11404
11406
|
setAccount(account10);
|
|
11405
11407
|
}, []);
|
|
11406
|
-
const filteredChains =
|
|
11408
|
+
const filteredChains = React.useMemo(() => {
|
|
11407
11409
|
if (typeof chainFilter === "function") {
|
|
11408
11410
|
return chainFilter(innerConfigStore);
|
|
11409
11411
|
}
|
|
11410
11412
|
return chainFilter;
|
|
11411
11413
|
}, [chainFilter, innerConfigStore]);
|
|
11412
|
-
const memoizedValue =
|
|
11414
|
+
const memoizedValue = React.useMemo(() => {
|
|
11413
11415
|
return {
|
|
11414
11416
|
configStore: innerConfigStore,
|
|
11415
11417
|
keyStore: innerKeyStore,
|
|
@@ -11459,33 +11461,33 @@ function useOrderEntry(symbolOrOrder, sideOrOptions, reduceOnly, options) {
|
|
|
11459
11461
|
throw new types.SDKError("Order type is required");
|
|
11460
11462
|
}
|
|
11461
11463
|
}
|
|
11462
|
-
const prevOrderData =
|
|
11463
|
-
const orderDataCache =
|
|
11464
|
-
const notSupportData =
|
|
11465
|
-
const [errors, setErrors] =
|
|
11464
|
+
const prevOrderData = React.useRef(null);
|
|
11465
|
+
const orderDataCache = React.useRef(null);
|
|
11466
|
+
const notSupportData = React.useRef({});
|
|
11467
|
+
const [errors, setErrors] = React.useState(null);
|
|
11466
11468
|
const ee = useEventEmitter();
|
|
11467
11469
|
const positions3 = usePositions();
|
|
11468
|
-
const fieldDirty =
|
|
11469
|
-
const submitted =
|
|
11470
|
-
const askAndBid =
|
|
11470
|
+
const fieldDirty = React.useRef({});
|
|
11471
|
+
const submitted = React.useRef(false);
|
|
11472
|
+
const askAndBid = React.useRef([]);
|
|
11471
11473
|
const onOrderBookUpdate = useDebounce.useDebouncedCallback((data) => {
|
|
11472
11474
|
askAndBid.current = data;
|
|
11473
11475
|
}, 200);
|
|
11474
11476
|
const { freeCollateral, totalCollateral, accountInfo } = useCollateral();
|
|
11475
11477
|
const symbolInfo = useSymbolsInfo();
|
|
11476
|
-
const symbol =
|
|
11478
|
+
const symbol = React.useMemo(() => {
|
|
11477
11479
|
if (typeof symbolOrOrder === "string") {
|
|
11478
11480
|
return symbolOrOrder;
|
|
11479
11481
|
}
|
|
11480
11482
|
return symbolOrOrder.symbol;
|
|
11481
11483
|
}, [symbolOrOrder]);
|
|
11482
|
-
const optionsValue =
|
|
11484
|
+
const optionsValue = React.useMemo(() => {
|
|
11483
11485
|
if (typeof sideOrOptions === "object") {
|
|
11484
11486
|
return sideOrOptions;
|
|
11485
11487
|
}
|
|
11486
11488
|
return options;
|
|
11487
11489
|
}, [sideOrOptions]);
|
|
11488
|
-
const isReduceOnly =
|
|
11490
|
+
const isReduceOnly = React.useMemo(() => {
|
|
11489
11491
|
if (typeof reduceOnly === "boolean") {
|
|
11490
11492
|
return reduceOnly;
|
|
11491
11493
|
}
|
|
@@ -11494,24 +11496,24 @@ function useOrderEntry(symbolOrOrder, sideOrOptions, reduceOnly, options) {
|
|
|
11494
11496
|
}
|
|
11495
11497
|
return false;
|
|
11496
11498
|
}, [symbolOrOrder, reduceOnly]);
|
|
11497
|
-
const sideValue =
|
|
11499
|
+
const sideValue = React.useMemo(() => {
|
|
11498
11500
|
if (typeof symbolOrOrder === "object") {
|
|
11499
11501
|
return symbolOrOrder.side;
|
|
11500
11502
|
}
|
|
11501
11503
|
return sideOrOptions;
|
|
11502
11504
|
}, [symbolOrOrder, sideOrOptions]);
|
|
11503
|
-
const baseDP =
|
|
11505
|
+
const baseDP = React.useMemo(
|
|
11504
11506
|
() => utils.getPrecisionByNumber(symbolInfo[symbol]("base_tick", 0)),
|
|
11505
11507
|
[symbolInfo]
|
|
11506
11508
|
);
|
|
11507
|
-
const quoteDP =
|
|
11509
|
+
const quoteDP = React.useMemo(() => {
|
|
11508
11510
|
return utils.getPrecisionByNumber(symbolInfo[symbol]("quote_tick", 0));
|
|
11509
11511
|
}, [symbolInfo]);
|
|
11510
|
-
const baseIMR =
|
|
11512
|
+
const baseIMR = React.useMemo(
|
|
11511
11513
|
() => symbolInfo[symbol]("base_imr", 0),
|
|
11512
11514
|
[symbolInfo]
|
|
11513
11515
|
);
|
|
11514
|
-
const baseMMR =
|
|
11516
|
+
const baseMMR = React.useMemo(
|
|
11515
11517
|
() => symbolInfo[symbol]("base_mmr", 0),
|
|
11516
11518
|
[symbolInfo]
|
|
11517
11519
|
);
|
|
@@ -11555,7 +11557,7 @@ function useOrderEntry(symbolOrOrder, sideOrOptions, reduceOnly, options) {
|
|
|
11555
11557
|
}
|
|
11556
11558
|
}
|
|
11557
11559
|
};
|
|
11558
|
-
const needParse =
|
|
11560
|
+
const needParse = React.useMemo(() => {
|
|
11559
11561
|
if (typeof symbolOrOrder === "string") {
|
|
11560
11562
|
return null;
|
|
11561
11563
|
}
|
|
@@ -11575,7 +11577,7 @@ function useOrderEntry(symbolOrOrder, sideOrOptions, reduceOnly, options) {
|
|
|
11575
11577
|
symbolOrOrder
|
|
11576
11578
|
);
|
|
11577
11579
|
}, [symbolOrOrder]);
|
|
11578
|
-
const parsedData =
|
|
11580
|
+
const parsedData = React.useMemo(() => {
|
|
11579
11581
|
if (typeof symbolOrOrder === "string") {
|
|
11580
11582
|
return null;
|
|
11581
11583
|
}
|
|
@@ -11678,13 +11680,13 @@ function useOrderEntry(symbolOrOrder, sideOrOptions, reduceOnly, options) {
|
|
|
11678
11680
|
symbol
|
|
11679
11681
|
});
|
|
11680
11682
|
};
|
|
11681
|
-
const submit =
|
|
11683
|
+
const submit = React.useCallback(() => {
|
|
11682
11684
|
if (!parsedData) {
|
|
11683
11685
|
throw new types.SDKError("Function is not supported, please use onSubmit()");
|
|
11684
11686
|
}
|
|
11685
11687
|
return createOrder(parsedData);
|
|
11686
11688
|
}, [parsedData]);
|
|
11687
|
-
const calculate2 =
|
|
11689
|
+
const calculate2 = React.useCallback(
|
|
11688
11690
|
(values, field, value) => {
|
|
11689
11691
|
const fieldHandler = getCalculateHandler(field);
|
|
11690
11692
|
const newValues = ramda.compose(
|
|
@@ -11712,7 +11714,7 @@ function useOrderEntry(symbolOrOrder, sideOrOptions, reduceOnly, options) {
|
|
|
11712
11714
|
markPrice
|
|
11713
11715
|
});
|
|
11714
11716
|
};
|
|
11715
|
-
const formattedOrder =
|
|
11717
|
+
const formattedOrder = React.useMemo(() => {
|
|
11716
11718
|
if (!parsedData) {
|
|
11717
11719
|
return notSupportData.current;
|
|
11718
11720
|
}
|
|
@@ -11741,7 +11743,7 @@ function useOrderEntry(symbolOrOrder, sideOrOptions, reduceOnly, options) {
|
|
|
11741
11743
|
orderDataCache.current = values;
|
|
11742
11744
|
return values;
|
|
11743
11745
|
}, [parsedData, markPrice]);
|
|
11744
|
-
|
|
11746
|
+
React.useEffect(() => {
|
|
11745
11747
|
if (!markPrice || symbolInfo.isNil) return;
|
|
11746
11748
|
validator(formattedOrder)?.then((err) => {
|
|
11747
11749
|
setErrors(err);
|
|
@@ -11755,7 +11757,7 @@ function useOrderEntry(symbolOrOrder, sideOrOptions, reduceOnly, options) {
|
|
|
11755
11757
|
formattedOrder.order_type,
|
|
11756
11758
|
markPrice
|
|
11757
11759
|
]);
|
|
11758
|
-
|
|
11760
|
+
React.useEffect(() => {
|
|
11759
11761
|
if (isNewVersion) {
|
|
11760
11762
|
if (!optionsValue?.watchOrderbook) {
|
|
11761
11763
|
throw new types.SDKError(
|
|
@@ -11772,7 +11774,7 @@ function useOrderEntry(symbolOrOrder, sideOrOptions, reduceOnly, options) {
|
|
|
11772
11774
|
ee.off("orderbook:update", onOrderBookUpdate);
|
|
11773
11775
|
};
|
|
11774
11776
|
}, [optionsValue?.watchOrderbook]);
|
|
11775
|
-
|
|
11777
|
+
React.useEffect(() => {
|
|
11776
11778
|
askAndBid.current = [];
|
|
11777
11779
|
}, [parsedData?.symbol]);
|
|
11778
11780
|
const getPriceAndQty2 = (symbolOrOrder2) => {
|
|
@@ -11815,7 +11817,7 @@ function useOrderEntry(symbolOrOrder, sideOrOptions, reduceOnly, options) {
|
|
|
11815
11817
|
}
|
|
11816
11818
|
return { price, quantity };
|
|
11817
11819
|
};
|
|
11818
|
-
const estLiqPrice =
|
|
11820
|
+
const estLiqPrice = React.useMemo(() => {
|
|
11819
11821
|
if (!accountInfo || !parsedData || !markPrice) return null;
|
|
11820
11822
|
const result = getPriceAndQty2(formattedOrder);
|
|
11821
11823
|
if (result === null) return null;
|
|
@@ -11853,7 +11855,7 @@ function useOrderEntry(symbolOrOrder, sideOrOptions, reduceOnly, options) {
|
|
|
11853
11855
|
formattedOrder?.trigger_price,
|
|
11854
11856
|
accountInfo
|
|
11855
11857
|
]);
|
|
11856
|
-
const estLeverage =
|
|
11858
|
+
const estLeverage = React.useMemo(() => {
|
|
11857
11859
|
if (!accountInfo || !parsedData) return null;
|
|
11858
11860
|
const result = getPriceAndQty2(formattedOrder);
|
|
11859
11861
|
if (result === null || !result.price || !result.quantity) return null;
|
|
@@ -11909,11 +11911,11 @@ function useMediaQuery(query) {
|
|
|
11909
11911
|
}
|
|
11910
11912
|
return false;
|
|
11911
11913
|
};
|
|
11912
|
-
const [matches, setMatches] =
|
|
11914
|
+
const [matches, setMatches] = React.useState(getMatches(query));
|
|
11913
11915
|
function handleChange() {
|
|
11914
11916
|
setMatches(getMatches(query));
|
|
11915
11917
|
}
|
|
11916
|
-
|
|
11918
|
+
React.useEffect(() => {
|
|
11917
11919
|
const matchMedia = window?.matchMedia(query);
|
|
11918
11920
|
handleChange();
|
|
11919
11921
|
if (matchMedia?.addListener) {
|
|
@@ -12438,13 +12440,13 @@ var DefaultLayoutConfig = {
|
|
|
12438
12440
|
}
|
|
12439
12441
|
};
|
|
12440
12442
|
var usePoster = (data, options) => {
|
|
12441
|
-
const [error, setError] =
|
|
12442
|
-
const [canCopy, setCanCopy] =
|
|
12443
|
+
const [error, setError] = React.useState(null);
|
|
12444
|
+
const [canCopy, setCanCopy] = React.useState(
|
|
12443
12445
|
() => typeof navigator.clipboard !== "undefined"
|
|
12444
12446
|
);
|
|
12445
|
-
const painterRef =
|
|
12446
|
-
const [target, setTarget] =
|
|
12447
|
-
|
|
12447
|
+
const painterRef = React.useRef(null);
|
|
12448
|
+
const [target, setTarget] = React.useState(null);
|
|
12449
|
+
React.useEffect(() => {
|
|
12448
12450
|
if (target) {
|
|
12449
12451
|
if (!painterRef.current) {
|
|
12450
12452
|
painterRef.current = new PosterPainter(target, {
|
|
@@ -12466,7 +12468,7 @@ var usePoster = (data, options) => {
|
|
|
12466
12468
|
}
|
|
12467
12469
|
return target.toDataURL(type, encoderOptions);
|
|
12468
12470
|
};
|
|
12469
|
-
const toBlob =
|
|
12471
|
+
const toBlob = React.useCallback(
|
|
12470
12472
|
(type, encoderOptions) => {
|
|
12471
12473
|
return new Promise((resolve) => {
|
|
12472
12474
|
if (!target) {
|
|
@@ -12486,7 +12488,7 @@ var usePoster = (data, options) => {
|
|
|
12486
12488
|
}
|
|
12487
12489
|
setTarget(ref2);
|
|
12488
12490
|
};
|
|
12489
|
-
const download =
|
|
12491
|
+
const download = React.useCallback(
|
|
12490
12492
|
(filename, type = "image/png", encoderOptions) => {
|
|
12491
12493
|
if (!target) {
|
|
12492
12494
|
throw new types.SDKError("The ref must be a canvas element");
|
|
@@ -12500,7 +12502,7 @@ var usePoster = (data, options) => {
|
|
|
12500
12502
|
},
|
|
12501
12503
|
[target]
|
|
12502
12504
|
);
|
|
12503
|
-
const copy =
|
|
12505
|
+
const copy = React.useCallback(() => {
|
|
12504
12506
|
if (!target) {
|
|
12505
12507
|
throw new types.SDKError("The ref must be a canvas element");
|
|
12506
12508
|
}
|
|
@@ -12551,7 +12553,7 @@ var TWType = /* @__PURE__ */ ((TWType2) => {
|
|
|
12551
12553
|
return TWType2;
|
|
12552
12554
|
})(TWType || {});
|
|
12553
12555
|
var useEpochInfo = (type) => {
|
|
12554
|
-
const [curEpochInfo, setCurEpochInfo] =
|
|
12556
|
+
const [curEpochInfo, setCurEpochInfo] = React.useState(
|
|
12555
12557
|
void 0
|
|
12556
12558
|
);
|
|
12557
12559
|
const path2 = type === "normal" /* normal */ ? "/v1/public/trading_rewards/epoch_info" : "/v1/public/market_making_rewards/epoch_info";
|
|
@@ -12586,7 +12588,7 @@ var useEpochInfo = (type) => {
|
|
|
12586
12588
|
return [];
|
|
12587
12589
|
}
|
|
12588
12590
|
});
|
|
12589
|
-
const isNotStared =
|
|
12591
|
+
const isNotStared = React.useMemo(() => {
|
|
12590
12592
|
const epochOne = epochInfo?.find((item) => item.epoch_id === 1);
|
|
12591
12593
|
if (epochOne) {
|
|
12592
12594
|
return epochOne.start_time > utils.getTimestamp();
|
|
@@ -12608,7 +12610,7 @@ var useAllBrokers = () => {
|
|
|
12608
12610
|
return [data];
|
|
12609
12611
|
};
|
|
12610
12612
|
var useCurEpochEstimate = (type) => {
|
|
12611
|
-
const [data, setData] =
|
|
12613
|
+
const [data, setData] = React.useState(void 0);
|
|
12612
12614
|
const { account: account9 } = useAccount();
|
|
12613
12615
|
const brokers = useAllBrokers();
|
|
12614
12616
|
const address = account9.address;
|
|
@@ -12626,7 +12628,7 @@ var useCurEpochEstimate = (type) => {
|
|
|
12626
12628
|
return data2;
|
|
12627
12629
|
}
|
|
12628
12630
|
});
|
|
12629
|
-
const reuslt =
|
|
12631
|
+
const reuslt = React.useMemo(() => {
|
|
12630
12632
|
if (estimateData) {
|
|
12631
12633
|
const newData = { ...estimateData };
|
|
12632
12634
|
newData.rows = newData.rows?.map((item) => ({
|
|
@@ -12660,7 +12662,7 @@ var useAccountRewardsHistory = (address) => {
|
|
|
12660
12662
|
}
|
|
12661
12663
|
}
|
|
12662
12664
|
);
|
|
12663
|
-
const result =
|
|
12665
|
+
const result = React.useMemo(() => {
|
|
12664
12666
|
if (data && brokers) {
|
|
12665
12667
|
const newData = [...data];
|
|
12666
12668
|
newData.forEach((data2) => {
|
|
@@ -17495,7 +17497,7 @@ var ENVType2 = /* @__PURE__ */ ((ENVType3) => {
|
|
|
17495
17497
|
return ENVType3;
|
|
17496
17498
|
})(ENVType2 || {});
|
|
17497
17499
|
var useGetEnv = () => {
|
|
17498
|
-
const { configStore } =
|
|
17500
|
+
const { configStore } = React.useContext(OrderlyContext);
|
|
17499
17501
|
const env = configStore.get("env");
|
|
17500
17502
|
const networkId = configStore.get("networkId");
|
|
17501
17503
|
if (networkId === "mainnet") {
|
|
@@ -17570,11 +17572,11 @@ var DistributionId = /* @__PURE__ */ ((DistributionId2) => {
|
|
|
17570
17572
|
return DistributionId2;
|
|
17571
17573
|
})(DistributionId || {});
|
|
17572
17574
|
var useGetClaimed = (id) => {
|
|
17573
|
-
const [data, setData] =
|
|
17575
|
+
const [data, setData] = React.useState(0);
|
|
17574
17576
|
const { account: account9 } = useAccount();
|
|
17575
17577
|
const address = account9.address;
|
|
17576
17578
|
const env = useGetEnv();
|
|
17577
|
-
const refresh =
|
|
17579
|
+
const refresh = React.useCallback(() => {
|
|
17578
17580
|
const params = getContractByEnv(env);
|
|
17579
17581
|
if (typeof address === "undefined")
|
|
17580
17582
|
return;
|
|
@@ -17595,7 +17597,7 @@ var useGetClaimed = (id) => {
|
|
|
17595
17597
|
}).catch((error) => {
|
|
17596
17598
|
});
|
|
17597
17599
|
}, [address, env]);
|
|
17598
|
-
|
|
17600
|
+
React.useEffect(() => {
|
|
17599
17601
|
refresh();
|
|
17600
17602
|
}, [env, id, address]);
|
|
17601
17603
|
return [data, { refresh }];
|
|
@@ -17673,7 +17675,7 @@ var useApiKeyManager = (queryParams) => {
|
|
|
17673
17675
|
"/v1/client/reset_orderly_key_ip_restriction",
|
|
17674
17676
|
"POST"
|
|
17675
17677
|
);
|
|
17676
|
-
const setIPRestriction =
|
|
17678
|
+
const setIPRestriction = React.useCallback(
|
|
17677
17679
|
(orderly_key, ip_restriction_list) => {
|
|
17678
17680
|
return doIPRestriction({
|
|
17679
17681
|
orderly_key,
|
|
@@ -17682,7 +17684,7 @@ var useApiKeyManager = (queryParams) => {
|
|
|
17682
17684
|
},
|
|
17683
17685
|
[]
|
|
17684
17686
|
);
|
|
17685
|
-
const removeOrderlyKey =
|
|
17687
|
+
const removeOrderlyKey = React.useCallback((orderly_key) => {
|
|
17686
17688
|
return doRemoveOrderKey({
|
|
17687
17689
|
orderly_key
|
|
17688
17690
|
});
|
|
@@ -17763,12 +17765,12 @@ var initialOrderState = {
|
|
|
17763
17765
|
callback_rate: ""
|
|
17764
17766
|
};
|
|
17765
17767
|
var useOrderStore = (initialOrder) => {
|
|
17766
|
-
const [entry, setEntry] =
|
|
17767
|
-
const [estLeverage, setEstLeverage] =
|
|
17768
|
-
const [estLiquidationPrice, setEstLiquidationPrice] =
|
|
17768
|
+
const [entry, setEntry] = React.useState(initialOrder);
|
|
17769
|
+
const [estLeverage, setEstLeverage] = React.useState(null);
|
|
17770
|
+
const [estLiquidationPrice, setEstLiquidationPrice] = React.useState(
|
|
17769
17771
|
null
|
|
17770
17772
|
);
|
|
17771
|
-
const [errors, setErrors] =
|
|
17773
|
+
const [errors, setErrors] = React.useState({});
|
|
17772
17774
|
const updateOrder = (order) => {
|
|
17773
17775
|
setEntry(
|
|
17774
17776
|
// if use {...draft, ...order} will cause extra updated when object it not changed
|
|
@@ -17830,7 +17832,7 @@ var useOrderEntryNextInternal = (symbol, options = {}) => {
|
|
|
17830
17832
|
...options.initialOrder
|
|
17831
17833
|
};
|
|
17832
17834
|
const { actions: orderEntryActions, entry: orderEntity } = useOrderStore(initialOrder);
|
|
17833
|
-
const calculate2 =
|
|
17835
|
+
const calculate2 = React.useCallback(
|
|
17834
17836
|
(values, fieldName, value, markPrice, config) => {
|
|
17835
17837
|
const fieldHandler = getCalculateHandler(fieldName);
|
|
17836
17838
|
const newValues = ramda.compose(
|
|
@@ -17843,7 +17845,7 @@ var useOrderEntryNextInternal = (symbol, options = {}) => {
|
|
|
17843
17845
|
},
|
|
17844
17846
|
[]
|
|
17845
17847
|
);
|
|
17846
|
-
|
|
17848
|
+
React.useEffect(() => {
|
|
17847
17849
|
orderEntryActions.updateOrderByKey("symbol", symbol);
|
|
17848
17850
|
}, [orderEntryActions, symbol]);
|
|
17849
17851
|
const setValue = (key, value, additional) => {
|
|
@@ -17947,7 +17949,7 @@ var useOrderEntryNextInternal = (symbol, options = {}) => {
|
|
|
17947
17949
|
orderEntryActions.updateOrder(newValues);
|
|
17948
17950
|
return newValues;
|
|
17949
17951
|
};
|
|
17950
|
-
const onMarkPriceUpdated =
|
|
17952
|
+
const onMarkPriceUpdated = React.useCallback(
|
|
17951
17953
|
(markPrice, baseOn = []) => {
|
|
17952
17954
|
if (!options.symbolInfo) return;
|
|
17953
17955
|
let newValues = { ...orderEntity };
|
|
@@ -18000,7 +18002,7 @@ var useOrderEntryNextInternal = (symbol, options = {}) => {
|
|
|
18000
18002
|
});
|
|
18001
18003
|
return order;
|
|
18002
18004
|
};
|
|
18003
|
-
const submitOrder =
|
|
18005
|
+
const submitOrder = React.useCallback(() => {
|
|
18004
18006
|
}, [orderEntity]);
|
|
18005
18007
|
const resetOrder = (order) => {
|
|
18006
18008
|
orderEntryActions.resetOrder(order);
|
|
@@ -18024,17 +18026,17 @@ var useOrderEntry2 = (symbol, options = {}) => {
|
|
|
18024
18026
|
}
|
|
18025
18027
|
const ee = useEventEmitter();
|
|
18026
18028
|
const { track: track2 } = useTrack();
|
|
18027
|
-
const [meta, setMeta] =
|
|
18029
|
+
const [meta, setMeta] = React.useState({
|
|
18028
18030
|
dirty: {},
|
|
18029
18031
|
submitted: false,
|
|
18030
18032
|
validated: false,
|
|
18031
18033
|
errors: null
|
|
18032
18034
|
});
|
|
18033
|
-
const askAndBid =
|
|
18034
|
-
const lastChangedField =
|
|
18035
|
-
const lastOrderTypeExt =
|
|
18036
|
-
const lastLevel =
|
|
18037
|
-
const calculateTPSL_baseOn =
|
|
18035
|
+
const askAndBid = React.useRef([[]]);
|
|
18036
|
+
const lastChangedField = React.useRef();
|
|
18037
|
+
const lastOrderTypeExt = React.useRef();
|
|
18038
|
+
const lastLevel = React.useRef();
|
|
18039
|
+
const calculateTPSL_baseOn = React.useRef({
|
|
18038
18040
|
tp: "",
|
|
18039
18041
|
sl: ""
|
|
18040
18042
|
});
|
|
@@ -18060,7 +18062,7 @@ var useOrderEntry2 = (symbol, options = {}) => {
|
|
|
18060
18062
|
symbolInfo,
|
|
18061
18063
|
symbolLeverage
|
|
18062
18064
|
});
|
|
18063
|
-
const [estSlippage, setEstSlippage] =
|
|
18065
|
+
const [estSlippage, setEstSlippage] = React.useState(null);
|
|
18064
18066
|
const [doCreateOrder, { isMutating }] = useMutation(
|
|
18065
18067
|
getCreateOrderUrl(formattedOrder)
|
|
18066
18068
|
);
|
|
@@ -18136,7 +18138,7 @@ var useOrderEntry2 = (symbol, options = {}) => {
|
|
|
18136
18138
|
setEstSlippage(estSlippage2);
|
|
18137
18139
|
}
|
|
18138
18140
|
};
|
|
18139
|
-
|
|
18141
|
+
React.useEffect(() => {
|
|
18140
18142
|
updateOrderPrice();
|
|
18141
18143
|
}, [formattedOrder.order_type_ext, formattedOrder.level]);
|
|
18142
18144
|
const onOrderBookUpdate = useDebounce.useDebouncedCallback((data) => {
|
|
@@ -18151,13 +18153,13 @@ var useOrderEntry2 = (symbol, options = {}) => {
|
|
|
18151
18153
|
updateOrderPriceByOrderBook();
|
|
18152
18154
|
updateEstSlippage(data);
|
|
18153
18155
|
}, 200);
|
|
18154
|
-
|
|
18156
|
+
React.useEffect(() => {
|
|
18155
18157
|
ee.on("orderbook:update", onOrderBookUpdate);
|
|
18156
18158
|
return () => {
|
|
18157
18159
|
ee.off("orderbook:update", onOrderBookUpdate);
|
|
18158
18160
|
};
|
|
18159
18161
|
}, []);
|
|
18160
|
-
|
|
18162
|
+
React.useEffect(() => {
|
|
18161
18163
|
if ((formattedOrder.order_type === types.OrderType.MARKET || formattedOrder.order_type === types.OrderType.STOP_MARKET) && markPrice) {
|
|
18162
18164
|
const baseOn = /* @__PURE__ */ new Set();
|
|
18163
18165
|
if (lastChangedField.current) {
|
|
@@ -18172,7 +18174,7 @@ var useOrderEntry2 = (symbol, options = {}) => {
|
|
|
18172
18174
|
orderEntryActions.onMarkPriceChange(markPrice, Array.from(baseOn));
|
|
18173
18175
|
}
|
|
18174
18176
|
}, [markPrice, formattedOrder.order_type]);
|
|
18175
|
-
const prepareData =
|
|
18177
|
+
const prepareData = React.useCallback(() => {
|
|
18176
18178
|
return {
|
|
18177
18179
|
markPrice: actions.getMarkPriceBySymbol(symbol),
|
|
18178
18180
|
maxQty,
|
|
@@ -18281,14 +18283,14 @@ var useOrderEntry2 = (symbol, options = {}) => {
|
|
|
18281
18283
|
);
|
|
18282
18284
|
};
|
|
18283
18285
|
const { freeCollateral, totalCollateral } = useCollateral();
|
|
18284
|
-
const currentPosition =
|
|
18286
|
+
const currentPosition = React.useMemo(() => {
|
|
18285
18287
|
const rows = positions3 ?? [];
|
|
18286
18288
|
const p = Array.isArray(rows) ? rows.find(
|
|
18287
18289
|
(r) => r.symbol === symbol
|
|
18288
18290
|
) : null;
|
|
18289
18291
|
return p?.position_qty ?? 0;
|
|
18290
18292
|
}, [positions3, symbol]);
|
|
18291
|
-
const estLiqPrice =
|
|
18293
|
+
const estLiqPrice = React.useMemo(() => {
|
|
18292
18294
|
const markPrice2 = actions.getMarkPriceBySymbol(symbol);
|
|
18293
18295
|
if (!markPrice2 || !accountInfo || !symbolInfo) {
|
|
18294
18296
|
return null;
|
|
@@ -18312,13 +18314,13 @@ var useOrderEntry2 = (symbol, options = {}) => {
|
|
|
18312
18314
|
maxQty,
|
|
18313
18315
|
symbolInfo
|
|
18314
18316
|
]);
|
|
18315
|
-
const estLiqPriceDistance =
|
|
18317
|
+
const estLiqPriceDistance = React.useMemo(() => {
|
|
18316
18318
|
if (!estLiqPrice) {
|
|
18317
18319
|
return null;
|
|
18318
18320
|
}
|
|
18319
18321
|
return new utils.Decimal(estLiqPrice).minus(markPrice).abs().div(markPrice).toNumber();
|
|
18320
18322
|
}, [estLiqPrice, markPrice]);
|
|
18321
|
-
const estLeverage =
|
|
18323
|
+
const estLeverage = React.useMemo(() => {
|
|
18322
18324
|
if (!symbolInfo) {
|
|
18323
18325
|
return null;
|
|
18324
18326
|
}
|
|
@@ -18422,7 +18424,7 @@ var useOrderEntry2 = (symbol, options = {}) => {
|
|
|
18422
18424
|
}
|
|
18423
18425
|
return result;
|
|
18424
18426
|
};
|
|
18425
|
-
|
|
18427
|
+
React.useEffect(() => {
|
|
18426
18428
|
resetMetaState();
|
|
18427
18429
|
}, [formattedOrder.order_type]);
|
|
18428
18430
|
return {
|
|
@@ -18548,10 +18550,10 @@ var useOrderEntity = (order, options) => {
|
|
|
18548
18550
|
if (!symbol) {
|
|
18549
18551
|
throw new types.SDKError("Symbol is required");
|
|
18550
18552
|
}
|
|
18551
|
-
const [errors, setErrors] =
|
|
18553
|
+
const [errors, setErrors] = React.useState({});
|
|
18552
18554
|
const markPrice = useMarkPriceBySymbol(symbol);
|
|
18553
18555
|
const symbolsInfo = useSymbolsInfo();
|
|
18554
|
-
const prepareData =
|
|
18556
|
+
const prepareData = React.useCallback(() => {
|
|
18555
18557
|
return {
|
|
18556
18558
|
markPrice,
|
|
18557
18559
|
maxQty: maxQty || 0,
|
|
@@ -18575,7 +18577,7 @@ var useOrderEntity = (order, options) => {
|
|
|
18575
18577
|
}
|
|
18576
18578
|
);
|
|
18577
18579
|
});
|
|
18578
|
-
const clearErrors =
|
|
18580
|
+
const clearErrors = React.useCallback(() => {
|
|
18579
18581
|
setErrors({});
|
|
18580
18582
|
}, []);
|
|
18581
18583
|
return {
|
|
@@ -18597,10 +18599,10 @@ var useRestrictedInfo = (options) => {
|
|
|
18597
18599
|
customUnblockRegions = defaultUnblockRegions,
|
|
18598
18600
|
content
|
|
18599
18601
|
} = options || {};
|
|
18600
|
-
const [ip, setIp] =
|
|
18601
|
-
const [allInvalidAreas, setAllInvalidAreas] =
|
|
18602
|
-
const [restrictedOpen, setRestrictedOpen] =
|
|
18603
|
-
const [canUnblock, setCanUnblock] =
|
|
18602
|
+
const [ip, setIp] = React.useState("");
|
|
18603
|
+
const [allInvalidAreas, setAllInvalidAreas] = React.useState([]);
|
|
18604
|
+
const [restrictedOpen, setRestrictedOpen] = React.useState(false);
|
|
18605
|
+
const [canUnblock, setCanUnblock] = React.useState(false);
|
|
18604
18606
|
const [accessRestricted, setAccessRestricted] = useLocalStorage("orderly_access_restricted", void 0);
|
|
18605
18607
|
const { data: ipInfo } = useQuery("/v1/ip_info", {
|
|
18606
18608
|
revalidateOnFocus: false
|
|
@@ -18611,7 +18613,7 @@ var useRestrictedInfo = (options) => {
|
|
|
18611
18613
|
revalidateOnFocus: false
|
|
18612
18614
|
}
|
|
18613
18615
|
);
|
|
18614
|
-
|
|
18616
|
+
React.useEffect(() => {
|
|
18615
18617
|
if (!restrictedAreas || !ipInfo) {
|
|
18616
18618
|
return;
|
|
18617
18619
|
}
|
|
@@ -18677,12 +18679,12 @@ var usePositionClose = (options) => {
|
|
|
18677
18679
|
const { position, order: initialOrder } = options;
|
|
18678
18680
|
const { type, quantity, price } = initialOrder;
|
|
18679
18681
|
const symbol = position.symbol;
|
|
18680
|
-
const [errors, setErrors] =
|
|
18682
|
+
const [errors, setErrors] = React.useState(null);
|
|
18681
18683
|
const symbolsInfo = useSymbolsInfo();
|
|
18682
18684
|
const { data: markPrices } = useMarkPricesStream();
|
|
18683
|
-
const markPricesRef =
|
|
18685
|
+
const markPricesRef = React.useRef(markPrices);
|
|
18684
18686
|
const { orderMetadata } = useOrderlyContext();
|
|
18685
|
-
|
|
18687
|
+
React.useEffect(() => {
|
|
18686
18688
|
markPricesRef.current = markPrices;
|
|
18687
18689
|
}, [markPrices]);
|
|
18688
18690
|
const [doCreateOrder, { isMutating }] = useSubAccountMutation(
|
|
@@ -18693,7 +18695,7 @@ var usePositionClose = (options) => {
|
|
|
18693
18695
|
}
|
|
18694
18696
|
);
|
|
18695
18697
|
const side = position.position_qty > 0 ? types.OrderSide.SELL : types.OrderSide.BUY;
|
|
18696
|
-
const closeOrderData =
|
|
18698
|
+
const closeOrderData = React.useMemo(() => {
|
|
18697
18699
|
const data = {
|
|
18698
18700
|
order_quantity: quantity,
|
|
18699
18701
|
symbol,
|
|
@@ -18706,7 +18708,7 @@ var usePositionClose = (options) => {
|
|
|
18706
18708
|
}
|
|
18707
18709
|
return data;
|
|
18708
18710
|
}, [symbol, price, type, quantity]);
|
|
18709
|
-
const maxQty =
|
|
18711
|
+
const maxQty = React.useMemo(() => {
|
|
18710
18712
|
if (!position) {
|
|
18711
18713
|
return 0;
|
|
18712
18714
|
}
|
|
@@ -18727,7 +18729,7 @@ var usePositionClose = (options) => {
|
|
|
18727
18729
|
}
|
|
18728
18730
|
return 0;
|
|
18729
18731
|
}, [position, side]);
|
|
18730
|
-
const validate =
|
|
18732
|
+
const validate = React.useCallback(
|
|
18731
18733
|
async (data) => {
|
|
18732
18734
|
const creator = getOrderCreator(data);
|
|
18733
18735
|
const errors2 = await creator.validate(data, {
|
|
@@ -18740,12 +18742,12 @@ var usePositionClose = (options) => {
|
|
|
18740
18742
|
},
|
|
18741
18743
|
[maxQty, symbol, symbolsInfo]
|
|
18742
18744
|
);
|
|
18743
|
-
|
|
18745
|
+
React.useEffect(() => {
|
|
18744
18746
|
validate(closeOrderData).then((errors2) => {
|
|
18745
18747
|
setErrors(errors2);
|
|
18746
18748
|
});
|
|
18747
18749
|
}, [validate, closeOrderData]);
|
|
18748
|
-
const submit =
|
|
18750
|
+
const submit = React.useCallback(async () => {
|
|
18749
18751
|
const errors2 = await validate(closeOrderData);
|
|
18750
18752
|
if (Object.keys(errors2).length > 0) {
|
|
18751
18753
|
throw errors2;
|
|
@@ -18819,7 +18821,7 @@ var useTpslPriceChecker = (params) => {
|
|
|
18819
18821
|
currentPosition,
|
|
18820
18822
|
orderQuantity
|
|
18821
18823
|
} = params;
|
|
18822
|
-
const prevResultRef =
|
|
18824
|
+
const prevResultRef = React.useRef(null);
|
|
18823
18825
|
function validateSlPriceBasic(slPriceDecimal, liqPriceDecimal) {
|
|
18824
18826
|
if (!side) return null;
|
|
18825
18827
|
const distance_ratio = calculateDistanceRatio(
|
|
@@ -18867,7 +18869,7 @@ var useTpslPriceChecker = (params) => {
|
|
|
18867
18869
|
);
|
|
18868
18870
|
return checkDistanceAndReturnResult(distance_ratio, warning_threshold);
|
|
18869
18871
|
}
|
|
18870
|
-
const currentResult =
|
|
18872
|
+
const currentResult = React.useMemo(() => {
|
|
18871
18873
|
if (slPrice === void 0 || liqPrice === void 0 || side === void 0 || liqPrice === null) {
|
|
18872
18874
|
return null;
|
|
18873
18875
|
}
|
|
@@ -18910,14 +18912,14 @@ var useTpslPriceChecker = (params) => {
|
|
|
18910
18912
|
var useEstLiqPriceBySymbol = (symbol) => {
|
|
18911
18913
|
const [data] = usePositionStream(symbol);
|
|
18912
18914
|
const position = data?.rows?.find((row) => row.symbol === symbol);
|
|
18913
|
-
return
|
|
18915
|
+
return React.useMemo(() => {
|
|
18914
18916
|
return position?.est_liq_price ?? void 0;
|
|
18915
18917
|
}, [position]);
|
|
18916
18918
|
};
|
|
18917
18919
|
var useGetEstLiqPrice = (props) => {
|
|
18918
18920
|
const { estLiqPrice, symbol, side } = props;
|
|
18919
18921
|
const { data: markPrice } = useMarkPrice(symbol);
|
|
18920
|
-
return
|
|
18922
|
+
return React.useMemo(() => {
|
|
18921
18923
|
if (!estLiqPrice || !markPrice) {
|
|
18922
18924
|
return null;
|
|
18923
18925
|
}
|
|
@@ -19116,6 +19118,7 @@ exports.useTradingRewardsStatus = useTradingRewardsStatus;
|
|
|
19116
19118
|
exports.useTransfer = useTransfer;
|
|
19117
19119
|
exports.useTransferHistory = useTransferHistory;
|
|
19118
19120
|
exports.useUpdatedRef = useUpdatedRef;
|
|
19121
|
+
exports.useUserStatistics = useUserStatistics;
|
|
19119
19122
|
exports.useVaultsHistory = useVaultsHistory;
|
|
19120
19123
|
exports.useWS = useWS;
|
|
19121
19124
|
exports.useWalletConnector = useWalletConnector;
|