Skip to content
This repository has been archived by the owner on Mar 23, 2023. It is now read-only.

Commit

Permalink
feat: fetch known wallets from repository (#1766)
Browse files Browse the repository at this point in the history
* chore: add new ark team and ark shield addresses

* chore: different ark team address

* refactor: fetch known wallets when updating network data

* chore: add knownWalletsUrl to devnet config

* refactor: add form field for knownWalletsUrl

* test: add unit tests for knownWalletsUrl

* refactor: replace calls to console.error

Co-authored-by: Brian Faust <[email protected]>
Co-authored-by: Davi Figueiredo <[email protected]>
Co-authored-by: Alex Barnsley <[email protected]>
  • Loading branch information
4 people authored Mar 17, 2020
1 parent 62dee43 commit 58a9dc6
Show file tree
Hide file tree
Showing 8 changed files with 72 additions and 31 deletions.
13 changes: 13 additions & 0 deletions __tests__/unit/components/Network/NetworkModal.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,12 @@ describe('NetworkModal', () => {
})
})

describe('knownWalletsUrl', () => {
it('should switch from invalid to valid to invalid for url', () => {
testUrl(wrapper.vm.$v.form.knownWalletsUrl)
})
})

describe('epoch', () => {
it('should switch from invalid to valid to invalid for required when changed', () => {
testRequired(wrapper.vm.$v.form.epoch, '2019-04-09T15:32:16.123Z')
Expand Down Expand Up @@ -322,6 +328,7 @@ describe('NetworkModal', () => {
wrapper.vm.$v.form.symbol.$model = 'A'
wrapper.vm.$v.form.version.$model = '1'
wrapper.vm.$v.form.explorer.$model = 'http://1.2.3.4'
wrapper.vm.$v.form.knownWalletsUrl.$model = 'http://1.2.3.4/know-wallets.json'
wrapper.vm.$v.form.epoch.$model = '2019-04-09T15:32:16.123Z'
wrapper.vm.$v.form.wif.$model = '1'
wrapper.vm.$v.form.slip44.$model = '1'
Expand Down Expand Up @@ -380,6 +387,12 @@ describe('NetworkModal', () => {
expect(wrapper.vm.$v.form.$invalid).toBe(true)
})

it('should disable if invalid knownWalletsUrl', () => {
wrapper.vm.$v.form.knownWalletsUrl.$model = 'http://test.com:abcd/know-wallets.json'

expect(wrapper.vm.$v.form.$invalid).toBe(true)
})

it('should disable if invalid epoch', () => {
wrapper.vm.$v.form.epoch.$model = '04/09/2019 15:32:16'

Expand Down
4 changes: 2 additions & 2 deletions config/networks/devnet.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,11 +54,11 @@
},
"nethash": "2a44f340d76ffc3df204c5f38cd355b7496c9065a1ade2ef92071436bd72e867",
"explorer": "https://dexplorer.ark.io",
"knownWalletsUrl": "https://raw.githubusercontent.com/ArkEcosystem/common/master/devnet/known-wallets.json",
"token": "DARK",
"subunit": "darktoshi",
"symbol": "",
"fractionDigits": 8,
"version": 30,
"wif": 170,
"knownWallets": {}
"wif": 170
}
26 changes: 2 additions & 24 deletions config/networks/mainnet.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,33 +54,11 @@
},
"nethash": "6e84d08bd299ed97c212c886c98a57e36545c8f5d645ca7eeae63a8bd62d8988",
"explorer": "https://explorer.ark.io",
"knownWalletsUrl": "https://raw.githubusercontent.com/ArkEcosystem/common/master/mainnet/known-wallets.json",
"token": "ARK",
"subunit": "arktoshi",
"symbol": "Ѧ",
"fractionDigits": 8,
"version": 23,
"wif": 170,
"knownWallets": {
"AagJoLEnpXYkxYdYkmdDSNMLjjBkLJ6T67": "ACF Hot Wallet",
"AWkBFnqvCF4jhqPSdE2HBPJiwaf67tgfGR": "ACF Hot Wallet (old)",
"ANvR7ny44GrLy4NTfuVqjGYr4EAwK7vnkW": "Altilly",
"AYCTHSZionfGoQsRnv5gECEuFWcZXS38gs": "Ark Bounty",
"AZmQJ2P9xg5j6VPZWjcTzWDD4w7Qww2KGX": "Ark GitHub Bounty",
"ANkHGk5uZqNrKFNY5jtd4A88zzFR3LnJbe": "Ark Hot Wallet",
"ALgvTAoz5Vi9easHqBK6aEMKatHb4beCXm": "Ark Shield I",
"AdTyTzaXPtj1J1DzTgVksa9NYdUuXCRbm1": "Ark Shield II",
"AUDud8tvyVZa67p3QY7XPRUTjRGnWQQ9Xv": "Ark Team",
"AFrPtEmzu6wdVpa2CnRDEKGQQMWgq8nE9V": "Binance",
"AQkyi31gUbLuFp7ArgH9hUCewg22TkxWpk": "Binance Cold Wallet",
"AdS7WvzqusoP759qRo6HDmUz2L34u4fMHz": "Binance Cold Wallet II",
"Aakg29vVhQhJ5nrsAHysTUqkTBVfmgBSXU": "Binance Cold Wallet III",
"AUexKjGtgsSpVzPLs6jNMM6vJ6znEVTQWK": "Bittrex",
"AdA5THjiVFAWhcMo5QyTKF1Y6d39bnPR2F": "Changelly",
"AcPwcdDbrprJf8FNCE3dKZaTvPJT8y4Cqi": "COSS",
"AJbmGnDAx9y91MQCDApyaqZhn6fBvYX9iJ": "Cryptopia",
"AewxfHQobSc49a4radHp74JZCGP8LRe4xA": "Genesis Wallet",
"AcVHEfEmFJkgoyuNczpgyxEA3MZ747DRAu": "Livecoin",
"ARXhacG5MPdT1ehWPTPo8jtfC5NrS29eKS": "OKEx",
"ANQftoXeWoa9ud9q9dd2ZrUpuKinpdejAJ": "Upbit"
}
"wif": 170
}
3 changes: 1 addition & 2 deletions src/renderer/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,6 @@ import { pull, uniq } from 'lodash'
import { AppFooter, AppIntro, AppSidemenu } from '@/components/App'
import AlertMessage from '@/components/AlertMessage'
import { TransactionModal } from '@/components/Transaction'
import config from '@config'
import URIHandler from '@/services/uri-handler'
import priceApi from '@/services/price-api'
Expand Down Expand Up @@ -271,7 +270,7 @@ export default {
async loadEssential () {
// We need to await plugins in order for all plugins to load properly
await this.$plugins.init(this)
await this.$store.dispatch('network/load', config.NETWORKS)
await this.$store.dispatch('network/load')
const currentProfileId = this.$store.getters['session/profileId']
await this.$store.dispatch('session/reset')
await this.$store.dispatch('session/setProfileId', currentProfileId)
Expand Down
26 changes: 25 additions & 1 deletion src/renderer/components/Network/NetworkModal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,16 @@
name="explorer"
/>

<InputText
ref="input-known-wallets-url"
v-model="$v.form.knownWalletsUrl.$model"
:label="$t('MODAL_NETWORK.KNOWN_WALLETS_URL')"
:is-invalid="$v.form.knownWalletsUrl.$dirty && $v.form.knownWalletsUrl.$invalid"
:helper-text="knownWalletsUrlError"
class="mt-5"
name="knownWalletsUrl"
/>

<InputText
v-model="$v.form.ticker.$model"
:label="$t('MODAL_NETWORK.MARKET_TICKER')"
Expand Down Expand Up @@ -209,7 +219,7 @@
</template>

<script>
import { numeric, required, requiredIf } from 'vuelidate/lib/validators'
import { numeric, required, requiredIf, url } from 'vuelidate/lib/validators'
import { NETWORKS } from '@config'
import { InputText, InputToggle } from '@/components/Input'
import { ModalLoader, ModalWindow } from '@/components/Modal'
Expand Down Expand Up @@ -251,6 +261,7 @@ export default {
symbol: '',
version: '',
explorer: '',
knownWalletsUrl: '',
epoch: '',
wif: '',
slip44: '',
Expand Down Expand Up @@ -328,6 +339,10 @@ export default {
return this.requiredUrlFieldError(this.$v.form.explorer, this.$refs['input-explorer'])
},
knownWalletsUrlError () {
return this.requiredValidFieldError(this.$v.form.knownWalletsUrl, this.$refs['input-known-wallets-url'])
},
nethashError () {
return this.requiredValidFieldError(this.$v.form.nethash, this.$refs['input-nethash'])
},
Expand Down Expand Up @@ -371,6 +386,7 @@ export default {
}
this.form.explorer = this.network.explorer || ''
this.form.knownWalletsUrl = this.network.knownWalletsUrl || ''
this.form.epoch = this.network.constants.epoch
Expand Down Expand Up @@ -651,6 +667,14 @@ export default {
return !this.showFull || /^https?:\/\//.test(value)
}
},
knownWalletsUrl: {
required () {
return true
},
isValid (value) {
return !value || url(value)
}
},
epoch: {
requiredIfFull,
isValid (value) {
Expand Down
1 change: 1 addition & 0 deletions src/renderer/i18n/locales/en-US.js
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,7 @@ export default {
SYMBOL: 'Symbol',
VERSION: 'Version',
EXPLORER: 'Explorer',
KNOWN_WALLETS_URL: 'Known Wallets URL',
EPOCH: 'Epoch',
WIF: 'WIF',
SLIP44: 'Slip44',
Expand Down
3 changes: 3 additions & 0 deletions src/renderer/models/network.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,9 @@ export default new BaseModel({
}
}
},
knownWalletsUrl: {
type: ['string', 'null']
},
knownWallets: {
type: 'object',
default: {}
Expand Down
27 changes: 25 additions & 2 deletions src/renderer/store/modules/network.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { NETWORKS } from '@config'
import eventBus from '@/plugins/event-bus'
import NetworkModel from '@/models/network'
import Client from '@/services/client'
import got from 'got'
import Vue from 'vue'

export default new BaseModule(NetworkModel, {
Expand Down Expand Up @@ -79,12 +80,34 @@ export default new BaseModule(NetworkModel, {
*/
async updateData ({ commit, rootGetters }, network = null) {
if (!network) {
network = rootGetters['session/network']
network = cloneDeep(rootGetters['session/network'])
}

try {
const crypto = await Client.fetchNetworkCrypto(network.server)
const { constants } = await Client.fetchNetworkConfig(network.server)

// TODO: remove in future major version
// this is a "hack" to make sure the known wallets url is set on the default networks
if (!network.knownWalletsUrl) {
const defaultNetwork = NETWORKS.find(defaultNetwork => defaultNetwork.id === network.id)

if (defaultNetwork) {
network.knownWalletsUrl = defaultNetwork.knownWalletsUrl
}
}

if (network.knownWalletsUrl) {
try {
const knownWallets = await got(network.knownWalletsUrl, {
json: true
})
network.knownWallets = knownWallets.body
} catch (error) {
this._vm.$logger.error('Could not retrieve known wallets: ', error)
}
}

commit('UPDATE', {
...network,
constants
Expand All @@ -93,7 +116,7 @@ export default new BaseModule(NetworkModel, {
Managers.configManager.setConfig(cloneDeep(crypto))
Managers.configManager.setHeight(constants.height)
} catch (error) {
console.error('Could not update network data:', error)
this._vm.$logger.error('Could not update network data: ', error)
}
},

Expand Down

0 comments on commit 58a9dc6

Please sign in to comment.