@ecency/wallets 1.4.26 → 1.4.28
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/browser/index.d.ts +20 -1
- package/dist/browser/index.js +420 -144
- package/dist/browser/index.js.map +1 -1
- package/dist/node/index.cjs +420 -143
- package/dist/node/index.cjs.map +1 -1
- package/dist/node/index.mjs +420 -144
- package/dist/node/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/node/index.cjs
CHANGED
|
@@ -2675,16 +2675,400 @@ function getAllTokensListQueryOptions(username) {
|
|
|
2675
2675
|
}
|
|
2676
2676
|
});
|
|
2677
2677
|
}
|
|
2678
|
+
var ACTION_ALIAS_MAP = {
|
|
2679
|
+
"transfer-to-savings": "transfer-saving" /* TransferToSavings */,
|
|
2680
|
+
"transfer-savings": "transfer-saving" /* TransferToSavings */,
|
|
2681
|
+
"savings-transfer": "transfer-saving" /* TransferToSavings */,
|
|
2682
|
+
"withdraw-from-savings": "withdraw-saving" /* WithdrawFromSavings */,
|
|
2683
|
+
"withdraw-savings": "withdraw-saving" /* WithdrawFromSavings */,
|
|
2684
|
+
"savings-withdraw": "withdraw-saving" /* WithdrawFromSavings */,
|
|
2685
|
+
"powerup": "power-up" /* PowerUp */,
|
|
2686
|
+
"power-down": "power-down" /* PowerDown */,
|
|
2687
|
+
"powerdown": "power-down" /* PowerDown */,
|
|
2688
|
+
"hp-delegate": "delegate" /* Delegate */,
|
|
2689
|
+
"delegate-hp": "delegate" /* Delegate */,
|
|
2690
|
+
"delegate-power": "delegate" /* Delegate */,
|
|
2691
|
+
"undelegate-power": "undelegate" /* Undelegate */,
|
|
2692
|
+
"undelegate-token": "undelegate" /* Undelegate */,
|
|
2693
|
+
"stake-token": "stake" /* Stake */,
|
|
2694
|
+
"stake-power": "stake" /* Stake */,
|
|
2695
|
+
"unstake-token": "unstake" /* Unstake */,
|
|
2696
|
+
"unstake-power": "unstake" /* Unstake */,
|
|
2697
|
+
"lock-liquidity": "lock" /* LockLiquidity */,
|
|
2698
|
+
"lock-liq": "lock" /* LockLiquidity */,
|
|
2699
|
+
"gift-points": "gift" /* Gift */,
|
|
2700
|
+
"points-gift": "gift" /* Gift */,
|
|
2701
|
+
"promote-post": "promote" /* Promote */,
|
|
2702
|
+
"promote-entry": "promote" /* Promote */,
|
|
2703
|
+
"claim-points": "claim" /* Claim */,
|
|
2704
|
+
"claim-rewards": "claim" /* Claim */,
|
|
2705
|
+
"buy-points": "buy" /* Buy */,
|
|
2706
|
+
"swap-token": "swap" /* Swap */,
|
|
2707
|
+
"swap-tokens": "swap" /* Swap */,
|
|
2708
|
+
"withdraw-routes": "withdraw-routes" /* WithdrawRoutes */,
|
|
2709
|
+
"withdrawroutes": "withdraw-routes" /* WithdrawRoutes */,
|
|
2710
|
+
"claim-interest": "claim-interest" /* ClaimInterest */
|
|
2711
|
+
};
|
|
2712
|
+
var KNOWN_OPERATION_VALUES = new Map(
|
|
2713
|
+
Object.values(AssetOperation).map((value) => [value, value])
|
|
2714
|
+
);
|
|
2715
|
+
var DERIVED_PART_KEY_MAP = {
|
|
2716
|
+
liquid: ["liquid", "liquidBalance", "liquid_amount", "liquidTokens"],
|
|
2717
|
+
savings: ["savings", "savingsBalance", "savings_amount"],
|
|
2718
|
+
staked: ["staked", "stakedBalance", "staking", "stake", "power"],
|
|
2719
|
+
delegated: ["delegated", "delegatedBalance", "delegationsOut"],
|
|
2720
|
+
received: ["received", "receivedBalance", "delegationsIn"],
|
|
2721
|
+
pending: [
|
|
2722
|
+
"pending",
|
|
2723
|
+
"pendingRewards",
|
|
2724
|
+
"unclaimed",
|
|
2725
|
+
"unclaimedBalance",
|
|
2726
|
+
"pendingReward"
|
|
2727
|
+
]
|
|
2728
|
+
};
|
|
2729
|
+
var EXTRA_DATA_PART_KEY_MAP = {
|
|
2730
|
+
delegated: "outgoing_delegations",
|
|
2731
|
+
outgoing: "outgoing_delegations",
|
|
2732
|
+
delegations_out: "outgoing_delegations",
|
|
2733
|
+
delegated_hive_power: "outgoing_delegations",
|
|
2734
|
+
delegated_hp: "outgoing_delegations",
|
|
2735
|
+
received: "incoming_delegations",
|
|
2736
|
+
incoming: "incoming_delegations",
|
|
2737
|
+
delegations_in: "incoming_delegations",
|
|
2738
|
+
received_hive_power: "incoming_delegations",
|
|
2739
|
+
received_hp: "incoming_delegations",
|
|
2740
|
+
powering_down: "pending_power_down",
|
|
2741
|
+
power_down: "pending_power_down",
|
|
2742
|
+
powering_down_hive_power: "pending_power_down"
|
|
2743
|
+
};
|
|
2744
|
+
function normalizeString(value) {
|
|
2745
|
+
if (typeof value === "string") {
|
|
2746
|
+
const trimmed = value.trim();
|
|
2747
|
+
return trimmed.length > 0 ? trimmed : void 0;
|
|
2748
|
+
}
|
|
2749
|
+
return void 0;
|
|
2750
|
+
}
|
|
2751
|
+
function normalizeNumber(value) {
|
|
2752
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
2753
|
+
return value;
|
|
2754
|
+
}
|
|
2755
|
+
if (typeof value === "string") {
|
|
2756
|
+
const trimmed = value.trim();
|
|
2757
|
+
if (!trimmed) {
|
|
2758
|
+
return void 0;
|
|
2759
|
+
}
|
|
2760
|
+
const direct = Number.parseFloat(trimmed);
|
|
2761
|
+
if (Number.isFinite(direct)) {
|
|
2762
|
+
return direct;
|
|
2763
|
+
}
|
|
2764
|
+
const sanitized = trimmed.replace(/,/g, "");
|
|
2765
|
+
const match = sanitized.match(/[-+]?\d+(?:\.\d+)?/);
|
|
2766
|
+
if (match) {
|
|
2767
|
+
const parsed = Number.parseFloat(match[0]);
|
|
2768
|
+
if (Number.isFinite(parsed)) {
|
|
2769
|
+
return parsed;
|
|
2770
|
+
}
|
|
2771
|
+
}
|
|
2772
|
+
}
|
|
2773
|
+
return void 0;
|
|
2774
|
+
}
|
|
2775
|
+
function normalizeApr(value) {
|
|
2776
|
+
const numeric = normalizeNumber(value);
|
|
2777
|
+
if (numeric === void 0) {
|
|
2778
|
+
if (typeof value === "string") {
|
|
2779
|
+
const trimmed = value.trim();
|
|
2780
|
+
return trimmed.length > 0 ? trimmed : void 0;
|
|
2781
|
+
}
|
|
2782
|
+
return void 0;
|
|
2783
|
+
}
|
|
2784
|
+
return numeric.toString();
|
|
2785
|
+
}
|
|
2786
|
+
function normalizeParts(rawParts) {
|
|
2787
|
+
if (Array.isArray(rawParts)) {
|
|
2788
|
+
const parsed = rawParts.map((item) => {
|
|
2789
|
+
if (!item || typeof item !== "object") {
|
|
2790
|
+
return void 0;
|
|
2791
|
+
}
|
|
2792
|
+
const name = normalizeString(
|
|
2793
|
+
item.name ?? item.label ?? item.type ?? item.part
|
|
2794
|
+
);
|
|
2795
|
+
const balance = normalizeNumber(
|
|
2796
|
+
item.balance ?? item.amount ?? item.value
|
|
2797
|
+
);
|
|
2798
|
+
if (!name || balance === void 0) {
|
|
2799
|
+
return void 0;
|
|
2800
|
+
}
|
|
2801
|
+
return { name, balance };
|
|
2802
|
+
}).filter((item) => Boolean(item));
|
|
2803
|
+
return parsed.length ? parsed : void 0;
|
|
2804
|
+
}
|
|
2805
|
+
if (rawParts && typeof rawParts === "object") {
|
|
2806
|
+
const parsed = Object.entries(rawParts).map(([name, amount]) => {
|
|
2807
|
+
const balance = normalizeNumber(amount);
|
|
2808
|
+
if (!name || balance === void 0) {
|
|
2809
|
+
return void 0;
|
|
2810
|
+
}
|
|
2811
|
+
return { name, balance };
|
|
2812
|
+
}).filter((item) => Boolean(item));
|
|
2813
|
+
return parsed.length ? parsed : void 0;
|
|
2814
|
+
}
|
|
2815
|
+
return void 0;
|
|
2816
|
+
}
|
|
2817
|
+
function deriveParts(record) {
|
|
2818
|
+
const derived = Object.entries(DERIVED_PART_KEY_MAP).map(([name, keys]) => {
|
|
2819
|
+
for (const key of keys) {
|
|
2820
|
+
const value = normalizeNumber(record[key]);
|
|
2821
|
+
if (value !== void 0) {
|
|
2822
|
+
return { name, balance: value };
|
|
2823
|
+
}
|
|
2824
|
+
}
|
|
2825
|
+
return void 0;
|
|
2826
|
+
}).filter((item) => Boolean(item));
|
|
2827
|
+
return derived.length ? derived : void 0;
|
|
2828
|
+
}
|
|
2829
|
+
function normalizePartKey(value) {
|
|
2830
|
+
return value.trim().toLowerCase().replace(/[\s-]+/g, "_");
|
|
2831
|
+
}
|
|
2832
|
+
function mergeParts(...sources) {
|
|
2833
|
+
const order = [];
|
|
2834
|
+
const values2 = /* @__PURE__ */ new Map();
|
|
2835
|
+
for (const parts of sources) {
|
|
2836
|
+
if (!parts) {
|
|
2837
|
+
continue;
|
|
2838
|
+
}
|
|
2839
|
+
for (const part of parts) {
|
|
2840
|
+
if (!part?.name || typeof part.balance !== "number") {
|
|
2841
|
+
continue;
|
|
2842
|
+
}
|
|
2843
|
+
const existing = values2.get(part.name);
|
|
2844
|
+
if (existing === void 0) {
|
|
2845
|
+
order.push(part.name);
|
|
2846
|
+
values2.set(part.name, part.balance);
|
|
2847
|
+
} else {
|
|
2848
|
+
values2.set(part.name, existing + part.balance);
|
|
2849
|
+
}
|
|
2850
|
+
}
|
|
2851
|
+
}
|
|
2852
|
+
return order.length ? order.map((name) => ({ name, balance: values2.get(name) })) : void 0;
|
|
2853
|
+
}
|
|
2854
|
+
function normalizeExtraDataParts(rawExtraData) {
|
|
2855
|
+
const items = Array.isArray(rawExtraData) ? rawExtraData : rawExtraData && typeof rawExtraData === "object" ? Object.values(rawExtraData) : [];
|
|
2856
|
+
const parts = items.map((item) => {
|
|
2857
|
+
if (!item || typeof item !== "object") {
|
|
2858
|
+
return void 0;
|
|
2859
|
+
}
|
|
2860
|
+
const record = item;
|
|
2861
|
+
const keyCandidate = normalizeString(record.dataKey) ?? normalizeString(record.key) ?? normalizeString(record.name);
|
|
2862
|
+
if (!keyCandidate) {
|
|
2863
|
+
return void 0;
|
|
2864
|
+
}
|
|
2865
|
+
const canonical = normalizePartKey(keyCandidate);
|
|
2866
|
+
const partName = EXTRA_DATA_PART_KEY_MAP[canonical];
|
|
2867
|
+
if (!partName) {
|
|
2868
|
+
return void 0;
|
|
2869
|
+
}
|
|
2870
|
+
const balance = normalizeNumber(
|
|
2871
|
+
record.balance ?? record.amount ?? record.value ?? record.displayValue ?? record.text
|
|
2872
|
+
);
|
|
2873
|
+
if (balance === void 0) {
|
|
2874
|
+
return void 0;
|
|
2875
|
+
}
|
|
2876
|
+
return { name: partName, balance: Math.abs(balance) };
|
|
2877
|
+
}).filter((part) => Boolean(part));
|
|
2878
|
+
return parts.length ? parts : void 0;
|
|
2879
|
+
}
|
|
2880
|
+
function normalizeActionKey(value) {
|
|
2881
|
+
return value.trim().toLowerCase().replace(/[\s_]+/g, "-");
|
|
2882
|
+
}
|
|
2883
|
+
function mapActions(rawActions) {
|
|
2884
|
+
if (!rawActions) {
|
|
2885
|
+
return [];
|
|
2886
|
+
}
|
|
2887
|
+
const rawList = Array.isArray(rawActions) ? rawActions : [rawActions];
|
|
2888
|
+
const result = [];
|
|
2889
|
+
for (const raw of rawList) {
|
|
2890
|
+
let candidate;
|
|
2891
|
+
if (typeof raw === "string") {
|
|
2892
|
+
candidate = raw;
|
|
2893
|
+
} else if (raw && typeof raw === "object") {
|
|
2894
|
+
const record = raw;
|
|
2895
|
+
candidate = normalizeString(record.code) ?? normalizeString(record.name) ?? normalizeString(record.action);
|
|
2896
|
+
}
|
|
2897
|
+
if (!candidate) {
|
|
2898
|
+
continue;
|
|
2899
|
+
}
|
|
2900
|
+
const canonical = normalizeActionKey(candidate);
|
|
2901
|
+
const operation = KNOWN_OPERATION_VALUES.get(canonical) ?? ACTION_ALIAS_MAP[canonical];
|
|
2902
|
+
if (operation && !result.includes(operation)) {
|
|
2903
|
+
result.push(operation);
|
|
2904
|
+
}
|
|
2905
|
+
}
|
|
2906
|
+
return result;
|
|
2907
|
+
}
|
|
2908
|
+
function parseToken(rawToken) {
|
|
2909
|
+
if (!rawToken || typeof rawToken !== "object") {
|
|
2910
|
+
return void 0;
|
|
2911
|
+
}
|
|
2912
|
+
const token = rawToken;
|
|
2913
|
+
const symbol = normalizeString(token.symbol) ?? normalizeString(token.asset) ?? normalizeString(token.name);
|
|
2914
|
+
if (!symbol) {
|
|
2915
|
+
return void 0;
|
|
2916
|
+
}
|
|
2917
|
+
const normalizedSymbol = symbol.toUpperCase();
|
|
2918
|
+
const title = normalizeString(token.title) ?? normalizeString(token.display) ?? normalizeString(token.label) ?? normalizeString(token.friendlyName) ?? normalizeString(token.name) ?? normalizedSymbol;
|
|
2919
|
+
const price = normalizeNumber(token.fiatRate) ?? normalizeNumber(token.price) ?? normalizeNumber(token.priceUsd) ?? normalizeNumber(token.usdPrice) ?? normalizeNumber(token.metrics?.price) ?? normalizeNumber(
|
|
2920
|
+
token.metrics?.priceUsd
|
|
2921
|
+
) ?? 0;
|
|
2922
|
+
const apr = normalizeApr(token.apr) ?? normalizeApr(token.aprPercent) ?? normalizeApr(token.metrics?.apr) ?? normalizeApr(
|
|
2923
|
+
token.metrics?.aprPercent
|
|
2924
|
+
);
|
|
2925
|
+
const baseParts = normalizeParts(
|
|
2926
|
+
token.parts ?? token.balances ?? token.sections ?? token.breakdown ?? token.accountBreakdown ?? token.walletParts
|
|
2927
|
+
) ?? deriveParts(token);
|
|
2928
|
+
const parts = mergeParts(
|
|
2929
|
+
baseParts,
|
|
2930
|
+
normalizeExtraDataParts(
|
|
2931
|
+
token.extraData ?? token.extra_data ?? token.extra ?? token.badges
|
|
2932
|
+
)
|
|
2933
|
+
);
|
|
2934
|
+
const accountBalance = normalizeNumber(token.balance) ?? normalizeNumber(token.accountBalance) ?? normalizeNumber(token.totalBalance) ?? normalizeNumber(token.total) ?? normalizeNumber(token.amount) ?? (baseParts ? baseParts.reduce((total, part) => total + (part.balance ?? 0), 0) : parts ? parts.reduce((total, part) => total + (part.balance ?? 0), 0) : 0);
|
|
2935
|
+
const layer = normalizeString(token.layer) ?? normalizeString(token.chain) ?? normalizeString(token.category) ?? normalizeString(token.type);
|
|
2936
|
+
return {
|
|
2937
|
+
symbol: normalizedSymbol,
|
|
2938
|
+
info: {
|
|
2939
|
+
name: normalizedSymbol,
|
|
2940
|
+
title,
|
|
2941
|
+
price,
|
|
2942
|
+
accountBalance,
|
|
2943
|
+
apr: apr ?? void 0,
|
|
2944
|
+
layer: layer ?? void 0,
|
|
2945
|
+
parts
|
|
2946
|
+
},
|
|
2947
|
+
operations: mapActions(
|
|
2948
|
+
token.actions ?? token.available_actions ?? token.availableActions ?? token.operations ?? token.supportedActions
|
|
2949
|
+
)
|
|
2950
|
+
};
|
|
2951
|
+
}
|
|
2952
|
+
function extractTokens(payload) {
|
|
2953
|
+
if (!payload || typeof payload !== "object") {
|
|
2954
|
+
return [];
|
|
2955
|
+
}
|
|
2956
|
+
const containers = [payload];
|
|
2957
|
+
const record = payload;
|
|
2958
|
+
if (record.data && typeof record.data === "object") {
|
|
2959
|
+
containers.push(record.data);
|
|
2960
|
+
}
|
|
2961
|
+
if (record.result && typeof record.result === "object") {
|
|
2962
|
+
containers.push(record.result);
|
|
2963
|
+
}
|
|
2964
|
+
if (record.portfolio && typeof record.portfolio === "object") {
|
|
2965
|
+
containers.push(record.portfolio);
|
|
2966
|
+
}
|
|
2967
|
+
for (const container of containers) {
|
|
2968
|
+
if (Array.isArray(container)) {
|
|
2969
|
+
return container;
|
|
2970
|
+
}
|
|
2971
|
+
if (container && typeof container === "object") {
|
|
2972
|
+
for (const key of [
|
|
2973
|
+
"wallets",
|
|
2974
|
+
"tokens",
|
|
2975
|
+
"assets",
|
|
2976
|
+
"items",
|
|
2977
|
+
"portfolio",
|
|
2978
|
+
"balances"
|
|
2979
|
+
]) {
|
|
2980
|
+
const value = container[key];
|
|
2981
|
+
if (Array.isArray(value)) {
|
|
2982
|
+
return value;
|
|
2983
|
+
}
|
|
2984
|
+
}
|
|
2985
|
+
}
|
|
2986
|
+
}
|
|
2987
|
+
return [];
|
|
2988
|
+
}
|
|
2989
|
+
function resolveUsername(payload) {
|
|
2990
|
+
if (!payload || typeof payload !== "object") {
|
|
2991
|
+
return void 0;
|
|
2992
|
+
}
|
|
2993
|
+
const record = payload;
|
|
2994
|
+
return normalizeString(record.username) ?? normalizeString(record.name) ?? normalizeString(record.account);
|
|
2995
|
+
}
|
|
2996
|
+
function getVisionPortfolioQueryOptions(username) {
|
|
2997
|
+
return reactQuery.queryOptions({
|
|
2998
|
+
queryKey: [
|
|
2999
|
+
"ecency-wallets",
|
|
3000
|
+
"portfolio",
|
|
3001
|
+
"v2",
|
|
3002
|
+
username,
|
|
3003
|
+
"only-enabled"
|
|
3004
|
+
],
|
|
3005
|
+
enabled: Boolean(username),
|
|
3006
|
+
staleTime: 6e4,
|
|
3007
|
+
refetchInterval: 12e4,
|
|
3008
|
+
queryFn: async () => {
|
|
3009
|
+
if (!username) {
|
|
3010
|
+
throw new Error("[SDK][Wallets] \u2013 username is required");
|
|
3011
|
+
}
|
|
3012
|
+
if (!sdk.CONFIG.privateApiHost) {
|
|
3013
|
+
throw new Error(
|
|
3014
|
+
"[SDK][Wallets] \u2013 privateApiHost isn't configured for portfolio"
|
|
3015
|
+
);
|
|
3016
|
+
}
|
|
3017
|
+
const endpoint = `${sdk.CONFIG.privateApiHost}/wallet-api/portfolio-v2`;
|
|
3018
|
+
const response = await fetch(endpoint, {
|
|
3019
|
+
method: "POST",
|
|
3020
|
+
headers: {
|
|
3021
|
+
Accept: "application/json",
|
|
3022
|
+
"Content-Type": "application/json"
|
|
3023
|
+
},
|
|
3024
|
+
body: JSON.stringify({ username, onlyEnabled: true })
|
|
3025
|
+
});
|
|
3026
|
+
if (!response.ok) {
|
|
3027
|
+
throw new Error(
|
|
3028
|
+
`[SDK][Wallets] \u2013 Vision portfolio request failed(${response.status})`
|
|
3029
|
+
);
|
|
3030
|
+
}
|
|
3031
|
+
const payload = await response.json();
|
|
3032
|
+
const tokens = extractTokens(payload).map((item) => parseToken(item)).filter((item) => Boolean(item));
|
|
3033
|
+
if (!tokens.length) {
|
|
3034
|
+
throw new Error(
|
|
3035
|
+
"[SDK][Wallets] \u2013 Vision portfolio payload contained no tokens"
|
|
3036
|
+
);
|
|
3037
|
+
}
|
|
3038
|
+
return {
|
|
3039
|
+
username: resolveUsername(payload) ?? username,
|
|
3040
|
+
currency: normalizeString(
|
|
3041
|
+
payload?.currency
|
|
3042
|
+
)?.toUpperCase(),
|
|
3043
|
+
wallets: tokens
|
|
3044
|
+
};
|
|
3045
|
+
}
|
|
3046
|
+
});
|
|
3047
|
+
}
|
|
3048
|
+
|
|
3049
|
+
// src/modules/wallets/queries/use-get-account-wallet-list-query.ts
|
|
2678
3050
|
function getAccountWalletListQueryOptions(username) {
|
|
2679
3051
|
return reactQuery.queryOptions({
|
|
2680
3052
|
queryKey: ["ecency-wallets", "list", username],
|
|
2681
3053
|
enabled: !!username,
|
|
2682
3054
|
queryFn: async () => {
|
|
3055
|
+
const portfolioQuery = getVisionPortfolioQueryOptions(username);
|
|
3056
|
+
const queryClient = sdk.getQueryClient();
|
|
3057
|
+
try {
|
|
3058
|
+
const portfolio = await queryClient.fetchQuery(portfolioQuery);
|
|
3059
|
+
const tokensFromPortfolio = portfolio.wallets.map(
|
|
3060
|
+
(asset) => asset.info.name
|
|
3061
|
+
);
|
|
3062
|
+
if (tokensFromPortfolio.length > 0) {
|
|
3063
|
+
return Array.from(new Set(tokensFromPortfolio));
|
|
3064
|
+
}
|
|
3065
|
+
} catch {
|
|
3066
|
+
}
|
|
2683
3067
|
const accountQuery = sdk.getAccountFullQueryOptions(username);
|
|
2684
|
-
await
|
|
3068
|
+
await queryClient.fetchQuery({
|
|
2685
3069
|
queryKey: accountQuery.queryKey
|
|
2686
3070
|
});
|
|
2687
|
-
const account =
|
|
3071
|
+
const account = queryClient.getQueryData(
|
|
2688
3072
|
accountQuery.queryKey
|
|
2689
3073
|
);
|
|
2690
3074
|
if (account?.profile?.tokens instanceof Array) {
|
|
@@ -3130,17 +3514,33 @@ function getTronAssetGeneralInfoQueryOptions(username) {
|
|
|
3130
3514
|
// src/modules/wallets/queries/get-account-wallet-asset-info-query-options.ts
|
|
3131
3515
|
function getAccountWalletAssetInfoQueryOptions(username, asset, options2 = { refetch: false }) {
|
|
3132
3516
|
const queryClient = sdk.getQueryClient();
|
|
3133
|
-
const fetchQuery = async (
|
|
3517
|
+
const fetchQuery = async (queryOptions40) => {
|
|
3134
3518
|
if (options2.refetch) {
|
|
3135
|
-
await queryClient.fetchQuery(
|
|
3519
|
+
await queryClient.fetchQuery(queryOptions40);
|
|
3136
3520
|
} else {
|
|
3137
|
-
await queryClient.prefetchQuery(
|
|
3521
|
+
await queryClient.prefetchQuery(queryOptions40);
|
|
3522
|
+
}
|
|
3523
|
+
return queryClient.getQueryData(queryOptions40.queryKey);
|
|
3524
|
+
};
|
|
3525
|
+
const portfolioQuery = getVisionPortfolioQueryOptions(username);
|
|
3526
|
+
const getPortfolioAssetInfo = async () => {
|
|
3527
|
+
try {
|
|
3528
|
+
const portfolio = await queryClient.fetchQuery(portfolioQuery);
|
|
3529
|
+
const assetInfo = portfolio.wallets.find(
|
|
3530
|
+
(assetItem) => assetItem.info.name === asset.toUpperCase()
|
|
3531
|
+
);
|
|
3532
|
+
return assetInfo?.info;
|
|
3533
|
+
} catch {
|
|
3534
|
+
return void 0;
|
|
3138
3535
|
}
|
|
3139
|
-
return queryClient.getQueryData(queryOptions39.queryKey);
|
|
3140
3536
|
};
|
|
3141
3537
|
return reactQuery.queryOptions({
|
|
3142
3538
|
queryKey: ["ecency-wallets", "asset-info", username, asset],
|
|
3143
3539
|
queryFn: async () => {
|
|
3540
|
+
const portfolioAssetInfo = await getPortfolioAssetInfo();
|
|
3541
|
+
if (portfolioAssetInfo) {
|
|
3542
|
+
return portfolioAssetInfo;
|
|
3543
|
+
}
|
|
3144
3544
|
if (asset === "HIVE") {
|
|
3145
3545
|
return fetchQuery(getHiveAssetGeneralInfoQueryOptions(username));
|
|
3146
3546
|
} else if (asset === "HP") {
|
|
@@ -3190,145 +3590,21 @@ function getTokenOperationsQueryOptions(token, username, isForOwner = false) {
|
|
|
3190
3590
|
queryKey: ["wallets", "token-operations", token, username, isForOwner],
|
|
3191
3591
|
queryFn: async () => {
|
|
3192
3592
|
const queryClient = sdk.getQueryClient();
|
|
3193
|
-
const
|
|
3194
|
-
if (!isForOwner || !username) {
|
|
3195
|
-
return void 0;
|
|
3196
|
-
}
|
|
3197
|
-
return await queryClient.ensureQueryData(
|
|
3198
|
-
getAccountWalletAssetInfoQueryOptions(username, token)
|
|
3199
|
-
);
|
|
3200
|
-
};
|
|
3201
|
-
switch (token) {
|
|
3202
|
-
case "HIVE" /* Hive */: {
|
|
3203
|
-
const assetInfo = await ensureAssetInfo();
|
|
3204
|
-
const savingsBalance = assetInfo?.parts?.find(
|
|
3205
|
-
(part) => part.name === "savings"
|
|
3206
|
-
)?.balance;
|
|
3207
|
-
const pendingSavingsWithdrawAmount = await (async () => {
|
|
3208
|
-
if (!isForOwner || !username) {
|
|
3209
|
-
return 0;
|
|
3210
|
-
}
|
|
3211
|
-
try {
|
|
3212
|
-
const response = await sdk.CONFIG.hiveClient.database.call(
|
|
3213
|
-
"get_savings_withdraw_from",
|
|
3214
|
-
[username]
|
|
3215
|
-
);
|
|
3216
|
-
return response.reduce((total, request) => {
|
|
3217
|
-
const parsed = parseAsset(request.amount);
|
|
3218
|
-
return parsed.symbol === "HIVE" /* HIVE */ ? total + parsed.amount : total;
|
|
3219
|
-
}, 0);
|
|
3220
|
-
} catch {
|
|
3221
|
-
return 0;
|
|
3222
|
-
}
|
|
3223
|
-
})();
|
|
3224
|
-
const hasAvailableSavingsWithdraw = typeof savingsBalance === "number" && savingsBalance - pendingSavingsWithdrawAmount > 1e-6;
|
|
3225
|
-
return [
|
|
3226
|
-
"transfer" /* Transfer */,
|
|
3227
|
-
...isForOwner ? [
|
|
3228
|
-
...hasAvailableSavingsWithdraw ? ["withdraw-saving" /* WithdrawFromSavings */] : [],
|
|
3229
|
-
"transfer-saving" /* TransferToSavings */,
|
|
3230
|
-
"power-up" /* PowerUp */,
|
|
3231
|
-
"swap" /* Swap */
|
|
3232
|
-
] : []
|
|
3233
|
-
];
|
|
3234
|
-
}
|
|
3235
|
-
case "HP" /* HivePower */:
|
|
3236
|
-
return [
|
|
3237
|
-
"delegate" /* Delegate */,
|
|
3238
|
-
...isForOwner ? ["power-down" /* PowerDown */, "withdraw-routes" /* WithdrawRoutes */] : ["power-up" /* PowerUp */]
|
|
3239
|
-
];
|
|
3240
|
-
case "HBD" /* HiveDollar */: {
|
|
3241
|
-
const assetInfo = await ensureAssetInfo();
|
|
3242
|
-
const savingsBalance = assetInfo?.parts?.find(
|
|
3243
|
-
(part) => part.name === "savings"
|
|
3244
|
-
)?.balance;
|
|
3245
|
-
const pendingSavingsWithdrawAmount = await (async () => {
|
|
3246
|
-
if (!isForOwner || !username) {
|
|
3247
|
-
return 0;
|
|
3248
|
-
}
|
|
3249
|
-
try {
|
|
3250
|
-
const response = await sdk.CONFIG.hiveClient.database.call(
|
|
3251
|
-
"get_savings_withdraw_from",
|
|
3252
|
-
[username]
|
|
3253
|
-
);
|
|
3254
|
-
return response.reduce((total, request) => {
|
|
3255
|
-
const parsed = parseAsset(request.amount);
|
|
3256
|
-
return parsed.symbol === "HBD" /* HBD */ ? total + parsed.amount : total;
|
|
3257
|
-
}, 0);
|
|
3258
|
-
} catch {
|
|
3259
|
-
return 0;
|
|
3260
|
-
}
|
|
3261
|
-
})();
|
|
3262
|
-
const hasAvailableSavingsWithdraw = typeof savingsBalance === "number" && savingsBalance - pendingSavingsWithdrawAmount > 1e-6;
|
|
3263
|
-
return [
|
|
3264
|
-
"transfer" /* Transfer */,
|
|
3265
|
-
...isForOwner ? [
|
|
3266
|
-
...hasAvailableSavingsWithdraw ? ["withdraw-saving" /* WithdrawFromSavings */] : [],
|
|
3267
|
-
"transfer-saving" /* TransferToSavings */,
|
|
3268
|
-
"swap" /* Swap */
|
|
3269
|
-
] : []
|
|
3270
|
-
];
|
|
3271
|
-
}
|
|
3272
|
-
case "POINTS" /* Points */:
|
|
3273
|
-
return [
|
|
3274
|
-
"gift" /* Gift */,
|
|
3275
|
-
...isForOwner ? [
|
|
3276
|
-
"promote" /* Promote */,
|
|
3277
|
-
"claim" /* Claim */,
|
|
3278
|
-
"buy" /* Buy */
|
|
3279
|
-
] : []
|
|
3280
|
-
];
|
|
3281
|
-
case "SPK":
|
|
3282
|
-
return ["transfer" /* Transfer */];
|
|
3283
|
-
case "LARYNX":
|
|
3284
|
-
return [
|
|
3285
|
-
"transfer" /* Transfer */,
|
|
3286
|
-
...isForOwner ? ["power-up" /* PowerUp */, "lock" /* LockLiquidity */] : []
|
|
3287
|
-
];
|
|
3288
|
-
case "LP":
|
|
3289
|
-
return [
|
|
3290
|
-
"delegate" /* Delegate */,
|
|
3291
|
-
...isForOwner ? ["power-down" /* PowerDown */] : []
|
|
3292
|
-
];
|
|
3293
|
-
case "APT":
|
|
3294
|
-
case "BNB":
|
|
3295
|
-
case "BTC":
|
|
3296
|
-
case "ETH":
|
|
3297
|
-
case "SOL":
|
|
3298
|
-
case "TON":
|
|
3299
|
-
case "TRX":
|
|
3300
|
-
return [];
|
|
3301
|
-
}
|
|
3593
|
+
const normalizedToken = token.toUpperCase();
|
|
3302
3594
|
if (!username) {
|
|
3303
|
-
return [
|
|
3595
|
+
return [];
|
|
3596
|
+
}
|
|
3597
|
+
try {
|
|
3598
|
+
const portfolio = await queryClient.fetchQuery(
|
|
3599
|
+
getVisionPortfolioQueryOptions(username)
|
|
3600
|
+
);
|
|
3601
|
+
const assetEntry = portfolio.wallets.find(
|
|
3602
|
+
(assetItem) => assetItem.info.name === normalizedToken
|
|
3603
|
+
);
|
|
3604
|
+
return assetEntry?.operations ?? [];
|
|
3605
|
+
} catch {
|
|
3606
|
+
return [];
|
|
3304
3607
|
}
|
|
3305
|
-
const balancesListQuery = getHiveEngineTokensBalancesQueryOptions(username);
|
|
3306
|
-
const balances = await queryClient.ensureQueryData(balancesListQuery);
|
|
3307
|
-
const tokensQuery = getHiveEngineTokensMetadataQueryOptions(
|
|
3308
|
-
balances.map((b) => b.symbol)
|
|
3309
|
-
);
|
|
3310
|
-
const tokens = await queryClient.ensureQueryData(tokensQuery);
|
|
3311
|
-
const balanceInfo = balances.find((m) => m.symbol === token);
|
|
3312
|
-
const tokenInfo = tokens.find((t) => t.symbol === token);
|
|
3313
|
-
const canDelegate = isForOwner && tokenInfo?.delegationEnabled && balanceInfo && parseFloat(balanceInfo.delegationsOut) !== parseFloat(balanceInfo.balance);
|
|
3314
|
-
const canUndelegate = isForOwner && parseFloat(balanceInfo?.delegationsOut ?? "0") > 0;
|
|
3315
|
-
const stakeBalance = parseFloat(balanceInfo?.stake ?? "0");
|
|
3316
|
-
const pendingUnstakeBalance = parseFloat(
|
|
3317
|
-
balanceInfo?.pendingUnstake ?? "0"
|
|
3318
|
-
);
|
|
3319
|
-
const supportsStakingFeature = Boolean(
|
|
3320
|
-
tokenInfo?.stakingEnabled || (tokenInfo?.unstakingCooldown ?? 0) > 0 || parseFloat(tokenInfo?.totalStaked ?? "0") > 0
|
|
3321
|
-
);
|
|
3322
|
-
const hasStakingBalances = stakeBalance > 0 || pendingUnstakeBalance > 0;
|
|
3323
|
-
const canStake = isForOwner && Boolean(tokenInfo?.stakingEnabled);
|
|
3324
|
-
const canUnstake = isForOwner && (supportsStakingFeature || hasStakingBalances);
|
|
3325
|
-
return [
|
|
3326
|
-
"transfer" /* Transfer */,
|
|
3327
|
-
...canDelegate ? ["delegate" /* Delegate */] : [],
|
|
3328
|
-
...canUndelegate ? ["undelegate" /* Undelegate */] : [],
|
|
3329
|
-
...canStake ? ["stake" /* Stake */] : [],
|
|
3330
|
-
...canUnstake ? ["unstake" /* Unstake */] : []
|
|
3331
|
-
];
|
|
3332
3608
|
}
|
|
3333
3609
|
});
|
|
3334
3610
|
}
|
|
@@ -3819,6 +4095,7 @@ exports.getSpkAssetGeneralInfoQueryOptions = getSpkAssetGeneralInfoQueryOptions;
|
|
|
3819
4095
|
exports.getSpkMarketsQueryOptions = getSpkMarketsQueryOptions;
|
|
3820
4096
|
exports.getTokenOperationsQueryOptions = getTokenOperationsQueryOptions;
|
|
3821
4097
|
exports.getTokenPriceQueryOptions = getTokenPriceQueryOptions;
|
|
4098
|
+
exports.getVisionPortfolioQueryOptions = getVisionPortfolioQueryOptions;
|
|
3822
4099
|
exports.getWallet = getWallet;
|
|
3823
4100
|
exports.hasWalletHiveAuthBroadcast = hasWalletHiveAuthBroadcast;
|
|
3824
4101
|
exports.isEmptyDate = isEmptyDate;
|