import { EchoContract } from './Contract' import networkConfig from '@/networkConfig' export const getters = { echoContract: (state, getters, rootState, rootGetters) => { const netId = rootState.metamask.netId const { url } = rootGetters['settings/currentRpc'] const address = networkConfig[`netId${netId}`].echoContractAccount return new EchoContract({ rpcUrl: url, address }) }, // selectors selectUi: (state, getters, rootState) => (key) => { const { netId } = rootState.metamask return state.ui[`netId${netId}`][key] }, selectDomain: (state, getters, rootState) => (key) => { const { netId } = rootState.metamask return state.domain[`netId${netId}`][key] }, // ui store isExistAccount: (state, getters) => { return getters.selectUi('isExistAccount') }, accounts: (state, getters) => { return getters.selectUi('addresses') }, statistic: (state, getters) => { const data = getters.selectUi('statistic') if (Array.isArray(data)) { return data } else { return [] } }, noteAccountBalance: (state, getters, rootState, rootGetters) => { let balance = 0 const nativeCurrency = rootGetters['metamask/nativeCurrency'] getters.statistic.forEach(({ currency, amount }) => { if (currency === nativeCurrency) { balance += Number(amount) } }) return balance }, isSetupAccount: (state, getters) => { return Boolean(getters.selectUi('encryptedPublicKey')) }, encryptedPublicKey: (state, getters) => { return getters.selectUi('encryptedPublicKey') }, encryptedPrivateKey: (state, getters) => { return getters.selectUi('encryptedPrivateKey') }, isEnabledSaveFile: (state, getters) => { return getters.selectUi('isEnabledSaveFile') }, isHighlightedNoteAccount: (state, getters) => { return getters.selectUi('isHighlightedNoteAccount') }, // domain store setupAccountRequest: (state, getters) => { return getters.selectDomain('setupAccount') }, recoverAccountRequest: (state, getters) => { return getters.selectDomain('recoverAccountFromChain') }, removeAccountRequest: (state, getters) => { return getters.selectDomain('removeAccount') }, decryptNotesRequest: (state, getters) => { return getters.selectDomain('decryptNotes') }, recoverAccountFromKeyRequest: (state, getters) => { return getters.selectDomain('recoverAccountFromKey') } }