diff --git a/src/pages/ChainAndToken/Chains/ChainBalance.js b/src/pages/ChainAndToken/Chains/ChainBalance.js index f379e50..eef76dc 100644 --- a/src/pages/ChainAndToken/Chains/ChainBalance.js +++ b/src/pages/ChainAndToken/Chains/ChainBalance.js @@ -3,6 +3,7 @@ import classes from './Chains.module.css' import ToggleSwitch from "../../../components/ToggleSwitch/ToggleSwitch"; import {useGetAllBalanceByChain, useGetTotalBalanceByChain} from "../../../query"; +import {BN} from "../../../utils/utils"; const ChainBalance = ({chainId}) => { @@ -36,16 +37,13 @@ const ChainBalance = ({chainId}) => { No Data! else return
- {data?.map((balance, index) =>
+ {data?.map((balance, index) =>
{index + 1} {balance?.address} - Balance: {balance?.balance} + Balance: {new BN(balance?.balance).toFormat()}
)}
- } - - return ( <> @@ -78,7 +76,7 @@ const ChainBalance = ({chainId}) => { Total Balance: - { totalIsLoading ? "Loading..." : total?.balance} + { totalIsLoading ? "Loading..." : new BN(total?.balance).toFormat()}
diff --git a/src/pages/ChainAndToken/Tokens/TokensBalance.js b/src/pages/ChainAndToken/Tokens/TokensBalance.js index 31bbbf7..bf9cec6 100644 --- a/src/pages/ChainAndToken/Tokens/TokensBalance.js +++ b/src/pages/ChainAndToken/Tokens/TokensBalance.js @@ -2,6 +2,7 @@ import React, {useEffect, useState} from 'react'; import {useGetTokenAllBalanceById, useGetTokenTotalBalanceById} from "../../../query"; import classes from "../Chains/Chains.module.css"; import ToggleSwitch from "../../../components/ToggleSwitch/ToggleSwitch"; +import {BN} from "../../../utils/utils"; const TokensBalance = ({chainId}) => { @@ -29,9 +30,9 @@ const TokensBalance = ({chainId}) => { No Data! else return
- {data?.map((balance, index) =>
+ {data?.map((balance, index) =>
{index + 1} {balance?.address} - Balance: {balance?.balance} + Balance: {new BN(balance?.balance).toFormat()}
)}
@@ -69,7 +70,7 @@ const TokensBalance = ({chainId}) => { Total Balance: - { totalIsLoading ? "Loading..." : total?.balance} + { totalIsLoading ? "Loading..." : new BN(total?.balance).toFormat()}
diff --git a/src/pages/Dashboard/BriefWallet/BriefWallet.js b/src/pages/Dashboard/BriefWallet/BriefWallet.js new file mode 100644 index 0000000..346db01 --- /dev/null +++ b/src/pages/Dashboard/BriefWallet/BriefWallet.js @@ -0,0 +1,38 @@ +import React from 'react'; +import classes from './BriefWallet.module.css' +import {useGetWalletTotalUsers} from "../../../query"; +import BriefWalletCard from "./BriefWalletCard"; + +const BriefWallet = () => { + + const {data, isLoading, error} = useGetWalletTotalUsers(); + + const content = () => { + if (error) return Error + if (isLoading) return Loading... + else return <> +
+ {data?.map((data, index) => )} + +
+ + + + + } + + return ( +
+ +

Total User Wallets

+ + { + content() + } + + +
+ ); +}; + +export default BriefWallet; diff --git a/src/pages/Dashboard/BriefWallet/BriefWallet.module.css b/src/pages/Dashboard/BriefWallet/BriefWallet.module.css new file mode 100644 index 0000000..498be0e --- /dev/null +++ b/src/pages/Dashboard/BriefWallet/BriefWallet.module.css @@ -0,0 +1,13 @@ +.box { + background: #282a36; + color: rgba(236, 236, 236, 0.7803921569) !important; + border-color: rgba(36, 38, 51, 0.9803921569) !important; + border-radius: 5px !important; +} + +.striped div:nth-child(even){ + background-color: #38384678; + -webkit-transition: background-color 0.4s; + -o-transition: background-color 0.4s; + transition: background-color 0.4s; +} \ No newline at end of file diff --git a/src/pages/Dashboard/BriefWallet/BriefWalletCard.js b/src/pages/Dashboard/BriefWallet/BriefWalletCard.js new file mode 100644 index 0000000..2241752 --- /dev/null +++ b/src/pages/Dashboard/BriefWallet/BriefWalletCard.js @@ -0,0 +1,14 @@ +import React from 'react'; +import classes from './BriefWallet.module.css' +import {BN} from "../../../utils/utils"; + +const BriefWalletCard = ({data, index}) => { + return ( +
+ {data?.currency} + {new BN(data?.balance).toFormat()} +
+ ); +}; + +export default BriefWalletCard; diff --git a/src/pages/Dashboard/Chain/Chain.js b/src/pages/Dashboard/Chain/Chain.js index aa7d9b3..17073da 100644 --- a/src/pages/Dashboard/Chain/Chain.js +++ b/src/pages/Dashboard/Chain/Chain.js @@ -27,7 +27,7 @@ const Chain = () => { } return ( -
+

Chain List

diff --git a/src/pages/Dashboard/Chain/ChainCard.js b/src/pages/Dashboard/Chain/ChainCard.js index e4fe105..341d31c 100644 --- a/src/pages/Dashboard/Chain/ChainCard.js +++ b/src/pages/Dashboard/Chain/ChainCard.js @@ -1,5 +1,6 @@ import React from 'react'; import classes from './Chain.module.css' +import {BN} from "../../../utils/utils"; const ChainCard = ({data, index}) => { @@ -8,7 +9,7 @@ const ChainCard = ({data, index}) => { return (
{data?.chain} - {data?.balance} + {new BN(data?.balance).toFormat()}
); }; diff --git a/src/pages/Dashboard/Dashboard.js b/src/pages/Dashboard/Dashboard.js index a7bcaf3..6e04100 100644 --- a/src/pages/Dashboard/Dashboard.js +++ b/src/pages/Dashboard/Dashboard.js @@ -5,6 +5,7 @@ import {useGetUsersByGroup, useGetUsersList, useGetWithdrawsReq} from "../../que import Chains from "../ChainAndToken/Chains/Chains"; import Chain from "./Chain/Chain"; import Token from "./Token/Token"; +import BriefWallet from "./BriefWallet/BriefWallet"; const Dashboard = () => { @@ -15,7 +16,7 @@ const Dashboard = () => { return
-
+
{users !== null ? @@ -48,10 +49,11 @@ const Dashboard = () => {
-
+
+
diff --git a/src/pages/Dashboard/Token/Token.js b/src/pages/Dashboard/Token/Token.js index b29363b..228dee7 100644 --- a/src/pages/Dashboard/Token/Token.js +++ b/src/pages/Dashboard/Token/Token.js @@ -23,7 +23,7 @@ const Token = () => { } return ( -
+

Token List

diff --git a/src/pages/Dashboard/Token/TokenCard.js b/src/pages/Dashboard/Token/TokenCard.js index 641bced..a81f232 100644 --- a/src/pages/Dashboard/Token/TokenCard.js +++ b/src/pages/Dashboard/Token/TokenCard.js @@ -1,11 +1,12 @@ import React from 'react'; import classes from './Token.module.css' +import {BN} from "../../../utils/utils"; const TokenCard = ({data, index}) => { return (
- {data?.name} - {data?.symbol} - {data?.balance} + {data?.name} - {data?.symbol} + {new BN(data?.balance).toFormat()}
); }; diff --git a/src/pages/Wallet/Wallet.js b/src/pages/Wallet/Wallet.js index d0fae80..678b625 100644 --- a/src/pages/Wallet/Wallet.js +++ b/src/pages/Wallet/Wallet.js @@ -2,10 +2,13 @@ import React, {useState} from 'react'; import {useGetWalletData} from "../../query"; import Loading from "../../components/Loading"; import ScrollBar from "../../components/ScrollBar"; +import {BN} from "../../utils/utils"; +import ToggleSwitch from "../../components/ToggleSwitch/ToggleSwitch"; const Wallet = () => { const [params, setParams] = useState({ + "excludeSystem": true, "limit": 500, "offset": 0 }); @@ -28,7 +31,29 @@ const Wallet = () => { return ( -
+ +
+ Exclude System Wallets + + { + + setParams(prevState => {return { + ...prevState, + excludeSystem: !prevState.excludeSystem + }}) + + + } } + + /*onchange={()=> setQuery({ + ...query, + ascendingByTime: (prevState => !prevState)} + )}*/ + checked={params?.excludeSystem}/> +
+
@@ -57,7 +82,7 @@ const Wallet = () => { - + ) diff --git a/src/query/hooks/useGetWalletTotalUsers.js b/src/query/hooks/useGetWalletTotalUsers.js new file mode 100644 index 0000000..0f08e0d --- /dev/null +++ b/src/query/hooks/useGetWalletTotalUsers.js @@ -0,0 +1,17 @@ +import {useQuery} from "@tanstack/react-query"; +import {adminGetWalletTotalUsers} from "js-api-client"; + +export const useGetWalletTotalUsers = () => { + return useQuery( + ['Wallet-Total-Users'], async () => { + /*if (chainId === null) return;*/ + const {data} = await adminGetWalletTotalUsers() + return data; + + }, + { + retry: 1, + /*enabled: false, + initialData:[]*/ + }); +} \ No newline at end of file diff --git a/src/query/index.js b/src/query/index.js index f4ff85c..14b0fee 100644 --- a/src/query/index.js +++ b/src/query/index.js @@ -5,6 +5,7 @@ export {useGetWithdrawInfo} from "./hooks/useGetWithdrawInfo"; export {useGetUsersByGroup} from "./hooks/useGetUsersByGroup"; export {useGetWhiteList} from "./hooks/useGetWhiteList"; export {useGetWalletData} from "./hooks/useGetWalletData"; +export {useGetWalletTotalUsers} from "./hooks/useGetWalletTotalUsers"; export {useGetChains} from "./hooks/useGetChains"; export {useGetAllBalanceByChain} from "./hooks/useGetAllBalanceByChain"; export {useGetTotalBalanceByChain} from "./hooks/useGetTotalBalanceByChain"; diff --git a/src/utils/card.js b/src/utils/card.js new file mode 100644 index 0000000..41bbf1c --- /dev/null +++ b/src/utils/card.js @@ -0,0 +1,129 @@ +export const cardHandler = (value) => { + switch (value) { + case '505785': + return 'IZB'; + + case '636214': + return 'AYANDE'; + + case '186214': + return 'AYANDE'; + + case '504706': + return 'SHAHR'; + + case '502938': + return 'DEY'; + + case '589210': + return 'SEPAH'; + + case '627648': + return 'TSADERAT'; + + case '207177': + return 'TSADERAT'; + + case '627412': + return 'EGHTESADNOVIN'; + + case '627488': + return 'KARAFARIN'; + + case '502910': + return 'KARAFARIN'; + + case '603770': + return 'KESHAVRZI'; + + case '639217': + return 'KESHAVRZI'; + + case '505801': + return 'KOSAR'; + + case '628023': + return 'MASKAN'; + + case '606373': + return 'MIRAN'; + + case '603799': + return 'MELI'; + + case '170019': + return 'MELI'; + + case '606256': + return 'MELAT'; + + case '622106': + return 'PARSIAN'; + + case '639194': + return 'PARSIAN'; + + case '627884': + return 'PARSIAN'; + + case '622108': + return 'PARSIAN'; + + case '639347': + return 'PASARGAD'; + + case '502229': + return 'PASARGAD'; + + case '627760': + return 'POST'; + + case '589463': + return 'REFAH'; + + case '504172': + return 'RESALAT'; + + case '603769': + return 'SADERAT'; + + case '903769': + return 'SADERAT'; + + case '621986': + return 'SAMAN'; + + case '627961': + return 'SANATOMADAN'; + + case '639346': + return 'SINA'; + + case '627353': + return 'TEJARAT'; + + case '585983': + return 'TEJARAT'; + + case '502908': + return 'TOSEOTAAVON'; + + case '505426': + return 'TOSEOTAAVON'; + + case '505416': + return 'GARDESHGARI'; + + case '639607': + return 'SARMAYEH'; + + case '507677': + return 'NOR'; + + case '585947': + return 'KHAVARMIANE'; + + default: + return 'ETC'; + } +}; \ No newline at end of file diff --git a/src/utils/iban.js b/src/utils/iban.js new file mode 100644 index 0000000..c0af40c --- /dev/null +++ b/src/utils/iban.js @@ -0,0 +1,93 @@ +export const ibanHandler = (value) => { + switch (value) { + case '069': + return 'IZB'; + + case '062': + return 'AYANDE'; + + case '061': + return 'SHAHR'; + + case '066': + return 'DEY'; + + case '015': + return 'SEPAH'; + + case '020': + return 'TSADERAT'; + + case '055': + return 'EGHTESADNOVIN'; + + case '053': + return 'KARAFARIN'; + + case '016': + return 'KESHAVRZI'; + + case '073': + return 'KOSAR'; + + case '014': + return 'MASKAN'; + + case '060': + return 'MIRAN'; + + case '017': + return 'MELI'; + + case '012': + return 'MELAT'; + + case '054': + return 'PARSIAN'; + + case '057': + return 'PASARGAD'; + + case '021': + return 'POST'; + + case '013': + return 'REFAH'; + + case '070': + return 'RESALAT'; + + case '019': + return 'SADERAT'; + + case '056': + return 'SAMAN'; + + case '011': + return 'SANATOMADAN'; + + case '059': + return 'SINA'; + + case '018': + return 'TEJARAT'; + + case '022': + return 'TOSEOTAAVON'; + + case '064': + return 'GARDESHGARI'; + + case '058': + return 'SARMAYEH'; + + case '080': + return 'NOR'; + + case '078': + return 'KHAVARMIANE'; + + default: + return 'ETC'; + } +}; \ No newline at end of file diff --git a/src/utils/utils.js b/src/utils/utils.js new file mode 100644 index 0000000..cad9412 --- /dev/null +++ b/src/utils/utils.js @@ -0,0 +1,78 @@ +import BigNumber from "bignumber.js"; + + + +export const numberFixedDecimal = (val, decimal) => { + return Math.round(val * decimal) / decimal; +}; +export const countDecimals = (value) => { + if (Math.floor(value) === value) return 0; + return value.toString().split(".")[1].length || 0; +}; +export const decimalChecker = (value, decimal) => { + if (Math.floor(value).toString() === value || value === "") return true; + const re = new RegExp("^\\d+\\.\\d{0," + decimal + "}$", "g"); + return re.test(value); +}; + +export const parsePriceString = (value) => { + if (!value) { + return 0; + } + return parseFloat(value.replace(/[^0-9.-]+/g, "")); +}; + +export const validateEmail = (email) => { + return /^\w+([.-]?\w+)*@\w+([.-]?\w+)*(\.\w{2,10})+$/.test(email); +} + +export const encodeQueryData = (params) => { + const ret = []; + for (let d in params) + ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(params[d])); + return ret.join('&'); +} + +export const BN = BigNumber.clone({ + FORMAT: { + groupSize: 3, + groupSeparator: ',', + decimalSeparator: '.', + } +}) + +export const isEn = str => /^[a-zA-Z ]*$/.test(str); + +export const isValidNationalCode = input => { + if (!/^\d{10}$/.test(input)) return false; + const check = +input[9]; + const sum = input.split('').slice(0, 9).reduce((acc, x, i) => acc + +x * (10 - i), 0) % 11; + return sum < 2 ? check === sum : check + sum === 11; +} + +export const isValidPassportCode = input => { + return /^[A-Z][0-9]{8}$/.test(input); +} + +export const toEnglishNum = str => { + const persianNumberArr = [/۰/g, /۱/g, /۲/g, /۳/g, /۴/g, /۵/g, /۶/g, /۷/g, /۸/g, /۹/g]; + const arabicNumberArr = [/٠/g, /١/g, /٢/g, /٣/g, /٤/g, /٥/g, /٦/g, /٧/g, /٨/g, /٩/g]; + + if (typeof str === 'string') { + for (let i = 0; i < 10; i++) { + str = str.replace(persianNumberArr[i], i).replace(arabicNumberArr[i], i); + } + } + return str; +} + +export const dateValidator = str => { + return /^[1-4]\d{3}\/((0[1-6]\/((3[0-1])|([1-2][0-9])|(0[1-9])))|((1[0-2]|(0[7-9]))\/(30|31|([1-2][0-9])|(0[1-9]))))$/.test(str); +} + +export const timeValidator = str => { + return /^(2[0-3]|[01]?[0-9]):([0-5]?[0-9])$/.test(str); +} + +export const toAbsoluteUrl = (path) => process.env.PUBLIC_URL + path + diff --git a/yarn.lock b/yarn.lock index 3448a44..b97f4d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9059,8 +9059,8 @@ __metadata: "js-api-client@https://github.com/opexdev/js-api-client.git#develop": version: 1.0.0-beta2 - resolution: "js-api-client@https://github.com/opexdev/js-api-client.git#commit=a2cc1290d7adc5afe6ceae0dc1b3a34011af53a5" - checksum: 4a2f22c75eec68d855df093256f2d2a398c41d7d8e69971693f2917c42cc6e4421c1bdd6ab9bc529a398b8fb37e5affd9b1a4ad6f81a1e0daaaad250fd03bd9b + resolution: "js-api-client@https://github.com/opexdev/js-api-client.git#commit=31a0f62c50c74506b5ea9b1de5e0850899e8827a" + checksum: 3aaec7b1257c68d7dd890b4df2e084c78c1a2bad143bc44b9d9debae8b9c8263b2f205f0b2ce1c770acab629b0202b051328b2bc30351859bc81618bb5a8a31f languageName: node linkType: hard
{wallet?.title?.slice(wallet?.title.indexOf("-") +1, wallet?.title?.end) } {wallet?.title?.slice(0, wallet?.title.indexOf("-"))} {wallet?.walletType}{wallet?.balance}{new BN(wallet?.balance).toFormat()} {wallet?.currency}