@orderly.network/hooks 1.2.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/configProvider.d.ts +7 -1
- package/esm/configProvider.d.ts.map +1 -1
- package/esm/configProvider.js +44 -18
- package/esm/configProvider.js.map +1 -0
- package/esm/dataProvider.js +24 -19
- package/esm/dataProvider.js.map +1 -0
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +4 -1
- package/esm/index.js.map +1 -0
- package/esm/middleware/signatureMiddleware.js +9 -8
- package/esm/middleware/signatureMiddleware.js.map +1 -0
- package/esm/orderly/orderbook.service.js +39 -28
- package/esm/orderly/orderbook.service.js.map +1 -0
- package/esm/orderly/orderlyHooks.d.ts +3 -0
- package/esm/orderly/orderlyHooks.d.ts.map +1 -1
- package/esm/orderly/orderlyHooks.js +2 -0
- package/esm/orderly/orderlyHooks.js.map +1 -0
- package/esm/orderly/useAccountInfo.js +3 -1
- package/esm/orderly/useAccountInfo.js.map +1 -0
- package/esm/orderly/useChain.js +16 -9
- package/esm/orderly/useChain.js.map +1 -0
- package/esm/orderly/useChains.d.ts +11 -12
- package/esm/orderly/useChains.d.ts.map +1 -1
- package/esm/orderly/useChains.js +68 -46
- package/esm/orderly/useChains.js.map +1 -0
- package/esm/orderly/useCollateral.d.ts +3 -4
- package/esm/orderly/useCollateral.d.ts.map +1 -1
- package/esm/orderly/useCollateral.js +53 -20
- package/esm/orderly/useCollateral.js.map +1 -0
- package/esm/orderly/useDeposit.js +123 -125
- package/esm/orderly/useDeposit.js.map +1 -0
- package/esm/orderly/useFundingRate.js +14 -13
- package/esm/orderly/useFundingRate.js.map +1 -0
- package/esm/orderly/useFundingRates.js +6 -4
- package/esm/orderly/useFundingRates.js.map +1 -0
- package/esm/orderly/useHoldingStream.js +19 -15
- package/esm/orderly/useHoldingStream.js.map +1 -0
- package/esm/orderly/useIndexPrice.js +7 -5
- package/esm/orderly/useIndexPrice.js.map +1 -0
- package/esm/orderly/useLeverage.js +9 -12
- package/esm/orderly/useLeverage.js.map +1 -0
- package/esm/orderly/useMarginRatio.js +27 -13
- package/esm/orderly/useMarginRatio.js.map +1 -0
- package/esm/orderly/useMarkPrice.js +13 -7
- package/esm/orderly/useMarkPrice.js.map +1 -0
- package/esm/orderly/useMarkPricesStream.d.ts +1 -1
- package/esm/orderly/useMarkPricesStream.d.ts.map +1 -1
- package/esm/orderly/useMarkPricesStream.js +9 -8
- package/esm/orderly/useMarkPricesStream.js.map +1 -0
- package/esm/orderly/useMarketTradeStream.js +33 -18
- package/esm/orderly/useMarketTradeStream.js.map +1 -0
- package/esm/orderly/useMarkets.js +144 -81
- package/esm/orderly/useMarkets.js.map +1 -0
- package/esm/orderly/useMarketsStream.js +23 -28
- package/esm/orderly/useMarketsStream.js.map +1 -0
- package/esm/orderly/useMaxQty.d.ts +6 -0
- package/esm/orderly/useMaxQty.d.ts.map +1 -1
- package/esm/orderly/useMaxQty.js +26 -18
- package/esm/orderly/useMaxQty.js.map +1 -0
- package/esm/orderly/useOpenInterest.js +7 -5
- package/esm/orderly/useOpenInterest.js.map +1 -0
- package/esm/orderly/useOrderEntry.js +182 -160
- package/esm/orderly/useOrderEntry.js.map +1 -0
- package/esm/orderly/useOrderStream.js +85 -66
- package/esm/orderly/useOrderStream.js.map +1 -0
- package/esm/orderly/useOrderbookStream.d.ts +2 -3
- package/esm/orderly/useOrderbookStream.d.ts.map +1 -1
- package/esm/orderly/useOrderbookStream.js +173 -103
- package/esm/orderly/useOrderbookStream.js.map +1 -0
- package/esm/orderly/usePositionStream.js +82 -62
- package/esm/orderly/usePositionStream.js.map +1 -0
- package/esm/orderly/usePrivateDataObserver.js +55 -48
- package/esm/orderly/usePrivateDataObserver.js.map +1 -0
- package/esm/orderly/useSettleSubscription.js +8 -6
- package/esm/orderly/useSettleSubscription.js.map +1 -0
- package/esm/orderly/useSymbolPriceRange.js +14 -8
- package/esm/orderly/useSymbolPriceRange.js.map +1 -0
- package/esm/orderly/useSymbolsInfo.js +7 -5
- package/esm/orderly/useSymbolsInfo.js.map +1 -0
- package/esm/orderly/useTickerStream.d.ts +5 -1
- package/esm/orderly/useTickerStream.d.ts.map +1 -1
- package/esm/orderly/useTickerStream.js +26 -29
- package/esm/orderly/useTickerStream.js.map +1 -0
- package/esm/orderly/useWalletSubscription.js +8 -6
- package/esm/orderly/useWalletSubscription.js.map +1 -0
- package/esm/orderly/useWithdraw.js +19 -11
- package/esm/orderly/useWithdraw.js.map +1 -0
- package/esm/orderlyContext.d.ts +8 -1
- package/esm/orderlyContext.d.ts.map +1 -1
- package/esm/orderlyContext.js +2 -1
- package/esm/orderlyContext.js.map +1 -0
- package/esm/services/dataCenter.js +10 -8
- package/esm/services/dataCenter.js.map +1 -0
- package/esm/services/painter/backgroundPaint.js +11 -14
- package/esm/services/painter/backgroundPaint.js.map +1 -0
- package/esm/services/painter/basePaint.js +5 -1
- package/esm/services/painter/basePaint.js.map +1 -0
- package/esm/services/painter/dataPaint.js +53 -50
- package/esm/services/painter/dataPaint.js.map +1 -0
- package/esm/services/painter/layout.config.js +15 -13
- package/esm/services/painter/layout.config.js.map +1 -0
- package/esm/services/painter/painter.js +14 -13
- package/esm/services/painter/painter.js.map +1 -0
- package/esm/services/painter/resource.js +6 -4
- package/esm/services/painter/resource.js.map +1 -0
- package/esm/statusProvider.js +10 -3
- package/esm/statusProvider.js.map +1 -0
- package/esm/unuse/apiPrefixMiddleware.js +18 -16
- package/esm/unuse/apiPrefixMiddleware.js.map +1 -0
- package/esm/unuse/fn.js +3 -1
- package/esm/unuse/fn.js.map +1 -0
- package/esm/unuse/useBalance.js +6 -4
- package/esm/unuse/useBalance.js.map +1 -0
- package/esm/unuse/useFetures.js +26 -18
- package/esm/unuse/useFetures.js.map +1 -0
- package/esm/unuse/useRunOnce.js +10 -7
- package/esm/unuse/useRunOnce.js.map +1 -0
- package/esm/unuse/useSyncEnd.js +5 -4
- package/esm/unuse/useSyncEnd.js.map +1 -0
- package/esm/unuse/useTokenInfo.js +7 -5
- package/esm/unuse/useTokenInfo.js.map +1 -0
- package/esm/unuse/useUnsettlementPnL.js +7 -3
- package/esm/unuse/useUnsettlementPnL.js.map +1 -0
- package/esm/useAccount.js +18 -21
- package/esm/useAccount.js.map +1 -0
- package/esm/useAccountInstance.js +6 -7
- package/esm/useAccountInstance.js.map +1 -0
- package/esm/useBoolean.js +14 -5
- package/esm/useBoolean.js.map +1 -0
- package/esm/useConfig.js +3 -1
- package/esm/useConfig.js.map +1 -0
- package/esm/useEventEmitter.js +4 -2
- package/esm/useEventEmitter.js.map +1 -0
- package/esm/useLazyQuery.js +6 -7
- package/esm/useLazyQuery.js.map +1 -0
- package/esm/useLocalStorage.js +30 -20
- package/esm/useLocalStorage.js.map +1 -0
- package/esm/useMediaQuery.js +11 -9
- package/esm/useMediaQuery.js.map +1 -0
- package/esm/useMutation.js +26 -37
- package/esm/useMutation.js.map +1 -0
- package/esm/useObserve.js +4 -4
- package/esm/useObserve.js.map +1 -0
- package/esm/useParamsCheck.js +8 -10
- package/esm/useParamsCheck.js.map +1 -0
- package/esm/usePoster.js +56 -45
- package/esm/usePoster.js.map +1 -0
- package/esm/usePreloadData.js +9 -5
- package/esm/usePreloadData.js.map +1 -0
- package/esm/usePrivateInfiniteQuery.js +15 -9
- package/esm/usePrivateInfiniteQuery.js.map +1 -0
- package/esm/usePrivateQuery.js +15 -8
- package/esm/usePrivateQuery.js.map +1 -0
- package/esm/useQuery.js +6 -5
- package/esm/useQuery.js.map +1 -0
- package/esm/useSessionStorage.js +28 -19
- package/esm/useSessionStorage.js.map +1 -0
- package/esm/useWS.js +15 -13
- package/esm/useWS.js.map +1 -0
- package/esm/useWsStatus.js +12 -12
- package/esm/useWsStatus.js.map +1 -0
- package/esm/utils/createGetter.js +8 -8
- package/esm/utils/createGetter.js.map +1 -0
- package/esm/utils/createOrder.d.ts +1 -0
- package/esm/utils/createOrder.d.ts.map +1 -1
- package/esm/utils/createOrder.js +59 -43
- package/esm/utils/createOrder.js.map +1 -0
- package/esm/utils/dev.js +6 -4
- package/esm/utils/dev.js.map +1 -0
- package/esm/utils/fetcher.js +3 -1
- package/esm/utils/fetcher.js.map +1 -0
- package/esm/utils/json.js +3 -2
- package/esm/utils/json.js.map +1 -0
- package/esm/utils/orderEntryHelper.js +92 -63
- package/esm/utils/orderEntryHelper.js.map +1 -0
- package/esm/utils/parseHolding.js +10 -6
- package/esm/utils/parseHolding.js.map +1 -0
- package/esm/utils/swr.js +114 -104
- package/esm/utils/swr.js.map +1 -0
- package/esm/version.d.ts +1 -1
- package/esm/version.js +4 -3
- package/esm/version.js.map +1 -0
- package/esm/walletConnectorContext.js +4 -2
- package/esm/walletConnectorContext.js.map +1 -0
- package/lib/configProvider.d.ts +7 -1
- package/lib/configProvider.d.ts.map +1 -1
- package/lib/configProvider.js +108 -56
- package/lib/configProvider.js.map +1 -0
- package/lib/dataProvider.js +50 -29
- package/lib/dataProvider.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +191 -88
- package/lib/index.js.map +1 -0
- package/lib/middleware/signatureMiddleware.js +22 -15
- package/lib/middleware/signatureMiddleware.js.map +1 -0
- package/lib/orderly/orderbook.service.js +59 -33
- package/lib/orderly/orderbook.service.js.map +1 -0
- package/lib/orderly/orderlyHooks.d.ts +3 -0
- package/lib/orderly/orderlyHooks.d.ts.map +1 -1
- package/lib/orderly/orderlyHooks.js +124 -57
- package/lib/orderly/orderlyHooks.js.map +1 -0
- package/lib/orderly/useAccountInfo.js +14 -6
- package/lib/orderly/useAccountInfo.js.map +1 -0
- package/lib/orderly/useChain.js +30 -17
- package/lib/orderly/useChain.js.map +1 -0
- package/lib/orderly/useChains.d.ts +11 -12
- package/lib/orderly/useChains.d.ts.map +1 -1
- package/lib/orderly/useChains.js +100 -59
- package/lib/orderly/useChains.js.map +1 -0
- package/lib/orderly/useCollateral.d.ts +3 -4
- package/lib/orderly/useCollateral.d.ts.map +1 -1
- package/lib/orderly/useCollateral.js +81 -42
- package/lib/orderly/useCollateral.js.map +1 -0
- package/lib/orderly/useDeposit.js +154 -150
- package/lib/orderly/useDeposit.js.map +1 -0
- package/lib/orderly/useFundingRate.js +29 -22
- package/lib/orderly/useFundingRate.js.map +1 -0
- package/lib/orderly/useFundingRates.js +19 -11
- package/lib/orderly/useFundingRates.js.map +1 -0
- package/lib/orderly/useHoldingStream.js +39 -27
- package/lib/orderly/useHoldingStream.js.map +1 -0
- package/lib/orderly/useIndexPrice.js +24 -14
- package/lib/orderly/useIndexPrice.js.map +1 -0
- package/lib/orderly/useLeverage.js +27 -24
- package/lib/orderly/useLeverage.js.map +1 -0
- package/lib/orderly/useMarginRatio.js +49 -29
- package/lib/orderly/useMarginRatio.js.map +1 -0
- package/lib/orderly/useMarkPrice.js +26 -15
- package/lib/orderly/useMarkPrice.js.map +1 -0
- package/lib/orderly/useMarkPricesStream.d.ts +1 -1
- package/lib/orderly/useMarkPricesStream.d.ts.map +1 -1
- package/lib/orderly/useMarkPricesStream.js +26 -17
- package/lib/orderly/useMarkPricesStream.js.map +1 -0
- package/lib/orderly/useMarketTradeStream.js +47 -26
- package/lib/orderly/useMarketTradeStream.js.map +1 -0
- package/lib/orderly/useMarkets.js +172 -95
- package/lib/orderly/useMarkets.js.map +1 -0
- package/lib/orderly/useMarketsStream.js +44 -41
- package/lib/orderly/useMarketsStream.js.map +1 -0
- package/lib/orderly/useMaxQty.d.ts +6 -0
- package/lib/orderly/useMaxQty.d.ts.map +1 -1
- package/lib/orderly/useMaxQty.js +52 -43
- package/lib/orderly/useMaxQty.js.map +1 -0
- package/lib/orderly/useOpenInterest.js +24 -14
- package/lib/orderly/useOpenInterest.js.map +1 -0
- package/lib/orderly/useOrderEntry.js +238 -210
- package/lib/orderly/useOrderEntry.js.map +1 -0
- package/lib/orderly/useOrderStream.js +111 -84
- package/lib/orderly/useOrderStream.js.map +1 -0
- package/lib/orderly/useOrderbookStream.d.ts +2 -3
- package/lib/orderly/useOrderbookStream.d.ts.map +1 -1
- package/lib/orderly/useOrderbookStream.js +227 -148
- package/lib/orderly/useOrderbookStream.js.map +1 -0
- package/lib/orderly/usePositionStream.js +134 -100
- package/lib/orderly/usePositionStream.js.map +1 -0
- package/lib/orderly/usePrivateDataObserver.js +76 -63
- package/lib/orderly/usePrivateDataObserver.js.map +1 -0
- package/lib/orderly/useSettleSubscription.js +25 -15
- package/lib/orderly/useSettleSubscription.js.map +1 -0
- package/lib/orderly/useSymbolPriceRange.js +29 -23
- package/lib/orderly/useSymbolPriceRange.js.map +1 -0
- package/lib/orderly/useSymbolsInfo.js +23 -15
- package/lib/orderly/useSymbolsInfo.js.map +1 -0
- package/lib/orderly/useTickerStream.d.ts +5 -1
- package/lib/orderly/useTickerStream.d.ts.map +1 -1
- package/lib/orderly/useTickerStream.js +51 -48
- package/lib/orderly/useTickerStream.js.map +1 -0
- package/lib/orderly/useWalletSubscription.js +25 -15
- package/lib/orderly/useWalletSubscription.js.map +1 -0
- package/lib/orderly/useWithdraw.js +36 -22
- package/lib/orderly/useWithdraw.js.map +1 -0
- package/lib/orderlyContext.d.ts +8 -1
- package/lib/orderlyContext.d.ts.map +1 -1
- package/lib/orderlyContext.js +22 -6
- package/lib/orderlyContext.js.map +1 -0
- package/lib/services/dataCenter.js +15 -11
- package/lib/services/dataCenter.js.map +1 -0
- package/lib/services/painter/backgroundPaint.js +21 -18
- package/lib/services/painter/backgroundPaint.js.map +1 -0
- package/lib/services/painter/basePaint.js +14 -4
- package/lib/services/painter/basePaint.js.map +1 -0
- package/lib/services/painter/dataPaint.js +67 -58
- package/lib/services/painter/dataPaint.js.map +1 -0
- package/lib/services/painter/layout.config.js +25 -16
- package/lib/services/painter/layout.config.js.map +1 -0
- package/lib/services/painter/painter.js +27 -20
- package/lib/services/painter/painter.js.map +1 -0
- package/lib/services/painter/resource.js +15 -7
- package/lib/services/painter/resource.js.map +1 -0
- package/lib/statusProvider.js +31 -10
- package/lib/statusProvider.js.map +1 -0
- package/lib/unuse/apiPrefixMiddleware.js +30 -22
- package/lib/unuse/apiPrefixMiddleware.js.map +1 -0
- package/lib/unuse/fn.js +14 -5
- package/lib/unuse/fn.js.map +1 -0
- package/lib/unuse/useBalance.js +23 -13
- package/lib/unuse/useBalance.js.map +1 -0
- package/lib/unuse/useFetures.js +41 -28
- package/lib/unuse/useFetures.js.map +1 -0
- package/lib/unuse/useRunOnce.js +61 -11
- package/lib/unuse/useRunOnce.js.map +1 -0
- package/lib/unuse/useSyncEnd.js +17 -10
- package/lib/unuse/useSyncEnd.js.map +1 -0
- package/lib/unuse/useTokenInfo.js +20 -12
- package/lib/unuse/useTokenInfo.js.map +1 -0
- package/lib/unuse/useUnsettlementPnL.js +21 -11
- package/lib/unuse/useUnsettlementPnL.js.map +1 -0
- package/lib/useAccount.js +32 -29
- package/lib/useAccount.js.map +1 -0
- package/lib/useAccountInstance.js +27 -20
- package/lib/useAccountInstance.js.map +1 -0
- package/lib/useBoolean.js +25 -10
- package/lib/useBoolean.js.map +1 -0
- package/lib/useConfig.js +15 -7
- package/lib/useConfig.js.map +1 -0
- package/lib/useEventEmitter.js +23 -13
- package/lib/useEventEmitter.js.map +1 -0
- package/lib/useLazyQuery.js +25 -23
- package/lib/useLazyQuery.js.map +1 -0
- package/lib/useLocalStorage.js +44 -28
- package/lib/useLocalStorage.js.map +1 -0
- package/lib/useMediaQuery.js +22 -14
- package/lib/useMediaQuery.js.map +1 -0
- package/lib/useMutation.js +47 -52
- package/lib/useMutation.js.map +1 -0
- package/lib/useObserve.js +22 -8
- package/lib/useObserve.js.map +1 -0
- package/lib/useParamsCheck.js +18 -14
- package/lib/useParamsCheck.js.map +1 -0
- package/lib/usePoster.js +80 -74
- package/lib/usePoster.js.map +1 -0
- package/lib/usePreloadData.js +21 -11
- package/lib/usePreloadData.js.map +1 -0
- package/lib/usePrivateInfiniteQuery.js +36 -22
- package/lib/usePrivateInfiniteQuery.js.map +1 -0
- package/lib/usePrivateQuery.js +35 -25
- package/lib/usePrivateQuery.js.map +1 -0
- package/lib/useQuery.js +24 -20
- package/lib/useQuery.js.map +1 -0
- package/lib/useSessionStorage.js +41 -26
- package/lib/useSessionStorage.js.map +1 -0
- package/lib/useWS.js +42 -32
- package/lib/useWS.js.map +1 -0
- package/lib/useWsStatus.js +34 -20
- package/lib/useWsStatus.js.map +1 -0
- package/lib/utils/createGetter.js +19 -14
- package/lib/utils/createGetter.js.map +1 -0
- package/lib/utils/createOrder.d.ts +1 -0
- package/lib/utils/createOrder.d.ts.map +1 -1
- package/lib/utils/createOrder.js +133 -82
- package/lib/utils/createOrder.js.map +1 -0
- package/lib/utils/dev.js +13 -9
- package/lib/utils/dev.js.map +1 -0
- package/lib/utils/fetcher.js +13 -5
- package/lib/utils/fetcher.js.map +1 -0
- package/lib/utils/json.js +12 -5
- package/lib/utils/json.js.map +1 -0
- package/lib/utils/orderEntryHelper.js +125 -82
- package/lib/utils/orderEntryHelper.js.map +1 -0
- package/lib/utils/parseHolding.js +19 -9
- package/lib/utils/parseHolding.js.map +1 -0
- package/lib/utils/swr.js +134 -111
- package/lib/utils/swr.js.map +1 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +13 -4
- package/lib/version.js.map +1 -0
- package/lib/walletConnectorContext.js +23 -7
- package/lib/walletConnectorContext.js.map +1 -0
- package/package.json +17 -9
|
@@ -3,12 +3,12 @@ import { useMarketsStream } from "./useMarketsStream";
|
|
|
3
3
|
import { OrderlyContext } from "../orderlyContext";
|
|
4
4
|
import { useSymbolsInfo } from "./useSymbolsInfo";
|
|
5
5
|
export var MarketsType;
|
|
6
|
-
(function
|
|
6
|
+
(function(MarketsType) {
|
|
7
7
|
MarketsType[MarketsType["FAVORITES"] = 0] = "FAVORITES";
|
|
8
8
|
MarketsType[MarketsType["RECENT"] = 1] = "RECENT";
|
|
9
9
|
MarketsType[MarketsType["ALL"] = 2] = "ALL";
|
|
10
10
|
})(MarketsType || (MarketsType = {}));
|
|
11
|
-
export const useMarkets = (type)
|
|
11
|
+
export const useMarkets = (type)=>{
|
|
12
12
|
const marketsKey = "markets";
|
|
13
13
|
const { data } = useMarketsStream();
|
|
14
14
|
const { configStore } = useContext(OrderlyContext);
|
|
@@ -18,51 +18,86 @@ export const useMarkets = (type) => {
|
|
|
18
18
|
const jsonStr = localStorage.getItem(marketsKey);
|
|
19
19
|
if (jsonStr) {
|
|
20
20
|
configStore.set(marketsKey, JSON.parse(jsonStr));
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
} else {
|
|
22
|
+
const defaultTab = {
|
|
23
|
+
name: "Popular",
|
|
24
|
+
id: 1
|
|
25
|
+
};
|
|
24
26
|
configStore.set(marketsKey, {
|
|
25
27
|
recent: [],
|
|
26
28
|
favorites: [
|
|
27
|
-
{
|
|
28
|
-
|
|
29
|
+
{
|
|
30
|
+
name: "PERP_ETH_USDC",
|
|
31
|
+
tabs: [
|
|
32
|
+
{
|
|
33
|
+
...defaultTab
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
name: "PERP_BTC_USDC",
|
|
39
|
+
tabs: [
|
|
40
|
+
{
|
|
41
|
+
...defaultTab
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
}
|
|
29
45
|
],
|
|
30
|
-
favoriteTabs: [
|
|
31
|
-
|
|
46
|
+
favoriteTabs: [
|
|
47
|
+
{
|
|
48
|
+
...defaultTab
|
|
49
|
+
}
|
|
50
|
+
],
|
|
51
|
+
lastSelectFavoriteTab: {
|
|
52
|
+
...defaultTab
|
|
53
|
+
}
|
|
32
54
|
});
|
|
33
55
|
}
|
|
34
56
|
}
|
|
35
|
-
const getFavoriteTabs = useMemo(()
|
|
57
|
+
const getFavoriteTabs = useMemo(()=>{
|
|
36
58
|
// @ts-ignore
|
|
37
59
|
const tabs = configStore.get(marketsKey)["favoriteTabs"];
|
|
38
|
-
return
|
|
60
|
+
return tabs || [
|
|
61
|
+
{
|
|
62
|
+
name: "Popular",
|
|
63
|
+
id: 1
|
|
64
|
+
}
|
|
65
|
+
];
|
|
39
66
|
}, []);
|
|
40
|
-
const getFavorites = useMemo(()
|
|
67
|
+
const getFavorites = useMemo(()=>{
|
|
41
68
|
// @ts-ignore
|
|
42
|
-
const curData =
|
|
69
|
+
const curData = configStore.get(marketsKey)["favorites"] || [];
|
|
43
70
|
const tabs = getFavoriteTabs;
|
|
44
71
|
const result = [];
|
|
45
|
-
for
|
|
72
|
+
for(let index = 0; index < curData.length; index++){
|
|
46
73
|
const favData = curData[index];
|
|
47
|
-
var favTabs = favData.tabs.filter((tab)
|
|
74
|
+
var favTabs = favData.tabs.filter((tab)=>tabs.findIndex((item)=>tab.id === item.id) !== -1);
|
|
48
75
|
if (favTabs.length > 0) {
|
|
49
|
-
result.push({
|
|
76
|
+
result.push({
|
|
77
|
+
...favData,
|
|
78
|
+
tabs: favTabs
|
|
79
|
+
});
|
|
50
80
|
}
|
|
51
81
|
}
|
|
52
|
-
configStore.set(marketsKey, {
|
|
82
|
+
configStore.set(marketsKey, {
|
|
83
|
+
...configStore.getOr(marketsKey, {}),
|
|
84
|
+
favorites: result
|
|
85
|
+
});
|
|
53
86
|
// localStorage.setItem(marketsKey, JSON.stringify(configStore.get(marketsKey)));
|
|
54
87
|
return result;
|
|
55
|
-
}, [
|
|
56
|
-
|
|
88
|
+
}, [
|
|
89
|
+
configStore
|
|
90
|
+
]);
|
|
91
|
+
const getRecent = useMemo(()=>{
|
|
57
92
|
// @ts-ignore
|
|
58
93
|
const curData = configStore.get(marketsKey)["recent"];
|
|
59
|
-
return (curData || []).filter((e)
|
|
94
|
+
return (curData || []).filter((e)=>e);
|
|
60
95
|
}, []);
|
|
61
96
|
const [favoriteTabs, setFavoriteTabs] = useState(getFavoriteTabs);
|
|
62
97
|
const [favorites, setFavorites] = useState(getFavorites);
|
|
63
98
|
const [recent, setRecent] = useState(getRecent);
|
|
64
|
-
const updateFavoriteTabs = (tab, operator)
|
|
65
|
-
const saveTabs = (tabs)
|
|
99
|
+
const updateFavoriteTabs = (tab, operator)=>{
|
|
100
|
+
const saveTabs = (tabs)=>{
|
|
66
101
|
setFavoriteTabs(tabs);
|
|
67
102
|
configStore.set(marketsKey, {
|
|
68
103
|
...configStore.getOr(marketsKey, {}),
|
|
@@ -73,78 +108,95 @@ export const useMarkets = (type) => {
|
|
|
73
108
|
saveTabs(tab);
|
|
74
109
|
return;
|
|
75
110
|
}
|
|
76
|
-
var tabs = [
|
|
77
|
-
|
|
111
|
+
var tabs = [
|
|
112
|
+
...favoriteTabs
|
|
113
|
+
];
|
|
114
|
+
const index = tabs.findIndex((item)=>item.id === tab.id);
|
|
78
115
|
if (operator?.add) {
|
|
79
116
|
tabs.push(tab);
|
|
80
|
-
}
|
|
81
|
-
else if (operator?.update) {
|
|
117
|
+
} else if (operator?.update) {
|
|
82
118
|
if (index !== -1) {
|
|
83
119
|
tabs[index] = tab;
|
|
84
120
|
}
|
|
85
|
-
}
|
|
86
|
-
else if (operator?.delete) {
|
|
121
|
+
} else if (operator?.delete) {
|
|
87
122
|
if (index !== -1) {
|
|
88
123
|
tabs.splice(index, 1);
|
|
89
124
|
}
|
|
90
125
|
}
|
|
91
126
|
saveTabs(tabs);
|
|
92
127
|
};
|
|
93
|
-
const setRecentData = (symbol)
|
|
94
|
-
const curData = [
|
|
95
|
-
|
|
128
|
+
const setRecentData = (symbol)=>{
|
|
129
|
+
const curData = [
|
|
130
|
+
...recent
|
|
131
|
+
];
|
|
132
|
+
const index = curData.findIndex((item)=>item.name == symbol.symbol);
|
|
96
133
|
if (index !== -1) {
|
|
97
134
|
curData.splice(index, 1);
|
|
98
135
|
}
|
|
99
|
-
curData.unshift({
|
|
136
|
+
curData.unshift({
|
|
137
|
+
name: symbol.symbol
|
|
138
|
+
});
|
|
100
139
|
configStore.set(marketsKey, {
|
|
101
140
|
...configStore.getOr(marketsKey, {}),
|
|
102
141
|
"recent": curData
|
|
103
142
|
});
|
|
104
143
|
setRecent(curData);
|
|
105
144
|
};
|
|
106
|
-
const setFavoritesData = (symbol, tab, remove = false)
|
|
107
|
-
const curData = [
|
|
108
|
-
|
|
109
|
-
|
|
145
|
+
const setFavoritesData = (symbol, tab, remove = false)=>{
|
|
146
|
+
const curData = [
|
|
147
|
+
...favorites
|
|
148
|
+
];
|
|
149
|
+
const index = curData.findIndex((item)=>item.name == symbol.symbol);
|
|
150
|
+
if (index === -1) {
|
|
110
151
|
if (Array.isArray(tab)) {
|
|
111
152
|
if (tab.length > 0) {
|
|
112
|
-
curData.unshift({
|
|
153
|
+
curData.unshift({
|
|
154
|
+
name: symbol.symbol,
|
|
155
|
+
tabs: tab
|
|
156
|
+
});
|
|
113
157
|
}
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
158
|
+
} else {
|
|
116
159
|
if (!remove) {
|
|
117
160
|
// insert
|
|
118
|
-
curData.unshift({
|
|
161
|
+
curData.unshift({
|
|
162
|
+
name: symbol.symbol,
|
|
163
|
+
tabs: [
|
|
164
|
+
tab
|
|
165
|
+
]
|
|
166
|
+
});
|
|
119
167
|
}
|
|
120
168
|
}
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
169
|
+
} else {
|
|
123
170
|
const favorite = curData[index];
|
|
124
171
|
if (Array.isArray(tab)) {
|
|
125
172
|
if (tab.length === 0) {
|
|
126
173
|
// remove
|
|
127
174
|
curData.splice(index, 1);
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
175
|
+
} else {
|
|
130
176
|
// overrides
|
|
131
|
-
curData[index] = {
|
|
177
|
+
curData[index] = {
|
|
178
|
+
...favorite,
|
|
179
|
+
tabs: tab
|
|
180
|
+
};
|
|
132
181
|
}
|
|
133
|
-
}
|
|
134
|
-
else {
|
|
182
|
+
} else {
|
|
135
183
|
if (remove) {
|
|
136
|
-
const tabs = favorite.tabs.filter((tab)
|
|
137
|
-
if (tabs.length === 0) {
|
|
184
|
+
const tabs = favorite.tabs.filter((tab)=>tab.id != tab.id);
|
|
185
|
+
if (tabs.length === 0) {
|
|
138
186
|
curData.splice(index, 1);
|
|
187
|
+
} else {
|
|
188
|
+
curData[index] = {
|
|
189
|
+
...favorite,
|
|
190
|
+
tabs
|
|
191
|
+
};
|
|
139
192
|
}
|
|
140
|
-
|
|
141
|
-
curData[index] = { ...favorite, tabs };
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
else { // insert
|
|
193
|
+
} else {
|
|
145
194
|
const tabs = favorite.tabs;
|
|
146
195
|
tabs.push(tab);
|
|
147
|
-
curData[index] = {
|
|
196
|
+
curData[index] = {
|
|
197
|
+
...favorite,
|
|
198
|
+
tabs
|
|
199
|
+
};
|
|
148
200
|
}
|
|
149
201
|
}
|
|
150
202
|
}
|
|
@@ -152,25 +204,27 @@ export const useMarkets = (type) => {
|
|
|
152
204
|
...configStore.getOr(marketsKey, {}),
|
|
153
205
|
"favorites": curData
|
|
154
206
|
});
|
|
155
|
-
setFavorites(()
|
|
207
|
+
setFavorites(()=>curData);
|
|
156
208
|
};
|
|
157
|
-
const getData = (type)
|
|
209
|
+
const getData = (type)=>{
|
|
158
210
|
// get data
|
|
159
|
-
const localData = type ===
|
|
211
|
+
const localData = type === 0 ? [
|
|
212
|
+
...favorites
|
|
213
|
+
] : [
|
|
214
|
+
...recent
|
|
215
|
+
];
|
|
160
216
|
// filter
|
|
161
|
-
const keys = localData.map((item)
|
|
162
|
-
const filter = type ==
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
const favoriteKeys = favoritesData.map((item)
|
|
217
|
+
const keys = localData.map((item)=>item.name);
|
|
218
|
+
const filter = type == 2 ? data : data?.filter((item)=>keys.includes(item.symbol));
|
|
219
|
+
const favoritesData = [
|
|
220
|
+
...favorites
|
|
221
|
+
];
|
|
222
|
+
const favoriteKeys = favoritesData.map((item)=>item.name);
|
|
167
223
|
if (filter) {
|
|
168
|
-
for
|
|
224
|
+
for(let index = 0; index < filter.length; index++){
|
|
169
225
|
const element = filter[index];
|
|
170
|
-
const isFavorite = type ==
|
|
171
|
-
|
|
172
|
-
(favoriteKeys.includes(element.symbol));
|
|
173
|
-
const fIndex = favoritesData.findIndex((item) => item.name === element.symbol);
|
|
226
|
+
const isFavorite = type == 0 ? true : favoriteKeys.includes(element.symbol);
|
|
227
|
+
const fIndex = favoritesData.findIndex((item)=>item.name === element.symbol);
|
|
174
228
|
const tabs = fIndex === -1 ? [] : favoritesData[fIndex].tabs;
|
|
175
229
|
let imr = undefined;
|
|
176
230
|
if (publicInfo) {
|
|
@@ -187,18 +241,20 @@ export const useMarkets = (type) => {
|
|
|
187
241
|
}
|
|
188
242
|
return filter;
|
|
189
243
|
};
|
|
190
|
-
const addToHistory = (symbol)
|
|
244
|
+
const addToHistory = (symbol)=>{
|
|
191
245
|
setRecentData(symbol);
|
|
192
246
|
};
|
|
193
|
-
const updateSymbolFavoriteState = (symbol, tab, del = false)
|
|
247
|
+
const updateSymbolFavoriteState = (symbol, tab, del = false)=>{
|
|
194
248
|
setFavoritesData(symbol, tab, del);
|
|
195
249
|
};
|
|
196
250
|
const markets = getData(type);
|
|
197
|
-
const pinToTop = (symbol)
|
|
198
|
-
const index = favorites.findIndex((item)
|
|
251
|
+
const pinToTop = (symbol)=>{
|
|
252
|
+
const index = favorites.findIndex((item)=>item.name === symbol.symbol);
|
|
199
253
|
if (index !== -1) {
|
|
200
254
|
const element = favorites[index];
|
|
201
|
-
const list = [
|
|
255
|
+
const list = [
|
|
256
|
+
...favorites
|
|
257
|
+
];
|
|
202
258
|
list.splice(index, 1);
|
|
203
259
|
list.unshift(element);
|
|
204
260
|
configStore.set(marketsKey, {
|
|
@@ -208,15 +264,20 @@ export const useMarkets = (type) => {
|
|
|
208
264
|
setFavorites(list);
|
|
209
265
|
}
|
|
210
266
|
};
|
|
211
|
-
const tabs = useMemo(()
|
|
267
|
+
const tabs = useMemo(()=>{
|
|
212
268
|
return favoriteTabs;
|
|
213
|
-
}, [
|
|
214
|
-
|
|
269
|
+
}, [
|
|
270
|
+
favoriteTabs
|
|
271
|
+
]);
|
|
272
|
+
const getLastSelFavTab = ()=>{
|
|
215
273
|
// @ts-ignore
|
|
216
274
|
const curData = configStore.get(marketsKey)["lastSelectedFavoriteTab"];
|
|
217
|
-
return
|
|
275
|
+
return curData || {
|
|
276
|
+
name: "Popular",
|
|
277
|
+
id: 1
|
|
278
|
+
};
|
|
218
279
|
};
|
|
219
|
-
const updateSelectedFavoriteTab = (tab)
|
|
280
|
+
const updateSelectedFavoriteTab = (tab)=>{
|
|
220
281
|
configStore.set(marketsKey, {
|
|
221
282
|
...configStore.getOr(marketsKey, {}),
|
|
222
283
|
lastSelectedFavoriteTab: tab
|
|
@@ -234,7 +295,9 @@ export const useMarkets = (type) => {
|
|
|
234
295
|
updateSymbolFavoriteState,
|
|
235
296
|
pinToTop,
|
|
236
297
|
getLastSelFavTab,
|
|
237
|
-
updateSelectedFavoriteTab
|
|
238
|
-
}
|
|
298
|
+
updateSelectedFavoriteTab
|
|
299
|
+
}
|
|
239
300
|
];
|
|
240
301
|
};
|
|
302
|
+
|
|
303
|
+
//# sourceMappingURL=useMarkets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useMarkets.ts"],"sourcesContent":["import { useCallback, useContext, useMemo, useState } from \"react\";\nimport { useMarketsStream } from \"./useMarketsStream\";\nimport { useConfig } from \"../useConfig\";\nimport { OrderlyContext } from \"../orderlyContext\";\nimport { API } from \"@orderly.network/types\";\nimport { useQuery } from \"../useQuery\";\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\n\nexport enum MarketsType {\n FAVORITES,\n RECENT,\n ALL,\n}\n\n\n/*\n{\n markets: {\n recent: [\n { \"name\": `${symbol.name}` },\n { \"name\": `${symbol.name}` },\n ],\n favorites: [\n { \"name\": `${symbol.name}`, \"tabs\": [{ \"name\": \"Popular\", \"id\": 1 }] },\n ],\n favoriteTabs: [\n { \"name\": \"Popular\", \"id\": 1 },\n ],\n \"lastSelectFavoriteTab\": { \"name\": \"Popular\", \"id\": 1 }\n \n }\n}\n*/\n\n\nexport interface FavoriteTab {\n name: string;\n id: number;\n}\n\nexport interface Favorite {\n name: string;\n tabs: FavoriteTab[];\n}\n\nexport interface Recent {\n name: string;\n}\n\nexport const useMarkets = (type: MarketsType) => {\n\n const marketsKey = \"markets\";\n\n const { data } = useMarketsStream();\n const { configStore } = useContext(OrderlyContext);\n\n // {\"PERP_ETH_USDC\": {}, ...}\n const publicInfo = useSymbolsInfo();\n\n if (!configStore.get(marketsKey)) {\n const jsonStr = localStorage.getItem(marketsKey);\n if (jsonStr) {\n configStore.set(marketsKey, JSON.parse(jsonStr));\n } else {\n const defaultTab = { name: \"Popular\", id: 1 };\n configStore.set(marketsKey, {\n recent: [],\n favorites: [\n { name: \"PERP_ETH_USDC\", tabs: [{ ...defaultTab }] },\n { name: \"PERP_BTC_USDC\", tabs: [{ ...defaultTab }] },\n ],\n favoriteTabs: [{ ...defaultTab }],\n lastSelectFavoriteTab: { ...defaultTab }\n });\n }\n }\n\n const getFavoriteTabs = useMemo(() => {\n // @ts-ignore\n const tabs = configStore.get(marketsKey)[\"favoriteTabs\"];\n return (tabs || [{ name: \"Popular\", id: 1 }]) as FavoriteTab[];\n }, []);\n\n const getFavorites = useMemo(() => {\n // @ts-ignore\n const curData = (configStore.get(marketsKey,)[\"favorites\"] || []) as Favorite[];\n const tabs = getFavoriteTabs;\n const result = [];\n for (let index = 0; index < curData.length; index++) {\n const favData = curData[index];\n var favTabs = favData.tabs.filter((tab) => tabs.findIndex((item) => tab.id === item.id) !== -1);\n if (favTabs.length > 0) {\n result.push({ ...favData, tabs: favTabs })\n }\n\n }\n configStore.set(marketsKey, { ...configStore.getOr(marketsKey, {}), favorites: result });\n // localStorage.setItem(marketsKey, JSON.stringify(configStore.get(marketsKey)));\n\n return result;\n }, [configStore]);\n\n const getRecent = useMemo(() => {\n // @ts-ignore\n const curData = configStore.get(marketsKey)[\"recent\"];\n return ((curData || []) as Recent[]).filter((e) => e);\n }, []);\n\n const [favoriteTabs, setFavoriteTabs] = useState(getFavoriteTabs);\n const [favorites, setFavorites] = useState(getFavorites);\n const [recent, setRecent] = useState(getRecent);\n\n const updateFavoriteTabs = (tab: FavoriteTab | FavoriteTab[], operator?: {\n add?: boolean,\n update?: boolean,\n delete?: boolean,\n }) => {\n\n const saveTabs = (tabs: FavoriteTab[]) => {\n setFavoriteTabs(tabs);\n configStore.set(marketsKey, {\n ...configStore.getOr(marketsKey, {}),\n \"favoriteTabs\": tabs\n });\n };\n\n if (Array.isArray(tab)) {\n saveTabs(tab);\n return;\n }\n\n var tabs = [...favoriteTabs];\n const index = tabs.findIndex((item) => item.id === tab.id);\n if (operator?.add) {\n tabs.push(tab);\n } else if (operator?.update) {\n if (index !== -1) {\n tabs[index] = tab;\n }\n } else if (operator?.delete) {\n if (index !== -1) {\n tabs.splice(index, 1);\n\n }\n }\n saveTabs(tabs);\n };\n\n const setRecentData = (symbol: API.MarketInfoExt) => {\n const curData = [...recent];\n const index = curData.findIndex((item) => item.name == symbol.symbol);\n if (index !== -1) {\n curData.splice(index, 1);\n }\n curData.unshift({ name: symbol.symbol });\n configStore.set(marketsKey, {\n ...configStore.getOr(marketsKey, {}),\n \"recent\": curData\n });\n setRecent(curData);\n };\n\n\n\n const setFavoritesData = (symbol: API.MarketInfoExt, tab: FavoriteTab | FavoriteTab[], remove: boolean = false) => {\n\n const curData = [...favorites];\n const index = curData.findIndex((item) => item.name == symbol.symbol);\n\n if (index === -1) { // can not find\n if (Array.isArray(tab)) {\n if (tab.length > 0) {\n curData.unshift({ name: symbol.symbol, tabs: tab });\n }\n } else {\n if (!remove) {\n // insert\n curData.unshift({ name: symbol.symbol, tabs: [tab] });\n }\n }\n\n } else {\n const favorite = curData[index];\n if (Array.isArray(tab)) {\n if (tab.length === 0) {\n // remove\n curData.splice(index, 1);\n } else {\n // overrides\n curData[index] = { ...favorite, tabs: tab };\n }\n } else {\n if (remove) {\n const tabs = favorite.tabs.filter((tab) => tab.id != tab.id);\n if (tabs.length === 0) { // del favorite\n curData.splice(index, 1);\n } else {\n curData[index] = { ...favorite, tabs };\n }\n } else { // insert\n const tabs = favorite.tabs;\n tabs.push(tab);\n curData[index] = { ...favorite, tabs };\n }\n }\n }\n\n configStore.set(marketsKey, {\n ...configStore.getOr(marketsKey, {}),\n \"favorites\": curData\n });\n setFavorites(() => curData);\n };\n\n const getData = (type: MarketsType) => {\n\n\n // get data\n const localData = type === MarketsType.FAVORITES ? [...favorites] : [...recent];\n // filter\n const keys = localData.map((item) => item.name);\n const filter = type == MarketsType.ALL ?\n data :\n data?.filter((item) => keys.includes(item.symbol));\n\n const favoritesData = [...favorites];\n const favoriteKeys = favoritesData.map((item) => item.name);\n if (filter) {\n for (let index = 0; index < filter.length; index++) {\n const element = filter[index];\n const isFavorite = type == MarketsType.FAVORITES ?\n true :\n (favoriteKeys.includes(element.symbol));\n\n const fIndex = favoritesData.findIndex((item) => item.name === element.symbol);\n const tabs = fIndex === -1 ? [] : favoritesData[fIndex].tabs;\n\n let imr = undefined;\n if (publicInfo) {\n imr= publicInfo?.[element.symbol](\"base_imr\");\n }\n \n filter[index] = {\n ...filter[index],\n // @ts-ignore\n isFavorite,\n tabs,\n leverage: imr ? 1 / imr : undefined\n };\n }\n }\n\n return filter;\n\n };\n\n const addToHistory = (symbol: API.MarketInfoExt) => {\n setRecentData(symbol);\n };\n\n const updateSymbolFavoriteState = (symbol: API.MarketInfoExt, tab: FavoriteTab | FavoriteTab[], del: boolean = false) => {\n setFavoritesData(symbol, tab, del);\n };\n\n const markets = getData(type);\n\n const pinToTop = (symbol: API.MarketInfoExt) => {\n const index = favorites.findIndex((item) => item.name === symbol.symbol);\n if (index !== -1) {\n const element = favorites[index];\n const list = [...favorites];\n list.splice(index, 1);\n list.unshift(element);\n\n\n configStore.set(marketsKey, {\n ...configStore.getOr(marketsKey, {}),\n \"favorites\": list\n });\n setFavorites(list);\n }\n };\n\n\n const tabs = useMemo(() => {\n return favoriteTabs;\n }, [favoriteTabs]);\n\n\n const getLastSelFavTab = () => {\n // @ts-ignore\n const curData = configStore.get(marketsKey)[\"lastSelectedFavoriteTab\"];\n return (curData || { name: \"Popular\", id: 1 }) as FavoriteTab;\n };\n\n const updateSelectedFavoriteTab = (tab: FavoriteTab) => {\n configStore.set(marketsKey, {\n ...configStore.getOr(marketsKey, {}),\n lastSelectedFavoriteTab: tab\n });\n };\n\n return [\n markets || [],\n {\n favoriteTabs: tabs,\n favorites,\n recent,\n addToHistory,\n // updateFavoriteTabs(\"tab\", operator: {add/update/delete})\n updateFavoriteTabs,\n updateSymbolFavoriteState,\n pinToTop,\n getLastSelFavTab,\n updateSelectedFavoriteTab,\n },\n ] as const;\n}"],"names":["useContext","useMemo","useState","useMarketsStream","OrderlyContext","useSymbolsInfo","MarketsType","useMarkets","type","marketsKey","data","configStore","publicInfo","get","jsonStr","localStorage","getItem","set","JSON","parse","defaultTab","name","id","recent","favorites","tabs","favoriteTabs","lastSelectFavoriteTab","getFavoriteTabs","getFavorites","curData","result","index","length","favData","favTabs","filter","tab","findIndex","item","push","getOr","getRecent","e","setFavoriteTabs","setFavorites","setRecent","updateFavoriteTabs","operator","saveTabs","Array","isArray","add","update","delete","splice","setRecentData","symbol","unshift","setFavoritesData","remove","favorite","getData","localData","keys","map","includes","favoritesData","favoriteKeys","element","isFavorite","fIndex","imr","undefined","leverage","addToHistory","updateSymbolFavoriteState","del","markets","pinToTop","list","getLastSelFavTab","updateSelectedFavoriteTab","lastSelectedFavoriteTab"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAAsBA,UAAU,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAQ;AACnE,SAASC,gBAAgB,QAAQ,qBAAqB;AAEtD,SAASC,cAAc,QAAQ,oBAAoB;AAGnD,SAASC,cAAc,QAAQ,mBAAmB;;UAEtCC;;;;GAAAA,gBAAAA;AAyCZ,OAAO,MAAMC,aAAa,CAACC;IAEvB,MAAMC,aAAa;IAEnB,MAAM,EAAEC,IAAI,EAAE,GAAGP;IACjB,MAAM,EAAEQ,WAAW,EAAE,GAAGX,WAAWI;IAEnC,6BAA6B;IAC7B,MAAMQ,aAAaP;IAEnB,IAAI,CAACM,YAAYE,GAAG,CAACJ,aAAa;QAC9B,MAAMK,UAAUC,aAAaC,OAAO,CAACP;QACrC,IAAIK,SAAS;YACTH,YAAYM,GAAG,CAACR,YAAYS,KAAKC,KAAK,CAACL;QAC3C,OAAO;YACH,MAAMM,aAAa;gBAAEC,MAAM;gBAAWC,IAAI;YAAE;YAC5CX,YAAYM,GAAG,CAACR,YAAY;gBACxBc,QAAQ,EAAE;gBACVC,WAAW;oBACP;wBAAEH,MAAM;wBAAiBI,MAAM;4BAAC;gCAAE,GAAGL,UAAU;4BAAC;yBAAE;oBAAC;oBACnD;wBAAEC,MAAM;wBAAiBI,MAAM;4BAAC;gCAAE,GAAGL,UAAU;4BAAC;yBAAE;oBAAC;iBACtD;gBACDM,cAAc;oBAAC;wBAAE,GAAGN,UAAU;oBAAC;iBAAE;gBACjCO,uBAAuB;oBAAE,GAAGP,UAAU;gBAAC;YAC3C;QACJ;IACJ;IAEA,MAAMQ,kBAAkB3B,QAAQ;QAC5B,aAAa;QACb,MAAMwB,OAAOd,YAAYE,GAAG,CAACJ,WAAW,CAAC,eAAe;QACxD,OAAQgB,QAAQ;YAAC;gBAAEJ,MAAM;gBAAWC,IAAI;YAAE;SAAE;IAChD,GAAG,EAAE;IAEL,MAAMO,eAAe5B,QAAQ;QACzB,aAAa;QACb,MAAM6B,UAAWnB,YAAYE,GAAG,CAACJ,WAAY,CAAC,YAAY,IAAI,EAAE;QAChE,MAAMgB,OAAOG;QACb,MAAMG,SAAS,EAAE;QACjB,IAAK,IAAIC,QAAQ,GAAGA,QAAQF,QAAQG,MAAM,EAAED,QAAS;YACjD,MAAME,UAAUJ,OAAO,CAACE,MAAM;YAC9B,IAAIG,UAAUD,QAAQT,IAAI,CAACW,MAAM,CAAC,CAACC,MAAQZ,KAAKa,SAAS,CAAC,CAACC,OAASF,IAAIf,EAAE,KAAKiB,KAAKjB,EAAE,MAAM,CAAC;YAC7F,IAAIa,QAAQF,MAAM,GAAG,GAAG;gBACpBF,OAAOS,IAAI,CAAC;oBAAE,GAAGN,OAAO;oBAAET,MAAMU;gBAAQ;YAC5C;QAEJ;QACAxB,YAAYM,GAAG,CAACR,YAAY;YAAE,GAAGE,YAAY8B,KAAK,CAAChC,YAAY,CAAC,EAAE;YAAEe,WAAWO;QAAO;QACtF,iFAAiF;QAEjF,OAAOA;IACX,GAAG;QAACpB;KAAY;IAEhB,MAAM+B,YAAYzC,QAAQ;QACtB,aAAa;QACb,MAAM6B,UAAUnB,YAAYE,GAAG,CAACJ,WAAW,CAAC,SAAS;QACrD,OAAO,AAAEqB,CAAAA,WAAW,EAAE,AAAD,EAAgBM,MAAM,CAAC,CAACO,IAAMA;IACvD,GAAG,EAAE;IAEL,MAAM,CAACjB,cAAckB,gBAAgB,GAAG1C,SAAS0B;IACjD,MAAM,CAACJ,WAAWqB,aAAa,GAAG3C,SAAS2B;IAC3C,MAAM,CAACN,QAAQuB,UAAU,GAAG5C,SAASwC;IAErC,MAAMK,qBAAqB,CAACV,KAAkCW;QAM1D,MAAMC,WAAW,CAACxB;YACdmB,gBAAgBnB;YAChBd,YAAYM,GAAG,CAACR,YAAY;gBACxB,GAAGE,YAAY8B,KAAK,CAAChC,YAAY,CAAC,EAAE;gBACpC,gBAAgBgB;YACpB;QACJ;QAEA,IAAIyB,MAAMC,OAAO,CAACd,MAAM;YACpBY,SAASZ;YACT;QACJ;QAEA,IAAIZ,OAAO;eAAIC;SAAa;QAC5B,MAAMM,QAAQP,KAAKa,SAAS,CAAC,CAACC,OAASA,KAAKjB,EAAE,KAAKe,IAAIf,EAAE;QACzD,IAAI0B,UAAUI,KAAK;YACf3B,KAAKe,IAAI,CAACH;QACd,OAAO,IAAIW,UAAUK,QAAQ;YACzB,IAAIrB,UAAU,CAAC,GAAG;gBACdP,IAAI,CAACO,MAAM,GAAGK;YAClB;QACJ,OAAO,IAAIW,UAAUM,QAAQ;YACzB,IAAItB,UAAU,CAAC,GAAG;gBACdP,KAAK8B,MAAM,CAACvB,OAAO;YAEvB;QACJ;QACAiB,SAASxB;IACb;IAEA,MAAM+B,gBAAgB,CAACC;QACnB,MAAM3B,UAAU;eAAIP;SAAO;QAC3B,MAAMS,QAAQF,QAAQQ,SAAS,CAAC,CAACC,OAASA,KAAKlB,IAAI,IAAIoC,OAAOA,MAAM;QACpE,IAAIzB,UAAU,CAAC,GAAG;YACdF,QAAQyB,MAAM,CAACvB,OAAO;QAC1B;QACAF,QAAQ4B,OAAO,CAAC;YAAErC,MAAMoC,OAAOA,MAAM;QAAC;QACtC9C,YAAYM,GAAG,CAACR,YAAY;YACxB,GAAGE,YAAY8B,KAAK,CAAChC,YAAY,CAAC,EAAE;YACpC,UAAUqB;QACd;QACAgB,UAAUhB;IACd;IAIA,MAAM6B,mBAAmB,CAACF,QAA2BpB,KAAkCuB,SAAkB,KAAK;QAE1G,MAAM9B,UAAU;eAAIN;SAAU;QAC9B,MAAMQ,QAAQF,QAAQQ,SAAS,CAAC,CAACC,OAASA,KAAKlB,IAAI,IAAIoC,OAAOA,MAAM;QAEpE,IAAIzB,UAAU,CAAC,GAAG;YACd,IAAIkB,MAAMC,OAAO,CAACd,MAAM;gBACpB,IAAIA,IAAIJ,MAAM,GAAG,GAAG;oBAChBH,QAAQ4B,OAAO,CAAC;wBAAErC,MAAMoC,OAAOA,MAAM;wBAAEhC,MAAMY;oBAAI;gBACrD;YACJ,OAAO;gBACH,IAAI,CAACuB,QAAQ;oBACT,SAAS;oBACT9B,QAAQ4B,OAAO,CAAC;wBAAErC,MAAMoC,OAAOA,MAAM;wBAAEhC,MAAM;4BAACY;yBAAI;oBAAC;gBACvD;YACJ;QAEJ,OAAO;YACH,MAAMwB,WAAW/B,OAAO,CAACE,MAAM;YAC/B,IAAIkB,MAAMC,OAAO,CAACd,MAAM;gBACpB,IAAIA,IAAIJ,MAAM,KAAK,GAAG;oBAClB,SAAS;oBACTH,QAAQyB,MAAM,CAACvB,OAAO;gBAC1B,OAAO;oBACH,YAAY;oBACZF,OAAO,CAACE,MAAM,GAAG;wBAAE,GAAG6B,QAAQ;wBAAEpC,MAAMY;oBAAI;gBAC9C;YACJ,OAAO;gBACH,IAAIuB,QAAQ;oBACR,MAAMnC,OAAOoC,SAASpC,IAAI,CAACW,MAAM,CAAC,CAACC,MAAQA,IAAIf,EAAE,IAAIe,IAAIf,EAAE;oBAC3D,IAAIG,KAAKQ,MAAM,KAAK,GAAG;wBACnBH,QAAQyB,MAAM,CAACvB,OAAO;oBAC1B,OAAO;wBACHF,OAAO,CAACE,MAAM,GAAG;4BAAE,GAAG6B,QAAQ;4BAAEpC;wBAAK;oBACzC;gBACJ,OAAO;oBACH,MAAMA,OAAOoC,SAASpC,IAAI;oBAC1BA,KAAKe,IAAI,CAACH;oBACVP,OAAO,CAACE,MAAM,GAAG;wBAAE,GAAG6B,QAAQ;wBAAEpC;oBAAK;gBACzC;YACJ;QACJ;QAEAd,YAAYM,GAAG,CAACR,YAAY;YACxB,GAAGE,YAAY8B,KAAK,CAAChC,YAAY,CAAC,EAAE;YACpC,aAAaqB;QACjB;QACAe,aAAa,IAAMf;IACvB;IAEA,MAAMgC,UAAU,CAACtD;QAGb,WAAW;QACX,MAAMuD,YAAYvD,aAAiC;eAAIgB;SAAU,GAAG;eAAID;SAAO;QAC/E,SAAS;QACT,MAAMyC,OAAOD,UAAUE,GAAG,CAAC,CAAC1B,OAASA,KAAKlB,IAAI;QAC9C,MAAMe,SAAS5B,YACXE,OACAA,MAAM0B,OAAO,CAACG,OAASyB,KAAKE,QAAQ,CAAC3B,KAAKkB,MAAM;QAEpD,MAAMU,gBAAgB;eAAI3C;SAAU;QACpC,MAAM4C,eAAeD,cAAcF,GAAG,CAAC,CAAC1B,OAASA,KAAKlB,IAAI;QAC1D,IAAIe,QAAQ;YACR,IAAK,IAAIJ,QAAQ,GAAGA,QAAQI,OAAOH,MAAM,EAAED,QAAS;gBAChD,MAAMqC,UAAUjC,MAAM,CAACJ,MAAM;gBAC7B,MAAMsC,aAAa9D,YACf,OACC4D,aAAaF,QAAQ,CAACG,QAAQZ,MAAM;gBAEzC,MAAMc,SAASJ,cAAc7B,SAAS,CAAC,CAACC,OAASA,KAAKlB,IAAI,KAAKgD,QAAQZ,MAAM;gBAC7E,MAAMhC,OAAO8C,WAAW,CAAC,IAAI,EAAE,GAAGJ,aAAa,CAACI,OAAO,CAAC9C,IAAI;gBAE5D,IAAI+C,MAAMC;gBACV,IAAI7D,YAAY;oBACZ4D,MAAK5D,YAAY,CAACyD,QAAQZ,MAAM,CAAC,CAAC;gBACtC;gBAEArB,MAAM,CAACJ,MAAM,GAAG;oBACZ,GAAGI,MAAM,CAACJ,MAAM;oBAChB,aAAa;oBACbsC;oBACA7C;oBACAiD,UAAUF,MAAM,IAAIA,MAAMC;gBAC9B;YACJ;QACJ;QAEA,OAAOrC;IAEX;IAEA,MAAMuC,eAAe,CAAClB;QAClBD,cAAcC;IAClB;IAEA,MAAMmB,4BAA4B,CAACnB,QAA2BpB,KAAkCwC,MAAe,KAAK;QAChHlB,iBAAiBF,QAAQpB,KAAKwC;IAClC;IAEA,MAAMC,UAAUhB,QAAQtD;IAExB,MAAMuE,WAAW,CAACtB;QACd,MAAMzB,QAAQR,UAAUc,SAAS,CAAC,CAACC,OAASA,KAAKlB,IAAI,KAAKoC,OAAOA,MAAM;QACvE,IAAIzB,UAAU,CAAC,GAAG;YACd,MAAMqC,UAAU7C,SAAS,CAACQ,MAAM;YAChC,MAAMgD,OAAO;mBAAIxD;aAAU;YAC3BwD,KAAKzB,MAAM,CAACvB,OAAO;YACnBgD,KAAKtB,OAAO,CAACW;YAGb1D,YAAYM,GAAG,CAACR,YAAY;gBACxB,GAAGE,YAAY8B,KAAK,CAAChC,YAAY,CAAC,EAAE;gBACpC,aAAauE;YACjB;YACAnC,aAAamC;QACjB;IACJ;IAGA,MAAMvD,OAAOxB,QAAQ;QACjB,OAAOyB;IACX,GAAG;QAACA;KAAa;IAGjB,MAAMuD,mBAAmB;QACrB,aAAa;QACb,MAAMnD,UAAUnB,YAAYE,GAAG,CAACJ,WAAW,CAAC,0BAA0B;QACtE,OAAQqB,WAAW;YAAET,MAAM;YAAWC,IAAI;QAAE;IAChD;IAEA,MAAM4D,4BAA4B,CAAC7C;QAC/B1B,YAAYM,GAAG,CAACR,YAAY;YACxB,GAAGE,YAAY8B,KAAK,CAAChC,YAAY,CAAC,EAAE;YACpC0E,yBAAyB9C;QAC7B;IACJ;IAEA,OAAO;QACHyC,WAAW,EAAE;QACb;YACIpD,cAAcD;YACdD;YACAD;YACAoD;YACA,2DAA2D;YAC3D5B;YACA6B;YACAG;YACAE;YACAC;QACJ;KACH;AACL,EAAC"}
|
|
@@ -3,56 +3,51 @@ import { useQuery } from "../useQuery";
|
|
|
3
3
|
import { useWS } from "../useWS";
|
|
4
4
|
import useSWRSubscription from "swr/subscription";
|
|
5
5
|
import { Decimal } from "@orderly.network/utils";
|
|
6
|
-
export const useMarketsStream = ()
|
|
6
|
+
export const useMarketsStream = ()=>{
|
|
7
7
|
// get listing of all markets from /public/info
|
|
8
8
|
const ws = useWS();
|
|
9
9
|
const { data: futures } = useQuery(`/v1/public/futures`, {
|
|
10
|
-
revalidateOnFocus: false
|
|
10
|
+
revalidateOnFocus: false
|
|
11
11
|
});
|
|
12
|
-
const { data: tickers } = useSWRSubscription("tickers", (_, { next })
|
|
13
|
-
const unsubscribe = ws.subscribe(
|
|
14
|
-
// { event: "subscribe", topic: "markprices" },
|
|
12
|
+
const { data: tickers } = useSWRSubscription("tickers", (_, { next })=>{
|
|
13
|
+
const unsubscribe = ws.subscribe(// { event: "subscribe", topic: "markprices" },
|
|
15
14
|
"tickers", {
|
|
16
|
-
onMessage: (message)
|
|
15
|
+
onMessage: (message)=>{
|
|
17
16
|
// window.debugPrint(message);
|
|
18
17
|
next(null, message);
|
|
19
|
-
}
|
|
20
|
-
// onUnsubscribe: () => {
|
|
21
|
-
// return "markprices";
|
|
22
|
-
// },
|
|
23
|
-
// onError: (error: any) => {
|
|
24
|
-
//
|
|
25
|
-
// },
|
|
18
|
+
}
|
|
26
19
|
});
|
|
27
|
-
return ()
|
|
20
|
+
return ()=>{
|
|
28
21
|
unsubscribe?.();
|
|
29
22
|
};
|
|
30
23
|
});
|
|
31
|
-
const value = useMemo(()
|
|
32
|
-
if (!futures)
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return futures.map((item) => {
|
|
37
|
-
const ticker = tickers.find((t) => t.symbol === item.symbol);
|
|
24
|
+
const value = useMemo(()=>{
|
|
25
|
+
if (!futures) return null;
|
|
26
|
+
if (!tickers) return futures;
|
|
27
|
+
return futures.map((item)=>{
|
|
28
|
+
const ticker = tickers.find((t)=>t.symbol === item.symbol);
|
|
38
29
|
if (ticker) {
|
|
39
30
|
const data = {
|
|
40
31
|
...item,
|
|
41
32
|
["24h_close"]: ticker.close,
|
|
42
33
|
["24h_open"]: ticker.open,
|
|
43
34
|
["24h_volumn"]: ticker.volume,
|
|
44
|
-
change: 0
|
|
35
|
+
change: 0
|
|
45
36
|
};
|
|
46
37
|
if (ticker.close !== undefined && ticker.open !== undefined) {
|
|
47
|
-
data["change"] = new Decimal(ticker.close)
|
|
48
|
-
.minus(ticker.open)
|
|
49
|
-
.div(ticker.open)
|
|
50
|
-
.toNumber();
|
|
38
|
+
data["change"] = new Decimal(ticker.close).minus(ticker.open).div(ticker.open).toNumber();
|
|
51
39
|
}
|
|
52
40
|
return data;
|
|
53
41
|
}
|
|
54
42
|
return item;
|
|
55
43
|
});
|
|
56
|
-
}, [
|
|
57
|
-
|
|
44
|
+
}, [
|
|
45
|
+
futures,
|
|
46
|
+
tickers
|
|
47
|
+
]);
|
|
48
|
+
return {
|
|
49
|
+
data: value
|
|
50
|
+
};
|
|
58
51
|
};
|
|
52
|
+
|
|
53
|
+
//# sourceMappingURL=useMarketsStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useMarketsStream.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useQuery } from \"../useQuery\";\nimport { useWS } from \"../useWS\";\nimport useSWRSubscription from \"swr/subscription\";\nimport { WSMessage } from \"@orderly.network/types\";\nimport { Decimal } from \"@orderly.network/utils\";\n\nexport const useMarketsStream = () => {\n // get listing of all markets from /public/info\n const ws = useWS();\n const { data: futures } = useQuery<WSMessage.Ticker[]>(`/v1/public/futures`, {\n revalidateOnFocus: false,\n });\n\n const { data: tickers } = useSWRSubscription(\"tickers\", (_, { next }) => {\n const unsubscribe = ws.subscribe(\n // { event: \"subscribe\", topic: \"markprices\" },\n \"tickers\",\n {\n onMessage: (message: any) => {\n // window.debugPrint(message);\n next(null, message);\n },\n // onUnsubscribe: () => {\n // return \"markprices\";\n // },\n // onError: (error: any) => {\n //\n // },\n }\n );\n\n return () => {\n unsubscribe?.();\n };\n });\n\n const value = useMemo(() => {\n if (!futures) return null;\n if (!tickers) return futures;\n\n return futures.map((item) => {\n const ticker = tickers.find(\n (t: WSMessage.Ticker) => t.symbol === item.symbol\n );\n if (ticker) {\n const data = {\n ...item,\n [\"24h_close\"]: ticker.close,\n [\"24h_open\"]: ticker.open,\n [\"24h_volumn\"]: ticker.volume,\n change: 0,\n };\n\n if (ticker.close !== undefined && ticker.open !== undefined) {\n data[\"change\"] = new Decimal(ticker.close)\n .minus(ticker.open)\n .div(ticker.open)\n .toNumber();\n }\n\n return data;\n }\n return item;\n });\n }, [futures, tickers]);\n\n return { data: value };\n};\n"],"names":["useMemo","useQuery","useWS","useSWRSubscription","Decimal","useMarketsStream","ws","data","futures","revalidateOnFocus","tickers","_","next","unsubscribe","subscribe","onMessage","message","value","map","item","ticker","find","t","symbol","close","open","volume","change","undefined","minus","div","toNumber"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,OAAO,QAAQ,QAAQ;AAChC,SAASC,QAAQ,QAAQ,cAAc;AACvC,SAASC,KAAK,QAAQ,WAAW;AACjC,OAAOC,wBAAwB,mBAAmB;AAElD,SAASC,OAAO,QAAQ,yBAAyB;AAEjD,OAAO,MAAMC,mBAAmB;IAC9B,+CAA+C;IAC/C,MAAMC,KAAKJ;IACX,MAAM,EAAEK,MAAMC,OAAO,EAAE,GAAGP,SAA6B,CAAC,kBAAkB,CAAC,EAAE;QAC3EQ,mBAAmB;IACrB;IAEA,MAAM,EAAEF,MAAMG,OAAO,EAAE,GAAGP,mBAAmB,WAAW,CAACQ,GAAG,EAAEC,IAAI,EAAE;QAClE,MAAMC,cAAcP,GAAGQ,SAAS,CAC9B,+CAA+C;QAC/C,WACA;YACEC,WAAW,CAACC;gBACV,8BAA8B;gBAC9BJ,KAAK,MAAMI;YACb;QAOF;QAGF,OAAO;YACLH;QACF;IACF;IAEA,MAAMI,QAAQjB,QAAQ;QACpB,IAAI,CAACQ,SAAS,OAAO;QACrB,IAAI,CAACE,SAAS,OAAOF;QAErB,OAAOA,QAAQU,GAAG,CAAC,CAACC;YAClB,MAAMC,SAASV,QAAQW,IAAI,CACzB,CAACC,IAAwBA,EAAEC,MAAM,KAAKJ,KAAKI,MAAM;YAEnD,IAAIH,QAAQ;gBACV,MAAMb,OAAO;oBACX,GAAGY,IAAI;oBACP,CAAC,YAAY,EAAEC,OAAOI,KAAK;oBAC3B,CAAC,WAAW,EAAEJ,OAAOK,IAAI;oBACzB,CAAC,aAAa,EAAEL,OAAOM,MAAM;oBAC7BC,QAAQ;gBACV;gBAEA,IAAIP,OAAOI,KAAK,KAAKI,aAAaR,OAAOK,IAAI,KAAKG,WAAW;oBAC3DrB,IAAI,CAAC,SAAS,GAAG,IAAIH,QAAQgB,OAAOI,KAAK,EACtCK,KAAK,CAACT,OAAOK,IAAI,EACjBK,GAAG,CAACV,OAAOK,IAAI,EACfM,QAAQ;gBACb;gBAEA,OAAOxB;YACT;YACA,OAAOY;QACT;IACF,GAAG;QAACX;QAASE;KAAQ;IAErB,OAAO;QAAEH,MAAMU;IAAM;AACvB,EAAE"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import { OrderSide } from "@orderly.network/types";
|
|
2
|
+
/**
|
|
3
|
+
* @param symbol
|
|
4
|
+
* @param side
|
|
5
|
+
* @param reduceOnly
|
|
6
|
+
* @returns the maximum quantity available for trading in USD
|
|
7
|
+
*/
|
|
2
8
|
export declare const useMaxQty: (symbol: string, side: OrderSide, reduceOnly?: boolean) => number;
|
|
3
9
|
//# sourceMappingURL=useMaxQty.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMaxQty.d.ts","sourceRoot":"","sources":["../../src/orderly/useMaxQty.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,SAAS,EAAe,MAAM,wBAAwB,CAAC;AAe1E,eAAO,MAAM,SAAS,WACZ,MAAM,QACR,SAAS,eACH,OAAO,WA2HpB,CAAC"}
|
|
1
|
+
{"version":3,"file":"useMaxQty.d.ts","sourceRoot":"","sources":["../../src/orderly/useMaxQty.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,SAAS,EAAe,MAAM,wBAAwB,CAAC;AAe1E;;;;;GAKG;AACH,eAAO,MAAM,SAAS,WACZ,MAAM,QACR,SAAS,eACH,OAAO,WA2HpB,CAAC"}
|
package/esm/orderly/useMaxQty.js
CHANGED
|
@@ -8,56 +8,62 @@ import { usePrivateQuery } from "../usePrivateQuery";
|
|
|
8
8
|
import { usePositionStream } from "./usePositionStream";
|
|
9
9
|
import { pathOr } from "ramda";
|
|
10
10
|
import { useOrderStream } from "./useOrderStream";
|
|
11
|
-
const positionsPath = pathOr([], [
|
|
12
|
-
|
|
11
|
+
const positionsPath = pathOr([], [
|
|
12
|
+
0,
|
|
13
|
+
"rows"
|
|
14
|
+
]);
|
|
15
|
+
/**
|
|
16
|
+
* @param symbol
|
|
17
|
+
* @param side
|
|
18
|
+
* @param reduceOnly
|
|
19
|
+
* @returns the maximum quantity available for trading in USD
|
|
20
|
+
*/ export const useMaxQty = (symbol, side, reduceOnly = false)=>{
|
|
13
21
|
const positionsData = usePositionStream();
|
|
14
22
|
// const [orders] = useOrderStream({ status: OrderStatus.NEW });
|
|
15
23
|
const { data: accountInfo } = usePrivateQuery("/v1/client/info");
|
|
16
24
|
const symbolInfo = useSymbolsInfo();
|
|
17
25
|
const { totalCollateral } = useCollateral();
|
|
18
26
|
const { data: markPrices } = useMarkPricesStream();
|
|
19
|
-
const [orders] = useOrderStream({
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
27
|
+
const [orders] = useOrderStream({
|
|
28
|
+
status: OrderStatus.NEW
|
|
29
|
+
});
|
|
30
|
+
const maxQty = useMemo(()=>{
|
|
31
|
+
if (!symbol) return 0;
|
|
23
32
|
const positions = positionsPath(positionsData);
|
|
24
33
|
const positionQty = account.getQtyFromPositions(positions, symbol);
|
|
25
34
|
if (reduceOnly) {
|
|
26
35
|
if (positionQty > 0) {
|
|
27
36
|
if (side === OrderSide.BUY) {
|
|
28
37
|
return 0;
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
38
|
+
} else {
|
|
31
39
|
return Math.abs(positionQty);
|
|
32
40
|
}
|
|
33
41
|
}
|
|
34
42
|
if (positionQty < 0) {
|
|
35
43
|
if (side === OrderSide.BUY) {
|
|
36
44
|
return Math.abs(positionQty);
|
|
37
|
-
}
|
|
38
|
-
else {
|
|
45
|
+
} else {
|
|
39
46
|
return 0;
|
|
40
47
|
}
|
|
41
48
|
}
|
|
42
49
|
return 0;
|
|
43
50
|
}
|
|
44
|
-
if (!markPrices || !markPrices[symbol] || !orders || !accountInfo)
|
|
45
|
-
return 0;
|
|
51
|
+
if (!markPrices || !markPrices[symbol] || !orders || !accountInfo) return 0;
|
|
46
52
|
const getSymbolInfo = symbolInfo[symbol];
|
|
47
|
-
const filterAlgoOrders = orders.filter((item)
|
|
53
|
+
const filterAlgoOrders = orders.filter((item)=>item.algo_order_id === undefined);
|
|
48
54
|
// current symbol buy order quantity
|
|
49
55
|
const buyOrdersQty = account.getQtyFromOrdersBySide(filterAlgoOrders, symbol, OrderSide.BUY);
|
|
50
56
|
// current symbol sell order quantity
|
|
51
57
|
const sellOrdersQty = account.getQtyFromOrdersBySide(filterAlgoOrders, symbol, OrderSide.SELL);
|
|
52
|
-
const otherPositions = positions.filter((item)
|
|
53
|
-
const otherOrders = filterAlgoOrders.filter((item)
|
|
58
|
+
const otherPositions = positions.filter((item)=>item.symbol !== symbol);
|
|
59
|
+
const otherOrders = filterAlgoOrders.filter((item)=>item.symbol !== symbol);
|
|
54
60
|
const otherIMs = account.otherIMs({
|
|
55
61
|
orders: otherOrders,
|
|
56
62
|
positions: otherPositions,
|
|
57
63
|
symbolInfo,
|
|
58
64
|
markPrices,
|
|
59
65
|
IMR_Factors: accountInfo.imr_factor,
|
|
60
|
-
maxLeverage: accountInfo.max_leverage
|
|
66
|
+
maxLeverage: accountInfo.max_leverage
|
|
61
67
|
});
|
|
62
68
|
return account.maxQty(side, {
|
|
63
69
|
markPrice: markPrices[symbol],
|
|
@@ -71,7 +77,7 @@ export const useMaxQty = (symbol, side, reduceOnly = false) => {
|
|
|
71
77
|
positionQty,
|
|
72
78
|
buyOrdersQty,
|
|
73
79
|
sellOrdersQty,
|
|
74
|
-
IMR_Factor: accountInfo.imr_factor[symbol]
|
|
80
|
+
IMR_Factor: accountInfo.imr_factor[symbol]
|
|
75
81
|
});
|
|
76
82
|
}, [
|
|
77
83
|
orders,
|
|
@@ -82,7 +88,7 @@ export const useMaxQty = (symbol, side, reduceOnly = false) => {
|
|
|
82
88
|
symbol,
|
|
83
89
|
side,
|
|
84
90
|
totalCollateral,
|
|
85
|
-
reduceOnly
|
|
91
|
+
reduceOnly
|
|
86
92
|
]);
|
|
87
93
|
// debugPrint({
|
|
88
94
|
// maxQty,
|
|
@@ -99,3 +105,5 @@ export const useMaxQty = (symbol, side, reduceOnly = false) => {
|
|
|
99
105
|
// console.log("maxQty", maxQty);
|
|
100
106
|
return Math.max(maxQty, 0);
|
|
101
107
|
};
|
|
108
|
+
|
|
109
|
+
//# sourceMappingURL=useMaxQty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useMaxQty.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\nimport { type API, OrderSide, OrderStatus } from \"@orderly.network/types\";\n\nimport { useSymbolsInfo } from \"./useSymbolsInfo\";\n\nimport { useMarkPricesStream } from \"./useMarkPricesStream\";\nimport { account } from \"@orderly.network/perp\";\nimport { useCollateral } from \"./useCollateral\";\n\nimport { usePrivateQuery } from \"../usePrivateQuery\";\nimport { usePositionStream } from \"./usePositionStream\";\nimport { pathOr } from \"ramda\";\nimport { useOrderStream } from \"./useOrderStream\";\n\nconst positionsPath = pathOr([], [0, \"rows\"]);\n\n/**\n * @param symbol\n * @param side\n * @param reduceOnly\n * @returns the maximum quantity available for trading in USD\n */\nexport const useMaxQty = (\n symbol: string,\n side: OrderSide,\n reduceOnly: boolean = false\n) => {\n const positionsData = usePositionStream();\n\n // const [orders] = useOrderStream({ status: OrderStatus.NEW });\n\n const { data: accountInfo } =\n usePrivateQuery<API.AccountInfo>(\"/v1/client/info\");\n\n const symbolInfo = useSymbolsInfo();\n\n const { totalCollateral } = useCollateral();\n\n const { data: markPrices } = useMarkPricesStream();\n\n const [orders] = useOrderStream({ status: OrderStatus.NEW });\n\n const maxQty = useMemo(() => {\n if (!symbol) return 0;\n\n const positions = positionsPath(positionsData);\n\n const positionQty = account.getQtyFromPositions(positions, symbol);\n\n if (reduceOnly) {\n if (positionQty > 0) {\n if (side === OrderSide.BUY) {\n return 0;\n } else {\n return Math.abs(positionQty);\n }\n }\n\n if (positionQty < 0) {\n if (side === OrderSide.BUY) {\n return Math.abs(positionQty);\n } else {\n return 0;\n }\n }\n\n return 0;\n }\n\n if (!markPrices || !markPrices[symbol] || !orders || !accountInfo) return 0;\n\n const getSymbolInfo = symbolInfo[symbol];\n\n const filterAlgoOrders = orders.filter(\n (item) => item.algo_order_id === undefined\n );\n\n // current symbol buy order quantity\n const buyOrdersQty = account.getQtyFromOrdersBySide(\n filterAlgoOrders,\n symbol,\n OrderSide.BUY\n );\n // current symbol sell order quantity\n const sellOrdersQty = account.getQtyFromOrdersBySide(\n filterAlgoOrders,\n symbol,\n OrderSide.SELL\n );\n\n const otherPositions = positions.filter(\n (item: API.Position) => item.symbol !== symbol\n );\n\n const otherOrders = filterAlgoOrders.filter(\n (item: API.Order) => item.symbol !== symbol\n );\n\n const otherIMs = account.otherIMs({\n orders: otherOrders,\n positions: otherPositions,\n symbolInfo,\n markPrices,\n IMR_Factors: accountInfo.imr_factor,\n maxLeverage: accountInfo.max_leverage,\n });\n\n return account.maxQty(side, {\n markPrice: markPrices[symbol],\n symbol,\n baseMaxQty: getSymbolInfo(\"base_max\"),\n totalCollateral,\n maxLeverage: accountInfo.max_leverage,\n takerFeeRate: accountInfo.futures_taker_fee_rate,\n baseIMR: getSymbolInfo(\"base_imr\"),\n otherIMs,\n positionQty,\n buyOrdersQty,\n sellOrdersQty,\n IMR_Factor: accountInfo.imr_factor[symbol],\n });\n }, [\n orders,\n positionsData,\n markPrices,\n accountInfo,\n symbolInfo,\n symbol,\n side,\n totalCollateral,\n reduceOnly,\n ]);\n\n // debugPrint({\n // maxQty,\n // totalCollateral,\n // side,\n // // reduceOnly,\n // orders: orders?.map((o) => o.quantity),\n // // positionsData,\n // // markPrices,\n // // accountInfo,\n // // symbolInfo,\n // // symbol,\n // });\n // console.log(\"maxQty\", maxQty);\n\n return Math.max(maxQty, 0) as number;\n};\n"],"names":["useMemo","OrderSide","OrderStatus","useSymbolsInfo","useMarkPricesStream","account","useCollateral","usePrivateQuery","usePositionStream","pathOr","useOrderStream","positionsPath","useMaxQty","symbol","side","reduceOnly","positionsData","data","accountInfo","symbolInfo","totalCollateral","markPrices","orders","status","NEW","maxQty","positions","positionQty","getQtyFromPositions","BUY","Math","abs","getSymbolInfo","filterAlgoOrders","filter","item","algo_order_id","undefined","buyOrdersQty","getQtyFromOrdersBySide","sellOrdersQty","SELL","otherPositions","otherOrders","otherIMs","IMR_Factors","imr_factor","maxLeverage","max_leverage","markPrice","baseMaxQty","takerFeeRate","futures_taker_fee_rate","baseIMR","IMR_Factor","max"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { useWS } from "../useWS";
|
|
2
2
|
import useSWRSubscription from "swr/subscription";
|
|
3
|
-
export const useOpenInterest = (symbol)
|
|
3
|
+
export const useOpenInterest = (symbol)=>{
|
|
4
4
|
const ws = useWS();
|
|
5
|
-
return useSWRSubscription(`${symbol}@openinterest`, (key, { next })
|
|
5
|
+
return useSWRSubscription(`${symbol}@openinterest`, (key, { next })=>{
|
|
6
6
|
const unsubscribe = ws.subscribe(`${symbol}@openinterest`, {
|
|
7
|
-
onMessage: (message)
|
|
7
|
+
onMessage: (message)=>{
|
|
8
8
|
next(null, message.openInterest);
|
|
9
|
-
}
|
|
9
|
+
}
|
|
10
10
|
});
|
|
11
|
-
return ()
|
|
11
|
+
return ()=>{
|
|
12
12
|
unsubscribe?.();
|
|
13
13
|
};
|
|
14
14
|
});
|
|
15
15
|
};
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=useOpenInterest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/orderly/useOpenInterest.ts"],"sourcesContent":["import { useWS } from \"../useWS\";\nimport useSWRSubscription from \"swr/subscription\";\n\nexport const useOpenInterest = (symbol: string) => {\n const ws = useWS();\n return useSWRSubscription(`${symbol}@openinterest`, (key, { next }) => {\n const unsubscribe = ws.subscribe(`${symbol}@openinterest`, {\n onMessage: (message: any) => {\n next(null, message.openInterest);\n },\n });\n\n return () => {\n unsubscribe?.();\n };\n });\n};\n"],"names":["useWS","useSWRSubscription","useOpenInterest","symbol","ws","key","next","unsubscribe","subscribe","onMessage","message","openInterest"],"rangeMappings":";;;;;;;;;;;;;;","mappings":"AAAA,SAASA,KAAK,QAAQ,WAAW;AACjC,OAAOC,wBAAwB,mBAAmB;AAElD,OAAO,MAAMC,kBAAkB,CAACC;IAC9B,MAAMC,KAAKJ;IACX,OAAOC,mBAAmB,CAAC,EAAEE,OAAO,aAAa,CAAC,EAAE,CAACE,KAAK,EAAEC,IAAI,EAAE;QAChE,MAAMC,cAAcH,GAAGI,SAAS,CAAC,CAAC,EAAEL,OAAO,aAAa,CAAC,EAAE;YACzDM,WAAW,CAACC;gBACVJ,KAAK,MAAMI,QAAQC,YAAY;YACjC;QACF;QAEA,OAAO;YACLJ;QACF;IACF;AACF,EAAE"}
|