{"version":3,"sources":["webpack:///./libs/helper.ts","webpack:///./components/events/index.js","webpack:///./libs/const.ts","webpack:///./libs/config.ts","webpack:///./store/web3/state.ts","webpack:///./store/web3/getters.ts","webpack:///./store/web3/mutations.ts","webpack:///./store/web3/actions.ts","webpack:///./store/migration/state.ts","webpack:///./store/migration/getters.ts","webpack:///./store/migration/mutations.ts","webpack:///./store/migration/actions.ts","webpack:///./store/app/state.ts","webpack:///./store/app/getters.ts","webpack:///./store/app/mutations.ts","webpack:///./store/app/actions.ts","webpack:///./plugins/dialogMessage/events.ts","webpack:///./plugins/axios.ts","webpack:///./plugins/persistedState.client.ts","webpack:///./plugins/vuex-shared-mutations.ts","webpack:///./plugins/functionsPlugin.ts","webpack:///./plugins/web3.ts","webpack:///./plugins/blockInspect.ts","webpack:///./plugins/confirm/events.js","webpack:///./assets/img/icons/bsc.svg","webpack:///./middleware/initWallet.ts","webpack:///./assets/img/icons/icon-metamask.svg","webpack:///./assets/img/icons/icon-walletconnect.png","webpack:///./assets/img/icons/kai.svg","webpack:///./assets/img/icons/eth.svg","webpack:///./store/web3/index.ts","webpack:///./store/migration/index.ts","webpack:///./store/app/index.ts"],"names":["w3FromWei","price","tokenWei","parseFloat","Web3","utils","fromWei","w3toWei","toWei","shortenWallet","address","substring","length","formatTime","unix","Date","toLocaleString","shortNumber","numberV","withAbbr","decimals","COUNT_ABBR","i","Math","floor","log","result","pow","minimumFractionDigits","maximumFractionDigits","isMobile","test","navigator","userAgent","copyToClipboard","subject","content","clipboard","writeText","showNotification","isSuccess","$toast","window","$nuxt","success","error","formatNumber","isFloat","locale","round","floatNumber","fRw","String","padStart","weiToFixed","x","e","abs","parseInt","toString","split","Array","join","padLeft","number","character","getRPCs","Object","values","NETWORKS","reduce","acc","cur","chainId","rpcUrl","getConfigChain","supportChains","smcMode","network","find","item","getChainIdSupport","push","getChainSupport","isChainSupport","some","isFunction","functionToCheck","call","isDeviceMobileAndTablet","ctx","$device","isTablet","infoBrowser","browserName","platform","browserInfo","match","deviceInfo","deviceName","showLog","nameLog","getAbiByContract","addr","contract","CONTRACT_LIST","contractName","ABI","getContractMigration","networkId","NETWORK_MIGRATION","getContractClaim","NETWORK_CLAIM","getContractByName","getContractByAddress","toLowerCase","eventProcessing","Vue","name","eventModalWallet","eventModalConnect","MAX_GAS_FEE","process","WC_PROJECT_ID","CONTRACT_NAME","MIGRATION","BSC_MIGRATION","KAI_MIGRATION","BSC_PET_V1","BSC_PET_V2","KAI_PET_V1","KAI_PET_V2","FAKE_PET_V1","FAKE_PET_V2","CLAIM","BSC_CLAIM","KAI_CLAIM","DPET_SPIRIT","STORAGE_WC_KEY","WALLET_TYPE","metamask","walletconnect","ICON_CONNECT_WALLET","require","ICON_NETWORK","bsc","kai","eth","ABI_BSC_PET_V1","ABI_BSC_PET_V2","ABI_KAI_PET_V1","ABI_KAI_PET_V2","ABI_FAKE_PET_V1","ABI_FAKE_PET_V2","ABI_MIGRATION","ABI_CLAIM","testnet","mainnet","ENDPOINT_MIGRATION","configApi","getDpetNFT","migration","initialState","isLogin","isWalletConnect","account","getters","getWalletConnect","$web3","getIsWalletConnect","state","getWalletAddress","getChainId","getConnected","mutations","setAccount","toLocaleLowerCase","setChainId","resetState","actions","web3Connect","commit","dispatch","clearCachedProvider","wc","connect","accounts","web3","getAccount","removeModal","onChainChanged","numberChain","onAccountsChanged","Promise","resolve","reject","cacheConnect","localStorage","getItem","isConnected","isMetamask","undefined","ethereum","$modalConnect","show","onResolve","onReject","disconnect","checkNetWorkSupport","supports","$dialogMsg","popupType","title","message","map","id","chainName","persistent","buttons","btnText","btnCall","isPrimary","checkNetWorkClaim","metamaskSwitchChain","$processing","start","provider","getWeb3Provider","request","method","params","then","setTimeout","catch","switchError","code","includes","finish","metamaskAddNetWork","chain","$helper","addChain","nativeCurrency","tokenName","symbol","rpcUrls","blockExplorerUrls","explorer","getSignature","dataString","web3haldle","personalSign","signature","getInstanceContract","addrContract","abi","config","providers","HttpProvider","getWeb3","Contract","approveToken","tokenAddress","tokenId","exchangeAdress","isApproved","addrApproved","smc","endsWith","methods","PetIndexToApproved","getApproved","approve","send","from","gas","status","nfts","nftAvailable","nftSubmited","nextCursor","listV1","listV2","season","isReady","timeStartMigration","timeEndMigration","allMigrated","v1Migrated","v2Migrated","claimed","totalCredit","storage","claimedCount","pendingTx","totalCreditV1","totalCreditV2","totalCreditSpirit","creditAvailable","dpetSpirit","spiritMigrated","timeStartClaim","timeEndClaim","getListNFT","getListNFTSubmited","getListV1","getListV2","getIsReady","getRangeTime","to","getRangeTimeClaim","getTotalCredit","getClaimed","getNFTMigrated","getV1Migrated","getV2Migrated","getSeason","getTxPending","getClaimedCount","getUserInfo","getSpirit","level1","level2","level3","level4","level5","getTotalSpirit","getSpiritMigrated","setNftProfile","data","ids","Set","d","merged","filter","has","setNftSubmited","submitedArray","remainingArray","mg","setNftV1","setNftV2","setCursorNext","resetListNFT","setSeason","setIsReady","setTimeMigration","setTimeClaim","setClaimed","setAllMigrated","total","setV1Migrated","setV2Migrated","setTotalCredit","setNFTMigrated","setStorage","setTxPending","txPending","setClaimedCount","setInfoUser","payload","pending","setInfoTotal","totalPetV1","totalPetV2","a","setDpetSpirit","getDpetNFTs","rootState","chainIcon","cursor","fetchPET","$axios","$post","mini","res","all","version","checkIsReady","rootGetters","root","contractInstance","getTimeClaim","getTime","rangeTimeClaim","getStateMigration","totalMigration","timeStart","timeEnd","timeClaim","checkTokenExists","isV1","getMigrtionInfoByAddress","migrationInfo","totalv1","totalv2","getPetMigrated","v1","v2","idsPetV1","concat","idsPetV2","petMigrated","forceUpdateData","amount","petV1KAI","petV2KAI","petV1BSC","petV2BSC","nft","console","postUpdateSubgraph","this","setHeader","callUpdateSubgraph","time","update","checkUpdateInfo","smc1","smc2","getSubmited","wallet","parseData","finally","getClaim","checkClaim","claimCredit","checkNetwork","dataClaim","parseStorageData","totalPet","obj","pets","credit","smcName","parseDetailPet","image","fecthMyMigrated","pet","isExists","migrationSpirit","err","beforeMigration","isAppLoading","isOpenModalWallet","isLoadCredit","setAppLoading","isLoading","setOpenModalWallet","setLoadCredit","appLoading","showModalWallet","hideModalWallet","loadingCredit","eventDialogMsg","inject","redirect","app","onRequest","onError","ls","SecureLS","isCompression","store","req","createPersistedState","key","paths","get","setItem","value","set","removeItem","remove","onNuxtReady","nuxt","shareMutations","predicate","funcHelpers","eventComponent","$emit","hide","text","hasOwnProperty","callback","callbackType","Error","events","close","cb","defaultChain","chainIds","splice","projectId","web3Plugin","context","pluginInstance","Web3Handler","init","walletType","providerEth","setDataWeb3","getProvider","connected","EthereumProvider","chains","optionalChains","showQrModal","rpcMap","qrModalOptions","themeMode","keys","forEach","startsWith","styleModal","document","getElementById","elModal","getElementsByTagName","gaiaweb3","pluginSubcribeChain","pluginSubcribeAccount","removeListener","_events","chainChanged","on","accountsChanged","modal","subscribeModal","open","enable","setLocalStorage","clearLocalStorage","getAccounts","personal","sign","fromUtf8","addEventListener","preventDefault","event","metaKey","ctrlKey","altKey","keyCode","module","exports","namespaced"],"mappings":"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","file":"e5bd82b.js","sourcesContent":["//import _ from 'lodash'\nimport Web3 from 'web3';\nimport { IContract, Unit } from './interfaces';\nimport { INetWork } from './interfaces';\nimport { supportChains, smcMode, ABI, CONTRACT_LIST, NETWORKS, NETWORK_CLAIM, NETWORK_MIGRATION } from './config';\n\nexport function w3FromWei(price: string, tokenWei: Unit = 'ether'): number {\n if (!price) return 0.0;\n return parseFloat(Web3.utils.fromWei(price, tokenWei));\n}\n\nexport function w3toWei(price: string, tokenWei: Unit = 'ether') {\n return Web3.utils.toWei(price, tokenWei);\n}\n\nexport function shortenWallet(address: string) {\n if (!!address) return `${address.substring(0, 5)}...${address.substring(address.length - 4)}`;\n return '...';\n}\n\nexport function formatTime(unix: number) {\n const date = new Date(unix * 1000);\n return date.toLocaleString('en-US');\n}\n\nexport function shortNumber(numberV: number, withAbbr = true, decimals = 2) {\n if (!numberV) numberV = 0;\n const COUNT_ABBR = ['', 'K', 'M', 'B', 'T'];\n const i = numberV < 1000 ? 0 : Math.floor(Math.log(numberV) / Math.log(1000));\n const result = (numberV / Math.pow(1000, i)).toLocaleString('en-US', {\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals\n });\n if (withAbbr) return `$${result}${COUNT_ABBR[i]}`;\n return result;\n}\n\nexport function isMobile() {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n}\n\nexport async function copyToClipboard(subject: string, content: string) {\n try {\n await navigator.clipboard.writeText(content);\n showNotification(subject + ' has been copied');\n } catch ($e) {\n showNotification('Copy to clipboard error', false);\n }\n}\n\nexport function showNotification(content: string, isSuccess: boolean = true) {\n const $toast = window.$nuxt.$toast;\n if (isSuccess) $toast.success(content);\n else $toast.error(content);\n}\n\nexport function formatNumber(numberV: number, isFloat: boolean, locale: string) {\n if (!isFloat) return Math.round(numberV).toLocaleString(locale);\n\n //if (numberV < 100000)\n //numberV += 0.0240;\n let floatV = Math.round(numberV * 10000) % 10000;\n if (floatV)\n return numberV.toLocaleString(locale, {\n minimumFractionDigits: 4,\n maximumFractionDigits: 4\n });\n return Math.round(numberV).toLocaleString(locale);\n}\n\nexport function floatNumber(numberV: number) {\n let fRw = Math.round(numberV * 10000) % 10000;\n //if (numberV > 100000)\n //fRw += 0.0240;\n if (fRw) return '.' + String(fRw).padStart(4, '0');\n else return false;\n}\n\nexport function weiToFixed(x: any) {\n if (Math.abs(x) < 1.0) {\n var e = parseInt(x.toString().split('e-')[1]);\n if (e) {\n x *= Math.pow(10, e - 1);\n x = '0.' + new Array(e).join('0') + x.toString().substring(2);\n }\n } else {\n var e = parseInt(x.toString().split('+')[1]);\n if (e > 20) {\n e -= 20;\n x /= Math.pow(10, e);\n x += new Array(e + 1).join('0');\n }\n }\n return x;\n}\n\nexport const padLeft = (number: number, length: number, character: string = '0'): string => {\n let result = String(number);\n for (let i = result.length; i < length; ++i) {\n result = character + result;\n }\n return result;\n};\n\nexport const getRPCs = Object.values(NETWORKS).reduce((acc: Record, cur: INetWork) => {\n acc[cur.chainId] = cur.rpcUrl;\n return acc;\n}, {});\n\n// export const getRPCs = () =>\n// supportChains[`${smcMode}`].reduce((acc: any, cur: any) => {\n// acc[`${cur.chainId}`] = cur.rpcUrl;\n// return acc;\n// }, {});\n\nexport const getConfigChain = (chainId: number = 0): INetWork => {\n if (chainId === 0) {\n return supportChains[`${smcMode}`][0];\n } else {\n const network = Object.values(NETWORKS).find(function (item: INetWork) {\n return item.chainId === chainId;\n });\n return network as INetWork;\n }\n};\n\nexport const getChainIdSupport = (): number[] =>\n supportChains[`${smcMode}`].reduce((acc: number[], cur: INetWork) => {\n acc.push(cur.chainId);\n return acc;\n }, []);\n\nexport const getChainSupport = () =>\n supportChains[`${smcMode}`].reduce((acc: number[], cur: INetWork) => {\n acc.push(cur.chainId);\n return acc;\n }, []);\n\nexport const isChainSupport = (chainId: number) => supportChains[`${smcMode}`].some((item: any) => item.chainId === chainId);\n\nexport const isFunction = (functionToCheck: any) => {\n return functionToCheck && {}.toString.call(functionToCheck) === '[object Function]';\n};\n\nexport function isDeviceMobileAndTablet(ctx: any) {\n const { $device } = ctx;\n return $device.isMobile || $device.isTablet;\n}\n\nexport function infoBrowser() {\n let deviceName = 'Unknown';\n let browserName = 'Unknown';\n const userAgent = navigator.userAgent;\n const platform = navigator.platform;\n const browserInfo = userAgent.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\n const deviceInfo = userAgent.match(/(iphone|ipad|ipod|android|windows phone|blackberry)/i);\n if (browserInfo) browserName = browserInfo[0] as string;\n if (deviceInfo) deviceName = deviceInfo[0] as string;\n else deviceName = platform as string;\n return {\n deviceName,\n browserName\n };\n}\nexport function showLog(nameLog: string, contentLog: any = '') {\n if (process.env.NODE_ENV === 'development') {\n console.log(`${nameLog}:`, contentLog);\n }\n}\n\nexport function getAbiByContract(addr: string) {\n const contract = CONTRACT_LIST[`${addr}`];\n if (contract) {\n const contractName = contract?.contractName;\n // @ts-ignore\n return ABI[`${contractName}`] || null;\n } else {\n return null;\n }\n}\n\nexport function getContractMigration(networkId: number = NETWORK_MIGRATION) {\n switch (networkId) {\n // case 5:\n // return Object.values(CONTRACT_LIST).find(item => item?.contractName === 'MIGRATION');\n case 56:\n return Object.values(CONTRACT_LIST).find(item => item?.contractName === 'BSC_MIGRATION');\n case 24:\n return Object.values(CONTRACT_LIST).find(item => item?.contractName === 'KAI_MIGRATION');\n default:\n return Object.values(CONTRACT_LIST).find(item => item?.contractName === 'BSC_MIGRATION');\n }\n}\n\nexport function getContractClaim(networkId: number = NETWORK_CLAIM) {\n switch (networkId) {\n // case 5:\n // return Object.values(CONTRACT_LIST).find(item => item?.contractName === 'CLAIM');\n case 24:\n return Object.values(CONTRACT_LIST).find(item => item?.contractName === 'KAI_CLAIM');\n // case 56:\n // return Object.values(CONTRACT_LIST).find(item => item?.contractName === 'BSC_CLAIM');\n default:\n return Object.values(CONTRACT_LIST).find(item => item?.contractName === 'KAI_CLAIM');\n }\n}\n\nexport function getContractByName(contractName: string) {\n // @ts-ignore\n const contract = Object.values(CONTRACT_LIST).find(item => item?.contractName === contractName) as IContract;\n return contract || null; // Trả về null nếu không tìm thấy\n}\n\nexport function getContractByAddress(address: string) {\n // @ts-ignore\n // const contract = CONTRACT_LIST[`${address.toLowerCase()}`];\n // @ts-ignore\n const contract = Object.values(CONTRACT_LIST).find(item => item?.addr.toLowerCase() === address.toLowerCase()) as IContract;\n return contract || null; // Trả về null nếu không tìm thấy\n}\n","import Vue from 'vue';\nexport const eventProcessing = new Vue({\n name: 'Processing',\n});\n\nexport const eventModalWallet = new Vue({\n name: 'ModalWallet',\n});\n\nexport const eventModalConnect = new Vue({\n name: 'ModalConnect',\n});\n","export const MAX_GAS_FEE = process.env.MAX_GAS_FEE || 400000;\nexport const ALLOWANCE_MAX = process.env.ALLOWANCE_MAX?.toString();\nexport const WEB3_TIME_LIMIT = process.env.WEB3_TIME_LIMIT || 31536000;\nexport const WC_PROJECT_ID: string = process.env.WC_ID?.toString() || '1584f6cce01e488dc9e8cdb557ee466c';\nexport const SMALL_WIDTH = 960;\n\nexport const CONTRACT_NAME = {\n MIGRATION: 'MIGRATION',\n BSC_MIGRATION: 'BSC_MIGRATION',\n KAI_MIGRATION: 'KAI_MIGRATION',\n BSC_PET_V1: 'BSC_PET_V1',\n BSC_PET_V2: 'BSC_PET_V2',\n KAI_PET_V1: 'KAI_PET_V1',\n KAI_PET_V2: 'KAI_PET_V2',\n FAKE_PET_V1: 'FAKE_PET_V1',\n FAKE_PET_V2: 'FAKE_PET_V2',\n CLAIM: 'CLAIM',\n BSC_CLAIM: 'BSC_CLAIM',\n KAI_CLAIM: 'KAI_CLAIM'\n};\nexport const DPET_SPIRIT = 'DPET_SPIRIT';\n\nexport const STORAGE_WC_KEY = 'WALLET_CONNECT_TYPE';\n\nexport const WALLET_TYPE = {\n metamask: 'metamask',\n walletconnect: 'walletconnect'\n};\n\nexport const ICON_CONNECT_WALLET = {\n metamask: require('@/assets/img/icons/icon-metamask.svg'),\n walletconnect: require('@/assets/img/icons/icon-walletconnect.png')\n};\n\nexport const ICON_NETWORK: Record = {\n bsc: require('@/assets/img/icons/bsc.svg'),\n kai: require('@/assets/img/icons/kai.svg'),\n eth: require('@/assets/img/icons/eth.svg')\n};\n","import { INetWork, IContract } from './interfaces';\n\nexport const NETWORKS: Record = require('~/configs/networks.json');\nexport const CONTRACT_LIST: Record = require('~/configs/contactList.json');\nconst ABI_BSC_PET_V1: object[] = require('~/configs/abis/bsc-pet-v1.json');\nconst ABI_BSC_PET_V2: object[] = require('~/configs/abis/bsc-pet-v2.json');\nconst ABI_KAI_PET_V1: object[] = require('~/configs/abis/kai-pet-v1.json');\nconst ABI_KAI_PET_V2: object[] = require('~/configs/abis/kai-pet-v2.json');\nconst ABI_FAKE_PET_V1: object[] = require('~/configs/abis/fake-pet-v1.json');\nconst ABI_FAKE_PET_V2: object[] = require('~/configs/abis/fake-pet-v2.json');\nconst ABI_MIGRATION: object[] = require('~/configs/abis/migration.json');\nconst ABI_CLAIM: object[] = require('~/configs/abis/RecyclingCore.json');\n\nexport const ABI: Record = {\n BSC_PET_V1: ABI_BSC_PET_V1,\n BSC_PET_V2: ABI_BSC_PET_V2,\n KAI_PET_V1: ABI_KAI_PET_V1,\n KAI_PET_V2: ABI_KAI_PET_V2,\n FAKE_PET_V1: ABI_FAKE_PET_V1,\n FAKE_PET_V2: ABI_FAKE_PET_V2,\n MIGRATION: ABI_MIGRATION,\n CLAIM: ABI_CLAIM,\n BSC_MIGRATION: ABI_MIGRATION,\n KAI_MIGRATION: ABI_MIGRATION,\n BSC_CLAIM: ABI_CLAIM,\n KAI_CLAIM: ABI_CLAIM\n};\n\n// const BSC_CLAIM = {\n// '0xea9cf0222f1c775ed7bd05518b5fb0ea5456ea88': {\n// contractName: 'BSC_CLAIM',\n// network: 56,\n// addr: '0xea9cf0222f1c775ed7bd05518b5fb0ea5456ea88'\n// }\n// };\n\nexport const isDevelopment = process.env.NODE_ENV === 'development';\n\nexport const smcMode: string = process.env.SMC_MODE?.toString() as string;\nexport const supportChains: Record = {\n testnet: [NETWORKS['56'], NETWORKS['24']],\n mainnet: [NETWORKS['56'], NETWORKS['24']]\n};\n\nexport const NETWORK_CLAIM = 24;\nexport const NETWORK_MIGRATION = 56;\n\nconst ENDPOINT_MIGRATION: string = process.env.ENDPOINT_MIGRATION?.toString() as string;\nconst API_SCAN_DPET: string = process.env.API_SCAN_DPET?.toString() as string;\nexport const configApi = {\n getDpetNFT: API_SCAN_DPET,\n migration: ENDPOINT_MIGRATION\n};\n","//Interface\nexport interface InterfaceWeb3 {\n isLogin: boolean;\n isWalletConnect: boolean;\n chainId: number;\n account: string;\n}\n//state\nexport const initialState = (): InterfaceWeb3 => ({\n isLogin: false,\n isWalletConnect: false,\n account: '',\n chainId: 0,\n});\n\nexport default initialState;\n","import { GetterTree } from 'vuex';\nimport { InterfaceWeb3 } from './state';\n\nconst getters: GetterTree = {\n getWalletConnect() {\n // @ts-ignore\n return $nuxt.$web3;\n },\n getIsWalletConnect(state) {\n return state.isWalletConnect;\n },\n getWalletAddress(state) {\n if (state.isLogin) return state.account;\n return null;\n },\n getChainId(state) {\n return state.chainId;\n },\n getConnected(state) {\n return state.isLogin;\n }\n};\n\nexport default getters;\n","import { MutationTree } from 'vuex';\nimport { InterfaceWeb3 } from './state';\n\nconst mutations: MutationTree = {\n setAccount(state, account) {\n if (state.account !== account) {\n if (account) account = account.toLocaleLowerCase();\n state.account = account;\n state.isLogin = true;\n }\n },\n setChainId(state, chainId) {\n chainId = parseInt(chainId);\n if (state.chainId !== chainId) {\n state.chainId = chainId;\n }\n },\n\n resetState(state) {\n state.isLogin = false;\n state.account = '';\n state.chainId = 0;\n },\n};\n\nexport default mutations;\n","import { ActionTree } from 'vuex';\nimport Web3 from 'web3';\nimport { InterfaceWeb3, initialState } from './state';\nimport {\n shortenWallet,\n w3FromWei,\n w3toWei,\n getRPCs,\n getConfigChain,\n isChainSupport,\n showLog,\n getChainSupport,\n getAbiByContract,\n getContractByName,\n getContractByAddress,\n getContractMigration,\n getContractClaim\n} from '~/libs/helper';\nimport { NETWORK_CLAIM } from '~/libs/config';\nimport { ALLOWANCE_MAX, MAX_GAS_FEE, WEB3_TIME_LIMIT, STORAGE_WC_KEY, WALLET_TYPE } from '~/libs/const';\nimport { INetWork, IContract, Unit } from '~/libs/interfaces';\ninterface IConnect {\n clearCachedProvider: boolean;\n isWalletConnect: boolean;\n}\nconst actions: ActionTree = {\n async web3Connect({ state, commit, dispatch, getters }, { clearCachedProvider, isWalletConnect }: IConnect) {\n showLog('__________web3Connect___________');\n const wc = await getters.getWalletConnect;\n const web3 = await wc.connect(\n clearCachedProvider,\n isWalletConnect,\n (chainId: string) => dispatch('onChainChanged', chainId),\n (accounts: string[]) => dispatch('onAccountsChanged', accounts)\n );\n if (!web3) return null;\n const chainId: number = await wc.getChainId();\n const isCheck = await dispatch('checkNetWorkSupport', chainId);\n\n if (isCheck) {\n const account = await wc.getAccount();\n if (account) {\n commit('setAccount', account);\n commit('setChainId', chainId);\n }\n wc.removeModal();\n return web3;\n } else {\n // dispatch('disconnect');\n return null;\n }\n },\n\n async onChainChanged({ commit, dispatch, getters, state }, chainId: string) {\n const numberChain = parseInt(chainId, 16);\n if (!dispatch('checkNetWorkSupport', numberChain)) {\n dispatch('disconnect');\n } else {\n commit('setChainId', numberChain);\n }\n },\n\n onAccountsChanged({ commit, dispatch }, accounts: string[]) {\n showLog('onAccountsChanged', accounts);\n if (accounts.length > 0) commit('setAccount', accounts[0]);\n else dispatch('disconnect');\n },\n\n connect({ state, commit, dispatch, getters }, clearCachedProvider: boolean = false, isWalletConnect: boolean = false): Promise {\n return new Promise(async (resolve, reject) => {\n try {\n if (clearCachedProvider) {\n await dispatch('disconnect');\n }\n const wc = getters.getWalletConnect;\n const cacheConnect = window.localStorage.getItem(STORAGE_WC_KEY);\n if (cacheConnect === WALLET_TYPE.walletconnect) isWalletConnect = true;\n\n if (wc.isConnected || cacheConnect) {\n const web3 = await dispatch('web3Connect', {\n clearCachedProvider: false,\n isWalletConnect\n });\n resolve(web3);\n } else {\n // @ts-ignore\n const isMobile = this.$device.isMobile;\n const isMetamask = window.ethereum !== undefined;\n if (isMobile) {\n if (isMetamask) {\n const web3 = await dispatch('web3Connect', {\n clearCachedProvider: true,\n isWalletConnect: false\n });\n if (web3) resolve(web3);\n // else resolve(null);\n } else {\n const web3 = await dispatch('web3Connect', {\n clearCachedProvider: true,\n isWalletConnect: true\n });\n if (web3) resolve(web3);\n // else resolve(null);\n }\n resolve(null);\n } else {\n // @ts-ignore\n this.$modalConnect.show({\n onResolve: async (web3: any) => {\n resolve(web3);\n },\n onReject: () => resolve(null)\n });\n }\n }\n } catch (error) {\n showLog('connect error', error);\n resolve(null);\n }\n });\n },\n\n async disconnect({ getters, commit }): Promise {\n const web3haldle = await getters.getWalletConnect;\n web3haldle.disconnect();\n commit('resetState');\n },\n\n checkNetWorkSupport({ dispatch }, chainId: number) {\n return new Promise((resolve, reject) => {\n try {\n if (!isChainSupport(chainId)) {\n const supports = getChainSupport();\n // @ts-ignore\n this.$dialogMsg.show({\n popupType: 'switch_chain',\n title: 'Notification !!!',\n message: `We do not yet support the current network in your wallet. Please switch network: ${supports.map((id: number) => {\n const network = getConfigChain(id);\n return ' \\n' + network?.chainName;\n })}`,\n persistent: true,\n buttons: [\n {\n btnText: 'Switch Network',\n btnCall: async () => {\n resolve(await dispatch('metamaskSwitchChain', supports[0]));\n },\n isPrimary: true\n },\n {\n btnText: 'Cancel',\n btnCall: () => {\n dispatch('disconnect');\n resolve(false);\n }\n }\n ]\n });\n } else {\n resolve(true);\n }\n } catch (error) {\n showLog('checkNetWorkSupport', error);\n resolve(false);\n }\n });\n },\n\n checkNetWorkClaim({ state, dispatch }) {\n return new Promise((resolve, reject) => {\n try {\n const chainId: number = state.chainId;\n if (chainId !== NETWORK_CLAIM) {\n const network = getConfigChain(NETWORK_CLAIM);\n // @ts-ignore\n this.$dialogMsg.show({\n popupType: 'switch_chain',\n title: 'Notification !!!',\n message: `We do not yet support the current network in your wallet. Please switch network: ${network?.chainName}`,\n persistent: true,\n buttons: [\n {\n btnText: 'Switch Network',\n btnCall: async () => {\n resolve(await dispatch('metamaskSwitchChain', NETWORK_CLAIM));\n },\n isPrimary: true\n },\n {\n btnText: 'Cancel',\n btnCall: () => resolve(false)\n }\n ]\n });\n } else {\n resolve(true);\n }\n } catch (error) {\n showLog('checkNetWorkSupport', error);\n resolve(false);\n }\n });\n },\n\n async metamaskSwitchChain({ getters, state, dispatch }, networkId) {\n return new Promise(async resolve => {\n try {\n const wc = await getters.getWalletConnect;\n if (wc.isWalletConnect) {\n resolve(false);\n } else {\n // @ts-ignore\n this.$processing.start(`Please switch network to continue`);\n const provider = wc.getWeb3Provider();\n const chainId = `0x${networkId.toString(16)}`;\n await provider\n .request({\n method: 'wallet_switchEthereumChain',\n params: [{ chainId }]\n })\n .then(() => {\n setTimeout(() => {\n resolve(true);\n }, 500);\n })\n .catch(async (switchError: any) => {\n if (switchError?.code === 4902 || switchError.message.includes('wallet_addEthereumChain')) {\n resolve(await dispatch('metamaskAddNetWork'));\n } else {\n resolve(false);\n }\n });\n // @ts-ignore\n this.$processing.finish();\n }\n } catch (error: any) {\n // @ts-ignore\n this.$processing.finish();\n resolve(false);\n }\n });\n },\n\n metamaskAddNetWork({ getters }, networkId: number) {\n return new Promise(async resolve => {\n try {\n const wc = await getters.getWalletConnect;\n const provider = wc.getWeb3Provider();\n const chainId = `0x${networkId.toString(16)}`;\n // @ts-ignore\n const chain = this.$helper.getConfigChain(networkId);\n const addChain = {\n chainId: chainId,\n chainName: chain.chainName,\n nativeCurrency: { name: chain.tokenName, symbol: chain.tokenName, decimals: chain.decimals },\n rpcUrls: [chain.rpcUrl],\n blockExplorerUrls: [chain.explorer]\n };\n await provider.request({\n method: 'wallet_addEthereumChain',\n params: [addChain]\n });\n setTimeout(() => {\n resolve(true);\n }, 500);\n } catch (error) {\n resolve(false);\n }\n });\n },\n\n async getSignature({ getters, dispatch }, dataString: string = ''): Promise {\n const web3haldle = await getters.getWalletConnect;\n\n // const network = getConfigChain();\n // const extraText = `.\\n If you have waited too long, check and switch network your wallet to ${network.chainName}`;\n\n // @ts-ignore\n this.$processing.start(`You have a request that needs to be signed to complete`);\n const signature = await web3haldle.personalSign(dataString);\n return signature;\n },\n\n getInstanceContract({ state, getters, dispatch }, addrContract: string) {\n return new Promise(async (resolve, reject) => {\n try {\n const abi = getAbiByContract(addrContract);\n const config = getContractByAddress(addrContract);\n const web3haldle = await getters.getWalletConnect;\n let web3;\n if (!state.isLogin) {\n const network = getConfigChain(config?.network as number);\n web3 = new Web3(new Web3.providers.HttpProvider(network.rpcUrl));\n } else {\n const chainId = state.chainId;\n if (chainId !== config.network) {\n const switchChain = await dispatch('metamaskSwitchChain', config.network);\n if (!switchChain) reject({});\n }\n web3 = web3haldle.getWeb3();\n }\n const contract = new web3.eth.Contract(abi, addrContract);\n resolve(contract);\n } catch (error) {\n reject(error);\n }\n });\n },\n approveToken({ state, dispatch, getters }, { tokenAddress, tokenId, exchangeAdress }) {\n return new Promise(async (resolve, reject) => {\n try {\n let isApproved = false;\n let addrApproved = '';\n const smc = getContractByAddress(tokenAddress);\n const web3haldle = await getters.getWalletConnect;\n let web3 = web3haldle.getWeb3();\n if (!state.isLogin) web3 = await dispatch('connect');\n if (web3) {\n // @ts-ignore\n this.$processing.start(`First you will need to allow access to and transfer of your token`);\n const contract: any = await dispatch('getInstanceContract', tokenAddress);\n\n if (smc.contractName.endsWith('PET_V1')) {\n addrApproved = await contract.methods.PetIndexToApproved(tokenId).call();\n isApproved = addrApproved.toLowerCase() === exchangeAdress.toLowerCase();\n } else if (smc.contractName.endsWith('PET_V2')) {\n addrApproved = await contract.methods.getApproved(tokenId).call();\n isApproved = addrApproved.toLowerCase() === exchangeAdress.toLowerCase();\n }\n if (isApproved) {\n // @ts-ignore\n this.$processing.finish();\n resolve(isApproved);\n } else {\n const approve = await contract.methods.approve(exchangeAdress, tokenId).send({ from: state.account, gas: MAX_GAS_FEE });\n // @ts-ignore\n this.$processing.finish();\n resolve(approve?.status);\n }\n } else {\n resolve(false);\n }\n } catch (error: any) {\n if (error?.code === -32603) {\n // @ts-ignore\n $nuxt.$toast.error('Approval failed!!!\\n Please change another RPC RPC in Metamask');\n }\n resolve(false);\n }\n });\n }\n};\nexport default actions;\n","export interface ButtonState {\n title: string;\n action: any; //0: close, 2: Wallet Info, string: route\n}\nexport interface IMigrationState {\n nfts: any[];\n nftAvailable: any[];\n nftSubmited: any[];\n listV1: any[];\n listV2: any[];\n nextCursor: string;\n season: number;\n isReady: boolean;\n timeStartMigration: number;\n timeEndMigration: number;\n timeStartClaim: number;\n timeEndClaim: number;\n allMigrated: number;\n v1Migrated: number;\n v2Migrated: number;\n claimed: number;\n totalCredit: number;\n storage: object[];\n claimedCount: number;\n pendingTx: string | '';\n totalCreditV1: number;\n totalCreditV2: number;\n totalCreditSpirit: number;\n creditAvailable: number;\n dpetSpirit: number[];\n spiritMigrated: number;\n}\n\nconst state = (): IMigrationState => ({\n nfts: [],\n nftAvailable: [],\n nftSubmited: [],\n nextCursor: '',\n listV1: [],\n listV2: [],\n season: 1,\n isReady: false,\n timeStartMigration: 0,\n timeEndMigration: 0,\n allMigrated: 0,\n v1Migrated: 0,\n v2Migrated: 0,\n claimed: 0,\n totalCredit: 0,\n storage: [],\n claimedCount: 0,\n pendingTx: '',\n totalCreditV1: 0,\n totalCreditV2: 0,\n totalCreditSpirit: 0,\n creditAvailable: 0,\n dpetSpirit: [0, 0, 0, 0, 0],\n spiritMigrated: 0,\n timeStartClaim: 0,\n timeEndClaim: 0\n});\n\nexport default state;\n","import { GetterTree } from 'vuex';\nimport { ButtonState, IMigrationState } from './state';\nimport { IDpetSpirit } from '~/libs/interfaces';\nconst getters: GetterTree = {\n // getListNFT(state) {\n // return state.nftAvailable;\n // },\n getListNFT(state) {\n return state.nfts;\n },\n getListNFTSubmited(state) {\n return state.nftSubmited;\n },\n getListV1(state) {\n return state.listV1;\n },\n getListV2(state) {\n return state.listV2;\n },\n getIsReady(state) {\n return state.isReady;\n },\n getRangeTime(state) {\n return {\n from: state.timeStartMigration,\n to: state.timeEndMigration\n };\n },\n getRangeTimeClaim(state) {\n return {\n from: state.timeStartClaim,\n to: state.timeEndClaim\n };\n },\n getTotalCredit(state) {\n return state.totalCredit;\n },\n getClaimed(state) {\n return state.claimed;\n },\n getNFTMigrated(state) {\n return state.nftSubmited;\n },\n getV1Migrated(state) {\n return state.v1Migrated;\n },\n getV2Migrated(state) {\n return state.v2Migrated;\n },\n getSeason(state): number {\n return state.season;\n },\n getTxPending(state): string {\n return state.pendingTx;\n },\n getClaimedCount(state): number {\n return state.claimedCount;\n },\n getUserInfo(state) {\n return {\n claimed: state.claimed,\n claimedCount: state.claimedCount,\n totalCredit: state.totalCredit,\n totalCreditV1: state.totalCreditV1,\n totalCreditV2: state.totalCreditV2,\n totalCreditSpirit: state.totalCreditSpirit,\n creditAvailable: state.creditAvailable,\n spiritMigrated: state.spiritMigrated,\n pendingTx: state.pendingTx\n };\n },\n getSpirit(state): IDpetSpirit {\n return {\n level1: state.dpetSpirit[1] || 0,\n level2: state.dpetSpirit[2] || 0,\n level3: state.dpetSpirit[3] || 0,\n level4: state.dpetSpirit[4] || 0,\n level5: state.dpetSpirit[5] || 0\n };\n },\n getTotalSpirit(state): number {\n const total = state.dpetSpirit.reduce((acc, cur) => acc + cur, 0);\n return total;\n },\n getSpiritMigrated(state): number {\n return state.spiritMigrated;\n }\n};\n\nexport default getters;\n","import { MutationTree } from 'vuex';\nimport { ButtonState, IMigrationState } from './state';\nimport { IPet } from '~/libs/interfaces';\n\nconst mutations: MutationTree = {\n setNftProfile(state, data) {\n // @ts-ignore\n const ids = new Set(state.nfts.map(d => d?.tokenId));\n // @ts-ignore\n const merged = [...state.nfts, ...data.filter(d => !ids.has(d?.tokenId))];\n // @ts-ignore\n state.nfts = merged;\n },\n\n setNftSubmited(state, data) {\n const { submitedArray, remainingArray } = state.nfts.reduce(\n ({ submitedArray, remainingArray }, item) => {\n if (data.some((mg: IPet) => mg.tokenId === parseInt(item.tokenId))) {\n submitedArray.push(item);\n } else {\n remainingArray.push(item);\n }\n return { submitedArray, remainingArray };\n },\n { submitedArray: [], remainingArray: [] }\n );\n state.nftSubmited = submitedArray;\n state.nfts = remainingArray;\n },\n\n setNftV1(state, data) {\n // @ts-ignore\n const ids = new Set(state.listV1.map(d => d?.tokenId));\n // @ts-ignore\n const merged = [...state.listV1, ...data.filter((d: any) => !ids.has(d?.tokenId))];\n // @ts-ignore\n state.listV1 = merged;\n },\n\n setNftV2(state, data) {\n // @ts-ignore\n const ids = new Set(state.listV2.map(d => d?.tokenId));\n // @ts-ignore\n const merged = [...state.listV2, ...data.filter((d: any) => !ids.has(d?.tokenId))];\n // @ts-ignore\n state.listV2 = merged;\n },\n setCursorNext(state, data) {\n state.nextCursor = data;\n },\n resetListNFT(state) {\n state.nfts = [];\n state.nftAvailable = [];\n state.nftSubmited = [];\n state.listV1 = [];\n state.listV2 = [];\n state.nextCursor = '';\n },\n setSeason(state, season) {\n state.season = season;\n },\n setIsReady(state, isReady) {\n state.isReady = isReady;\n },\n setTimeMigration(state, { from, to }: { from: number; to: number }) {\n state.timeStartMigration = from;\n state.timeEndMigration = to;\n },\n setTimeClaim(state, { from, to }: { from: number; to: number }) {\n state.timeStartClaim = from;\n state.timeEndClaim = to;\n },\n setClaimed(state, claimed) {\n state.claimed = claimed;\n },\n setAllMigrated(state, total) {\n state.allMigrated = total;\n },\n setV1Migrated(state, v1Migrated) {\n state.v1Migrated = v1Migrated;\n },\n setV2Migrated(state, v2Migrated) {\n state.v2Migrated = v2Migrated;\n },\n setTotalCredit(state, total) {\n state.totalCredit = total;\n },\n setNFTMigrated(state, data) {\n state.nftSubmited = data;\n },\n setStorage(state, data) {\n state.storage = data;\n },\n setTxPending(state, txPending) {\n state.pendingTx = txPending;\n },\n setClaimedCount(state, claimedCount) {\n state.claimedCount = claimedCount;\n },\n setInfoUser(state, payload) {\n const { claimed, pending, storage, setClaimedCount } = payload;\n state.claimed = claimed;\n state.pendingTx = pending;\n state.storage = storage;\n state.claimedCount = setClaimedCount;\n },\n setInfoTotal(state, payload) {\n const { claimed, totalCredit, totalCreditV1, totalCreditV2, totalCreditSpirit, spiritMigrated, totalPetV1, totalPetV2 } = payload;\n state.totalCredit = totalCredit;\n state.totalCreditV1 = totalCreditV1;\n state.totalCreditV2 = totalCreditV2;\n state.totalCreditSpirit = totalCreditSpirit;\n const a = totalCredit - claimed;\n state.creditAvailable = a < 0 ? 0 : a;\n state.spiritMigrated = spiritMigrated;\n state.v1Migrated = totalPetV1;\n state.v2Migrated = totalPetV2;\n },\n setDpetSpirit(state, dpetSpirit) {\n state.dpetSpirit = dpetSpirit;\n }\n};\n\nexport default mutations;\n","import { ActionTree } from 'vuex';\nimport Web3 from 'web3';\nimport { ButtonState, IMigrationState } from './state';\nimport { CONTRACT_LIST, configApi, NETWORK_CLAIM } from '~/libs/config';\nimport { getConfigChain, getContractByAddress, getContractByName, getContractMigration, getContractClaim, getAbiByContract } from '~/libs/helper';\nimport { CONTRACT_NAME, MAX_GAS_FEE, DPET_SPIRIT } from '~/libs/const';\nimport { IContract, IPet, IResultStorage } from '~/libs/interfaces';\n//0x3Ff1E44339381B0cafee6c69d8f2A5EB50873a9f bsc\n// 0x4E26738f6A88D9E48014cDB0121270a183C460C2 kai\n\nconst actions: ActionTree = {\n resetListNFT({ commit }) {\n commit('resetListNFT');\n },\n\n // async getDpetNFTs({ state, dispatch, commit, rootState }) {\n // return new Promise(async (resolve, reject) => {\n // try {\n // const isConnected = rootState.web3.isLogin;\n // if (isConnected) {\n // const account = rootState.web3.account;\n // const contract = getContractByName(CONTRACT_NAME.FAKE_PET_V2) as IContract;\n // const contractInstance = await dispatch('web3/getInstanceContract', contract.addr, { root: true });\n // const balance = await contractInstance.methods.balanceOf(account).call();\n\n // // @ts-ignore\n // let data: IPet[] = [];\n // if (parseInt(balance) > 0) {\n // for (let i = 0; i < balance; i++) {\n // const tokenId = await contractInstance.methods.tokenOfOwnerByIndex(account, i).call();\n // data.push({\n // tokenId,\n // name: `Pet #${tokenId}`,\n // image: ``,\n // version: 2,\n // chain: 'eth',\n // addr: contract.addr\n // });\n // }\n // commit('setNftProfile', data);\n // } else {\n // commit('resetListNFT');\n // }\n // }\n // resolve({ success: true });\n // } catch (error) {\n // reject(error);\n // }\n // });\n // },\n\n async getDpetNFTs({ state, dispatch, commit, rootState }) {\n return new Promise(async (resolve, reject) => {\n try {\n const isConnected = rootState.web3.isLogin;\n if (isConnected) {\n const chainId = rootState.web3.chainId;\n const address = rootState.web3.account;\n // const address = '0x3Ff1E44339381B0cafee6c69d8f2A5EB50873a9f'; //bsc\n // const address = '0x9De88D5745A04DfCd07dbB3e120dd928f8afaA85'; //kai\n const network = getConfigChain(chainId);\n const chain = network?.chainIcon || 'bsc';\n const data = await dispatch('fetchPET', {\n address,\n chainName: chain,\n cursor: state.nextCursor\n });\n commit('setNftProfile', data);\n if (data.length > 49) {\n await dispatch('getDpetNFTs');\n } else {\n await dispatch('getSubmited');\n }\n } else {\n commit('resetListNFT');\n }\n resolve({ success: true });\n } catch (error) {\n reject(error);\n }\n });\n },\n\n async fetchPET({ state, dispatch, commit }, { address, cursor, chainName }) {\n return new Promise((resolve, reject) => {\n this.$axios\n .$post(`${configApi.getDpetNFT}/${address.toLocaleLowerCase()}`, {\n chain: chainName,\n mini: true,\n cursor\n })\n .then(async res => {\n if (res?.data.length > 49) {\n commit('setCursorNext', res?.nextCursor);\n } else {\n commit('setCursorNext', '');\n }\n const data = await Promise.all(\n res?.data.map((item: { tokenId: number; version: number }) => {\n const { tokenId, version } = item;\n let addr;\n if (chainName === 'bsc') {\n if (version === 1) {\n const contract = getContractByName(CONTRACT_NAME.BSC_PET_V1) as IContract;\n addr = contract.addr;\n } else {\n const contract = getContractByName(CONTRACT_NAME.BSC_PET_V2) as IContract;\n addr = contract.addr;\n }\n }\n if (chainName === 'kai') {\n if (version === 1) {\n const contract = getContractByName(CONTRACT_NAME.KAI_PET_V1) as IContract;\n addr = contract.addr;\n } else {\n const contract = getContractByName(CONTRACT_NAME.KAI_PET_V2) as IContract;\n addr = contract.addr;\n }\n }\n return dispatch('parseDetailPet', { tokenId, chainName, addr, version });\n })\n );\n resolve(data);\n })\n .catch(error => resolve([]));\n });\n },\n\n ////////New\n checkIsReady({ commit, dispatch, rootState, rootGetters }) {\n return new Promise(async resolve => {\n try {\n // const smc = getContractByName(CONTRACT_NAME.MIGRATION);\n const chainId = rootState.web3.chainId;\n const smc = getContractMigration(chainId);\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const res: boolean = await contractInstance.methods.isReady().call();\n commit('setIsReady', res);\n resolve(res);\n } catch (error) {\n resolve(false);\n }\n });\n },\n async getTimeClaim({ state, commit, dispatch, rootState, rootGetters }) {\n try {\n const chainId: number = rootState.web3.chainId;\n const smc = getContractClaim(chainId);\n if (smc && smc !== undefined) {\n const abi = getAbiByContract(smc?.addr);\n const network = getConfigChain(smc?.network as number);\n const web3: any = new Web3(new Web3.providers.HttpProvider(network.rpcUrl));\n const contractInstance = new web3.eth.Contract(abi, smc?.addr);\n // const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const rangeTimeClaim = await contractInstance.methods.getTime().call();\n return rangeTimeClaim;\n }\n } catch (error) {\n return [0, 0];\n }\n },\n async getStateMigration({ commit, dispatch, rootState }) {\n try {\n // const smc = getContractByName(CONTRACT_NAME.MIGRATION);\n const chainId = rootState.web3.chainId;\n const smc = getContractMigration(chainId);\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const [season, timeStart, timeEnd, total, timeClaim]: number[] = await Promise.all([\n contractInstance.methods.season().call(),\n contractInstance.methods.timeStartMigration().call(),\n contractInstance.methods.timeEndMigration().call(),\n contractInstance.methods.totalMigration().call(),\n dispatch('getTimeClaim')\n ]);\n commit('setSeason', season);\n commit('setTimeMigration', { from: timeStart, to: timeEnd });\n commit('setAllMigrated', total);\n //@ts-ignore\n commit('setTimeClaim', { from: timeClaim[0], to: timeClaim[1] });\n } catch (error) {\n // console.log('getStateMigration', error);\n }\n },\n checkTokenExists({ dispatch, rootState }, { tokenId, isV1 }: { tokenId: number; isV1: boolean | false }) {\n return new Promise(async resolve => {\n try {\n if (tokenId > 0) {\n // const smc = getContractByName(CONTRACT_NAME.MIGRATION);\n const chainId = rootState.web3.chainId;\n const smc = getContractMigration(chainId);\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const res: boolean = await contractInstance.methods.checkTokenExists(tokenId, isV1).call();\n resolve(res);\n } else {\n resolve(false);\n }\n } catch (error) {\n resolve(false);\n }\n });\n },\n getMigrtionInfoByAddress({ dispatch, commit, rootState }) {\n return new Promise(async (resolve, reject) => {\n try {\n if (!rootState.web3.isLogin) await dispatch('web3/connect', null, { root: true });\n const account = rootState.web3.account;\n if (account) {\n // const smc = getContractByName(CONTRACT_NAME.MIGRATION);\n const chainId = rootState.web3.chainId;\n const smc = getContractMigration(chainId);\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const res: any = await contractInstance.methods.migrationInfo(account).call();\n // commit('setV1Migrated', res.totalv1);\n // commit('setV2Migrated', res.totalv2);\n resolve({ totalv1: parseInt(res.totalv1), totalv2: parseInt(res.totalv2) });\n }\n } catch (error) {\n resolve({ totalv1: 0, totalv2: 0 });\n }\n });\n },\n getPetMigrated({ state, commit, dispatch, rootState }) {\n return new Promise(async (resolve, reject) => {\n try {\n if (!rootState.web3.isLogin) await dispatch('web3/connect', null, { root: true });\n const account = rootState.web3.account;\n if (account) {\n // const smc = getContractByName(CONTRACT_NAME.MIGRATION);\n const chainId = rootState.web3.chainId;\n const smc = getContractMigration(chainId);\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const v1: string = await contractInstance.methods.v1().call();\n const v2: string = await contractInstance.methods.v2().call();\n const res: { idsPetV1: number[]; idsPetV2: number[] } = await contractInstance.methods.getPetMigrated(account).call();\n\n const ids = res.idsPetV1.concat(res.idsPetV2);\n\n const petMigrated = await Promise.all([\n ...res.idsPetV1.map((tokenId: number) => {\n const contract = getContractByAddress(v1.toLowerCase());\n const network = getConfigChain(contract.network);\n\n return dispatch('parseDetailPet', { tokenId, chainName: network.chainIcon, addr: contract.addr, version: 1 });\n }),\n ...res.idsPetV2.map((tokenId: number) => {\n const contract = getContractByAddress(v2.toLowerCase());\n const network = getConfigChain(contract.network);\n return dispatch('parseDetailPet', { tokenId, chainName: network.chainIcon, addr: contract.addr, version: 2 });\n })\n ]);\n\n commit('setNFTMigrated', petMigrated);\n resolve(petMigrated);\n }\n } catch (error) {\n resolve([]);\n }\n });\n },\n async forceUpdateData({ dispatch, commit, state, rootState }) {\n try {\n if (rootState.web3.isLogin) {\n const address = rootState.web3.account;\n const season = state.season;\n const amount = 99999;\n const petV1KAI = getContractByName(CONTRACT_NAME.KAI_PET_V1) as IContract;\n const petV2KAI = getContractByName(CONTRACT_NAME.KAI_PET_V2) as IContract;\n const petV1BSC = getContractByName(CONTRACT_NAME.BSC_PET_V1) as IContract;\n const petV2BSC = getContractByName(CONTRACT_NAME.BSC_PET_V2) as IContract;\n await Promise.all([\n dispatch('postUpdateSubgraph', { address, network: petV1KAI.network.toString(), nft: petV1KAI.addr, season, amount }),\n dispatch('postUpdateSubgraph', { address, network: petV2KAI.network.toString(), nft: petV2KAI.addr, season, amount }),\n dispatch('postUpdateSubgraph', { address, network: petV1BSC.network.toString(), nft: petV1BSC.addr, season, amount }),\n dispatch('postUpdateSubgraph', { address, network: petV2BSC.network.toString(), nft: petV2BSC.addr, season, amount })\n ]);\n\n setTimeout(() => {\n dispatch('getSubmited');\n }, 15000);\n }\n } catch (error) {\n console.log(`forceUpdateData Err`, error);\n }\n },\n postUpdateSubgraph({}, payload) {\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n return this.$axios.$post(`${configApi.migration}/users/update/`, payload);\n },\n callUpdateSubgraph({ dispatch, commit, state }, { payload, time }: { payload: object; time: number }) {\n try {\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n this.$axios.$post(`${configApi.migration}/users/update/`, payload).then(res => {\n if (res.update) {\n commit('app/setLoadCredit', true, { root: true });\n setTimeout(() => {\n //dispatch('getSubmited');\n commit('resetListNFT');\n dispatch('getDpetNFTs');\n }, time);\n }\n });\n } catch (error) {\n console.log('callUpdateSubgraph err', error);\n }\n },\n async checkUpdateInfo({ state, commit, dispatch, rootState }, time: number = 5000) {\n try {\n const isConnected = rootState.web3.isLogin;\n const account = rootState.web3.account;\n const chainId = rootState.web3.chainId;\n const season = state.season;\n if (isConnected) {\n const { totalv1, totalv2 } = await dispatch('getMigrtionInfoByAddress');\n if (state.storage.length > 0) {\n state.storage.map(async (item: any) => {\n if (item.address === DPET_SPIRIT) {\n } else {\n const smc = getContractByAddress(item.address.toLowerCase());\n if (smc.contractName.endsWith('PET_V1') && parseInt(season.toString()) === parseInt(item.season) && parseInt(item.total) !== parseInt(totalv1)) {\n dispatch('callUpdateSubgraph', {\n payload: {\n address: account,\n network: smc.network.toString(),\n nft: item.address,\n season: parseInt(season.toString()),\n amount: parseInt(totalv1)\n },\n time\n });\n } else if (smc.contractName.endsWith('PET_V2') && parseInt(season.toString()) === parseInt(item.season) && parseInt(item.total) !== parseInt(totalv2)) {\n dispatch('callUpdateSubgraph', {\n payload: {\n address: account,\n network: smc.network.toString(),\n nft: item.address,\n season: parseInt(season.toString()),\n amount: parseInt(totalv2)\n },\n time\n });\n }\n }\n });\n } else {\n if (totalv1 > 0) {\n let smc1;\n if (chainId === 5) {\n smc1 = getContractByName(CONTRACT_NAME.FAKE_PET_V1) as IContract;\n } else if (chainId === 56) {\n smc1 = getContractByName(CONTRACT_NAME.BSC_PET_V1) as IContract;\n } else if (chainId === 24) {\n smc1 = getContractByName(CONTRACT_NAME.KAI_PET_V1) as IContract;\n }\n dispatch('callUpdateSubgraph', {\n payload: {\n address: account,\n network: smc1?.network.toString(),\n nft: smc1?.addr,\n season: parseInt(season.toString()),\n amount: parseInt(totalv1)\n },\n time\n });\n }\n if (totalv2 > 0) {\n let smc2;\n if (chainId === 5) {\n smc2 = getContractByName(CONTRACT_NAME.FAKE_PET_V2) as IContract;\n } else if (chainId === 56) {\n smc2 = getContractByName(CONTRACT_NAME.BSC_PET_V2) as IContract;\n } else if (chainId === 24) {\n smc2 = getContractByName(CONTRACT_NAME.KAI_PET_V2) as IContract;\n }\n dispatch('callUpdateSubgraph', {\n payload: {\n address: account,\n network: smc2?.network.toString(),\n nft: smc2?.addr,\n season: parseInt(season.toString()),\n amount: parseInt(totalv2)\n },\n time\n });\n }\n }\n }\n } catch (error) {}\n },\n getSubmited({ dispatch, commit, state, rootState }) {\n return new Promise(async (resolve, reject) => {\n try {\n const isConnected = rootState.web3.isLogin;\n if (!isConnected) resolve([]);\n commit('app/setLoadCredit', true, { root: true });\n const wallet = rootState.web3.account;\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n this.$axios\n .$post(`${configApi.migration}/users/`, {\n wallet: wallet.toLowerCase()\n })\n .then(async (res: any) => {\n const { claimed, storage, claimedCount, pending }: { claimed: number; storage: object[]; claimedCount: number; pending: string | '' } = res;\n // commit('setClaimed', claimed);\n // commit('setStorage', storage);\n // commit('setTxPending', pending);\n // commit('setClaimedCount', claimedCount);\n commit('setInfoUser', {\n claimed,\n storage,\n claimedCount,\n pending\n });\n const parseData: IResultStorage = await dispatch('parseStorageData', storage);\n if (parseData) {\n const { totalCredit, totalCreditV1, totalCreditV2, totalCreditSpirit, petMigrated, spiritMigrated, totalPetV1, totalPetV2 } = parseData;\n // do something\n //commit('setTotalCredit', parseData.totalCredit);\n commit('setNFTMigrated', petMigrated);\n // commit('setNftSubmited', petMigrated);\n commit('setInfoTotal', {\n claimed,\n totalCredit,\n totalCreditV1,\n totalCreditV2,\n totalCreditSpirit,\n spiritMigrated,\n totalPetV1,\n totalPetV2\n });\n }\n resolve(parseData.petMigrated);\n })\n .catch(() => resolve([]))\n .finally(() => {\n commit('app/setLoadCredit', false, { root: true });\n });\n } catch (error) {\n resolve([]);\n }\n });\n },\n async getSpirit({ dispatch, commit, state, rootState }) {\n try {\n if (rootState.web3.isLogin && rootState.web3.chainId > 0) {\n const wallet: string = rootState.web3.account;\n const network: string = rootState.web3.chainId.toString();\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n const res = await this.$axios.$post(`${configApi.migration}/users/spirit/`, { wallet, network });\n if (res?.update) {\n setTimeout(() => {\n dispatch('getSpirit');\n }, 15000);\n } else if (res?.dpetSpirit) {\n commit('setDpetSpirit', res?.dpetSpirit);\n }\n return res;\n }\n } catch (error) {\n return null;\n }\n },\n async getClaim({ dispatch, commit, state, rootState }) {\n try {\n const wallet: string = rootState.web3.account;\n const network: string = rootState.web3.chainId.toString();\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n const res = await this.$axios.$post(`${configApi.migration}/users/claim/`, { wallet, network });\n const { amount, claimedCount, pending } = res;\n commit('setTxPending', pending);\n commit('setClaimedCount', claimedCount);\n return res;\n } catch (error) {\n return null;\n }\n },\n checkClaim({ dispatch, commit, state, rootState }, time: number = 5000) {\n return new Promise((resolve, reject) => {\n try {\n const wallet: string = rootState.web3.account;\n const network: string = rootState.web3.chainId.toString();\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n this.$axios.$post(`${configApi.migration}/users/claimcheck/`, { wallet, network }).then(res => {\n if (res?.update) {\n commit('app/setLoadCredit', true, { root: true });\n setTimeout(() => {\n dispatch('getSubmited');\n }, time);\n }\n resolve(res?.update);\n });\n } catch (error) {\n resolve(true);\n }\n });\n },\n claimCredit({ state, commit, dispatch, rootState }) {\n return new Promise(async (resolve, reject) => {\n try {\n const chainId: number = rootState.web3.chainId;\n const wallet = rootState.web3.account;\n const checkNetwork: boolean = await dispatch('web3/checkNetWorkClaim', {}, { root: true });\n const network = getConfigChain(NETWORK_CLAIM);\n if (!checkNetwork) reject({ message: `Network not supported, please switch ${network?.chainName}` });\n const dataClaim = await dispatch('getClaim');\n if (dataClaim) {\n const smc = getContractClaim(chainId);\n const { claimedCount, amount, pending } = dataClaim;\n const contractInstance = await dispatch('web3/getInstanceContract', smc?.addr, { root: true });\n const res = await contractInstance.methods.claimCredit(amount, claimedCount, pending).send({\n from: wallet,\n gas: MAX_GAS_FEE\n });\n if (res?.status) {\n setTimeout(() => {\n dispatch('checkClaim', 15000);\n resolve(res);\n }, 4000);\n }\n }\n } catch (error) {\n reject(error);\n }\n });\n },\n async parseStorageData({ dispatch }, storage: any[]) {\n if (storage && storage.length > 0) {\n let totalPet: number = 0;\n let totalPetV1: number = 0;\n let totalPetV2: number = 0;\n let totalCredit: number = 0;\n let totalCreditV1: number = 0;\n let totalCreditV2: number = 0;\n let totalCreditSpirit: number = 0;\n let petMigrated: IPet[] = [];\n let spiritMigrated: number = 0;\n await Promise.all(\n storage.map(async (obj: any) => {\n let smcName: string;\n let pets: IPet[] = [];\n totalCredit = totalCredit + parseInt(obj?.credit);\n if (obj.address === DPET_SPIRIT) {\n totalCreditSpirit = totalCreditSpirit + parseInt(obj?.credit);\n spiritMigrated = spiritMigrated + parseInt(obj?.total);\n } else {\n totalPet = totalPet + parseInt(obj?.total);\n const contract = getContractByAddress(obj?.address);\n smcName = contract.contractName;\n switch (smcName) {\n case CONTRACT_NAME.BSC_PET_V1:\n totalPetV1 = totalPetV1 + parseInt(obj?.total);\n if (obj?.nfts && obj.nfts.length > 0) {\n totalCreditV1 = totalCreditV1 + parseInt(obj?.credit);\n pets = await Promise.all(obj.nfts.map((tokenId: number) => dispatch('parseDetailPet', { tokenId, chainName: 'bsc', addr: contract.addr, version: 1 })));\n petMigrated = petMigrated.concat(pets);\n }\n break;\n case CONTRACT_NAME.BSC_PET_V2:\n totalPetV2 = totalPetV2 + parseInt(obj?.total);\n if (obj?.nfts && obj.nfts.length > 0) {\n totalCreditV2 = totalCreditV2 + parseInt(obj?.credit);\n pets = await Promise.all(obj.nfts.map((tokenId: number) => dispatch('parseDetailPet', { tokenId, chainName: 'bsc', addr: contract.addr, version: 2 })));\n petMigrated = petMigrated.concat(pets);\n }\n break;\n case CONTRACT_NAME.KAI_PET_V1:\n totalPetV1 = totalPetV1 + parseInt(obj?.total);\n if (obj?.nfts && obj.nfts.length > 0) {\n totalCreditV1 = totalCreditV1 + parseInt(obj?.credit);\n pets = await Promise.all(obj.nfts.map((tokenId: number) => dispatch('parseDetailPet', { tokenId, chainName: 'kai', addr: contract.addr, version: 1 })));\n petMigrated = petMigrated.concat(pets);\n }\n break;\n case CONTRACT_NAME.KAI_PET_V2:\n totalPetV2 = totalPetV2 + parseInt(obj?.total);\n if (obj?.nfts && obj.nfts.length > 0) {\n totalCreditV2 = totalCreditV2 + parseInt(obj?.credit);\n pets = await Promise.all(obj.nfts.map((tokenId: number) => dispatch('parseDetailPet', { tokenId, chainName: 'kai', addr: contract.addr, version: 2 })));\n petMigrated = petMigrated.concat(pets);\n }\n break;\n //fake test\n case CONTRACT_NAME.FAKE_PET_V1:\n totalPetV1 = totalPetV1 + parseInt(obj?.total);\n if (obj?.nfts && obj.nfts.length > 0) {\n totalCreditV1 = totalCreditV1 + parseInt(obj?.credit);\n pets = await Promise.all(obj.nfts.map((tokenId: number) => dispatch('parseDetailPet', { tokenId, chainName: 'eth', addr: contract.addr, version: 1 })));\n petMigrated = petMigrated.concat(pets);\n }\n break;\n case CONTRACT_NAME.FAKE_PET_V2:\n totalPetV2 = totalPetV2 + parseInt(obj?.total);\n if (obj?.nfts && obj.nfts.length > 0) {\n totalCreditV2 = totalCreditV2 + parseInt(obj?.credit);\n pets = await Promise.all(obj.nfts.map((tokenId: number) => dispatch('parseDetailPet', { tokenId, chainName: 'eth', addr: contract.addr, version: 2 })));\n petMigrated = petMigrated.concat(pets);\n }\n break;\n default:\n break;\n }\n }\n return pets;\n })\n );\n return { totalCredit, totalPet, totalPetV1, totalPetV2, petMigrated, totalCreditV1, totalCreditV2, totalCreditSpirit, spiritMigrated };\n } else {\n return null;\n }\n },\n parseDetailPet({}, { tokenId, chainName, addr, version }): IPet {\n return {\n tokenId,\n name: `Pet #${tokenId}`,\n version: version,\n image: `https://cdn.agoran.io/DPet/my_defipet-${chainName}-${addr}-${tokenId}.jpeg`,\n chain: chainName,\n addr\n };\n },\n\n async fecthMyMigrated({ state, commit, dispatch, rootState }) {\n try {\n } catch (error) {\n console.log('fecthMyMigrated', error);\n }\n },\n migration({ state, getters, commit, dispatch, rootState }, pet: IPet) {\n return new Promise(async (resolve, reject) => {\n try {\n const chainId = rootState.web3.chainId;\n const account = rootState.web3.account;\n // const smc = getContractByName(CONTRACT_NAME.MIGRATION);\n const smc = getContractMigration(chainId) as IContract;\n const { tokenId, version, addr } = pet;\n if (await dispatch('web3/checkNetWorkSupport', chainId, { root: true })) {\n const contractInstance = await dispatch('web3/getInstanceContract', smc.addr, { root: true });\n const [isReady, isExists] = await Promise.all([contractInstance.methods.isReady().call(), contractInstance.methods.checkTokenExists(tokenId, version === 1).call()]);\n if (!isReady) reject({ message: 'Can not migration now' });\n if (isExists) reject({ message: 'Token has migrated' });\n const tokenApprove = await dispatch('web3/approveToken', { tokenAddress: addr, tokenId, exchangeAdress: smc.addr }, { root: true });\n if (!tokenApprove) {\n reject({ message: 'You have not granted access permission' });\n } else {\n // @ts-ignore\n this.$processing.start(`Pet migration is in progress`);\n const res = await contractInstance.methods.migration(tokenId, version === 1).send({ from: account, gas: MAX_GAS_FEE });\n setTimeout(() => {\n dispatch('checkUpdateInfo', 10000);\n // dispatch('forceUpdateData');\n // @ts-ignore\n this.$processing.finish();\n resolve({ success: true, data: res });\n }, 1000);\n }\n }\n } catch (error) {\n console.log('migration error', error);\n // @ts-ignore\n this.$processing.finish();\n reject(error);\n }\n });\n },\n\n migrationSpirit({ commit, dispatch, rootState }) {\n return new Promise(async (resolve, reject) => {\n try {\n const network = rootState.web3.chainId.toString();\n const wallet = rootState.web3.account;\n const signature = await dispatch('web3/getSignature', 'Dpet Spirit Migration', { root: true });\n if (signature) {\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n this.$axios\n .$post(`${configApi.migration}/users/migrate-spirit/`, { wallet, network, signature })\n .then(res => {\n dispatch('getSubmited');\n resolve(res);\n })\n .catch(err => reject(err));\n } else {\n reject({ message: 'Not found signature' });\n }\n } catch (error) {\n console.log('migrationSpirit error', error);\n // @ts-ignore\n this.$processing.finish();\n reject(error);\n }\n });\n },\n\n beforeMigration({ state, commit, dispatch, rootState }, nft: IPet) {\n // tokenId: number;\n // name: string;\n // image: string;\n // version: number;\n // chain: string;\n // addr: string;\n const { tokenId, addr, chain } = nft;\n return new Promise(async (resolve, reject) => {\n try {\n const address = rootState.web3.account;\n const contract = getContractByAddress(addr);\n const network = contract.network;\n // resolve({\n // tokenId: '10023278',\n // network: '56',\n // nft: '0x4f3110435c9626418063add7897f08088838fc8b',\n // rarity: 'Legendary',\n // credit: 54,\n // dpetSpirit: [0, 10, 11, 12, 13]\n // });\n this.$axios.setHeader('Content-Type', 'application/json', ['post']);\n this.$axios.setHeader('Accept', 'application/json');\n this.$axios\n .$post(`${configApi.migration}/users/nft-detail`, { address, network: network.toString(), nft: addr, tokenId: tokenId.toString() })\n .then(res => {\n resolve(res);\n })\n .catch(err => reject(err));\n } catch (error) {\n console.log('beforeMigration error', error);\n reject(error);\n }\n });\n }\n\n // emergencyReturn({ commit, dispatch, rootState }) {\n // return new Promise(async (resolve, reject) => {\n // try {\n // const chainId = rootState.web3.chainId;\n // const account = rootState.web3.account;\n // const smc = getContractMigration(chainId) as IContract;\n // console.log('smc', smc);\n // const contractInstance = await dispatch('web3/getInstanceContract', smc.addr, { root: true });\n // console.log('contractInstance', contractInstance);\n // const res = await contractInstance.methods.emergencyReturnV1([287311]).send({ from: account, gas: MAX_GAS_FEE });\n // resolve(res);\n // } catch (error) {\n // console.log('emergencyReturn err', error);\n // reject(error);\n // }\n // });\n // }\n};\n\nexport default actions;\n","export interface ButtonState {\n title: string;\n action: any; //0: close, 2: Wallet Info, string: route\n}\nexport interface IAppState {\n app?: any;\n isAppLoading: boolean;\n isOpenModalWallet: boolean;\n isLoadCredit: boolean;\n}\n\nconst state = (): IAppState => ({\n isAppLoading: false,\n isOpenModalWallet: false,\n isLoadCredit: false\n});\n\nexport default state;\n","import { GetterTree } from 'vuex';\nimport { IAppState } from './state';\nconst getters: GetterTree = {\n isAppLoading(state): boolean {\n return state.isAppLoading;\n },\n isOpenModalWallet(state): boolean {\n return state.isOpenModalWallet;\n },\n isLoadCredit(state) {\n return state.isLoadCredit;\n }\n};\n\nexport default getters;\n","import { MutationTree } from 'vuex';\nimport { ButtonState, IAppState } from './state';\n\nconst mutations: MutationTree = {\n setAppLoading(state, isLoading) {\n state.isAppLoading = isLoading;\n },\n setOpenModalWallet(state, isOpenModalWallet) {\n state.isOpenModalWallet = isOpenModalWallet;\n },\n setLoadCredit(state, isLoadCredit) {\n state.isLoadCredit = isLoadCredit;\n }\n};\n\nexport default mutations;\n","import { ActionTree } from 'vuex';\nimport { ButtonState, IAppState } from './state';\nconst actions: ActionTree = {\n appLoading({ commit }, payload: { status: boolean }) {\n commit('setAppLoading', payload.status);\n },\n showModalWallet({ commit }) {\n commit('setOpenModalWallet', true);\n },\n hideModalWallet({ commit }) {\n commit('setOpenModalWallet', false);\n },\n loadingCredit({ commit }, isLoading: boolean) {\n commit('setLoadCredit', isLoading);\n }\n};\n\nexport default actions;\n","import Vue from 'vue';\n\nexport interface Button {\n btnText: string;\n btnCall: any;\n isPrimary: boolean;\n}\nexport interface IPopupMessage {\n popupType: string;\n title: string;\n message: string;\n persistent: boolean;\n buttons: Button[];\n}\n\nexport const eventDialogMsg = new Vue({\n name: 'DialogMessage'\n});\n","export default ({ $axios, redirect, app }: any, inject: any) => {\n $axios.onRequest((config: any) => {}),\n $axios.onError((error: any) => {\n throw error;\n });\n};\n","import createPersistedState from 'vuex-persistedstate';\nimport SecureLS from 'secure-ls';\nconst ls = new SecureLS({ isCompression: false });\n\nexport default ({ store, req }: any) => {\n createPersistedState({\n key: 'migration-persisted',\n paths: ['web3'],\n storage: {\n getItem: (key) => ls.get(key),\n setItem: (key, value) => ls.set(key, value),\n removeItem: (key) => ls.remove(key),\n },\n })(store);\n};\n","//@ts-ignore\nimport shareMutations from 'vuex-shared-mutations';\n\nexport default ({ store }: any) => {\n //@ts-ignore\n window.onNuxtReady(nuxt => {\n shareMutations({\n predicate: ['web3/setAccount', 'web3/setChainId']\n })(store);\n });\n};\n","import * as funcHelpers from '@/libs/helper';\nimport events from './confirm/events';\nimport * as eventComponent from '@/components/events';\nimport { IPopupMessage, Button, eventDialogMsg } from './dialogMessage/events';\ninterface IConfirm {\n title: string;\n message: string;\n button: {\n yes: string;\n no: string;\n };\n callback: any;\n}\n\nexport default ({ app, store }: any, inject: any) => {\n inject('helper', funcHelpers),\n inject('modalWallet', {\n show(params: any) {\n // store.commit('app/setOpenModalWallet', true);\n eventComponent.eventModalWallet.$emit('show', params);\n },\n hide(params: any) {\n //store.commit('app/setOpenModalWallet', false);\n eventComponent.eventModalWallet.$emit('hide', params);\n }\n }),\n inject('loadingPage', {\n start() {\n store.commit('app/setAppLoading', true);\n },\n finish() {\n store.commit('app/setAppLoading', false);\n }\n }),\n inject('processing', {\n start(text: string = '') {\n eventComponent.eventProcessing.$emit('start', text);\n },\n finish() {\n eventComponent.eventProcessing.$emit('finish');\n }\n }),\n inject('modalConnect', {\n show(params: { onResolve: () => void; onReject: () => void }) {\n eventComponent.eventModalConnect.$emit('show', params);\n },\n hide() {\n eventComponent.eventModalConnect.$emit('hide');\n }\n }),\n inject('confirm', (params: IConfirm) => {\n if (typeof params === 'object') {\n if (params.hasOwnProperty('callback') && typeof params.callback != 'function') {\n let callbackType = typeof params.callback;\n throw new Error(`Callback type must be an function. Caught: ${callbackType}. Expected: function`);\n }\n events.$emit('open', params);\n }\n }),\n inject('dialogMsg', {\n show(params: IPopupMessage) {\n eventDialogMsg.$emit('open', params);\n },\n close(cb = () => {}) {\n eventDialogMsg.$emit('close', cb);\n }\n });\n};\n","import Web3 from 'web3';\nimport { EthereumProvider } from '@walletconnect/ethereum-provider';\nimport { Plugin } from '@nuxt/types';\nimport { getRPCs, getConfigChain, getChainSupport, isChainSupport, showLog } from '~/libs/helper';\nimport { WALLET_TYPE, WC_PROJECT_ID, STORAGE_WC_KEY } from '~/libs/const';\ndeclare var window: any;\ndeclare var localStorage: any;\nconst defaultChain = getConfigChain();\nconst chainIds = getChainSupport();\nchainIds.splice(0, 1);\nconst projectId = WC_PROJECT_ID;\nconst web3Plugin: Plugin = async (context, inject) => {\n const pluginInstance = new Web3Handler();\n await pluginInstance.init();\n inject('web3', pluginInstance);\n};\n\nclass Web3Handler {\n private provider: any | null;\n private web3: any | null;\n private isConnected: boolean | false;\n private isWalletConnect: boolean | false;\n\n constructor() {\n this.web3 = null;\n this.provider = null;\n this.isConnected = false;\n this.isWalletConnect = false;\n }\n\n async init() {\n const walletType = localStorage.getItem(STORAGE_WC_KEY);\n switch (walletType) {\n case WALLET_TYPE.metamask:\n const providerEth: any = window.ethereum;\n this.isConnected = providerEth.isConnected();\n this.setDataWeb3(providerEth);\n break;\n case WALLET_TYPE.walletconnect:\n const provider: any = await this.getProvider(true);\n this.isConnected = provider.connected;\n this.setDataWeb3(provider);\n break;\n default:\n break;\n }\n }\n\n async getProvider(isWalletConnect: boolean = false) {\n return new Promise(async (resolve, reject) => {\n if (isWalletConnect) {\n const provider = await EthereumProvider.init({\n projectId, // REQUIRED your projectId\n chains: [defaultChain.chainId], // REQUIRED chain ids //defaultChain.chainId\n optionalChains: chainIds,\n showQrModal: true, // REQUIRED set to \"true\" to use @walletconnect/modal\n methods: ['eth_chainId', 'eth_sendTransaction', 'eth_signTransaction', 'eth_sign', 'personal_sign', 'eth_signTypedData', 'wallet_switchEthereumChain', 'wallet_addEthereumChain'], // REQUIRED ethereum methods\n // optionalMethods, // OPTIONAL ethereum methods\n events: ['chainChanged', 'accountsChanged'], // REQUIRED ethereum events\n // optionalEvents, // OPTIONAL ethereum events\n rpcMap: getRPCs, // OPTIONAL rpc urls for each chain\n // metadata, // OPTIONAL metadata of your app\n qrModalOptions: {\n themeMode: 'dark'\n } // OPTIONAL - `undefined` by default, see https://docs.walletconnect.com/2.0/web3modal/options\n });\n resolve(provider);\n } else {\n if (typeof window.ethereum !== 'undefined') {\n resolve(window.ethereum);\n }\n }\n });\n }\n\n setLocalStorage() {\n localStorage.removeItem(STORAGE_WC_KEY);\n if (this.isWalletConnect) localStorage.setItem(STORAGE_WC_KEY, WALLET_TYPE.walletconnect);\n else localStorage.setItem(STORAGE_WC_KEY, WALLET_TYPE.metamask);\n }\n\n clearLocalStorage() {\n localStorage.removeItem(STORAGE_WC_KEY);\n var keys = Object.keys(localStorage);\n keys.forEach(key => {\n if (key.startsWith('wc')) {\n localStorage.removeItem(key);\n }\n });\n }\n\n removeModal() {\n const styleModal: any = document.getElementById('wcm-styles');\n if (styleModal) styleModal.remove();\n const elModal: any = document.getElementsByTagName('wcm-modal');\n if (elModal.length > 0) {\n if (elModal.length > 0) {\n Array.from(elModal).forEach((item: any) => item.remove());\n }\n }\n }\n\n async setDataWeb3(provider: any) {\n const web3 = await new Web3(provider);\n this.web3 = web3;\n window.gaiaweb3 = web3;\n this.provider = provider;\n }\n\n async connect(clearCachedProvider: boolean = false, isWalletConnect: boolean = false, onChainChanged: (chainId: string) => void, onAccountsChanged: (accounts: string[]) => void) {\n this.isWalletConnect = isWalletConnect;\n let isConnected = this.isConnected;\n const pluginSubcribeChain = (chainId: string) => {\n if (this.isWalletConnect) {\n const provider = this.provider;\n provider?.setChainId(chainId);\n this.setDataWeb3(provider);\n }\n onChainChanged(chainId);\n };\n\n const pluginSubcribeAccount = (accounts: string[]) => {\n onAccountsChanged(accounts);\n };\n\n return new Promise(async (resolve, reject) => {\n try {\n this.removeModal();\n if (clearCachedProvider) {\n isConnected = false;\n this.disconnect();\n }\n if (isConnected) {\n const provider = this.provider;\n if (provider.removeListener) {\n provider.removeListener('chainChanged', pluginSubcribeChain);\n provider.removeListener('accountsChanged', pluginSubcribeAccount);\n }\n\n if (provider) {\n if (this.isWalletConnect) {\n if (!provider.events._events?.chainChanged) provider.on('chainChanged', pluginSubcribeChain);\n if (!provider.events._events?.accountsChanged) provider.on('accountsChanged', pluginSubcribeAccount);\n } else {\n if (!provider._events?.chainChanged) provider.on('chainChanged', pluginSubcribeChain);\n if (!provider._events?.accountsChanged) provider.on('accountsChanged', pluginSubcribeAccount);\n }\n }\n this.setDataWeb3(provider);\n resolve(this.getWeb3());\n } else {\n const provider: any = await this.getProvider(this.isWalletConnect);\n\n if (provider.removeListener) {\n provider.removeListener('chainChanged', pluginSubcribeChain);\n provider.removeListener('accountsChanged', pluginSubcribeAccount);\n }\n\n if (this.isWalletConnect) {\n provider?.modal.subscribeModal((modal: any) => {\n const { open } = modal;\n if (!open) {\n this.removeModal();\n }\n });\n }\n provider.on('chainChanged', pluginSubcribeChain);\n provider.on('accountsChanged', pluginSubcribeAccount);\n\n await provider.enable().then(async () => {\n this.setLocalStorage();\n this.isConnected = true;\n this.setDataWeb3(provider);\n });\n\n if (isWalletConnect) {\n setTimeout(() => {\n resolve(this.web3);\n }, 3000);\n } else {\n resolve(this.web3);\n }\n }\n } catch (error) {\n console.error('walletConnect ', error);\n resolve(null);\n }\n });\n }\n\n async disconnect() {\n if (this.provider?.removeListener) {\n if (this.isWalletConnect) {\n if (this.provider?.events._events) {\n const pluginSubcribeChain = this.provider.events._events?.chainChanged;\n this.provider.removeListener('chainChanged', pluginSubcribeChain);\n const pluginSubcribeAccount = this.provider.events._events?.accountsChanged;\n this.provider.removeListener('accountsChanged', pluginSubcribeAccount);\n }\n } else {\n showLog('this.provider', this.provider);\n if (this.provider?._events) {\n const pluginSubcribeChain = this.provider._events?.chainChanged;\n this.provider.removeListener('chainChanged', pluginSubcribeChain);\n const pluginSubcribeAccount = this.provider._events.accountsChanged;\n this.provider.removeListener('accountsChanged', pluginSubcribeAccount);\n }\n }\n }\n this.isConnected = false;\n this.provider = null;\n this.web3 = null;\n this.clearLocalStorage();\n this.removeModal();\n }\n\n isWalletConnected() {\n return this.isConnected;\n }\n\n getWeb3() {\n return this.web3;\n }\n\n getWeb3Provider() {\n return this.provider;\n }\n\n async getAccount() {\n if (this.isConnected) {\n const accounts: any[] = await this.web3.eth.getAccounts();\n return accounts[0];\n } else {\n return null;\n }\n }\n\n async getChainId() {\n if (this.isConnected) {\n const chainId: number = await this.web3.eth.getChainId();\n return chainId;\n } else {\n return 0;\n }\n }\n\n async personalSign(data: any) {\n try {\n if (this.isConnected) {\n const web3 = this.getWeb3();\n const address = await this.getAccount();\n const signature = await web3.eth.personal.sign(web3.utils.fromUtf8(data), address);\n return signature;\n } else {\n return null;\n }\n } catch (error) {\n return null;\n }\n }\n}\nexport default web3Plugin;\n","import { Context } from '@nuxt/types';\nexport default ({ app }: Context) => {\n if (process.client && process.env.NODE_ENV === 'production') {\n document.addEventListener('contextmenu', e => {\n e.preventDefault();\n });\n document.addEventListener('keydown', e => {\n if (e.key === 'F12') {\n e.preventDefault();\n }\n });\n\n document.addEventListener('keydown', event => {\n if ((event.metaKey || event.ctrlKey) && event.altKey && event.keyCode === 73) {\n event.preventDefault();\n }\n });\n }\n};\n","import Vue from 'vue';\n\nconst events = new Vue({\n name: 'confirm-dialog',\n});\n\nexport default events;\n","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUiIGhlaWdodD0iMjUiIHZpZXdCb3g9IjAgMCAyNSAyNSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGNpcmNsZSBjeD0iMTIuODE2NCIgY3k9IjEyLjUiIHI9IjEyIiBmaWxsPSIjRjNCQTJGIi8+CjxwYXRoIGQ9Ik05LjMyMDY2IDExLjA2MzdMMTIuODE2NCA3LjU2OEwxNi4zMTM4IDExLjA2NTNMMTguMzQ3OCA5LjAzMTI2TDEyLjgxNjQgMy41TDcuMjg2ODEgOS4wMjk2TDkuMzIwNjYgMTEuMDYzN1pNMy44MTY0MSAxMi41TDUuODUwNDggMTAuNDY1Nkw3Ljg4NDQxIDEyLjQ5OTZMNS44NTAzMyAxNC41MzM2TDMuODE2NDEgMTIuNVpNOS4zMjA2NiAxMy45MzY1TDEyLjgxNjQgMTcuNDMyTDE2LjMxMzcgMTMuOTM0OEwxOC4zNDg4IDE1Ljk2NzdMMTguMzQ3OCAxNS45Njg4TDEyLjgxNjQgMjEuNUw3LjI4MzkzIDE1Ljk2NzVMOS4zMjA2NiAxMy45MzY1Wk0xNy43NDg0IDEyLjUwMDlMMTkuNzgyNSAxMC40NjY4TDIxLjgxNjQgMTIuNTAwN0wxOS43ODI0IDE0LjUzNDhMMTcuNzQ4NCAxMi41MDA5WiIgZmlsbD0id2hpdGUiLz4KPHBhdGggZD0iTTE0Ljg3OTMgMTIuNDk5SDE0Ljg4MDJMMTIuODE2NCAxMC40MzVMMTAuNzU0MyAxMi40OTY5TDEwLjc1MTQgMTIuNDk5N0wxMC43NTQzIDEyLjUwMjZMMTIuODE2NCAxNC41NjUxTDE0Ljg4MDMgMTIuNTAxMUwxNC44ODEzIDEyLjVMMTQuODc5MyAxMi40OTlaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K\"","import { STORAGE_WC_KEY } from '~/libs/const';\nimport { isChainSupport } from '~/libs/helper';\nexport default async function ({ app, store, redirect }: any) {\n const cacheConnect = window.localStorage.getItem(STORAGE_WC_KEY);\n if (cacheConnect) {\n store.dispatch('web3/connect');\n }\n // store.dispatch('web3/disconnect');\n}\n","module.exports = __webpack_public_path__ + \"img/icon-metamask.df99602.svg\";","module.exports = __webpack_public_path__ + \"img/icon-walletconnect.7f52a52.png\";","module.exports = __webpack_public_path__ + \"img/kai.d60290d.svg\";","module.exports = __webpack_public_path__ + \"img/eth.48fdd0c.svg\";","import state from './state';\nimport getters from './getters';\nimport mutations from './mutations';\nimport actions from './actions';\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions\n};\n","import state from './state'\nimport getters from './getters'\nimport mutations from './mutations'\nimport actions from './actions'\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions,\n}\n","import state from './state'\nimport getters from './getters'\nimport mutations from './mutations'\nimport actions from './actions'\n\nexport default {\n namespaced: true,\n state,\n getters,\n mutations,\n actions,\n}\n"],"sourceRoot":""}