// Copyright 2015, 2016 Ethcore (UK) Ltd. // This file is part of Parity. // Parity is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // Parity is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // You should have received a copy of the GNU General Public License // along with Parity. If not, see . import * as abis from '../../contracts/abi'; import { api } from './parity'; export function attachInterface () { return api.parity .registryAddress() .then((registryAddress) => { console.log(`the registry was found at ${registryAddress}`); const registry = api.newContract(abis.registry, registryAddress).instance; return Promise .all([ registry.getAddress.call({}, [api.util.sha3('githubhint'), 'A']), api.parity.accounts() ]); }) .then(([address, accountsInfo]) => { console.log(`githubhint was found at ${address}`); const contract = api.newContract(abis.githubhint, address); const accounts = Object .keys(accountsInfo) .filter((address) => accountsInfo[address].uuid) .reduce((obj, address) => { const account = accountsInfo[address]; return Object.assign(obj, { [address]: { address, name: account.name } }); }, {}); const fromAddress = Object.keys(accounts)[0]; return { accounts, address, accountsInfo, contract, instance: contract.instance, fromAddress }; }) .catch((error) => { console.error('attachInterface', error); }); }