diff --git a/src/components/chain/Market.js b/src/components/chain/Market.js
index 51605b5..477e117 100644
--- a/src/components/chain/Market.js
+++ b/src/components/chain/Market.js
@@ -1,5 +1,7 @@
import { baseConfig } from './wallet/PassportWallet';
import { orderbook } from '@imtbl/sdk';
+import { queryTokenPriceCg } from "@/components/chain/utils"
+import {useMarketplaceStore} from "@/store/marketplace";
const makeFeeAddress = import.meta.env.VUE_APP_MAKEFEE_ADDRESS
const NATIVE = 'NATIVE'
const ERC20 = 'ERC20'
@@ -8,6 +10,8 @@ export class ImtblMarket {
constructor(_chainInstance) {
this.client = new orderbook.Orderbook({ baseConfig });
this.bc = _chainInstance
+ this.marketStore = useMarketplaceStore();
+ this.updateCurrencyPrice();
}
updateProvider(provider) {
@@ -226,4 +230,17 @@ export class ImtblMarket {
const receipt = await this.signer.sendTransaction(unsignedCancelOrderTransaction);
return receipt;
}
+
+ async updateCurrencyPrice() {
+ const ids = ['immutable-x', 'ethereum', 'usd-coin']
+ let priceList = await queryTokenPriceCg(ids);
+ priceList = priceList.map((item) => {
+ return {
+ id: item.id,
+ price: item.current_price
+ }
+ })
+ this.marketStore.currencyPrice = priceList;
+ return priceList;
+ }
}
diff --git a/src/components/chain/utils.js b/src/components/chain/utils.js
index 789fbbb..66532f0 100644
--- a/src/components/chain/utils.js
+++ b/src/components/chain/utils.js
@@ -6,6 +6,10 @@ import { ethers } from 'ethers';
import assert from 'assert'
import { AllChains } from "@/configs/allchain";
import { Deferred } from '@/utils/promise.util';
+import { CURRENCYS } from "@/configs/configchain";
+import { useMarketplaceStore } from "@/store/marketplace"
+import {priceCalculated} from "@/configs/priceCalculate.js"
+
export const cfgChainId = parseInt(import.meta.env.VUE_APP_NET_ID);
@@ -20,6 +24,9 @@ for (const d of AllChains) {
}
assert(chainCfg, 'chain config not found');
+export const currencyMap = CURRENCYS[cfgChainId]
+assert(currencyMap, 'currencys not configured')
+
export const currentChainCfg = chainCfg;
@@ -57,6 +64,16 @@ export const genRefreshToken = async(refreshToken) => {
}
return res.data;
}
+/**
+ * query token->usd price from coingecko
+ * @param {*} ids
+ * @returns
+ */
+export const queryTokenPriceCg = async(ids) => {
+ const idstr = ids.join(',');
+ const url = `https://api.coingecko.com/api/v3/coins/markets?vs_currency=USD&ids=${idstr}`
+ return fetch(url).then(res => res.json());
+}
const utf8ToHex = (str) => {
return '0x' + Buffer.from(str).toString('hex');
@@ -185,4 +202,34 @@ export const switchEthereumChain = async (provider, targetChainId) => {
}
}
return deferred.promise
+}
+
+export const formatPrice = (data) => {
+ const marketplaceList = useMarketplaceStore()
+ const type = data.item_type
+ let address;
+ let icon, price, usd
+ const tokenAmount = priceCalculated(data.amount, 3)
+ const amount = parseFloat(ethers.utils.formatUnits(data.amount, 18))
+ if (type == 'NATIVE') {
+ address = 'NATIVE'
+ } else if (type == 'ERC20') {
+ address = data.contract_address
+ if (address) {
+ address = address.toLowerCase()
+ }
+ }
+ if (!address) {
+ return {icon, price}
+ }
+ if (address) {
+ const currencyData = currencyMap[address]
+ if (currencyData) {
+ const currencyPrice = marketplaceList.priceDatas
+ icon = currencyData.icon
+ price = currencyPrice.find(o => o.id == currencyData.id_query)
+ usd = (amount * price.price).toFixed(2)
+ }
+ }
+ return {icon, price, usd, tokenAmount}
}
\ No newline at end of file
diff --git a/src/components/common/card.vue b/src/components/common/card.vue
index 8755c21..78da33f 100644
--- a/src/components/common/card.vue
+++ b/src/components/common/card.vue
@@ -13,7 +13,7 @@
{{ priceCalculated(nftData.event.data.buy[0].amount) }}
-
+
{{ nftData.nft.owner_address.substr(0,4) }}...{{ nftData.nft.owner_address.substr(-4) }}
@@ -47,9 +47,11 @@ import {
const localWalletStore = walletStore()
const marketplaceList = useMarketplaceStore()
import {createModal} from "@/utils/model.util";
+import {formatPrice} from "@/components/chain/utils"
const emit = defineEmits(['renewNft'])
import { useRouter } from "vue-router";
const router = useRouter();
+const icon = ref('')
const { proxy } = getCurrentInstance();
const props = defineProps({
nftData: {
@@ -118,6 +120,10 @@ const addCart = async (val) => {
onMounted(() => {
// console.log(JSON.parse(JSON.stringify(props.nftData)), "-=-=-");
+ if (props.nftData?.event?.data?.buy && props.nftData?.event?.data?.buy.length > 0) {
+ const data = formatPrice(props.nftData?.event?.data?.buy[0])
+ icon.value = data.icon
+ }
});
diff --git a/src/configs/configchain.js b/src/configs/configchain.js
index fc51fe7..c705218 100644
--- a/src/configs/configchain.js
+++ b/src/configs/configchain.js
@@ -20,6 +20,70 @@ export const ALL_PROVIDERS = [
},
];
+export const icon_imx = 'data:image/png;base64,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'
+export const icon_usdc = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAJnklEQVR42r1aa3BV1RlNf1Rr/7SjjtM/ra08ShHFUiy1VbTg2Hba6WPaaacPW5SOWrVWiQRFG6YUSqEKZVAeAWKABASMAir4QEQQkYSQByHkSUgIN8nNTW5e9ya5NzefK2vON7OH2fucjCZ8M2sunHP2Pnvtvb7H3idpn9W+Ob/gc8DVwB1AOpALFAIhIA4MeogDIe/eNu/Z29kWfaSNubkJXAlMBzKBo0DEG7CMDHy2zWubCUwDrrjcBGYDeUAYkFFCK7AFuBO4cgwJUEI3AhuBKCBjhHZgAzCZkhtlElcB9wM1gFwmVAJzgC+MFonrgNVAzO/FE588odBro/FsDFgFXPtZSVwP5AMpv0FNAMan49cyuFFokwJ2AV/9tCS+DhzwHwyAwdy+uFjm5dXKxvdDcs/yUl5ztOO9H68o47NP5NbK9/91itcmBE/AXjuZYDnl+5EY7xH47+uNUnExJonBlAymhuQf22pk3DznoHgvfXutpIaGZCCZkvKmXlm6twGEitFn4Oq8PGKZDTuX5xNDlo44c5MzCuTRLTVS2tDDwXtGMo/kBBN5fFutJNmOxj5One+Rh16qlm9l8B1+Mntew3MQkblAzCWL6f8sknXvXZTueFLUhjC7rV0DsuN4K1fJZyC8N3NJsew+EZZwd4Jt1brQ55p3mmTasyf95NkD3BtEYgpQ7SJxG/T82sk2MVehozcpWz9skV+sLOdKKQkdNFaAuPT65AUF8qv/l0vesVaJxpKilhwcklcKwjJj0Sk/MhXAJBeJK4As1yx+d1GR7DsVEZ1B/FIO92VVUg6qb9OPfgDdz9lQSWAS9L7pZ2z7101VUtrYo33Tf14tbOPq+6zuC8DnbURmAR02x57yVKHkHGmWFFdC+Lu/tF1+uLRECdgiGmUChyZWHrggEyzPKqHZy0rl7bIOkvD8hpHtxgWFrgAQAWbaVmObhQRf/tTOcxIfGNSV4Mpg6TkAPmtvR8mpZX/QbCWiQF8MxQcwQboyvf2DMn97nV+7bK6KmlfFtto6/9HyMqlrjYvaRzVdcse/i10kNCfAYYskH/JQgy9wdscHkLlzSYkU1HWLWnVzXO5e5sxNIWCqSSTTNquT8Lv5cLOohaID8ts1Z5SEbRUot1WQ0clz3dLdlxS1SE9C3inrYBKcuhBRyYfM71+sYBRUW/9eiPccE7BASVwNHLF1+NPnTsvFaL86IHXuqpFAgiTLGnspDZf1J1Jcne/AkS39eP0X0L+0nwvt/awGHCo4CHwpzdultVlmlwNXqwrFuOy4bo1qkBujmFpDpI8DXvFGIwd1tKqTJNSR//dmo++kzPpPidS2xD2/FFmOfhyybAFmDBOZBwxeQoQzVgh5qGEwGLA76mS+Ui8a1c6F++Q3q8/w3rh03pdvP3NSsg6F+IxqH4nRKjEluB6JV+04fBN92IgkgUfSGK0ssvo1BhLtpcalM5b08w3+7vw4LGrbP2r1SAPzcR9QR4b0GAGbOvrll6vKXXLh9T/AV+Bn6mNIus7nNw0TKbDUQwy5GtOLUVNNd2qaQYEZXw3RijpXMoaEWB3DmUkC+Umv2+TKEH/6Qq/KkcWmo477MI0hzOIfGyADz1gyTOI9d7Rae1BlIKyhMnbUya2ZRTq7HAB+CZWbnYT2y6zPnGXI29Xu/DCReNAMr367KTD+/2ndWbNmonxKIaNdJ8J07L9vrZGfIQoi9AaRMH3PnCDK1xGGu9Isjs7E9e7pDlFb/Np5zuhE90tZBD63/4L09A2KmlkdoxjkSh2p7JQnka01l7iJUOKybF+DqO0vaccqWYn024lAu4fOREVtUX69VZu2CXgwu4plRgj5pz+ZIglbLsk52iK3gIxrZSZ6vrpkz3lRe6usHRPmJhK3zC4H4xl2gQ3Q9cjlACemUz+4uYq7P0Qx5pgYaieTTHpercrM2dfzWGW1fUURmZThllbIkln5crVNh5s1AjkJqEMr4Qne/1WSiHrcGV5E2FXbi4FRKj65ZAtWTg3/xjW3sxdYBkUHVTtY3uEKlbx209OF8pcNldyvY+/B/+O63jdPTczajcXhLUxy7n4Pn42KGlbXpQyG31xbHnkAstCSor6tT+5aai1PeA0yYoKDPzB5/nn9WfZh63clpGJkazq9o0zhHgV1lhcFU3J/VqXLV7PTvFPxlK2Txgg74cboMcfpCHePyBfF8AEjTNLxx7GkJ9gW8mLUUss91qKzbyUNH2K042SGnZOZBB5N8z4HRGwObyajN4ojVnmpbBAmmX01h2BHyTIHxSQPJH63poK5KeENLNrLlYPcnLJilDKqBZc/tQDfGyZyjaWM52xC81wNGJPdvev4Ytee3tzd8RdtWEBiY0bJ6b2+BLe+roHxHXOyKnmqos8/nFPtqrMOAV/WPckil2QKjd3au3B6HtVYNc2tKitc7GF0dUyjTCpDMXl2d70GBNuksPJ+vyJq+pKj1iMWmjvEW4GwJXpRp32e0yeSKUoI4dk1CJY3P1lRxlrL9BtsCbjCMyE1RyjXa4yYkKDKlO0cq9EMTLv0402epWNm3zeL28Xcsj78UnVgIrsBzroVcd/MRTc88bEfCa7qY6jJOnoTorYHfnXzQmeVnKOHDyaZu4Goa8tb4+3WdOuJ8Ow3KMI8Rdn8QXPg8/ADnguoQYbGFjf4OMhclc2OGWYNFe7SmRIeDjyz+xwjmbE65uzyfBjhlvgbVhHXbId09JfM/HoWlWotnQMyd2OlX6W8TlfDRuZmoNY+Y/QXSkstBv3iDJfluQ5KX6q/N4EoyOo1kwB97ecrTwtOFZnw1MKYpMdza/0+BlUBk4POfx8A4i5HxCzzYMEs0ZsgNWzEuOvTkKptDJgbJuYY+A1rLw3LmvhwKu9HIgbcN9LvhS8CQ46POzxYgFw066pxUK69velzf1xbQekYxr5QV/Fg2+dkMQWsMr4rBpL5CrDHXekyxzAUI+GZ57WURMD3EW6s0EbPkRlIUBCyz4Dd4273hx43mW/4fXrTGgrHmYz7JQ091PbcTVWoCvyJPJRdLW3dCe5Rlr/eyDMs9uckQOwHvuYecTCZvSoze+wneOIBx3VVs2Yblu54liug7d1tKKd84PrgEQfLbC3QF/yVdqRfdfVZIujz9GrgutH61v5FL5rVAXKZUAPMBa4aiz/hmApsATrHkECnl5injOVfDelX33uAnUD7KBKIADuA2bbwOtaEbgOWAMeBDt1pjhApbyKOAYuBGWNPIFhy1wKzgKe9WF8GtAEJY+AJ71opsAvIAO4CrhkNCX0CiquioN+M4/EAAAAASUVORK5CYII='
+export const icon_eth = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAEgUlEQVR42u2ZfUwbdRjHCwWCYS8QI8bMqEujzqh/GGdifMMgZaMTROacYmH0rtC70UDQUQizQSgLcC302kLGNpIFgyQKc3At2ZzGxEST+cfiFg0xMZmJb1HmMmemGy/j8Xu12m5d6VhIe5f0ST5p0mvJ98NzT+9+v9OkKlWpStWq1F7H2IONzYc2qFrCN3xi7Tvd7x/lGwd7S8vt6aoVcQ0ETJ3C+Fyd1fsrY3E/o0oJp8+/EZxxCBNUW+8lhnMfBWtVJhHQQkIA5BDG/xO5wnCiSW3dKBC80iyIFJE5w/DiRrVIrBN8kiRLRIsEERjerVWDiBkCc8uIzOIUK1C0hODz6xD+a0CxREJILOdep8xOeP0ZEOkLCsQXmQNmpYoUIvjvcUXCfMPyok5REi6vfz1mY1oOvgIRYjmxj+U8WiUNOIfQ8ysVAefQlUKlSNwveP0z0RIhEefEciJAnGZ4MTepEsKAJA+4J5YEJAk3jcTyYkwRMA8ZLtnd0CPw+RtJdLmOUGv7u2Te7aGyV+y007iPdtW6YsnMYF4eSJZEHjge/u9L1OuRqBMzsWfvYbI0DARDGhmBtrzYQnpDM20rb6MdlQ6qNjtvICN6QEYyRKwQWPhXYCp4CjW1DlOd9dp5qAqL/E9JWStVvNYhS0Z+9jxmRZ/odcYmiHzb454ke9cYNTQfDJ5CJktYILZImK2lLVS+o53eqOnBd/vlWTqOv5OXEAmH80gWGGrrHCXrm0PBQUaIKIG4ImFw3EZl2+30enX3QjXrbEyIiM0+klvftH8EApejOhBHJB7F22x/lFbY2ytNvYmZlSrWmYPBrELQU+DqKojM6Q22j0Bxgb4pMyESgkfKcvkC+SMTJ9MQdAOEOvD68y2KLIGZYoONKyppXo9OZ6DT+WaLOz0BIlPyMtYI6p2DgbznC5sgJG4Gowh+aQUis+iAC686DQoC94A2lncXJfKnNx9M46r+KV5LfMMfZ2JIsxFkO4S+gMDiMiKXITAJnn2qwKqtrfetYXhxF753Gt8fhEh2om/bnxS80g/gT9xrHYTQwxoUY+nPh0AL+P46kavgK1BdtHVPjvWtA1oEfw6fmQLz4KTclWStQXiIXAEEzkLG5hoM3KFBIdgjCHbIyAgXcb34BQKd4O7QaaTDcTc4Bwj8hvf0ydz2yUH4EVkkxCK68zneqxCHjmXX1PVnVdb0vmB4qe0J3aadabjY5SLwbgSfAUuAwII8GyBdAbfx0mlAEVxCt0Zx7PFx/6k0zEEmgm5B6BNgHlAEkziWp5Q1ycsIfwHQNfj8P+3r+7AbnTiAwBcAXcd3LCc+pqDdk0AGOtCN8EvRK8SJpRgLq78YXjQpcT/rTnTgkxUsdYdAtlI3555G+B9vQuRLnFL3KX2nsTHOTiN+ckWDRumFWVmDxdZ7MUQWIdHO8J50tWxkPxTcOo0WCWDAb1fbo4VXwcUIkbMsL25W4xOrTNAXemL1N0RqNWot9/5jd3X0fPAZ1zBw2Mg6b9Ooud7uGnsUmxP3ph7UpypVqVqV+gfpQf8nbEeobAAAAABJRU5ErkJggg=='
+
+export const CURRENCYS = {
+ 13473: {
+ 'NATIVE': {
+ name: 'tIMX',
+ decimals: 18,
+ icon: icon_imx,
+ id_query: 'immutable-x'
+ },
+ "0xe9e96d1aad82562b7588f03f49ad34186f996478": {
+ name: 'ETH',
+ decimals: 18,
+ icon: icon_eth,
+ id_query: 'ethereum'
+ },
+ "0x3b2d8a1931736fc321c24864bceee981b11c3c57": {
+ name: 'USDC',
+ decimals: 18,
+ icon: icon_usdc,
+ id_query: 'usd-coin'
+ },
+ "0x1ccca691501174b4a623ceda58cc8f1a76dc3439": {
+ name: 'WIMX',
+ decimals: 18,
+ icon: icon_imx,
+ id_query: 'immutable-x'
+ },
+ "0xfd42bfb03212da7e1a4608a44d7658641d99cf34": {
+ name: 'cETH',
+ decimals: 18,
+ icon: icon_eth,
+ id_query: 'ethereum'
+ },
+ },
+ 13471: {
+ 'NATIVE': {
+ name: 'tIMX',
+ decimals: 18,
+ icon: icon_imx,
+ id_query: 'immutable-x'
+ },
+ "0x52a6c53869ce09a731cd772f245b97a4401d3348": {
+ name: 'ETH',
+ decimals: 18,
+ icon: icon_eth,
+ id_query: 'ethereum'
+ },
+ "0x6de8acc0d406837030ce4dd28e7c08c5a96a30d2": {
+ name: 'USDC',
+ decimals: 18,
+ icon: icon_usdc,
+ id_query: 'usd-coin'
+ },
+ "0x3a0c2ba54d6cbd3121f01b96dfd20e99d1696c9d": {
+ name: 'WIMX',
+ decimals: 18,
+ icon: icon_imx,
+ id_query: 'immutable-x'
+ },
+ }
+}
export default {
ALL_PROVIDERS,
diff --git a/src/configs/priceCalculate.js b/src/configs/priceCalculate.js
index 0159e1e..974275d 100644
--- a/src/configs/priceCalculate.js
+++ b/src/configs/priceCalculate.js
@@ -2,8 +2,17 @@ import moment from "moment"
import { ethers } from "ethers"
// 计算价格精度
-export const priceCalculated = (price) => {
- return ethers.utils.formatUnits(price, 18)
+export const priceCalculated = (price, n) => {
+ n = n || 3
+ console.log('priceCalculated')
+ let str = ethers.utils.formatUnits(price, 18)
+ if (str.indexOf('.') > -1) {
+ str = str.slice(0, str.indexOf('.') + n + 1)
+ }
+ if (str === '0.000') {
+ str = '<0.001'
+ }
+ return str
}
export const timeFormat = (value) => {
diff --git a/src/store/marketplace.js b/src/store/marketplace.js
index 1a2cabf..94aae0f 100644
--- a/src/store/marketplace.js
+++ b/src/store/marketplace.js
@@ -1,5 +1,5 @@
import { defineStore } from 'pinia';
-import { ref } from 'vue';
+import { ref, toRaw, computed } from 'vue';
import { apiMarketplaceState, apiGetCartList, apiAddCartList, apiDelCartList } from "@/utils/marketplace"
export const useMarketplaceStore = defineStore('marketplace', () => {
@@ -12,6 +12,7 @@ export const useMarketplaceStore = defineStore('marketplace', () => {
const gold = ref([])
const status = ref([])
const getCartList = ref([])
+ const currencyPrice = ref([])
const updateOverviewStatus = (_connected) => {
overview.value = _connected;
}
@@ -37,6 +38,10 @@ export const useMarketplaceStore = defineStore('marketplace', () => {
status.value = _connected;
}
+ const priceDatas = computed(() => {
+ return toRaw(currencyPrice.value)
+ })
+
async function getMarketplaceState(_connected) {
return await apiMarketplaceState(_connected)
}
@@ -66,6 +71,7 @@ export const useMarketplaceStore = defineStore('marketplace', () => {
getCartList, getCartListState,
addCartListState,
delCartListState,
+ currencyPrice,priceDatas
}
},
{
diff --git a/src/views/DetailView.vue b/src/views/DetailView.vue
index 58b34c7..dff7854 100644
--- a/src/views/DetailView.vue
+++ b/src/views/DetailView.vue
@@ -25,8 +25,8 @@
{{ priceCalculated(detailData.event.data.buy[0].amount) }}
-

-
+
![ICON]()
+
( $ {{ usd }} )
@@ -149,6 +149,7 @@ import {priceCalculated} from "@/configs/priceCalculate.js"
import { BlockChain } from "@/components/chain/BlockChain"
import {walletStore} from "@/store/wallet";
import LazyLoadImg from "@/components/lazyloadimg"
+import {formatPrice} from "@/components/chain/utils"
const router = useRouter();
const localWalletStore = walletStore()
const props = defineProps({
@@ -159,6 +160,8 @@ import placeholderImg from '@/assets/img/marketplace/GenesisHeroes_NFT.png'
const detailData = ref(null)
const myAddress = localWalletStore.address
const nftAbilities = ref()
+const icon = ref('')
+const usd = ref('')
// 购买
const buyNow = async () => {
@@ -291,6 +294,11 @@ const getDetail = async () => {
nftData.event = data.event
nftAbilities.value = data.nft.detail
detailData.value = data
+ if (data.event?.data?.buy && data.event?.data?.buy.length > 0) {
+ const _data = formatPrice(data.event?.data?.buy[0])
+ icon.value = _data.icon
+ usd.value = _data.usd
+ }
console.log(data,'----')
}