@kodiak-finance/orderly-hooks 2.9.3 → 2.9.5
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 +58 -50
- package/dist/index.d.ts +58 -50
- package/dist/index.js +225 -153
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +220 -155
- package/dist/index.mjs.map +1 -1
- package/package.json +11 -11
package/dist/index.js
CHANGED
|
@@ -2201,6 +2201,16 @@ var useReferralInfo = () => {
|
|
|
2201
2201
|
getFirstRefCode
|
|
2202
2202
|
};
|
|
2203
2203
|
};
|
|
2204
|
+
|
|
2205
|
+
// src/referral/referralCode.ts
|
|
2206
|
+
var REFERRAL_CODE_MIN_LENGTH = 4;
|
|
2207
|
+
var REFERRAL_CODE_MAX_LENGTH = 15;
|
|
2208
|
+
function formatReferralCodeInput(raw) {
|
|
2209
|
+
return String(raw).replace(/[a-z]/g, (c) => c.toUpperCase()).replace(/[^A-Z0-9]/g, "");
|
|
2210
|
+
}
|
|
2211
|
+
function isReferralCodeLengthValid(code) {
|
|
2212
|
+
return code.length >= REFERRAL_CODE_MIN_LENGTH && code.length <= REFERRAL_CODE_MAX_LENGTH;
|
|
2213
|
+
}
|
|
2204
2214
|
var useAppStore = zustand.create()(
|
|
2205
2215
|
immer.immer((set) => ({
|
|
2206
2216
|
// accountInfo: null,
|
|
@@ -3311,6 +3321,129 @@ var ProxyConfigStore = class {
|
|
|
3311
3321
|
this._originConfigStore.clear();
|
|
3312
3322
|
}
|
|
3313
3323
|
};
|
|
3324
|
+
function createGetter(data, depth = 2) {
|
|
3325
|
+
const getValue = (value, defaultValue) => {
|
|
3326
|
+
if (defaultValue === void 0) {
|
|
3327
|
+
return value;
|
|
3328
|
+
}
|
|
3329
|
+
return value ?? defaultValue;
|
|
3330
|
+
};
|
|
3331
|
+
return new Proxy(data || {}, {
|
|
3332
|
+
get(target, property, receiver) {
|
|
3333
|
+
if (property === "isNil") {
|
|
3334
|
+
return ramda.isNil(data);
|
|
3335
|
+
}
|
|
3336
|
+
if (depth === 1) {
|
|
3337
|
+
return (defaultValue) => {
|
|
3338
|
+
if (!target) return defaultValue;
|
|
3339
|
+
return getValue(target[property], defaultValue);
|
|
3340
|
+
};
|
|
3341
|
+
}
|
|
3342
|
+
return (key, defaultValue) => {
|
|
3343
|
+
if (key) {
|
|
3344
|
+
return getValue(target[property]?.[key], defaultValue);
|
|
3345
|
+
} else {
|
|
3346
|
+
return getValue(target[property], defaultValue);
|
|
3347
|
+
}
|
|
3348
|
+
};
|
|
3349
|
+
}
|
|
3350
|
+
});
|
|
3351
|
+
}
|
|
3352
|
+
|
|
3353
|
+
// src/orderly/useSymbolsInfo.ts
|
|
3354
|
+
var useSymbolsInfo = () => {
|
|
3355
|
+
const symbolsInfo = useAppStore((state) => state.symbolsInfo);
|
|
3356
|
+
return React.useMemo(
|
|
3357
|
+
() => createGetter(symbolsInfo ? { ...symbolsInfo } : symbolsInfo),
|
|
3358
|
+
[symbolsInfo]
|
|
3359
|
+
);
|
|
3360
|
+
};
|
|
3361
|
+
var useSymbolsInfoStore = () => {
|
|
3362
|
+
return useAppStore((state) => state.symbolsInfo);
|
|
3363
|
+
};
|
|
3364
|
+
|
|
3365
|
+
// src/trading-rewards/useAllBrokers.ts
|
|
3366
|
+
var useAllBrokers = () => {
|
|
3367
|
+
const { data } = useQuery("/v1/public/broker/name", {
|
|
3368
|
+
formatter: (res) => {
|
|
3369
|
+
const { rows } = res;
|
|
3370
|
+
return rows?.map((item) => ({ [item.broker_id]: item.broker_name })).reduce((acc, curr) => ({ ...acc, ...curr }), {});
|
|
3371
|
+
}
|
|
3372
|
+
});
|
|
3373
|
+
return [data];
|
|
3374
|
+
};
|
|
3375
|
+
|
|
3376
|
+
// src/useBadgeBySymbol.ts
|
|
3377
|
+
function getSymbolBase(symbol) {
|
|
3378
|
+
if (!symbol) return "";
|
|
3379
|
+
const parts = symbol.split("_");
|
|
3380
|
+
return parts.length >= 3 ? parts[1] ?? "" : symbol.match(/^([A-Za-z]+)/)?.[1] ?? symbol;
|
|
3381
|
+
}
|
|
3382
|
+
function getSymbolDisplayName(symbol, displaySymbolName) {
|
|
3383
|
+
const trimmedDisplayName = displaySymbolName?.trim();
|
|
3384
|
+
if (trimmedDisplayName) return trimmedDisplayName;
|
|
3385
|
+
return getSymbolBase(symbol);
|
|
3386
|
+
}
|
|
3387
|
+
function brokerNameBaseFromRaw(rawBrokerName) {
|
|
3388
|
+
if (!rawBrokerName) return void 0;
|
|
3389
|
+
const first = rawBrokerName.trim().split(/[ _-]/, 1)[0]?.trim() ?? "";
|
|
3390
|
+
return first.length > 0 ? first : void 0;
|
|
3391
|
+
}
|
|
3392
|
+
var useBadgeBySymbol = (symbol) => {
|
|
3393
|
+
const symbolsInfo = useSymbolsInfo();
|
|
3394
|
+
const [brokers] = useAllBrokers();
|
|
3395
|
+
return React.useMemo(() => {
|
|
3396
|
+
if (!symbol || symbolsInfo.isNil) {
|
|
3397
|
+
return {
|
|
3398
|
+
displaySymbolName: symbol ?? "",
|
|
3399
|
+
brokerId: void 0,
|
|
3400
|
+
brokerName: void 0,
|
|
3401
|
+
brokerNameRaw: void 0
|
|
3402
|
+
};
|
|
3403
|
+
}
|
|
3404
|
+
const getter = symbolsInfo[symbol];
|
|
3405
|
+
const info = typeof getter === "function" ? getter() : void 0;
|
|
3406
|
+
const displaySymbolName = getSymbolDisplayName(
|
|
3407
|
+
symbol,
|
|
3408
|
+
info?.display_symbol_name
|
|
3409
|
+
);
|
|
3410
|
+
const brokerId = info?.broker_id ?? void 0;
|
|
3411
|
+
const rawBrokerName = brokerId ? brokers?.[brokerId] : void 0;
|
|
3412
|
+
const base = brokerNameBaseFromRaw(rawBrokerName);
|
|
3413
|
+
const brokerName = base ? base.length > 7 ? `${base.slice(0, 7)}...` : base : void 0;
|
|
3414
|
+
return {
|
|
3415
|
+
displaySymbolName,
|
|
3416
|
+
brokerId,
|
|
3417
|
+
brokerName,
|
|
3418
|
+
brokerNameRaw: rawBrokerName
|
|
3419
|
+
};
|
|
3420
|
+
}, [brokers, symbolsInfo, symbol]);
|
|
3421
|
+
};
|
|
3422
|
+
function formatSymbolWithBroker(symbol, symbolsInfo, brokers) {
|
|
3423
|
+
if (!symbol) return "";
|
|
3424
|
+
let brokerNameBase;
|
|
3425
|
+
if (!symbolsInfo.isNil) {
|
|
3426
|
+
const getter = symbolsInfo[symbol];
|
|
3427
|
+
const info = typeof getter === "function" ? getter() : void 0;
|
|
3428
|
+
const brokerId = info?.broker_id ?? void 0;
|
|
3429
|
+
const rawBrokerName = brokerId ? brokers?.[brokerId] : void 0;
|
|
3430
|
+
brokerNameBase = brokerNameBaseFromRaw(rawBrokerName);
|
|
3431
|
+
}
|
|
3432
|
+
const base = getSymbolBase(symbol);
|
|
3433
|
+
const hasBrokerSuffix = symbol.includes("-") || symbol.split("_").length > 3;
|
|
3434
|
+
if (brokerNameBase && hasBrokerSuffix) {
|
|
3435
|
+
return `${base}-${brokerNameBase}`;
|
|
3436
|
+
}
|
|
3437
|
+
return base;
|
|
3438
|
+
}
|
|
3439
|
+
var useSymbolWithBroker = (symbol) => {
|
|
3440
|
+
const symbolsInfo = useSymbolsInfo();
|
|
3441
|
+
const [brokers] = useAllBrokers();
|
|
3442
|
+
return React.useMemo(
|
|
3443
|
+
() => formatSymbolWithBroker(symbol, symbolsInfo, brokers),
|
|
3444
|
+
[brokers, symbolsInfo, symbol]
|
|
3445
|
+
);
|
|
3446
|
+
};
|
|
3314
3447
|
var useMarkPriceStore = zustand.create((set, get3) => ({
|
|
3315
3448
|
markPrices: {},
|
|
3316
3449
|
// orderBook: {},
|
|
@@ -3406,36 +3539,6 @@ var useMarketsStream = () => {
|
|
|
3406
3539
|
}, [futures, tickers, markPrices]);
|
|
3407
3540
|
return { data: value };
|
|
3408
3541
|
};
|
|
3409
|
-
function createGetter(data, depth = 2) {
|
|
3410
|
-
const getValue = (value, defaultValue) => {
|
|
3411
|
-
if (defaultValue === void 0) {
|
|
3412
|
-
return value;
|
|
3413
|
-
}
|
|
3414
|
-
return value ?? defaultValue;
|
|
3415
|
-
};
|
|
3416
|
-
return new Proxy(data || {}, {
|
|
3417
|
-
get(target, property, receiver) {
|
|
3418
|
-
if (property === "isNil") {
|
|
3419
|
-
return ramda.isNil(data);
|
|
3420
|
-
}
|
|
3421
|
-
if (depth === 1) {
|
|
3422
|
-
return (defaultValue) => {
|
|
3423
|
-
if (!target) return defaultValue;
|
|
3424
|
-
return getValue(target[property], defaultValue);
|
|
3425
|
-
};
|
|
3426
|
-
}
|
|
3427
|
-
return (key, defaultValue) => {
|
|
3428
|
-
if (key) {
|
|
3429
|
-
return getValue(target[property]?.[key], defaultValue);
|
|
3430
|
-
} else {
|
|
3431
|
-
return getValue(target[property], defaultValue);
|
|
3432
|
-
}
|
|
3433
|
-
};
|
|
3434
|
-
}
|
|
3435
|
-
});
|
|
3436
|
-
}
|
|
3437
|
-
|
|
3438
|
-
// src/orderly/useRwaSymbolsInfo.ts
|
|
3439
3542
|
var isCurrentlyTrading = (nextClose, status, currentTime = Date.now()) => {
|
|
3440
3543
|
return currentTime < nextClose && status === "open";
|
|
3441
3544
|
};
|
|
@@ -3575,27 +3678,52 @@ var useGetRwaSymbolOpenTimeInterval = (symbol, thresholdMinutes = 30) => {
|
|
|
3575
3678
|
return { isRwa, open, openTimeInterval: filteredInterval, nextOpen };
|
|
3576
3679
|
}, [isRwa, open, openTimeInterval, nextOpen, thresholdMinutes]);
|
|
3577
3680
|
};
|
|
3578
|
-
var useSymbolsInfo = () => {
|
|
3579
|
-
const symbolsInfo = useAppStore((state) => state.symbolsInfo);
|
|
3580
|
-
return React.useMemo(
|
|
3581
|
-
() => createGetter(symbolsInfo ? { ...symbolsInfo } : symbolsInfo),
|
|
3582
|
-
[symbolsInfo]
|
|
3583
|
-
);
|
|
3584
|
-
};
|
|
3585
|
-
var useSymbolsInfoStore = () => {
|
|
3586
|
-
return useAppStore((state) => state.symbolsInfo);
|
|
3587
|
-
};
|
|
3588
3681
|
|
|
3589
|
-
// src/orderly/
|
|
3682
|
+
// src/orderly/markets/marketTypes.ts
|
|
3590
3683
|
var MarketsType = /* @__PURE__ */ ((MarketsType2) => {
|
|
3591
3684
|
MarketsType2[MarketsType2["FAVORITES"] = 0] = "FAVORITES";
|
|
3592
3685
|
MarketsType2[MarketsType2["RECENT"] = 1] = "RECENT";
|
|
3593
3686
|
MarketsType2[MarketsType2["ALL"] = 2] = "ALL";
|
|
3594
|
-
MarketsType2[MarketsType2["
|
|
3595
|
-
MarketsType2[MarketsType2["
|
|
3596
|
-
MarketsType2[MarketsType2["
|
|
3687
|
+
MarketsType2[MarketsType2["CRYPTO"] = 3] = "CRYPTO";
|
|
3688
|
+
MarketsType2[MarketsType2["RWA"] = 4] = "RWA";
|
|
3689
|
+
MarketsType2[MarketsType2["NEW_LISTING"] = 5] = "NEW_LISTING";
|
|
3690
|
+
MarketsType2[MarketsType2["COMMUNITY"] = 6] = "COMMUNITY";
|
|
3691
|
+
MarketsType2[MarketsType2["PRE_TGE"] = 7] = "PRE_TGE";
|
|
3597
3692
|
return MarketsType2;
|
|
3598
3693
|
})(MarketsType || {});
|
|
3694
|
+
|
|
3695
|
+
// src/orderly/markets/marketFilter.ts
|
|
3696
|
+
var filterMarkets = (params) => {
|
|
3697
|
+
const { markets, favorites, recent, newListing, type } = params;
|
|
3698
|
+
let curData = [];
|
|
3699
|
+
if (type === 2 /* ALL */ || type === 6 /* COMMUNITY */) {
|
|
3700
|
+
curData = markets;
|
|
3701
|
+
} else if (type === 3 /* CRYPTO */) {
|
|
3702
|
+
curData = markets.filter((item) => !item.isRwa);
|
|
3703
|
+
} else if (type === 4 /* RWA */) {
|
|
3704
|
+
curData = markets.filter((item) => item.isRwa);
|
|
3705
|
+
} else if (type === 7 /* PRE_TGE */) {
|
|
3706
|
+
curData = markets.filter((item) => item.isPreTge);
|
|
3707
|
+
} else if (type === 5 /* NEW_LISTING */) {
|
|
3708
|
+
curData = markets.filter((item) => isNewListing(item.created_time)).sort((a, b) => b.created_time - a.created_time);
|
|
3709
|
+
} else {
|
|
3710
|
+
const storageData = type === 0 /* FAVORITES */ ? favorites : type === 1 /* RECENT */ ? recent : newListing;
|
|
3711
|
+
const keys = storageData.map((item) => item.name);
|
|
3712
|
+
curData = markets?.filter((item) => keys.includes(item.symbol));
|
|
3713
|
+
}
|
|
3714
|
+
const favoriteKeys = favorites.map((item) => item.name);
|
|
3715
|
+
return curData?.map((item) => ({
|
|
3716
|
+
...item,
|
|
3717
|
+
isFavorite: type === 0 /* FAVORITES */ ? true : favoriteKeys.includes(item.symbol)
|
|
3718
|
+
}));
|
|
3719
|
+
};
|
|
3720
|
+
var isNewListing = (createdTime) => {
|
|
3721
|
+
const thirtyDaysInMs = 30 * 24 * 60 * 60 * 1e3;
|
|
3722
|
+
const now = Date.now();
|
|
3723
|
+
return now - createdTime < thirtyDaysInMs;
|
|
3724
|
+
};
|
|
3725
|
+
|
|
3726
|
+
// src/orderly/markets/useMarkets.ts
|
|
3599
3727
|
var MarketsStorageKey = "orderly_markets";
|
|
3600
3728
|
var DefaultFavoriteTab = { name: "Popular", id: 1 };
|
|
3601
3729
|
var useMarketsStore = () => {
|
|
@@ -3754,7 +3882,15 @@ var useMarkets = (type = 2 /* ALL */) => {
|
|
|
3754
3882
|
type
|
|
3755
3883
|
});
|
|
3756
3884
|
setMarkets(filterList);
|
|
3757
|
-
}, [
|
|
3885
|
+
}, [
|
|
3886
|
+
futures,
|
|
3887
|
+
symbolsInfo,
|
|
3888
|
+
rwaSymbolsInfo,
|
|
3889
|
+
favorites,
|
|
3890
|
+
recent,
|
|
3891
|
+
newListing,
|
|
3892
|
+
type
|
|
3893
|
+
]);
|
|
3758
3894
|
return [markets, store];
|
|
3759
3895
|
};
|
|
3760
3896
|
var addFieldToMarkets = (futures, symbolsInfo, rwaSymbolsInfo) => {
|
|
@@ -3764,10 +3900,12 @@ var addFieldToMarkets = (futures, symbolsInfo, rwaSymbolsInfo) => {
|
|
|
3764
3900
|
return {
|
|
3765
3901
|
...item,
|
|
3766
3902
|
broker_id: item.broker_id,
|
|
3767
|
-
display_symbol_name:
|
|
3903
|
+
display_symbol_name: getSymbolDisplayName(
|
|
3904
|
+
item.symbol,
|
|
3905
|
+
info("display_symbol_name")
|
|
3906
|
+
),
|
|
3768
3907
|
quote_dp: info("quote_dp"),
|
|
3769
3908
|
created_time: info("created_time"),
|
|
3770
|
-
displayName: info("displayName"),
|
|
3771
3909
|
leverage: getLeverage(info("base_imr")),
|
|
3772
3910
|
openInterest: getOpenInterest(item.open_interest, item.index_price),
|
|
3773
3911
|
"8h_funding": get8hFunding(item.est_funding_rate, info("funding_period")),
|
|
@@ -3777,40 +3915,17 @@ var addFieldToMarkets = (futures, symbolsInfo, rwaSymbolsInfo) => {
|
|
|
3777
3915
|
open: item["24h_open"]
|
|
3778
3916
|
}),
|
|
3779
3917
|
isRwa: !!rwaInfo,
|
|
3918
|
+
isPreTge: Boolean(item.is_pretge ?? info("is_pretge")),
|
|
3919
|
+
market_session: rwaInfo?.market_session,
|
|
3780
3920
|
rwaNextOpen: rwaInfo?.next_open,
|
|
3781
3921
|
rwaNextClose: rwaInfo?.next_close,
|
|
3782
3922
|
rwaStatus: rwaInfo?.status
|
|
3783
3923
|
};
|
|
3784
3924
|
});
|
|
3785
3925
|
};
|
|
3786
|
-
var filterMarkets = (params) => {
|
|
3787
|
-
const { markets, favorites, recent, newListing, type } = params;
|
|
3788
|
-
let curData = [];
|
|
3789
|
-
if (type === 2 /* ALL */ || type === 5 /* COMMUNITY */) {
|
|
3790
|
-
curData = markets;
|
|
3791
|
-
} else if (type === 3 /* RWA */) {
|
|
3792
|
-
curData = markets.filter((item) => item.isRwa);
|
|
3793
|
-
} else if (type === 4 /* NEW_LISTING */) {
|
|
3794
|
-
curData = markets.filter((item) => isNewListing(item.created_time)).sort((a, b) => b.created_time - a.created_time);
|
|
3795
|
-
} else {
|
|
3796
|
-
const storageData = type === 0 /* FAVORITES */ ? favorites : type === 1 /* RECENT */ ? recent : newListing;
|
|
3797
|
-
const keys = storageData.map((item) => item.name);
|
|
3798
|
-
curData = markets?.filter((item) => keys.includes(item.symbol));
|
|
3799
|
-
}
|
|
3800
|
-
const favoriteKeys = favorites.map((item) => item.name);
|
|
3801
|
-
return curData?.map((item) => ({
|
|
3802
|
-
...item,
|
|
3803
|
-
isFavorite: type === 0 /* FAVORITES */ ? true : favoriteKeys.includes(item.symbol)
|
|
3804
|
-
}));
|
|
3805
|
-
};
|
|
3806
3926
|
function isEmpty(value) {
|
|
3807
3927
|
return value === void 0 || value === null;
|
|
3808
3928
|
}
|
|
3809
|
-
var isNewListing = (createdTime) => {
|
|
3810
|
-
const thirtyDaysInMs = 30 * 24 * 60 * 60 * 1e3;
|
|
3811
|
-
const now = Date.now();
|
|
3812
|
-
return now - createdTime < thirtyDaysInMs;
|
|
3813
|
-
};
|
|
3814
3929
|
function get8hFunding(est_funding_rate, funding_period) {
|
|
3815
3930
|
let funding8h = 0;
|
|
3816
3931
|
if (isEmpty(est_funding_rate)) {
|
|
@@ -4532,12 +4647,13 @@ var useFundingRatesStore = () => {
|
|
|
4532
4647
|
return data;
|
|
4533
4648
|
};
|
|
4534
4649
|
|
|
4535
|
-
// src/orderly/useMarket.ts
|
|
4650
|
+
// src/orderly/markets/useMarket.ts
|
|
4536
4651
|
var DefaultTab = { name: "Popular", id: 1 };
|
|
4537
4652
|
var marketsKey = "markets";
|
|
4538
4653
|
var useMarket = (type) => {
|
|
4539
4654
|
const { configStore } = React.useContext(OrderlyContext);
|
|
4540
4655
|
const symbolsInfo = useSymbolsInfo();
|
|
4656
|
+
const rwaSymbolsInfo = useRwaSymbolsInfo();
|
|
4541
4657
|
const fundingRates = useFundingRates();
|
|
4542
4658
|
const { data: futures } = useMarketsStream();
|
|
4543
4659
|
const updateStore = (key, data) => {
|
|
@@ -4674,6 +4790,7 @@ var useMarket = (type) => {
|
|
|
4674
4790
|
const list = futures?.map((item) => {
|
|
4675
4791
|
const { open_interest = 0, index_price = 0 } = item;
|
|
4676
4792
|
const info = symbolsInfo[item.symbol];
|
|
4793
|
+
const rwaInfo = !rwaSymbolsInfo.isNil ? rwaSymbolsInfo[item.symbol]() : null;
|
|
4677
4794
|
const rate = fundingRates[item.symbol];
|
|
4678
4795
|
const est_funding_rate = rate("est_funding_rate");
|
|
4679
4796
|
const funding_period = info("funding_period");
|
|
@@ -4684,15 +4801,26 @@ var useMarket = (type) => {
|
|
|
4684
4801
|
"8h_funding": get8hFunding2(est_funding_rate, funding_period),
|
|
4685
4802
|
quote_dp: info("quote_dp"),
|
|
4686
4803
|
created_time: info("created_time"),
|
|
4804
|
+
isRwa: !!rwaInfo,
|
|
4805
|
+
isPreTge: Boolean(item.is_pretge ?? info("is_pretge")),
|
|
4687
4806
|
openInterest: new orderlyUtils.Decimal(open_interest || 0).mul(index_price || 0).toNumber()
|
|
4688
4807
|
};
|
|
4689
4808
|
});
|
|
4690
4809
|
return list || [];
|
|
4691
|
-
}, [symbolsInfo, futures, fundingRates]);
|
|
4810
|
+
}, [symbolsInfo, futures, fundingRates, rwaSymbolsInfo]);
|
|
4692
4811
|
const getData = (type2) => {
|
|
4693
4812
|
const localData = type2 === 0 /* FAVORITES */ ? [...favorites] : [...recent];
|
|
4694
4813
|
const keys = localData.map((item) => item.name);
|
|
4695
|
-
|
|
4814
|
+
let filter = marketsList;
|
|
4815
|
+
if (type2 == 3 /* CRYPTO */) {
|
|
4816
|
+
filter = marketsList?.filter((item) => !item.isRwa);
|
|
4817
|
+
} else if (type2 == 4 /* RWA */) {
|
|
4818
|
+
filter = marketsList?.filter((item) => item.isRwa);
|
|
4819
|
+
} else if (type2 == 7 /* PRE_TGE */) {
|
|
4820
|
+
filter = marketsList?.filter((item) => item.isPreTge);
|
|
4821
|
+
} else if (type2 != 2 /* ALL */ && type2 != 6 /* COMMUNITY */) {
|
|
4822
|
+
filter = marketsList?.filter((item) => keys.includes(item.symbol));
|
|
4823
|
+
}
|
|
4696
4824
|
const favoritesData = [...favorites];
|
|
4697
4825
|
const favoriteKeys = favoritesData.map((item) => item.name);
|
|
4698
4826
|
if (filter) {
|
|
@@ -4891,79 +5019,6 @@ var useSymbolLeverageMap = () => {
|
|
|
4891
5019
|
refresh: mutate6
|
|
4892
5020
|
};
|
|
4893
5021
|
};
|
|
4894
|
-
|
|
4895
|
-
// src/trading-rewards/useAllBrokers.ts
|
|
4896
|
-
var useAllBrokers = () => {
|
|
4897
|
-
const { data } = useQuery("/v1/public/broker/name", {
|
|
4898
|
-
formatter: (res) => {
|
|
4899
|
-
const { rows } = res;
|
|
4900
|
-
return rows?.map((item) => ({ [item.broker_id]: item.broker_name })).reduce((acc, curr) => ({ ...acc, ...curr }), {});
|
|
4901
|
-
}
|
|
4902
|
-
});
|
|
4903
|
-
return [data];
|
|
4904
|
-
};
|
|
4905
|
-
|
|
4906
|
-
// src/useBadgeBySymbol.ts
|
|
4907
|
-
function brokerNameBaseFromRaw(rawBrokerName) {
|
|
4908
|
-
if (!rawBrokerName) return void 0;
|
|
4909
|
-
const first = rawBrokerName.trim().split(/[ _-]/, 1)[0]?.trim() ?? "";
|
|
4910
|
-
return first.length > 0 ? first : void 0;
|
|
4911
|
-
}
|
|
4912
|
-
var useBadgeBySymbol = (symbol) => {
|
|
4913
|
-
const symbolsInfo = useSymbolsInfo();
|
|
4914
|
-
const [brokers] = useAllBrokers();
|
|
4915
|
-
return React.useMemo(() => {
|
|
4916
|
-
if (!symbol || symbolsInfo.isNil) {
|
|
4917
|
-
return {
|
|
4918
|
-
displayName: symbol ?? "",
|
|
4919
|
-
brokerId: void 0,
|
|
4920
|
-
brokerName: void 0,
|
|
4921
|
-
brokerNameRaw: void 0
|
|
4922
|
-
};
|
|
4923
|
-
}
|
|
4924
|
-
const getter = symbolsInfo[symbol];
|
|
4925
|
-
const info = typeof getter === "function" ? getter() : void 0;
|
|
4926
|
-
const displayName = info?.displayName ?? info?.display_symbol_name ?? symbol;
|
|
4927
|
-
const brokerId = info?.broker_id ?? void 0;
|
|
4928
|
-
const rawBrokerName = brokerId ? brokers?.[brokerId] : void 0;
|
|
4929
|
-
const base = brokerNameBaseFromRaw(rawBrokerName);
|
|
4930
|
-
const brokerName = base ? base.length > 7 ? `${base.slice(0, 7)}...` : base : void 0;
|
|
4931
|
-
return {
|
|
4932
|
-
displayName,
|
|
4933
|
-
brokerId,
|
|
4934
|
-
brokerName,
|
|
4935
|
-
brokerNameRaw: rawBrokerName
|
|
4936
|
-
};
|
|
4937
|
-
}, [brokers, symbolsInfo, symbol]);
|
|
4938
|
-
};
|
|
4939
|
-
function formatSymbolWithBroker(symbol, symbolsInfo, brokers) {
|
|
4940
|
-
if (!symbol) return "";
|
|
4941
|
-
let brokerNameBase;
|
|
4942
|
-
if (!symbolsInfo.isNil) {
|
|
4943
|
-
const getter = symbolsInfo[symbol];
|
|
4944
|
-
const info = typeof getter === "function" ? getter() : void 0;
|
|
4945
|
-
const brokerId = info?.broker_id ?? void 0;
|
|
4946
|
-
const rawBrokerName = brokerId ? brokers?.[brokerId] : void 0;
|
|
4947
|
-
brokerNameBase = brokerNameBaseFromRaw(rawBrokerName);
|
|
4948
|
-
}
|
|
4949
|
-
const parts = symbol.split("_");
|
|
4950
|
-
const base = parts.length >= 3 ? parts[1] ?? "" : symbol.match(/^([A-Za-z]+)/)?.[1] ?? symbol;
|
|
4951
|
-
const hasBrokerSuffix = symbol.includes("-") || symbol.split("_").length > 3;
|
|
4952
|
-
if (brokerNameBase && hasBrokerSuffix) {
|
|
4953
|
-
return `${base}-${brokerNameBase}`;
|
|
4954
|
-
}
|
|
4955
|
-
return base;
|
|
4956
|
-
}
|
|
4957
|
-
var useSymbolWithBroker = (symbol) => {
|
|
4958
|
-
const symbolsInfo = useSymbolsInfo();
|
|
4959
|
-
const [brokers] = useAllBrokers();
|
|
4960
|
-
return React.useMemo(
|
|
4961
|
-
() => formatSymbolWithBroker(symbol, symbolsInfo, brokers),
|
|
4962
|
-
[brokers, symbolsInfo, symbol]
|
|
4963
|
-
);
|
|
4964
|
-
};
|
|
4965
|
-
|
|
4966
|
-
// src/orderly/useMarginModes.ts
|
|
4967
5022
|
var useMarginModes = () => {
|
|
4968
5023
|
const { data, error, isLoading, mutate: mutate6 } = usePrivateQuery("/v1/client/margin_modes", {
|
|
4969
5024
|
revalidateOnFocus: false,
|
|
@@ -12068,12 +12123,22 @@ var useStorageLedgerAddress = () => {
|
|
|
12068
12123
|
ledgerWallet
|
|
12069
12124
|
};
|
|
12070
12125
|
};
|
|
12071
|
-
var useTokensInfo = () => {
|
|
12072
|
-
const
|
|
12073
|
-
|
|
12126
|
+
var useTokensInfo = (networkId) => {
|
|
12127
|
+
const appTokensInfo = useAppStore((state) => state.tokensInfo);
|
|
12128
|
+
const mainTokensInfo = useMainTokenStore((state) => state.data);
|
|
12129
|
+
const testTokensInfo = useTestTokenStore((state) => state.data);
|
|
12130
|
+
return React.useMemo(() => {
|
|
12131
|
+
if (networkId === "mainnet") {
|
|
12132
|
+
return mainTokensInfo;
|
|
12133
|
+
}
|
|
12134
|
+
if (networkId === "testnet") {
|
|
12135
|
+
return testTokensInfo;
|
|
12136
|
+
}
|
|
12137
|
+
return appTokensInfo;
|
|
12138
|
+
}, [appTokensInfo, mainTokensInfo, networkId, testTokensInfo]);
|
|
12074
12139
|
};
|
|
12075
|
-
var useTokenInfo = (token) => {
|
|
12076
|
-
const tokensInfo =
|
|
12140
|
+
var useTokenInfo = (token, networkId) => {
|
|
12141
|
+
const tokensInfo = useTokensInfo(networkId);
|
|
12077
12142
|
return React.useMemo(() => {
|
|
12078
12143
|
return tokensInfo?.find((item) => item.token === token);
|
|
12079
12144
|
}, [tokensInfo, token]);
|
|
@@ -20290,7 +20355,10 @@ exports.ORDERLY_ORDERBOOK_DEPTH_KEY = ORDERLY_ORDERBOOK_DEPTH_KEY;
|
|
|
20290
20355
|
exports.OrderlyConfigProvider = OrderlyConfigProvider;
|
|
20291
20356
|
exports.OrderlyContext = OrderlyContext;
|
|
20292
20357
|
exports.OrderlyProvider = OrderlyProvider;
|
|
20358
|
+
exports.REFERRAL_CODE_MAX_LENGTH = REFERRAL_CODE_MAX_LENGTH;
|
|
20359
|
+
exports.REFERRAL_CODE_MIN_LENGTH = REFERRAL_CODE_MIN_LENGTH;
|
|
20293
20360
|
exports.StatusProvider = StatusProvider;
|
|
20361
|
+
exports.TESTNET_WHITE_CHAINS = TESTNET_WHITE_CHAINS;
|
|
20294
20362
|
exports.TWType = TWType;
|
|
20295
20363
|
exports.WalletConnectorContext = WalletConnectorContext;
|
|
20296
20364
|
exports.WsNetworkStatus = WsNetworkStatus;
|
|
@@ -20300,13 +20368,17 @@ exports.fetcher = fetcher;
|
|
|
20300
20368
|
exports.findPositionTPSLFromOrders = findPositionTPSLFromOrders;
|
|
20301
20369
|
exports.findTPSLFromOrder = findTPSLFromOrder;
|
|
20302
20370
|
exports.findTPSLOrderPriceFromOrder = findTPSLOrderPriceFromOrder;
|
|
20371
|
+
exports.formatReferralCodeInput = formatReferralCodeInput;
|
|
20303
20372
|
exports.formatSymbolWithBroker = formatSymbolWithBroker;
|
|
20304
20373
|
exports.getMinNotional = getMinNotional;
|
|
20305
20374
|
exports.getPriceKey = getPriceKey;
|
|
20375
|
+
exports.getSymbolBase = getSymbolBase;
|
|
20376
|
+
exports.getSymbolDisplayName = getSymbolDisplayName;
|
|
20306
20377
|
exports.indexedDBManager = indexedDBManager;
|
|
20307
20378
|
exports.initializeAppDatabase = initializeAppDatabase;
|
|
20308
20379
|
exports.isCurrentlyClosed = isCurrentlyClosed;
|
|
20309
20380
|
exports.isCurrentlyTrading = isCurrentlyTrading;
|
|
20381
|
+
exports.isReferralCodeLengthValid = isReferralCodeLengthValid;
|
|
20310
20382
|
exports.noCacheConfig = noCacheConfig;
|
|
20311
20383
|
exports.parseJSON = parseJSON;
|
|
20312
20384
|
exports.persistIndexedDB = persistIndexedDB;
|