From da47751442747fbb95297c00f98b964df4beeda3 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Mon, 29 Apr 2019 21:04:33 +0200 Subject: [PATCH 01/31] add blockies for account display --- client/package-lock.json | 605 ++++++++++++++++-- client/package.json | 3 +- .../src/@types/ethereum-blockies/index.d.ts | 5 + .../src/components/atoms/Account.module.scss | 24 + client/src/components/atoms/Account.tsx | 19 + .../AccountStatus/Popover.module.scss | 8 - .../molecules/AccountStatus/Popover.tsx | 49 +- .../organisms/Web3message.module.scss | 13 +- .../src/components/organisms/Web3message.tsx | 13 +- 9 files changed, 638 insertions(+), 101 deletions(-) create mode 100644 client/src/@types/ethereum-blockies/index.d.ts create mode 100644 client/src/components/atoms/Account.module.scss create mode 100644 client/src/components/atoms/Account.tsx diff --git a/client/package-lock.json b/client/package-lock.json index 0e0cd8f..a929be0 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1260,6 +1260,345 @@ "uuid": "^3.3.2", "web3": "1.0.0-beta.37", "whatwg-url": "^7.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "elliptic": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz", + "integrity": "sha1-VILZZG1UvLif19mU/J4ulWiHbj8=", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "inherits": "^2.0.1" + } + }, + "ethers": { + "version": "4.0.0-beta.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.0-beta.1.tgz", + "integrity": "sha512-SoYhktEbLxf+fiux5SfCEwdzWENMvgIbMZD90I62s4GZD9nEjgEWy8ZboI3hck193Vs0bDoTohDISx84f2H2tw==", + "requires": { + "@types/node": "^10.3.2", + "aes-js": "3.0.0", + "bn.js": "^4.4.0", + "elliptic": "6.3.3", + "hash.js": "1.1.3", + "js-sha3": "0.5.7", + "scrypt-js": "2.0.3", + "setimmediate": "1.0.4", + "uuid": "2.0.1", + "xmlhttprequest": "1.8.0" + }, + "dependencies": { + "setimmediate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", + "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" + }, + "uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" + } + } + }, + "eventemitter3": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", + "integrity": "sha1-R3hr2qCHyvext15zq8XH1UAVjNA=" + }, + "fs-extra": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", + "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0" + } + }, + "hash.js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", + "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.0" + } + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "scrypt-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", + "integrity": "sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q=" + }, + "swarm-js": { + "version": "0.1.37", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.37.tgz", + "integrity": "sha512-G8gi5fcXP/2upwiuOShJ258sIufBVztekgobr3cVgYXObZwJ5AXLqZn52AI+/ffft29pJexF9WNdUxjlkVehoQ==", + "requires": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "decompress": "^4.0.0", + "eth-lib": "^0.1.26", + "fs-extra": "^2.1.2", + "fs-promise": "^2.0.0", + "got": "^7.1.0", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar.gz": "^1.0.5", + "xhr-request-promise": "^0.1.2" + } + }, + "web3": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.0.0-beta.37.tgz", + "integrity": "sha512-8XLgUspdzicC/xHG82TLrcF/Fxzj2XYNJ1KTYnepOI77bj5rvpsxxwHYBWQ6/JOjk0HkZqoBfnXWgcIHCDhZhQ==", + "requires": { + "web3-bzz": "1.0.0-beta.37", + "web3-core": "1.0.0-beta.37", + "web3-eth": "1.0.0-beta.37", + "web3-eth-personal": "1.0.0-beta.37", + "web3-net": "1.0.0-beta.37", + "web3-shh": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-bzz": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.0.0-beta.37.tgz", + "integrity": "sha512-E+dho49Nsm/QpQvYWOF35YDsQrMvLB19AApENxhlQsu6HpWQt534DQul0t3Y/aAh8rlKD6Kanxt8LhHDG3vejQ==", + "requires": { + "got": "7.1.0", + "swarm-js": "0.1.37", + "underscore": "1.8.3" + } + }, + "web3-core": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.0.0-beta.37.tgz", + "integrity": "sha512-cIwEqCj7OJyefQNauI0HOgW4sSaOQ98V99H2/HEIlnCZylsDzfw7gtQUdwnRFiIyIxjbWy3iWsjwDPoXNPZBYg==", + "requires": { + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-core-requestmanager": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-core-helpers": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz", + "integrity": "sha512-efaLOzN28RMnbugnyelgLwPWWaSwElQzcAJ/x3PZu+uPloM/lE5x0YuBKvIh7/PoSMlHqtRWj1B8CpuQOUQ5Ew==", + "requires": { + "underscore": "1.8.3", + "web3-eth-iban": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-core-method": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.0.0-beta.37.tgz", + "integrity": "sha512-pKWFUeqnVmzx3VrZg+CseSdrl/Yrk2ioid/HzolNXZE6zdoITZL0uRjnsbqXGEzgRRd1Oe/pFndpTlRsnxXloA==", + "requires": { + "underscore": "1.8.3", + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-promievent": "1.0.0-beta.37", + "web3-core-subscriptions": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-core-subscriptions": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.37.tgz", + "integrity": "sha512-FdXl8so9kwkRRWziuCSpFsAuAdg9KvpXa1fQlT16uoGcYYfxwFO/nkwyBGQzkZt7emShI2IRugcazyPCZDwkOA==", + "requires": { + "eventemitter3": "1.1.1", + "underscore": "1.8.3", + "web3-core-helpers": "1.0.0-beta.37" + } + }, + "web3-eth": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.0.0-beta.37.tgz", + "integrity": "sha512-Eb3aGtkz3G9q+Z9DKgSQNbn/u8RtcZQQ0R4sW9hy5KK47GoT6vab5c6DiD3QWzI0BzitHzR5Ji+3VHf/hPUGgw==", + "requires": { + "underscore": "1.8.3", + "web3-core": "1.0.0-beta.37", + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-core-subscriptions": "1.0.0-beta.37", + "web3-eth-abi": "1.0.0-beta.37", + "web3-eth-accounts": "1.0.0-beta.37", + "web3-eth-contract": "1.0.0-beta.37", + "web3-eth-ens": "1.0.0-beta.37", + "web3-eth-iban": "1.0.0-beta.37", + "web3-eth-personal": "1.0.0-beta.37", + "web3-net": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-abi": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.37.tgz", + "integrity": "sha512-g9DKZGM2OqwKp/tX3W/yihcj7mQCtJ6CXyZXEIZfuDyRBED/iSEIFfieDOd+yo16sokLMig6FG7ADhhu+19hdA==", + "requires": { + "ethers": "4.0.0-beta.1", + "underscore": "1.8.3", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-accounts": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.37.tgz", + "integrity": "sha512-uvbHL62/zwo4GDmwKdqH9c/EgYd8QVnAfpVw8D3epSISpgbONNY7Hr4MRMSd/CqAP12l2Ls9JVQGLhhC83bW6g==", + "requires": { + "any-promise": "1.3.0", + "crypto-browserify": "3.12.0", + "eth-lib": "0.2.7", + "scrypt.js": "0.2.0", + "underscore": "1.8.3", + "uuid": "2.0.1", + "web3-core": "1.0.0-beta.37", + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + }, + "dependencies": { + "elliptic": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "eth-lib": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", + "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" + } + } + }, + "web3-eth-contract": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.37.tgz", + "integrity": "sha512-h1B3A8Z/C7BlnTCHkrWbXZQTViDxfR12lKMeTkT8Sqj5phFmxrBlPE4ORy4lf1Dk5b23mZYE0r/IRACx4ThCrQ==", + "requires": { + "underscore": "1.8.3", + "web3-core": "1.0.0-beta.37", + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-core-promievent": "1.0.0-beta.37", + "web3-core-subscriptions": "1.0.0-beta.37", + "web3-eth-abi": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-ens": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.37.tgz", + "integrity": "sha512-dR3UkrVzdRrJhfP57xBPx0CMiVnCcYFvh+u2XMkGydrhHgupSUkjqGr89xry/j1T0BkuN9mikpbyhdCVMXqMbg==", + "requires": { + "eth-ens-namehash": "2.0.8", + "underscore": "1.8.3", + "web3-core": "1.0.0-beta.37", + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-promievent": "1.0.0-beta.37", + "web3-eth-abi": "1.0.0-beta.37", + "web3-eth-contract": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-iban": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz", + "integrity": "sha512-WQRniGJFxH/XCbd7miO6+jnUG+6bvuzfeufPIiOtCbeIC1ypp1kSqER8YVBDrTyinU1xnf1U5v0KBZ2yiWBJxQ==", + "requires": { + "bn.js": "4.11.6", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-personal": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.37.tgz", + "integrity": "sha512-B4dZpGbD+nGnn48i6nJBqrQ+HB7oDmd+Q3wGRKOsHSK5HRWO/KwYeA7wgwamMAElkut50lIsT9EJl4Apfk3G5Q==", + "requires": { + "web3-core": "1.0.0-beta.37", + "web3-core-helpers": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-net": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-net": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.0.0-beta.37.tgz", + "integrity": "sha512-xG/uBtMdDa1UMXw9KjDUgf3fXA/fDEJUYUS0TDn+U9PMgngA+UVECHNNvQTrVVDxEky38V3sahwIDiopNsQdsw==", + "requires": { + "web3-core": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-shh": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.0.0-beta.37.tgz", + "integrity": "sha512-h5STG/xqZNQWtCLYOu7NiMqwqPea8SfkKQUPUFxXKIPVCFVKpHuQEwW1qcPQRJMLhlQIv17xuoUe1A+RzDNbrw==", + "requires": { + "web3-core": "1.0.0-beta.37", + "web3-core-method": "1.0.0-beta.37", + "web3-core-subscriptions": "1.0.0-beta.37", + "web3-net": "1.0.0-beta.37" + } + }, + "web3-utils": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.37.tgz", + "integrity": "sha512-kA1fyhO8nKgU21wi30oJQ/ssvu+9srMdjOTKbHYbQe4ATPcr5YNwwrxG3Bcpbu1bEwRUVKHCkqi+wTvcAWBdlQ==", + "requires": { + "bn.js": "4.11.6", + "eth-lib": "0.1.27", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randomhex": "0.1.5", + "underscore": "1.8.3", + "utf8": "2.1.1" + } + } } }, "@oceanprotocol/typographies": { @@ -4800,15 +5139,6 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" - }, - "get-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", - "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", - "requires": { - "object-assign": "^4.0.1", - "pinkie-promise": "^2.0.0" - } } } }, @@ -5871,6 +6201,10 @@ "xhr-request-promise": "^0.1.2" } }, + "ethereum-blockies": { + "version": "github:MyEtherWallet/blockies#d36f87e50149aacafb34f099fe0bea1df76e010c", + "from": "github:MyEtherWallet/blockies" + }, "ethereumjs-util": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.1.0.tgz", @@ -6655,6 +6989,25 @@ "fs-extra": "^2.0.0", "mz": "^2.6.0", "thenify-all": "^1.6.0" + }, + "dependencies": { + "fs-extra": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", + "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "requires": { + "graceful-fs": "^4.1.6" + } + } } }, "fs-write-stream-atomic": { @@ -6747,9 +7100,13 @@ "dev": true }, "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } }, "get-value": { "version": "2.0.6", @@ -6913,6 +7270,13 @@ "timed-out": "^4.0.0", "url-parse-lax": "^1.0.0", "url-to-options": "^1.0.1" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + } } }, "graceful-fs": { @@ -9991,35 +10355,17 @@ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, - "lodash.assign": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", - "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", - "dev": true - }, "lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=" }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "lodash.mergewith": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.1.tgz", - "integrity": "sha512-eWw5r+PYICtEBgrBE5hhlT6aAa75f411bgDz/ZL2KZqYV03USvucsxcHUIlGTDTECs1eunpI7HOV7U+WLDvNdQ==", - "dev": true - }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -10767,9 +11113,9 @@ } }, "node-sass": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", - "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.12.0.tgz", + "integrity": "sha512-A1Iv4oN+Iel6EPv77/HddXErL2a+gZ4uBeZUy+a8O35CFYTXhgA8MgLCWBtwpGZdCvTvQ9d+bQxX/QC36GDPpQ==", "dev": true, "requires": { "async-foreach": "^0.1.3", @@ -10779,12 +11125,10 @@ "get-stdin": "^4.0.1", "glob": "^7.0.3", "in-publish": "^2.0.0", - "lodash.assign": "^4.2.0", - "lodash.clonedeep": "^4.3.2", - "lodash.mergewith": "^4.6.0", + "lodash": "^4.17.11", "meow": "^3.7.0", "mkdirp": "^0.5.1", - "nan": "^2.10.0", + "nan": "^2.13.2", "node-gyp": "^3.8.0", "npmlog": "^4.0.0", "request": "^2.88.0", @@ -16093,6 +16437,13 @@ "requires": { "any-promise": "1.3.0", "eventemitter3": "1.1.1" + }, + "dependencies": { + "eventemitter3": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", + "integrity": "sha1-R3hr2qCHyvext15zq8XH1UAVjNA=" + } } }, "web3-core-requestmanager": { @@ -16105,6 +16456,46 @@ "web3-providers-http": "1.0.0-beta.37", "web3-providers-ipc": "1.0.0-beta.37", "web3-providers-ws": "1.0.0-beta.37" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "web3-core-helpers": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz", + "integrity": "sha512-efaLOzN28RMnbugnyelgLwPWWaSwElQzcAJ/x3PZu+uPloM/lE5x0YuBKvIh7/PoSMlHqtRWj1B8CpuQOUQ5Ew==", + "requires": { + "underscore": "1.8.3", + "web3-eth-iban": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-iban": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz", + "integrity": "sha512-WQRniGJFxH/XCbd7miO6+jnUG+6bvuzfeufPIiOtCbeIC1ypp1kSqER8YVBDrTyinU1xnf1U5v0KBZ2yiWBJxQ==", + "requires": { + "bn.js": "4.11.6", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-utils": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.37.tgz", + "integrity": "sha512-kA1fyhO8nKgU21wi30oJQ/ssvu+9srMdjOTKbHYbQe4ATPcr5YNwwrxG3Bcpbu1bEwRUVKHCkqi+wTvcAWBdlQ==", + "requires": { + "bn.js": "4.11.6", + "eth-lib": "0.1.27", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randomhex": "0.1.5", + "underscore": "1.8.3", + "utf8": "2.1.1" + } + } } }, "web3-core-subscriptions": { @@ -16256,6 +16647,46 @@ "requires": { "web3-core-helpers": "1.0.0-beta.37", "xhr2-cookies": "1.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "web3-core-helpers": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz", + "integrity": "sha512-efaLOzN28RMnbugnyelgLwPWWaSwElQzcAJ/x3PZu+uPloM/lE5x0YuBKvIh7/PoSMlHqtRWj1B8CpuQOUQ5Ew==", + "requires": { + "underscore": "1.8.3", + "web3-eth-iban": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-iban": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz", + "integrity": "sha512-WQRniGJFxH/XCbd7miO6+jnUG+6bvuzfeufPIiOtCbeIC1ypp1kSqER8YVBDrTyinU1xnf1U5v0KBZ2yiWBJxQ==", + "requires": { + "bn.js": "4.11.6", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-utils": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.37.tgz", + "integrity": "sha512-kA1fyhO8nKgU21wi30oJQ/ssvu+9srMdjOTKbHYbQe4ATPcr5YNwwrxG3Bcpbu1bEwRUVKHCkqi+wTvcAWBdlQ==", + "requires": { + "bn.js": "4.11.6", + "eth-lib": "0.1.27", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randomhex": "0.1.5", + "underscore": "1.8.3", + "utf8": "2.1.1" + } + } } }, "web3-providers-ipc": { @@ -16266,6 +16697,46 @@ "oboe": "2.1.3", "underscore": "1.8.3", "web3-core-helpers": "1.0.0-beta.37" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "web3-core-helpers": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz", + "integrity": "sha512-efaLOzN28RMnbugnyelgLwPWWaSwElQzcAJ/x3PZu+uPloM/lE5x0YuBKvIh7/PoSMlHqtRWj1B8CpuQOUQ5Ew==", + "requires": { + "underscore": "1.8.3", + "web3-eth-iban": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-iban": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz", + "integrity": "sha512-WQRniGJFxH/XCbd7miO6+jnUG+6bvuzfeufPIiOtCbeIC1ypp1kSqER8YVBDrTyinU1xnf1U5v0KBZ2yiWBJxQ==", + "requires": { + "bn.js": "4.11.6", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-utils": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.37.tgz", + "integrity": "sha512-kA1fyhO8nKgU21wi30oJQ/ssvu+9srMdjOTKbHYbQe4ATPcr5YNwwrxG3Bcpbu1bEwRUVKHCkqi+wTvcAWBdlQ==", + "requires": { + "bn.js": "4.11.6", + "eth-lib": "0.1.27", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randomhex": "0.1.5", + "underscore": "1.8.3", + "utf8": "2.1.1" + } + } } }, "web3-providers-ws": { @@ -16276,6 +16747,56 @@ "underscore": "1.8.3", "web3-core-helpers": "1.0.0-beta.37", "websocket": "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" + }, + "web3-core-helpers": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz", + "integrity": "sha512-efaLOzN28RMnbugnyelgLwPWWaSwElQzcAJ/x3PZu+uPloM/lE5x0YuBKvIh7/PoSMlHqtRWj1B8CpuQOUQ5Ew==", + "requires": { + "underscore": "1.8.3", + "web3-eth-iban": "1.0.0-beta.37", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-eth-iban": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz", + "integrity": "sha512-WQRniGJFxH/XCbd7miO6+jnUG+6bvuzfeufPIiOtCbeIC1ypp1kSqER8YVBDrTyinU1xnf1U5v0KBZ2yiWBJxQ==", + "requires": { + "bn.js": "4.11.6", + "web3-utils": "1.0.0-beta.37" + } + }, + "web3-utils": { + "version": "1.0.0-beta.37", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.37.tgz", + "integrity": "sha512-kA1fyhO8nKgU21wi30oJQ/ssvu+9srMdjOTKbHYbQe4ATPcr5YNwwrxG3Bcpbu1bEwRUVKHCkqi+wTvcAWBdlQ==", + "requires": { + "bn.js": "4.11.6", + "eth-lib": "0.1.27", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randomhex": "0.1.5", + "underscore": "1.8.3", + "utf8": "2.1.1" + } + }, + "websocket": { + "version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2", + "from": "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible", + "requires": { + "debug": "^2.2.0", + "nan": "^2.3.3", + "typedarray-to-buffer": "^3.1.2", + "yaeti": "^0.0.6" + } + } } }, "web3-shh": { @@ -16624,16 +17145,6 @@ "source-map": "~0.6.1" } }, - "websocket": { - "version": "git://github.com/frozeman/WebSocket-Node.git#6c72925e3f8aaaea8dc8450f97627e85263999f2", - "from": "git://github.com/frozeman/WebSocket-Node.git#browserifyCompatible", - "requires": { - "debug": "^2.2.0", - "nan": "^2.3.3", - "typedarray-to-buffer": "^3.1.2", - "yaeti": "^0.0.6" - } - }, "websocket-driver": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.0.tgz", diff --git a/client/package.json b/client/package.json index 0c5d0dc..46acbb7 100644 --- a/client/package.json +++ b/client/package.json @@ -15,6 +15,7 @@ "@oceanprotocol/squid": "^0.5.7", "@oceanprotocol/typographies": "^0.1.0", "classnames": "^2.2.6", + "ethereum-blockies": "MyEtherWallet/blockies", "filesize": "^4.1.2", "history": "^4.9.0", "is-url": "^1.2.4", @@ -50,7 +51,7 @@ "@types/react-transition-group": "^2.8.0", "@types/web3": "^1.0.18", "jest-dom": "^3.1.3", - "node-sass": "^4.11.0", + "node-sass": "^4.12.0", "react-scripts": "^3.0.0", "react-testing-library": "^6.1.2", "typescript": "^3.4.3" diff --git a/client/src/@types/ethereum-blockies/index.d.ts b/client/src/@types/ethereum-blockies/index.d.ts new file mode 100644 index 0000000..6180f3a --- /dev/null +++ b/client/src/@types/ethereum-blockies/index.d.ts @@ -0,0 +1,5 @@ +/// + +declare module 'ethereum-blockies' { + export function toDataUrl(address: string): string +} diff --git a/client/src/components/atoms/Account.module.scss b/client/src/components/atoms/Account.module.scss new file mode 100644 index 0000000..f658d5d --- /dev/null +++ b/client/src/components/atoms/Account.module.scss @@ -0,0 +1,24 @@ +@import '../../styles/variables'; + +.account { + display: flex; + align-items: center; + text-align: left; + + > div { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + font-family: $font-family-monospace; + font-size: $font-size-small; + } +} + +.blockies { + width: 1.5rem; + height: 1.5rem; + border-radius: 50%; + display: inline-block; + margin-right: $spacer / 3; + margin-left: 0; +} diff --git a/client/src/components/atoms/Account.tsx b/client/src/components/atoms/Account.tsx new file mode 100644 index 0000000..0ff8cd3 --- /dev/null +++ b/client/src/components/atoms/Account.tsx @@ -0,0 +1,19 @@ +import React from 'react' +import Dotdotdot from 'react-dotdotdot' +import { toDataUrl } from 'ethereum-blockies' +import styles from './Account.module.scss' + +const Account = ({ account }: { account: string }) => { + const blockies = toDataUrl(account) + + return account && blockies ? ( +
+ Blockies + {account} +
+ ) : ( + No account selected + ) +} + +export default Account diff --git a/client/src/components/molecules/AccountStatus/Popover.module.scss b/client/src/components/molecules/AccountStatus/Popover.module.scss index 7cd0a34..5972204 100644 --- a/client/src/components/molecules/AccountStatus/Popover.module.scss +++ b/client/src/components/molecules/AccountStatus/Popover.module.scss @@ -45,14 +45,6 @@ $popoverWidth: 18rem; } } -.address { - display: block; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - font-family: $font-family-monospace; -} - .balance { font-size: $font-size-small; margin-left: $spacer / 2; diff --git a/client/src/components/molecules/AccountStatus/Popover.tsx b/client/src/components/molecules/AccountStatus/Popover.tsx index 5ae2041..040a744 100644 --- a/client/src/components/molecules/AccountStatus/Popover.tsx +++ b/client/src/components/molecules/AccountStatus/Popover.tsx @@ -1,5 +1,5 @@ import React, { PureComponent } from 'react' -import Dotdotdot from 'react-dotdotdot' +import Account from '../../atoms/Account' import { User } from '../../../context' import styles from './Popover.module.scss' @@ -15,23 +15,6 @@ export default class Popover extends PureComponent<{ ref={this.props.forwardedRef} style={this.props.style} > - {account && balance && ( -
- - - {(balance.eth / 1e18).toFixed(3).slice(0, -1)} - {' '} - ETH - - - {balance.ocn} OCEAN - -
- )} - {!isWeb3 ? (
No Web3 detected. Use a browser with MetaMask installed @@ -40,16 +23,28 @@ export default class Popover extends PureComponent<{ ) : ( <>
- {account ? ( - - - {account} - - - ) : ( - No account selected - )} +
+ + {account && balance && ( +
+ + + {(balance.eth / 1e18) + .toFixed(3) + .slice(0, -1)} + {' '} + ETH + + + {balance.ocn} OCEAN + +
+ )} +
{network && !isNile ? 'Please connect to Custom RPC\n https://nile.dev-ocean.com' diff --git a/client/src/components/organisms/Web3message.module.scss b/client/src/components/organisms/Web3message.module.scss index 2abcc23..5a86272 100644 --- a/client/src/components/organisms/Web3message.module.scss +++ b/client/src/components/organisms/Web3message.module.scss @@ -3,27 +3,20 @@ .message { margin-bottom: $spacer; color: $brand-grey; - padding-left: 2rem; position: relative; border-bottom: .1rem solid $brand-grey-lighter; border-top: .1rem solid $brand-grey-lighter; padding-top: $spacer / 2; padding-bottom: $spacer / 2; text-align: left; - - > div { - display: inline-block; - } } -.account { - display: inline-block; - margin-left: $spacer / 8; - background: none; +.warnings { + padding-left: $spacer; } .status { margin-left: -($spacer); - margin-right: $spacer / 3; + margin-right: $spacer / 2; padding: 0; } diff --git a/client/src/components/organisms/Web3message.tsx b/client/src/components/organisms/Web3message.tsx index bc93c57..6657ab3 100644 --- a/client/src/components/organisms/Web3message.tsx +++ b/client/src/components/organisms/Web3message.tsx @@ -1,5 +1,5 @@ import React, { PureComponent } from 'react' -import Dotdotdot from 'react-dotdotdot' +import Account from '../atoms/Account' import Button from '../atoms/Button' import AccountStatus from '../molecules/AccountStatus' import styles from './Web3message.module.scss' @@ -13,21 +13,18 @@ export default class Web3message extends PureComponent { unlockAccounts?: () => any ) => (
- {' '} {account ? ( - - {message} - {account} - + ) : ( - <> +
+ {' '} {unlockAccounts && ( )} - +
)}
) From 5e8ed026d556e98471fb9e0fbb5b680955e0dc8a Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 30 Apr 2019 12:21:43 +0200 Subject: [PATCH 02/31] report test coverage to Codacy --- .travis.yml | 5 +++++ client/package.json | 3 ++- scripts/coverage.sh | 12 ++++++++++++ scripts/install.sh | 2 +- server/package.json | 3 ++- 5 files changed, 22 insertions(+), 3 deletions(-) create mode 100755 scripts/coverage.sh diff --git a/.travis.yml b/.travis.yml index 4235e2b..e7e65dc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,9 +3,14 @@ language: node_js node_js: - '11' +before_install: + - npm install -g npm + - npm install -g codacy-coverage + script: # - ./scripts/install.sh # runs automatically with npm ci - ./scripts/test.sh + - ./scripts/coverage.sh - ./scripts/build.sh notifications: diff --git a/client/package.json b/client/package.json index 0c5d0dc..405093b 100644 --- a/client/package.json +++ b/client/package.json @@ -8,7 +8,8 @@ "build": "react-scripts --max_old_space_size=4096 build", "test": "react-scripts test --coverage", "test:watch": "react-scripts test --coverage --watch", - "eject": "react-scripts eject" + "eject": "react-scripts eject", + "coverage": "cat coverage/lcov.info | codacy-coverage --token 8801f827fe1144ffa85cd7da94f2bbf7" }, "dependencies": { "@oceanprotocol/art": "^2.2.0", diff --git a/scripts/coverage.sh b/scripts/coverage.sh new file mode 100755 index 0000000..2d0de92 --- /dev/null +++ b/scripts/coverage.sh @@ -0,0 +1,12 @@ +#/usr/bin/env/sh +set -e + +components="server client" + +for component in $components +do + printf "\n\nReporting coverage: $component\n" + cd $component + npm run coverage + cd .. +done diff --git a/scripts/install.sh b/scripts/install.sh index 34b2077..3d1c539 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -5,7 +5,7 @@ components="server client" for component in $components do - echo "\n\nInstalling dependencies: $component\n" + printf "\n\nInstalling dependencies: $component\n" cd $component npm install cd .. diff --git a/server/package.json b/server/package.json index 516639a..3ba4362 100644 --- a/server/package.json +++ b/server/package.json @@ -9,7 +9,8 @@ "serve": "node dist/server.js", "build": "tsc", "test": "jest --coverage", - "test:watch": "jest --coverage --watch" + "test:watch": "jest --coverage --watch", + "coverage": "cat coverage/lcov.info | codacy-coverage --token 8801f827fe1144ffa85cd7da94f2bbf7" }, "dependencies": { "body-parser": "^1.18.3", From 2e7ed31e2e3e40db748968a1f2d7fcd0c0d6a00d Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 30 Apr 2019 13:37:25 +0200 Subject: [PATCH 03/31] add codacy badges --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 12122f7..d401af6 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ > https://commons.oceanprotocol.com [![Build Status](https://travis-ci.com/oceanprotocol/commons.svg?branch=master)](https://travis-ci.com/oceanprotocol/commons) +[![Codacy Badge](https: //api.codacy.com/project/badge/Grade/6a19987e62344b1c9c1d5bc9f315c733)](https://www.codacy.com/app/ocean-protocol/commons) +[![Codacy Badge](https: //api.codacy.com/project/badge/Coverage/6a19987e62344b1c9c1d5bc9f315c733)](https://www.codacy.com/app/ocean-protocol/commons) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-7b1173.svg?style=flat-square)](https://github.com/prettier/prettier) [![js oceanprotocol](https://img.shields.io/badge/js-oceanprotocol-7b1173.svg)](https://github.com/oceanprotocol/eslint-config-oceanprotocol) [![css bigchaindb](https://img.shields.io/badge/css-bigchaindb-39BA91.svg)](https://github.com/bigchaindb/stylelint-config-bigchaindb) From a8969bb70c0f206ea38c969d3b22706d8a9af29d Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 30 Apr 2019 18:36:51 +0200 Subject: [PATCH 04/31] hotfix for search input --- client/src/routes/Home.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/client/src/routes/Home.tsx b/client/src/routes/Home.tsx index 8eb4ad5..ce70175 100644 --- a/client/src/routes/Home.tsx +++ b/client/src/routes/Home.tsx @@ -54,9 +54,7 @@ class Home extends Component { private searchAssets = (event: FormEvent) => { event.preventDefault() - this.props.history.push( - `/search?text=${JSON.stringify(this.state.search)}` - ) + this.props.history.push(`/search?text=${this.state.search}`) } } From 269acdfc8fc106090232b0fa9716d04c7e195062 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 30 Apr 2019 18:45:41 +0200 Subject: [PATCH 05/31] Release 0.2.6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 6648864..e6070f2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "commons", "description": "Ocean Protocol marketplace to explore, download, and publish open data sets.", - "version": "0.2.5", + "version": "0.2.6", "license": "Apache-2.0", "scripts": { "install": "./scripts/install.sh", From 30d6679eb2ae1cb40f8deb053b49d5a6fb71f089 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 30 Apr 2019 18:46:02 +0200 Subject: [PATCH 06/31] update changelog --- CHANGELOG.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3181da..1cb1493 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,12 +4,32 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v0.2.6](https://github.com/oceanprotocol/commons/compare/v0.2.5...v0.2.6) + +> 30 April 2019 + +- add blockies for account display [`#115`](https://github.com/oceanprotocol/commons/pull/115) +- Setup coverage reporting [`#116`](https://github.com/oceanprotocol/commons/pull/116) +- report test coverage to Codacy [`5e8ed02`](https://github.com/oceanprotocol/commons/commit/5e8ed026d556e98471fb9e0fbb5b680955e0dc8a) +- hotfix for search input [`a8969bb`](https://github.com/oceanprotocol/commons/commit/a8969bb70c0f206ea38c969d3b22706d8a9af29d) +- Release 0.2.6 [`269acdf`](https://github.com/oceanprotocol/commons/commit/269acdfc8fc106090232b0fa9716d04c7e195062) + +#### [v0.2.5](https://github.com/oceanprotocol/commons/compare/v0.2.4...v0.2.5) + +> 29 April 2019 + +- sanitize search input [`#114`](https://github.com/oceanprotocol/commons/pull/114) +- update telegram link [`#113`](https://github.com/oceanprotocol/commons/pull/113) +- update changelog [`0d3afc8`](https://github.com/oceanprotocol/commons/commit/0d3afc821900fada63013fc8aec434a634c67199) +- Release 0.2.5 [`8290609`](https://github.com/oceanprotocol/commons/commit/82906093e60f4b52302b6f08f19787f65b24fafd) + #### [v0.2.4](https://github.com/oceanprotocol/commons/compare/v0.2.3...v0.2.4) > 29 April 2019 - fix search titles [`#112`](https://github.com/oceanprotocol/commons/pull/112) - Release 0.2.4 [`8f832b6`](https://github.com/oceanprotocol/commons/commit/8f832b63220a46a8de0061ffc2498186e2099315) +- update telegram link [`e6806f4`](https://github.com/oceanprotocol/commons/commit/e6806f467d6e2299bc0886eba53d0646dfa4df31) #### [v0.2.3](https://github.com/oceanprotocol/commons/compare/v0.2.2...v0.2.3) From 08143be524b143e539c9948ba977986964966bfc Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 30 Apr 2019 19:24:50 +0200 Subject: [PATCH 07/31] fix badges --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d401af6..7857071 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,8 @@ > https://commons.oceanprotocol.com [![Build Status](https://travis-ci.com/oceanprotocol/commons.svg?branch=master)](https://travis-ci.com/oceanprotocol/commons) -[![Codacy Badge](https: //api.codacy.com/project/badge/Grade/6a19987e62344b1c9c1d5bc9f315c733)](https://www.codacy.com/app/ocean-protocol/commons) -[![Codacy Badge](https: //api.codacy.com/project/badge/Coverage/6a19987e62344b1c9c1d5bc9f315c733)](https://www.codacy.com/app/ocean-protocol/commons) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/6a19987e62344b1c9c1d5bc9f315c733)](https://www.codacy.com/app/ocean-protocol/commons) +[![Codacy Badge](https://api.codacy.com/project/badge/Coverage/6a19987e62344b1c9c1d5bc9f315c733)](https://www.codacy.com/app/ocean-protocol/commons) [![code style: prettier](https://img.shields.io/badge/code_style-prettier-7b1173.svg?style=flat-square)](https://github.com/prettier/prettier) [![js oceanprotocol](https://img.shields.io/badge/js-oceanprotocol-7b1173.svg)](https://github.com/oceanprotocol/eslint-config-oceanprotocol) [![css bigchaindb](https://img.shields.io/badge/css-bigchaindb-39BA91.svg)](https://github.com/bigchaindb/stylelint-config-bigchaindb) From 9bdfca4be4bc4568035f5335ea997413c699d22a Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 30 Apr 2019 19:19:28 +0200 Subject: [PATCH 08/31] more tests --- client/__mocks__/user-mock.ts | 31 + client/package-lock.json | 108 +- client/package.json | 43 +- client/src/App.test.tsx | 15 + client/src/App.tsx | 45 +- client/src/Routes.test.tsx | 15 + client/src/components/atoms/Account.test.tsx | 28 + client/src/components/atoms/Account.tsx | 2 +- .../components/atoms/CategoryImage.test.tsx | 16 +- client/src/components/atoms/CategoryImage.tsx | 1 - .../src/components/atoms/Form/Form.test.tsx | 29 + .../src/components/atoms/Form/Input.test.tsx | 90 + client/src/components/atoms/Form/Input.tsx | 12 +- .../components/atoms/Form/InputGroup.test.tsx | 10 + .../src/components/atoms/Form/Label.test.tsx | 20 + client/src/components/atoms/Form/Row.test.tsx | 10 + client/src/components/atoms/Markdown.test.tsx | 10 + client/src/components/atoms/Markdown.tsx | 4 +- .../molecules/AccountStatus/Popover.test.tsx | 49 + .../molecules/AccountStatus/Popover.tsx | 1 + .../molecules/AccountStatus/index.test.tsx | 20 + .../molecules/AccountStatus/index.tsx | 2 +- .../components/molecules/Pagination.test.tsx | 2 +- client/src/components/organisms/Header.tsx | 32 +- .../components/organisms/Web3message.test.tsx | 59 +- .../src/components/templates/Route.test.tsx | 24 + client/src/context/UserProvider.tsx | 8 +- client/src/data/web3message.json | 2 +- client/src/hoc/withTracker.tsx | 2 +- client/src/index.test.tsx | 22 + client/src/index.tsx | 18 +- client/src/ocean.test.ts | 17 + client/src/ocean.ts | 2 +- client/src/routes/About.test.tsx | 10 + .../src/routes/Details/AssetDetails.test.tsx | 68 + client/src/routes/Details/AssetDetails.tsx | 31 +- client/src/routes/Details/AssetFile.test.tsx | 77 + client/src/routes/Details/AssetFile.tsx | 11 +- .../routes/Details/AssetFilesDetails.test.tsx | 43 + .../src/routes/Details/AssetFilesDetails.tsx | 17 +- client/src/routes/Details/index.test.tsx | 21 + client/src/routes/Details/index.tsx | 33 +- client/src/routes/Faucet.test.tsx | 43 + client/src/routes/Faucet.tsx | 2 +- client/src/routes/History.test.tsx | 38 + client/src/routes/Home.test.tsx | 10 + client/src/routes/Home.tsx | 3 +- client/src/routes/NotFound.test.tsx | 10 + client/src/routes/Publish/Files/Item.test.tsx | 39 + .../routes/Publish/Files/ItemForm.test.tsx | 63 + client/src/routes/Publish/Files/ItemForm.tsx | 8 +- .../src/routes/Publish/Files/index.test.tsx | 90 + client/src/routes/Publish/Files/index.tsx | 18 +- client/src/routes/Publish/Progress.test.tsx | 19 + client/src/routes/Publish/Step.test.tsx | 46 + .../Publish/StepRegisterContent.test.tsx | 76 + .../routes/Publish/StepRegisterContent.tsx | 7 +- client/src/routes/Publish/index.test.tsx | 11 + client/src/routes/Search.test.tsx | 51 + client/src/routes/Search.tsx | 27 +- client/src/routes/Styleguide.test.tsx | 10 + package-lock.json | 1688 ++--------------- package.json | 14 +- server/package-lock.json | 1106 +++++------ server/package.json | 9 +- server/src/routes/UrlCheckRouter.ts | 4 +- server/src/server.ts | 1 + server/test/api.test.ts | 20 +- 68 files changed, 2037 insertions(+), 2436 deletions(-) create mode 100644 client/__mocks__/user-mock.ts create mode 100644 client/src/Routes.test.tsx create mode 100644 client/src/components/atoms/Account.test.tsx create mode 100644 client/src/components/atoms/Form/Form.test.tsx create mode 100644 client/src/components/atoms/Form/Input.test.tsx create mode 100644 client/src/components/atoms/Form/InputGroup.test.tsx create mode 100644 client/src/components/atoms/Form/Label.test.tsx create mode 100644 client/src/components/atoms/Form/Row.test.tsx create mode 100644 client/src/components/atoms/Markdown.test.tsx create mode 100644 client/src/components/molecules/AccountStatus/Popover.test.tsx create mode 100644 client/src/components/molecules/AccountStatus/index.test.tsx create mode 100644 client/src/components/templates/Route.test.tsx create mode 100644 client/src/index.test.tsx create mode 100644 client/src/ocean.test.ts create mode 100644 client/src/routes/About.test.tsx create mode 100644 client/src/routes/Details/AssetDetails.test.tsx create mode 100644 client/src/routes/Details/AssetFile.test.tsx create mode 100644 client/src/routes/Details/AssetFilesDetails.test.tsx create mode 100644 client/src/routes/Details/index.test.tsx create mode 100644 client/src/routes/Faucet.test.tsx create mode 100644 client/src/routes/History.test.tsx create mode 100644 client/src/routes/Home.test.tsx create mode 100644 client/src/routes/NotFound.test.tsx create mode 100644 client/src/routes/Publish/Files/Item.test.tsx create mode 100644 client/src/routes/Publish/Files/ItemForm.test.tsx create mode 100644 client/src/routes/Publish/Files/index.test.tsx create mode 100644 client/src/routes/Publish/Progress.test.tsx create mode 100644 client/src/routes/Publish/Step.test.tsx create mode 100644 client/src/routes/Publish/StepRegisterContent.test.tsx create mode 100644 client/src/routes/Publish/index.test.tsx create mode 100644 client/src/routes/Search.test.tsx create mode 100644 client/src/routes/Styleguide.test.tsx diff --git a/client/__mocks__/user-mock.ts b/client/__mocks__/user-mock.ts new file mode 100644 index 0000000..1f4e32e --- /dev/null +++ b/client/__mocks__/user-mock.ts @@ -0,0 +1,31 @@ +const userMock = { + isLogged: false, + isLoading: false, + isWeb3: false, + isNile: false, + account: '', + web3: {}, + ocean: {}, + balance: { eth: 0, ocn: 0 }, + network: '', + requestFromFaucet: jest.fn(), + unlockAccounts: jest.fn(), + message: '' +} + +const userMockConnected = { + isLogged: true, + isLoading: false, + isWeb3: true, + isNile: true, + account: '0xxxxxx', + web3: {}, + ocean: {}, + balance: { eth: 0, ocn: 0 }, + network: '', + requestFromFaucet: jest.fn(), + unlockAccounts: jest.fn(), + message: '' +} + +export { userMock, userMockConnected } diff --git a/client/package-lock.json b/client/package-lock.json index a929be0..fc68d7b 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1242,14 +1242,14 @@ "integrity": "sha512-p2n505t2K0zD1ZvGPhI6EsSviEVLCB7BYowhf/ONmVaWED138PaG4Z9nY6YuHU383uOoIWT+Lq3dLkFzDzstXw==" }, "@oceanprotocol/keeper-contracts": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@oceanprotocol/keeper-contracts/-/keeper-contracts-0.9.1.tgz", - "integrity": "sha512-c1LvaH+e1tzow0gZLwSWe19ap+DrZuNmZfxBdwEVEPQXarI0jTXa5qVDoiBow8kBWaqSIUgFAzQOJW8rKdlS1A==" + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/@oceanprotocol/keeper-contracts/-/keeper-contracts-0.9.7.tgz", + "integrity": "sha512-nOpbSE/BG+tQBfLXZ/EqSOvUPzOuot84vHxjAfEU8K3v4eOnqFJVo+oyB7KlcF87wBJXDmi/Ir9qHY4c0Saipg==" }, "@oceanprotocol/squid": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@oceanprotocol/squid/-/squid-0.5.7.tgz", - "integrity": "sha512-q2rdlVT4n0IW8FcTrE9sfyl8lC0moAKJillUSfWadZHjdaVikBTS3iiPiKn8RIvfBL4j3RxlVHdGQdEl8rIDfA==", + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/@oceanprotocol/squid/-/squid-0.5.8.tgz", + "integrity": "sha512-1hEOA5rF8qsLF6uSMVBAN4c6Licn2FCGdWLCHpZ6ePzyA2/3RXxhreUE/0mcTkmdITwlx1rCFFO+rYhDqgyPVQ==", "requires": { "@oceanprotocol/keeper-contracts": "^0.9.1", "bignumber.js": "^8.1.1", @@ -1606,6 +1606,16 @@ "resolved": "https://registry.npmjs.org/@oceanprotocol/typographies/-/typographies-0.1.0.tgz", "integrity": "sha512-kMsZsqvzpz9KzVbVZzllwhPoIC3zbqsdRrClagZL/C2PHzgLrKGC1kYn3gPt0RMIFg9ZjrwieKaxlgIK9i9zzg==" }, + "@react-mock/state": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@react-mock/state/-/state-0.1.8.tgz", + "integrity": "sha512-oX16w3FKhfF2+nQE+C4frrfVddzwhF4YEYxF8frXzboEDZsxCRpFuQC0za3T59ZxI4ygBarBqDrhYzipGsD9TQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.1.2", + "lodash": "^4.17.11" + } + }, "@sheerun/mutationobserver-shim": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.2.tgz", @@ -1900,9 +1910,9 @@ "dev": true }, "@types/jest": { - "version": "24.0.11", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.11.tgz", - "integrity": "sha512-2kLuPC5FDnWIDvaJBzsGTBQaBbnDweznicvK7UGYzlIJP4RJR2a4A/ByLUXEyEgag6jz8eHdlWExGDtH3EYUXQ==", + "version": "24.0.12", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-24.0.12.tgz", + "integrity": "sha512-60sjqMhat7i7XntZckcSGV8iREJyXXI6yFHZkSZvCPUeOnEJ/VP1rU/WpEWQ56mvoh8NhC+sfKAuJRTyGtCOow==", "dev": true, "requires": { "@types/jest-diff": "*" @@ -1932,9 +1942,9 @@ "dev": true }, "@types/react": { - "version": "16.8.14", - "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.14.tgz", - "integrity": "sha512-26tFVJ1omGmzIdFTFmnC5zhz1GTaqCjxgUxV4KzWvsybF42P7/j4RBn6UeO3KbHPXqKWZszMXMoI65xIWm954A==", + "version": "16.8.15", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.8.15.tgz", + "integrity": "sha512-dMhzw1rWK+wwJWvPp5Pk12ksSrm/z/C/+lOQbMZ7YfDQYnJ02bc0wtg4EJD9qrFhuxFrf/ywNgwTboucobJqQg==", "dev": true, "requires": { "@types/prop-types": "*", @@ -2009,9 +2019,9 @@ } }, "@types/react-transition-group": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-2.9.0.tgz", - "integrity": "sha512-hP7vUaZMVSWKxo133P8U51U6UZ7+pbY+eAQb8+p6SZ2rB1rj3mOTDgTzhhi+R2SCB4S+sWekAAGoxdiZPG0ReQ==", + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-2.9.1.tgz", + "integrity": "sha512-1usq4DRUVBFnxc9KGJAlJO9EpQrLZGDDEC8wDOn2+2ODSyudYo8FiIzPDRaX/hfQjHqGeeoNaNdA2bj0l35hZQ==", "dev": true, "requires": { "@types/react": "*" @@ -5145,7 +5155,8 @@ "deep-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=" + "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", + "dev": true }, "deep-is": { "version": "0.1.3", @@ -5439,15 +5450,15 @@ } }, "dom-testing-library": { - "version": "3.19.3", - "resolved": "https://registry.npmjs.org/dom-testing-library/-/dom-testing-library-3.19.3.tgz", - "integrity": "sha512-oiI+oq91iO/Vpp+pt8PqfqLfBK074FH0eprhoFNvBCvJOk7vL4ozbe/yj/kEEGR6kiT4F3MAam19AX1fdGFjrA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/dom-testing-library/-/dom-testing-library-4.0.1.tgz", + "integrity": "sha512-Yr0yWlpI2QdTDEgPEk0TEekwP4VyZlJpl9E7nKP2FCKni44cb1jzjsy9KX6hBDsNA7EVlPpq9DHzO2eoEaqDZg==", "dev": true, "requires": { - "@babel/runtime": "^7.3.4", + "@babel/runtime": "^7.4.3", "@sheerun/mutationobserver-shim": "^0.3.2", - "pretty-format": "^24.5.0", - "wait-for-expect": "^1.1.0" + "pretty-format": "^24.7.0", + "wait-for-expect": "^1.1.1" } }, "dom-walk": { @@ -8810,9 +8821,9 @@ } }, "jest-dom": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/jest-dom/-/jest-dom-3.1.3.tgz", - "integrity": "sha512-V9LdySiA74/spcAKEG3FRMRKnisKlcYr3EeCNYI4n7CWNE7uYg5WoBUHeGXirjWjRYLLZ5vx8rUaR/6x6o75oQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/jest-dom/-/jest-dom-3.1.4.tgz", + "integrity": "sha512-ruIRHoRVnqPRt/HSS2aFukfhTpjEoq1I6PkYptKK5U2EeRm1eeOXG7BFiaMncTaGu4COSoCF84oLHj02+J5VDg==", "dev": true, "requires": { "chalk": "^2.4.1", @@ -10984,9 +10995,9 @@ } }, "node-fetch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.3.0.tgz", - "integrity": "sha512-MOd8pV3fxENbryESLgVIeaGKrdl+uaYhCSSVkjeOb/31/njTpcis5aWfdqgNlHIrKOLRbMnfPINPOML2CIFeXA==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.5.0.tgz", + "integrity": "sha512-YuZKluhWGJwCcUu4RlZstdAxr8bFfOVHakc1mplwHkk8J+tqM1Y5yraYvIUpeX8aY7+crCwiELJq7Vl0o0LWXw==" }, "node-forge": { "version": "0.7.5", @@ -13049,9 +13060,9 @@ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "query-string": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.4.2.tgz", - "integrity": "sha512-DfJqAen17LfLA3rQ+H5S4uXphrF+ANU1lT2ijds4V/Tj4gZxA3gx5/tg1bz7kYCmwna7LyJNCYqO7jNRzo3aLw==", + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.5.0.tgz", + "integrity": "sha512-TYC4hDjZSvVxLMEucDMySkuAS9UIzSbAiYGyA9GWCjLKB8fQpviFbjd20fD7uejCDxZS+ftSdBKE6DS+xucJFg==", "requires": { "decode-uri-component": "^0.2.0", "split-on-first": "^1.0.0", @@ -13178,9 +13189,9 @@ } }, "react-datepicker": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-2.4.0.tgz", - "integrity": "sha512-ZOY7oYmZt+jeSFGj4NHNdCg7WzzIljPui98lGRd7YHNPO3B8Re4WVNALktp/x+mz1ofNO+TPzodMLMXzqjAUnw==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-2.5.0.tgz", + "integrity": "sha512-X8D+5CqumSUwoq/x5d8O0neYDRmPmwVcyCktVbs5juXV4s73beV6sMf87hM6lxMSanWeB+jpx8waxJcPqsmCIg==", "requires": { "classnames": "^2.2.5", "date-fns": "^2.0.0-alpha.23", @@ -13359,19 +13370,24 @@ "integrity": "sha512-O9JRum1Zq/qCPFH5qVEvDDrVun8Jv9vbHtZXCR1EuRj9sKg1xJTlHxBzU6AkCzpvxRLuiY4OKImy3cDLQ+UTdg==", "dev": true }, + "react-fast-compare": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-2.0.4.tgz", + "integrity": "sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==" + }, "react-ga": { "version": "2.5.7", "resolved": "https://registry.npmjs.org/react-ga/-/react-ga-2.5.7.tgz", "integrity": "sha512-UmATFaZpEQDO96KFjB5FRLcT6hFcwaxOmAJZnjrSiFN/msTqylq9G+z5Z8TYzN/dbamDTiWf92m6MnXXJkAivQ==" }, "react-helmet": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.0.tgz", - "integrity": "sha1-qBgR3yExOm1VxfBYxK66XW89l6c=", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/react-helmet/-/react-helmet-5.2.1.tgz", + "integrity": "sha512-CnwD822LU8NDBnjCpZ4ySh8L6HYyngViTZLfBBb3NjtrpN8m49clH8hidHouq20I51Y6TpCTISCBbqiY5GamwA==", "requires": { - "deep-equal": "^1.0.1", "object-assign": "^4.1.1", "prop-types": "^15.5.4", + "react-fast-compare": "^2.0.2", "react-side-effect": "^1.1.0" } }, @@ -13568,13 +13584,13 @@ } }, "react-testing-library": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/react-testing-library/-/react-testing-library-6.1.2.tgz", - "integrity": "sha512-z69lhRDGe7u/NOjDCeFRoe1cB5ckJ4656n0tj/Fdcr6OoBUu7q9DBw0ftR7v5i3GRpdSWelnvl+feZFOyXyxwg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/react-testing-library/-/react-testing-library-7.0.0.tgz", + "integrity": "sha512-8SHqwG+uhN9VhAgNVkVa3f7VjTw/L5CIaoAxKmy+EZuDQ6O+VsfcpRAyUw3MDL1h8S/gGrEiazmHBVL/uXsftA==", "dev": true, "requires": { - "@babel/runtime": "^7.4.2", - "dom-testing-library": "^3.19.0" + "@babel/runtime": "^7.4.3", + "dom-testing-library": "^4.0.0" } }, "react-transition-group": { @@ -15826,9 +15842,9 @@ } }, "typescript": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.4.tgz", - "integrity": "sha512-xt5RsIRCEaf6+j9AyOBgvVuAec0i92rgCaS3S+UVf5Z/vF2Hvtsw08wtUTJqp4djwznoAgjSxeCcU4r+CcDBJA==", + "version": "3.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.5.tgz", + "integrity": "sha512-YycBxUb49UUhdNMU5aJ7z5Ej2XGmaIBL0x34vZ82fn3hGvD+bgrMrVDpatgz2f7YxUMJxMkbWxJZeAvDxVe7Vw==", "dev": true }, "ua-parser-js": { diff --git a/client/package.json b/client/package.json index c5f0def..6984755 100644 --- a/client/package.json +++ b/client/package.json @@ -6,14 +6,14 @@ "scripts": { "start": "react-scripts start", "build": "react-scripts --max_old_space_size=4096 build", - "test": "react-scripts test --coverage", - "test:watch": "react-scripts test --coverage --watch", + "test": "react-scripts test --coverage --watchAll=false", + "test:watch": "react-scripts test --coverage", "eject": "react-scripts eject", "coverage": "cat coverage/lcov.info | codacy-coverage --token 8801f827fe1144ffa85cd7da94f2bbf7" }, "dependencies": { "@oceanprotocol/art": "^2.2.0", - "@oceanprotocol/squid": "^0.5.7", + "@oceanprotocol/squid": "^0.5.8", "@oceanprotocol/typographies": "^0.1.0", "classnames": "^2.2.6", "ethereum-blockies": "MyEtherWallet/blockies", @@ -21,14 +21,14 @@ "history": "^4.9.0", "is-url": "^1.2.4", "moment": "^2.24.0", - "query-string": "^6.4.2", + "query-string": "^6.5.0", "react": "^16.8.6", - "react-datepicker": "^2.3.0", + "react-datepicker": "^2.5.0", "react-dom": "^16.8.6", - "react-dotdotdot": "^1.2.3", + "react-dotdotdot": "^1.3.0", "react-ga": "^2.5.7", - "react-helmet": "^5.2.0", - "react-markdown": "^4.0.6", + "react-helmet": "^5.2.1", + "react-markdown": "^4.0.8", "react-moment": "^0.9.2", "react-paginate": "^6.3.0", "react-popper": "^1.3.3", @@ -38,24 +38,25 @@ "web3": "1.0.0-beta.37" }, "devDependencies": { + "@react-mock/state": "^0.1.8", "@types/classnames": "^2.2.7", "@types/filesize": "^4.1.0", "@types/is-url": "^1.2.28", - "@types/jest": "^24.0.11", - "@types/react": "^16.8.13", - "@types/react-datepicker": "^2.2.1", - "@types/react-dom": "^16.8.3", + "@types/jest": "^24.0.12", + "@types/react": "^16.8.15", + "@types/react-datepicker": "^2.3.0", + "@types/react-dom": "^16.8.4", "@types/react-dotdotdot": "^1.2.0", "@types/react-helmet": "^5.0.8", "@types/react-paginate": "^6.2.1", - "@types/react-router-dom": "^4.3.1", - "@types/react-transition-group": "^2.8.0", + "@types/react-router-dom": "^4.3.2", + "@types/react-transition-group": "^2.9.1", "@types/web3": "^1.0.18", - "jest-dom": "^3.1.3", + "jest-dom": "^3.1.4", "node-sass": "^4.12.0", "react-scripts": "^3.0.0", - "react-testing-library": "^6.1.2", - "typescript": "^3.4.3" + "react-testing-library": "^7.0.0", + "typescript": "^3.4.5" }, "repository": { "type": "git", @@ -66,5 +67,11 @@ "not dead", "not ie <= 11", "not op_mini all" - ] + ], + "jest": { + "collectCoverageFrom": [ + "src/**/*.{ts,tsx}", + "!src/serviceWorker.ts" + ] + } } diff --git a/client/src/App.test.tsx b/client/src/App.test.tsx index fa6de58..8c85a79 100644 --- a/client/src/App.test.tsx +++ b/client/src/App.test.tsx @@ -1,10 +1,25 @@ import React from 'react' import { render } from 'react-testing-library' import App from './App' +import { User } from './context' +import { userMock } from '../__mocks__/user-mock' describe('App', () => { + it('should be able to run tests', () => { + expect(1 + 2).toEqual(3) + }) + it('renders without crashing', () => { const { container } = render() expect(container.firstChild).toBeInTheDocument() }) + + it('renders loading state', () => { + const { container } = render( + + + + ) + expect(container.querySelector('.spinner')).toBeInTheDocument() + }) }) diff --git a/client/src/App.tsx b/client/src/App.tsx index bddc57f..6fb1692 100644 --- a/client/src/App.tsx +++ b/client/src/App.tsx @@ -4,7 +4,6 @@ import Header from './components/organisms/Header' import Footer from './components/organisms/Footer' import Spinner from './components/atoms/Spinner' import { User } from './context' -import UserProvider from './context/UserProvider' import Routes from './Routes' import './styles/global.scss' import styles from './App.module.scss' @@ -12,33 +11,27 @@ import styles from './App.module.scss' export default class App extends Component { public render() { return ( - -
- - <> -
+
+ + <> +
-
- - {states => - states.isLoading ? ( -
- -
- ) : ( - - ) - } -
-
+
+ {this.context.isLoading ? ( +
+ +
+ ) : ( + + )} +
-
- - -
- +
+ + +
) } } + +App.contextType = User diff --git a/client/src/Routes.test.tsx b/client/src/Routes.test.tsx new file mode 100644 index 0000000..5ae671b --- /dev/null +++ b/client/src/Routes.test.tsx @@ -0,0 +1,15 @@ +import React from 'react' +import { BrowserRouter as Router } from 'react-router-dom' +import { render } from 'react-testing-library' +import Routes from './Routes' + +describe('Routes', () => { + it('renders without crashing', () => { + const { container } = render( + + + + ) + expect(container.firstChild).toBeInTheDocument() + }) +}) diff --git a/client/src/components/atoms/Account.test.tsx b/client/src/components/atoms/Account.test.tsx new file mode 100644 index 0000000..da39bd7 --- /dev/null +++ b/client/src/components/atoms/Account.test.tsx @@ -0,0 +1,28 @@ +import React from 'react' +import { render } from 'react-testing-library' +import { toDataUrl } from 'ethereum-blockies' +import Account from './Account' + +describe('Account', () => { + it('renders without crashing', () => { + const { container } = render() + expect(container.firstChild).toBeInTheDocument() + }) + + it('outputs empty state without account', () => { + const { container } = render() + expect(container.firstChild).toHaveTextContent('No account selected') + }) + + it('outputs blockie img', () => { + const account = '0xxxxxxxxxxxxxxx' + const blockies = toDataUrl(account) + + const { container } = render() + expect(container.querySelector('.blockies')).toBeInTheDocument() + expect(container.querySelector('.blockies')).toHaveAttribute( + 'src', + blockies + ) + }) +}) diff --git a/client/src/components/atoms/Account.tsx b/client/src/components/atoms/Account.tsx index 0ff8cd3..de656e2 100644 --- a/client/src/components/atoms/Account.tsx +++ b/client/src/components/atoms/Account.tsx @@ -4,7 +4,7 @@ import { toDataUrl } from 'ethereum-blockies' import styles from './Account.module.scss' const Account = ({ account }: { account: string }) => { - const blockies = toDataUrl(account) + const blockies = account && toDataUrl(account) return account && blockies ? (
diff --git a/client/src/components/atoms/CategoryImage.test.tsx b/client/src/components/atoms/CategoryImage.test.tsx index 8e9fca4..1b07d03 100644 --- a/client/src/components/atoms/CategoryImage.test.tsx +++ b/client/src/components/atoms/CategoryImage.test.tsx @@ -1,16 +1,13 @@ import React from 'react' import { render } from 'react-testing-library' -import slugify from 'slugify' import CategoryImage from './CategoryImage' import formPublish from '../../data/form-publish.json' describe('CategoryImage', () => { it('renders fallback image', () => { - const { container, getByTestId } = render( - - ) + const { container } = render() expect(container.firstChild).toBeInTheDocument() - expect(getByTestId('image').style.backgroundImage).toMatch( + expect(container.firstChild.style.backgroundImage).toMatch( /jellyfish-back/ ) }) @@ -21,13 +18,8 @@ describe('CategoryImage', () => { : [] options.map((category: string) => { - const { getByTestId } = render( - - ) - expect(getByTestId('image')).toBeInTheDocument() - // expect(getByTestId('image').style.backgroundImage).toMatch( - // slugify(category, { lower: true }) - // ) + const { container } = render() + expect(container.firstChild).toBeInTheDocument() }) }) }) diff --git a/client/src/components/atoms/CategoryImage.tsx b/client/src/components/atoms/CategoryImage.tsx index 52c77c4..a02df06 100644 --- a/client/src/components/atoms/CategoryImage.tsx +++ b/client/src/components/atoms/CategoryImage.tsx @@ -148,7 +148,6 @@ export default class CategoryImage extends PureComponent<{ category: string }> { style={{ backgroundImage: `url(${image})` }} - {...this.props} /> ) } diff --git a/client/src/components/atoms/Form/Form.test.tsx b/client/src/components/atoms/Form/Form.test.tsx new file mode 100644 index 0000000..99a9d4c --- /dev/null +++ b/client/src/components/atoms/Form/Form.test.tsx @@ -0,0 +1,29 @@ +import React from 'react' +import { render } from 'react-testing-library' +import Form from './Form' + +describe('Form', () => { + it('renders without crashing', () => { + const { container } = render(
Hello
) + expect(container.firstChild).toBeInTheDocument() + }) + + it('renders title & description when set', () => { + const { container } = render( +
+ Hello +
+ ) + expect(container.querySelector('.formTitle')).toHaveTextContent( + 'Hello Title' + ) + expect(container.querySelector('.formDescription')).toHaveTextContent( + 'Hello Description' + ) + }) + + it('can switch to minimal', () => { + const { container } = render(
Hello
) + expect(container.firstChild).toHaveClass('formMinimal') + }) +}) diff --git a/client/src/components/atoms/Form/Input.test.tsx b/client/src/components/atoms/Form/Input.test.tsx new file mode 100644 index 0000000..9fa42ed --- /dev/null +++ b/client/src/components/atoms/Form/Input.test.tsx @@ -0,0 +1,90 @@ +import React from 'react' +import { render } from 'react-testing-library' +import Input from './Input' + +describe('Input', () => { + it('renders default without crashing', () => { + const { container } = render() + expect(container.firstChild).toBeInTheDocument() + expect(container.querySelector('.label')).toHaveTextContent('My Input') + expect(container.querySelector('.input')).toHaveAttribute( + 'id', + 'my-input' + ) + }) + + it('renders as text input by default', () => { + const { container } = render() + expect(container.querySelector('.input')).toHaveAttribute( + 'type', + 'text' + ) + }) + + it('renders search', () => { + const { container } = render( + + ) + expect(container.querySelector('.input')).toHaveAttribute( + 'type', + 'search' + ) + expect(container.querySelector('label + div')).toHaveClass( + 'inputWrapSearch' + ) + }) + + it('renders select', () => { + const { container } = render( + + ) + expect(container.querySelector('select')).toBeInTheDocument() + }) + + it('renders textarea', () => { + const { container } = render( + + ) + expect(container.querySelector('textarea')).toBeInTheDocument() + }) + + it('renders radios', () => { + const { container } = render( + + ) + expect(container.querySelector('input[type=radio]')).toBeInTheDocument() + }) + + it('renders checkboxes', () => { + const { container } = render( + + ) + expect( + container.querySelector('input[type=checkbox]') + ).toBeInTheDocument() + }) + + it('renders date picker', () => { + const { container } = render( + + ) + expect( + container.querySelector('.react-datepicker-wrapper') + ).toBeInTheDocument() + }) +}) diff --git a/client/src/components/atoms/Form/Input.tsx b/client/src/components/atoms/Form/Input.tsx index 3f732e5..d6e5433 100644 --- a/client/src/components/atoms/Form/Input.tsx +++ b/client/src/components/atoms/Form/Input.tsx @@ -60,9 +60,8 @@ export default class Input extends PureComponent { } private handleDateChange = (date: Date) => { - this.setState({ - dateCreated: date - }) + this.setState({ dateCreated: date }) + const event = { currentTarget: { name: 'dateCreated', @@ -80,7 +79,8 @@ export default class Input extends PureComponent { name, required, onChange, - value + value, + rows } = this.props const wrapClass = this.inputWrapClasses() @@ -119,7 +119,7 @@ export default class Input extends PureComponent { className={styles.input} onFocus={this.toggleFocus} onBlur={this.toggleFocus} - {...this.props} + rows={rows} />
) @@ -174,6 +174,7 @@ export default class Input extends PureComponent { { ) : ( { + it('renders without crashing', () => { + const { container } = render(Hello) + expect(container.firstChild).toBeInTheDocument() + }) +}) diff --git a/client/src/components/atoms/Form/Label.test.tsx b/client/src/components/atoms/Form/Label.test.tsx new file mode 100644 index 0000000..a0a6604 --- /dev/null +++ b/client/src/components/atoms/Form/Label.test.tsx @@ -0,0 +1,20 @@ +import React from 'react' +import { render } from 'react-testing-library' +import Label from './Label' + +describe('Label', () => { + it('renders without crashing', () => { + const { container } = render() + expect(container.firstChild).toBeInTheDocument() + }) + + it('renders required state', () => { + const { container } = render( + + ) + expect(container.firstChild).toHaveAttribute('title', 'Required') + expect(container.firstChild).toHaveClass('required') + }) +}) diff --git a/client/src/components/atoms/Form/Row.test.tsx b/client/src/components/atoms/Form/Row.test.tsx new file mode 100644 index 0000000..3416d91 --- /dev/null +++ b/client/src/components/atoms/Form/Row.test.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import { render } from 'react-testing-library' +import Row from './Row' + +describe('Row', () => { + it('renders without crashing', () => { + const { container } = render(Hello) + expect(container.firstChild).toBeInTheDocument() + }) +}) diff --git a/client/src/components/atoms/Markdown.test.tsx b/client/src/components/atoms/Markdown.test.tsx new file mode 100644 index 0000000..2a48656 --- /dev/null +++ b/client/src/components/atoms/Markdown.test.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import { render } from 'react-testing-library' +import Markdown from './Markdown' + +describe('Markdown', () => { + it('renders without crashing', () => { + const { container } = render() + expect(container.firstChild).toBeInTheDocument() + }) +}) diff --git a/client/src/components/atoms/Markdown.tsx b/client/src/components/atoms/Markdown.tsx index b9b92f6..0a51726 100644 --- a/client/src/components/atoms/Markdown.tsx +++ b/client/src/components/atoms/Markdown.tsx @@ -1,7 +1,7 @@ import React from 'react' import ReactMarkdown from 'react-markdown' -const Description = ({ +const Markdown = ({ text, className }: { @@ -15,4 +15,4 @@ const Description = ({ return } -export default Description +export default Markdown diff --git a/client/src/components/molecules/AccountStatus/Popover.test.tsx b/client/src/components/molecules/AccountStatus/Popover.test.tsx new file mode 100644 index 0000000..8e6b2a9 --- /dev/null +++ b/client/src/components/molecules/AccountStatus/Popover.test.tsx @@ -0,0 +1,49 @@ +import React from 'react' +import { render } from 'react-testing-library' +import Popover from './Popover' +import { userMock, userMockConnected } from '../../../../__mocks__/user-mock' +import { User } from '../../../context' + +describe('Popover', () => { + it('renders without crashing', () => { + const { container } = render( + + null} style={{}} /> + + ) + expect(container.firstChild).toBeInTheDocument() + }) + + it('renders connected without crashing', () => { + const { container } = render( + + null} style={{}} /> + + ) + expect(container.firstChild).toBeInTheDocument() + }) + + it('renders correct network', () => { + const { container } = render( + + null} style={{}} /> + + ) + expect(container.firstChild).toBeInTheDocument() + expect(container.firstChild).toHaveTextContent('Connected to Nile') + }) + + it('renders with wrong network', () => { + const { container } = render( + + null} style={{}} /> + + ) + expect(container.firstChild).toBeInTheDocument() + expect(container.firstChild).toHaveTextContent( + 'Please connect to Custom RPC' + ) + }) +}) diff --git a/client/src/components/molecules/AccountStatus/Popover.tsx b/client/src/components/molecules/AccountStatus/Popover.tsx index 040a744..ea18d02 100644 --- a/client/src/components/molecules/AccountStatus/Popover.tsx +++ b/client/src/components/molecules/AccountStatus/Popover.tsx @@ -9,6 +9,7 @@ export default class Popover extends PureComponent<{ }> { public render() { const { account, balance, network, isWeb3, isNile } = this.context + return (
{ + it('renders without crashing', () => { + const { container } = render() + expect(container.firstChild).toBeInTheDocument() + }) + + it('togglePopover fires', () => { + const { container } = render() + + const indicator = container.querySelector('.statusIndicator') + + indicator && fireEvent.mouseOver(indicator) + expect(container.querySelector('.popover')).toBeInTheDocument() + indicator && fireEvent.mouseOut(indicator) + }) +}) diff --git a/client/src/components/molecules/AccountStatus/index.tsx b/client/src/components/molecules/AccountStatus/index.tsx index 8c420bb..91fdd09 100644 --- a/client/src/components/molecules/AccountStatus/index.tsx +++ b/client/src/components/molecules/AccountStatus/index.tsx @@ -19,7 +19,7 @@ export default class AccountStatus extends PureComponent< isPopoverOpen: false } - public togglePopover() { + private togglePopover() { this.setState(prevState => ({ isPopoverOpen: !prevState.isPopoverOpen })) diff --git a/client/src/components/molecules/Pagination.test.tsx b/client/src/components/molecules/Pagination.test.tsx index c93ec93..9d0b51b 100644 --- a/client/src/components/molecules/Pagination.test.tsx +++ b/client/src/components/molecules/Pagination.test.tsx @@ -2,7 +2,7 @@ import React from 'react' import { render } from 'react-testing-library' import Pagination from './Pagination' -describe('Button', () => { +describe('Pagination', () => { it('renders without crashing', () => { const { container } = render( { - if (item.web3 && !isWeb3) return null - - return ( - - {item.title} - - ) -} +const MenuItem = ({ item }: { item: any }) => ( + + {item.title} + +) export default class Header extends PureComponent { public render() { - const { isWeb3 } = this.context - return (
@@ -37,11 +31,7 @@ export default class Header extends PureComponent { diff --git a/client/src/components/organisms/Web3message.test.tsx b/client/src/components/organisms/Web3message.test.tsx index ca0384c..e38e7c8 100644 --- a/client/src/components/organisms/Web3message.test.tsx +++ b/client/src/components/organisms/Web3message.test.tsx @@ -1,11 +1,62 @@ import React from 'react' -import { render } from 'react-testing-library' +import { render, fireEvent } from 'react-testing-library' import Web3message from './Web3message' +import { User } from '../../context' +import { userMock, userMockConnected } from '../../../__mocks__/user-mock' describe('Web3message', () => { - it('default renders without crashing', () => { - const { container } = render() + it('renders with noWeb3 message', () => { + const { container } = render( + + + + ) + expect(container.firstChild).toHaveTextContent('Not a Web3 Browser') + }) - expect(container.firstChild).toBeInTheDocument() + it('renders with wrongNetwork message', () => { + const { container } = render( + + + + ) + expect(container.firstChild).toHaveTextContent( + 'Not connected to Nile network' + ) + }) + + it('renders with noAccount message', () => { + const { container } = render( + + + + ) + expect(container.firstChild).toHaveTextContent('No accounts detected') + }) + + it('renders with hasAccount message', () => { + const { container } = render( + + + + ) + expect(container.firstChild).toHaveTextContent('0xxxxxx') + }) + + it('button click fires unlockAccounts', () => { + const { getByText } = render( + + + + ) + + fireEvent.click(getByText('Unlock Account')) + expect(userMock.unlockAccounts).toBeCalled() }) }) diff --git a/client/src/components/templates/Route.test.tsx b/client/src/components/templates/Route.test.tsx new file mode 100644 index 0000000..014c0d2 --- /dev/null +++ b/client/src/components/templates/Route.test.tsx @@ -0,0 +1,24 @@ +import React from 'react' +import { render } from 'react-testing-library' +import Route from './Route' + +describe('Route', () => { + it('renders without crashing', () => { + const { container } = render(Hello) + expect(container.firstChild).toBeInTheDocument() + }) + + it('renders title & description', () => { + const { container } = render( + + Hello + + ) + expect(container.querySelector('.title')).toHaveTextContent( + 'Hello Title' + ) + expect(container.querySelector('.description')).toHaveTextContent( + 'Hello Description' + ) + }) +}) diff --git a/client/src/context/UserProvider.tsx b/client/src/context/UserProvider.tsx index 335c6b4..f6c1dff 100644 --- a/client/src/context/UserProvider.tsx +++ b/client/src/context/UserProvider.tsx @@ -1,6 +1,6 @@ import React, { PureComponent } from 'react' import Web3 from 'web3' -import { Logger } from '@oceanprotocol/squid' +import { Logger, Ocean, Account } from '@oceanprotocol/squid' import { User } from '.' import { provideOcean, requestFromFaucet, FaucetResponse } from '../ocean' import { nodeHost, nodePort, nodeScheme } from '../config' @@ -54,7 +54,7 @@ interface UserProviderState { } network: string web3: Web3 - ocean: any + ocean: Ocean requestFromFaucet(account: string): Promise unlockAccounts(): Promise message: string @@ -117,7 +117,7 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { } } - private getWeb3 = async () => { + private getWeb3 = () => { // Modern dapp browsers if (window.ethereum) { window.web3 = new Web3(window.ethereum) @@ -236,7 +236,7 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { } } - private fetchBalance = async (account: any) => { + private fetchBalance = async (account: Account) => { const balance = await account.getBalance() const { eth, ocn } = balance if (eth !== this.state.balance.eth || ocn !== this.state.balance.ocn) { diff --git a/client/src/data/web3message.json b/client/src/data/web3message.json index db9dc81..a441d40 100644 --- a/client/src/data/web3message.json +++ b/client/src/data/web3message.json @@ -1,6 +1,6 @@ { "noweb3": "Not a Web3 Browser. For publishing and downloading an asset you need to setup MetaMask or use any other Web3-capable plugin or browser.", "noAccount": "No accounts detected. For publishing and downloading an asset you need to unlock your Web3 account.", - "hasAccount": "Connected with account ", + "hasAccount": "", "wrongNetwork": "Not connected to Nile network.
Please connect in MetaMask with Custom RPC https://nile.dev-ocean.com" } diff --git a/client/src/hoc/withTracker.tsx b/client/src/hoc/withTracker.tsx index f976590..f5a74b2 100644 --- a/client/src/hoc/withTracker.tsx +++ b/client/src/hoc/withTracker.tsx @@ -8,7 +8,7 @@ const withTracker =

( options: FieldsObject = {} ) => { ReactGA.initialize(analyticsId, { - testMode: process.env.NODE_ENV === 'development', + testMode: process.env.NODE_ENV === 'test', debug: false }) diff --git a/client/src/index.test.tsx b/client/src/index.test.tsx new file mode 100644 index 0000000..4bf2b26 --- /dev/null +++ b/client/src/index.test.tsx @@ -0,0 +1,22 @@ +import ReactDOM from 'react-dom' +import { renderToDOM } from './index' + +describe('test ReactDOM.render', () => { + const originalRender = ReactDOM.render + const originalGetElement = global.document.getElementById + + beforeEach(() => { + global.document.getElementById = () => true + ReactDOM.render = jest.fn() + }) + + afterAll(() => { + global.document.getElementById = originalGetElement + ReactDOM.render = originalRender + }) + + it('should call ReactDOM.render', () => { + renderToDOM() + expect(ReactDOM.render).toHaveBeenCalled() + }) +}) diff --git a/client/src/index.tsx b/client/src/index.tsx index 9dd7ba7..54596d0 100644 --- a/client/src/index.tsx +++ b/client/src/index.tsx @@ -1,9 +1,25 @@ import React from 'react' import ReactDOM from 'react-dom' +import UserProvider from './context/UserProvider' import App from './App' import * as serviceWorker from './serviceWorker' -ReactDOM.render(, document.getElementById('root')) +function renderToDOM() { + const root = document.getElementById('root') + + if (root !== null) { + ReactDOM.render( + + + , + root + ) + } +} + +export { renderToDOM } + +renderToDOM() // If you want your app to work offline and load faster, you can change // unregister() to register() below. Note this comes with some pitfalls. diff --git a/client/src/ocean.test.ts b/client/src/ocean.test.ts new file mode 100644 index 0000000..2628ee6 --- /dev/null +++ b/client/src/ocean.test.ts @@ -0,0 +1,17 @@ +import Web3 from 'web3' +import { provideOcean, requestFromFaucet } from './ocean' + +describe('ocean', () => { + const web3 = new Web3(Web3.givenProvider) + + it('provideOcean can be called', async () => { + const response = await provideOcean(web3) + expect(response.ocean).toBeTruthy() + }) + + it('requestFromFaucet can be called', async () => { + const response = await requestFromFaucet('0xxxxxx') + response && + expect(response.errors[0].msg).toBe('Invalid Ethereum address') + }) +}) diff --git a/client/src/ocean.ts b/client/src/ocean.ts index e752aec..511788a 100644 --- a/client/src/ocean.ts +++ b/client/src/ocean.ts @@ -72,6 +72,6 @@ export async function requestFromFaucet(account: string) { }) return response.json() } catch (error) { - Logger.log('requestFromFaucet', error) + Logger.error('requestFromFaucet', error) } } diff --git a/client/src/routes/About.test.tsx b/client/src/routes/About.test.tsx new file mode 100644 index 0000000..0b1f795 --- /dev/null +++ b/client/src/routes/About.test.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import { render } from 'react-testing-library' +import About from './About' + +describe('About', () => { + it('renders without crashing', () => { + const { container } = render() + expect(container.firstChild).toBeInTheDocument() + }) +}) diff --git a/client/src/routes/Details/AssetDetails.test.tsx b/client/src/routes/Details/AssetDetails.test.tsx new file mode 100644 index 0000000..8de750c --- /dev/null +++ b/client/src/routes/Details/AssetDetails.test.tsx @@ -0,0 +1,68 @@ +import React from 'react' +import { render } from 'react-testing-library' +import { DDO, MetaData } from '@oceanprotocol/squid' +import { BrowserRouter as Router } from 'react-router-dom' +import AssetDetails, { datafilesLine } from './AssetDetails' + +/* eslint-disable @typescript-eslint/no-explicit-any */ +describe('AssetDetails', () => { + it('renders loading without crashing', () => { + const { container } = render( + + ) + expect(container.firstChild).toBeInTheDocument() + }) + + it('renders with data', () => { + const { container } = render( + + + + ) + expect(container.querySelector('.description')).toHaveTextContent( + 'Description' + ) + expect(container.firstChild).toHaveTextContent('Category') + }) + + it('datafilesLine renders correctly for one file', () => { + const files = [ + { + index: 0, + url: 'https://hello.com' + } + ] + const { container } = render(datafilesLine(files)) + expect(container.firstChild).toHaveTextContent('1 data file') + }) + + it('datafilesLine renders correctly for multiple files', () => { + const files = [ + { + index: 0, + url: 'https://hello.com' + }, + { + index: 1, + url: 'https://hello2.com' + } + ] + const { container } = render(datafilesLine(files)) + expect(container.firstChild).toHaveTextContent('2 data files') + }) +}) diff --git a/client/src/routes/Details/AssetDetails.tsx b/client/src/routes/Details/AssetDetails.tsx index 1c418ac..655cd9c 100644 --- a/client/src/routes/Details/AssetDetails.tsx +++ b/client/src/routes/Details/AssetDetails.tsx @@ -1,23 +1,24 @@ import React, { PureComponent } from 'react' import { Link } from 'react-router-dom' import Moment from 'react-moment' +import { DDO, MetaData, File } from '@oceanprotocol/squid' import Markdown from '../../components/atoms/Markdown' import styles from './AssetDetails.module.scss' import AssetFilesDetails from './AssetFilesDetails' interface AssetDetailsProps { - metadata: any - ddo: any + metadata: MetaData + ddo: DDO +} + +export function datafilesLine(files: File[]) { + if (files.length === 1) { + return {files.length} data file + } + return {files.length} data files } export default class AssetDetails extends PureComponent { - private datafilesLine = (files: any) => { - if (files.length === 1) { - return {files.length} data file - } - return {files.length} data files - } - public render() { const { metadata, ddo } = this.props const { base } = metadata @@ -51,14 +52,16 @@ export default class AssetDetails extends PureComponent { )} - {base.files && this.datafilesLine(base.files)} + {base.files && datafilesLine(base.files)}

- + {base.description && ( + + )}
  • diff --git a/client/src/routes/Details/AssetFile.test.tsx b/client/src/routes/Details/AssetFile.test.tsx new file mode 100644 index 0000000..576e154 --- /dev/null +++ b/client/src/routes/Details/AssetFile.test.tsx @@ -0,0 +1,77 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +import React from 'react' +import { render, fireEvent } from 'react-testing-library' +import { DDO } from '@oceanprotocol/squid' +import { StateMock } from '@react-mock/state' +import { User } from '../../context' +import AssetFile from './AssetFile' + +const file = { + index: 0, + url: 'https://hello.com', + contentType: 'zip', + contentLength: 100 +} + +const ddo = ({ id: 'xxx' } as any) as DDO + +const contextConnectedMock = { + isLogged: true, + isLoading: false, + isWeb3: true, + isNile: true, + account: '', + web3: {}, + ocean: {}, + balance: { eth: 0, ocn: 0 }, + network: '', + requestFromFaucet: () => {}, + unlockAccounts: () => {}, + message: '' +} + +describe('AssetFile', () => { + it('renders without crashing', () => { + const { container } = render() + expect(container.firstChild).toBeInTheDocument() + }) + + it('button to be disabled when not connected', () => { + const { container } = render() + expect(container.querySelector('button')).toHaveAttribute('disabled') + }) + + it('button to be enabled when connected', async () => { + const { getByText } = render( + + + + ) + const button = getByText('Get file') + expect(button).not.toHaveAttribute('disabled') + + fireEvent.click(button) + }) + + it('renders loading state', async () => { + const { container } = render( + + + + ) + expect(container.querySelector('.spinner')).toBeInTheDocument() + }) + + it('renders error', async () => { + const { container } = render( + + + + ) + expect(container.querySelector('.error')).toBeInTheDocument() + expect(container.querySelector('.error')).toHaveTextContent( + 'Hello Error' + ) + }) +}) diff --git a/client/src/routes/Details/AssetFile.tsx b/client/src/routes/Details/AssetFile.tsx index 32f7374..a67f2d1 100644 --- a/client/src/routes/Details/AssetFile.tsx +++ b/client/src/routes/Details/AssetFile.tsx @@ -1,5 +1,5 @@ import React, { PureComponent } from 'react' -import { Logger } from '@oceanprotocol/squid' +import { Logger, DDO, File } from '@oceanprotocol/squid' import filesize from 'filesize' import Button from '../../components/atoms/Button' import Spinner from '../../components/atoms/Spinner' @@ -8,8 +8,8 @@ import styles from './AssetFile.module.scss' import ReactGA from 'react-ga' interface AssetFileProps { - file: any - ddo: any + file: File + ddo: DDO } interface AssetFileState { @@ -30,7 +30,7 @@ export default class AssetFile extends PureComponent< private resetState = () => this.setState({ isLoading: true, error: '' }) - private purchaseAsset = async (ddo: any, index: number) => { + private purchaseAsset = async (ddo: DDO, index: number) => { this.resetState() ReactGA.event({ @@ -77,6 +77,7 @@ export default class AssetFile extends PureComponent< const { ddo, file } = this.props const { isLoading, message, error } = this.state const { isLogged, isNile } = this.context + const { index } = file return (
    @@ -97,7 +98,7 @@ export default class AssetFile extends PureComponent<
    ) From 784d6a111fc449a7a2dcace4c06c493f927d5b44 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Fri, 10 May 2019 13:54:44 +0200 Subject: [PATCH 14/31] Release 0.2.8 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index a44bb1b..116cbce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "commons", - "version": "0.2.7", + "version": "0.2.8", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 963357c..4912453 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "commons", "description": "Ocean Protocol marketplace to explore, download, and publish open data sets.", - "version": "0.2.7", + "version": "0.2.8", "license": "Apache-2.0", "scripts": { "install": "./scripts/install.sh", From 70deb126b8f7d2867d6c04c179ea18d9f24d17d6 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Fri, 10 May 2019 13:55:16 +0200 Subject: [PATCH 15/31] update changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a0c8f7c..e73be9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v0.2.8](https://github.com/oceanprotocol/commons/compare/v0.2.7...v0.2.8) + +> 10 May 2019 + +- Fix publish step 2 [`#120`](https://github.com/oceanprotocol/commons/pull/120) +- update changelog [`57b7547`](https://github.com/oceanprotocol/commons/commit/57b7547a21c233da92a959b426d4e6def90f3806) +- pass through all props to textarea [`90c252c`](https://github.com/oceanprotocol/commons/commit/90c252c055c4b162afa13e6bc9493de226dd8610) +- Release 0.2.8 [`784d6a1`](https://github.com/oceanprotocol/commons/commit/784d6a111fc449a7a2dcace4c06c493f927d5b44) + #### [v0.2.7](https://github.com/oceanprotocol/commons/compare/v0.2.6...v0.2.7) > 6 May 2019 From f636170e3cfede29ae53576ad2f56c75b3d47655 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Mon, 13 May 2019 15:55:36 +0200 Subject: [PATCH 16/31] add duero to network detection --- client/__mocks__/user-mock.ts | 4 +-- .../molecules/AccountStatus/Indicator.tsx | 2 +- .../molecules/AccountStatus/Popover.test.tsx | 6 +++- .../molecules/AccountStatus/Popover.tsx | 10 ++++-- .../src/components/organisms/AssetsUser.tsx | 4 +-- .../components/organisms/Web3message.test.tsx | 6 ++-- .../src/components/organisms/Web3message.tsx | 4 +-- client/src/context/UserProvider.tsx | 33 ++++++++++++------- client/src/context/index.tsx | 2 +- client/src/routes/Details/AssetFile.test.tsx | 2 +- client/src/routes/Details/AssetFile.tsx | 4 +-- .../src/routes/Details/AssetFilesDetails.tsx | 2 +- client/src/routes/Faucet.tsx | 4 ++- client/src/routes/History.test.tsx | 2 +- client/src/routes/History.tsx | 2 +- client/src/routes/Publish/index.tsx | 2 +- client/src/routes/Search.test.tsx | 2 +- 17 files changed, 58 insertions(+), 33 deletions(-) diff --git a/client/__mocks__/user-mock.ts b/client/__mocks__/user-mock.ts index 1f4e32e..b80f205 100644 --- a/client/__mocks__/user-mock.ts +++ b/client/__mocks__/user-mock.ts @@ -2,7 +2,7 @@ const userMock = { isLogged: false, isLoading: false, isWeb3: false, - isNile: false, + isCorrectNetwork: false, account: '', web3: {}, ocean: {}, @@ -17,7 +17,7 @@ const userMockConnected = { isLogged: true, isLoading: false, isWeb3: true, - isNile: true, + isCorrectNetwork: true, account: '0xxxxxx', web3: {}, ocean: {}, diff --git a/client/src/components/molecules/AccountStatus/Indicator.tsx b/client/src/components/molecules/AccountStatus/Indicator.tsx index dd7c88a..b69ffbb 100644 --- a/client/src/components/molecules/AccountStatus/Indicator.tsx +++ b/client/src/components/molecules/AccountStatus/Indicator.tsx @@ -22,7 +22,7 @@ const Indicator = ({ {states => !states.isWeb3 ? ( - ) : !states.isLogged || !states.isNile ? ( + ) : !states.isLogged || !states.isCorrectNetwork ? ( ) : states.isLogged ? ( diff --git a/client/src/components/molecules/AccountStatus/Popover.test.tsx b/client/src/components/molecules/AccountStatus/Popover.test.tsx index 8e6b2a9..12864fd 100644 --- a/client/src/components/molecules/AccountStatus/Popover.test.tsx +++ b/client/src/components/molecules/AccountStatus/Popover.test.tsx @@ -36,7 +36,11 @@ describe('Popover', () => { it('renders with wrong network', () => { const { container } = render( null} style={{}} /> diff --git a/client/src/components/molecules/AccountStatus/Popover.tsx b/client/src/components/molecules/AccountStatus/Popover.tsx index ea18d02..d5606dd 100644 --- a/client/src/components/molecules/AccountStatus/Popover.tsx +++ b/client/src/components/molecules/AccountStatus/Popover.tsx @@ -8,7 +8,13 @@ export default class Popover extends PureComponent<{ style: React.CSSProperties }> { public render() { - const { account, balance, network, isWeb3, isNile } = this.context + const { + account, + balance, + network, + isWeb3, + isCorrectNetwork + } = this.context return (
    - {network && !isNile + {network && !isCorrectNetwork ? 'Please connect to Custom RPC\n https://nile.dev-ocean.com' : network && `Connected to ${network} network`}
    diff --git a/client/src/components/organisms/AssetsUser.tsx b/client/src/components/organisms/AssetsUser.tsx index e839262..824d73f 100644 --- a/client/src/components/organisms/AssetsUser.tsx +++ b/client/src/components/organisms/AssetsUser.tsx @@ -57,10 +57,10 @@ export default class AssetsUser extends PureComponent< } public render() { - const { account, isNile } = this.context + const { account, isCorrectNetwork } = this.context return ( - isNile && + isCorrectNetwork && account && (
    {this.props.recent && ( diff --git a/client/src/components/organisms/Web3message.test.tsx b/client/src/components/organisms/Web3message.test.tsx index e38e7c8..155d4f4 100644 --- a/client/src/components/organisms/Web3message.test.tsx +++ b/client/src/components/organisms/Web3message.test.tsx @@ -27,7 +27,9 @@ describe('Web3message', () => { it('renders with noAccount message', () => { const { container } = render( - + ) @@ -49,7 +51,7 @@ describe('Web3message', () => { value={{ ...userMock, isWeb3: true, - isNile: true + isCorrectNetwork: true }} > diff --git a/client/src/components/organisms/Web3message.tsx b/client/src/components/organisms/Web3message.tsx index 6657ab3..0374986 100644 --- a/client/src/components/organisms/Web3message.tsx +++ b/client/src/components/organisms/Web3message.tsx @@ -32,7 +32,7 @@ export default class Web3message extends PureComponent { public render() { const { isWeb3, - isNile, + isCorrectNetwork, isLogged, account, unlockAccounts @@ -40,7 +40,7 @@ export default class Web3message extends PureComponent { return !isWeb3 ? this.message(content.noweb3) - : !isNile + : !isCorrectNetwork ? this.message(content.wrongNetwork) : !isLogged ? this.message(content.noAccount, '', unlockAccounts) diff --git a/client/src/context/UserProvider.tsx b/client/src/context/UserProvider.tsx index f6c1dff..71268b3 100644 --- a/client/src/context/UserProvider.tsx +++ b/client/src/context/UserProvider.tsx @@ -46,7 +46,7 @@ interface UserProviderState { isLogged: boolean isLoading: boolean isWeb3: boolean - isNile: boolean + isCorrectNetwork: boolean account: string balance: { eth: number @@ -74,7 +74,7 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { isLogged: false, isLoading: true, isWeb3: false, - isNile: false, + isCorrectNetwork: false, balance: { eth: 0, ocn: 0 @@ -151,23 +151,31 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { // // Detecting network with window.web3 // - let isNile + let isCorrectNetwork await window.web3.eth.net.getId((err, netId) => { if (err) return - isNile = netId === 8995 - const network = isNile ? 'Nile' : netId.toString() + const isNile = netId === 8995 + const isDuero = netId === 2199 + + isCorrectNetwork = isNile || isDuero + + const network = isNile + ? 'Nile' + : isDuero + ? 'Duero' + : netId.toString() if ( - isNile !== this.state.isNile || + isCorrectNetwork !== this.state.isCorrectNetwork || network !== this.state.network ) { - this.setState({ isNile, network }) + this.setState({ isCorrectNetwork, network }) } }) - if (!isNile) { + if (!isCorrectNetwork) { web3 = this.state.web3 // eslint-disable-line } @@ -201,13 +209,13 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { } private fetchAccounts = async () => { - const { ocean, isWeb3, isLogged, isNile } = this.state + const { ocean, isWeb3, isLogged, isCorrectNetwork } = this.state if (isWeb3) { let accounts // Modern dapp browsers - if (window.ethereum && !isLogged && isNile) { + if (window.ethereum && !isLogged && isCorrectNetwork) { // simply set to empty, and have user click a button somewhere // to initiate account unlocking accounts = [] @@ -250,8 +258,11 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { if (isWeb3) { const network = await ocean.keeper.getNetworkName() const isNile = network === 'Nile' + const isDuero = network === 'Duero' + const isCorrectNetwork = isNile || isDuero - network !== this.state.network && this.setState({ isNile, network }) + network !== this.state.network && + this.setState({ isCorrectNetwork, network }) } } diff --git a/client/src/context/index.tsx b/client/src/context/index.tsx index eab3aa1..a64937e 100644 --- a/client/src/context/index.tsx +++ b/client/src/context/index.tsx @@ -4,7 +4,7 @@ export const User = React.createContext({ isLogged: false, isLoading: false, isWeb3: false, - isNile: false, + isCorrectNetwork: false, account: '', web3: {}, ocean: {}, diff --git a/client/src/routes/Details/AssetFile.test.tsx b/client/src/routes/Details/AssetFile.test.tsx index 576e154..d1c69c8 100644 --- a/client/src/routes/Details/AssetFile.test.tsx +++ b/client/src/routes/Details/AssetFile.test.tsx @@ -20,7 +20,7 @@ const contextConnectedMock = { isLogged: true, isLoading: false, isWeb3: true, - isNile: true, + isCorrectNetwork: true, account: '', web3: {}, ocean: {}, diff --git a/client/src/routes/Details/AssetFile.tsx b/client/src/routes/Details/AssetFile.tsx index 758aba7..6de7054 100644 --- a/client/src/routes/Details/AssetFile.tsx +++ b/client/src/routes/Details/AssetFile.tsx @@ -76,7 +76,7 @@ export default class AssetFile extends PureComponent< public render() { const { ddo, file } = this.props const { isLoading, message, error } = this.state - const { isLogged, isNile } = this.context + const { isLogged, isCorrectNetwork } = this.context const { index } = file return ( @@ -102,7 +102,7 @@ export default class AssetFile extends PureComponent< // https://github.com/oceanprotocol/squid-js/pull/221 // is released onClick={() => this.purchaseAsset(ddo, index || 0)} - disabled={!isLogged || !isNile} + disabled={!isLogged || !isCorrectNetwork} > Get file diff --git a/client/src/routes/Details/AssetFilesDetails.tsx b/client/src/routes/Details/AssetFilesDetails.tsx index 17df7f3..5d16575 100644 --- a/client/src/routes/Details/AssetFilesDetails.tsx +++ b/client/src/routes/Details/AssetFilesDetails.tsx @@ -19,7 +19,7 @@ export default class AssetFilesDetails extends PureComponent<{ ))}
    - {(!this.context.isNile || !this.context.isLogged) && ( + {(!this.context.isCorrectNetwork || !this.context.isLogged) && ( )} diff --git a/client/src/routes/Faucet.tsx b/client/src/routes/Faucet.tsx index 527774e..76556dd 100644 --- a/client/src/routes/Faucet.tsx +++ b/client/src/routes/Faucet.tsx @@ -80,7 +80,9 @@ export default class Faucet extends PureComponent<{}, FaucetState> { diff --git a/client/src/routes/History.test.tsx b/client/src/routes/History.test.tsx index 4dd3ab8..5eae99a 100644 --- a/client/src/routes/History.test.tsx +++ b/client/src/routes/History.test.tsx @@ -14,7 +14,7 @@ describe('History', () => { isLogged: false, isLoading: false, isWeb3: false, - isNile: false, + isCorrectNetwork: false, account: '', web3: {}, ocean: {}, diff --git a/client/src/routes/History.tsx b/client/src/routes/History.tsx index a895287..2b13c28 100644 --- a/client/src/routes/History.tsx +++ b/client/src/routes/History.tsx @@ -8,7 +8,7 @@ export default class History extends Component { public render() { return ( - {(!this.context.isLogged || !this.context.isNile) && ( + {(!this.context.isLogged || !this.context.isCorrectNetwork) && ( )} diff --git a/client/src/routes/Publish/index.tsx b/client/src/routes/Publish/index.tsx index eac62f3..4bc1349 100644 --- a/client/src/routes/Publish/index.tsx +++ b/client/src/routes/Publish/index.tsx @@ -319,7 +319,7 @@ class Publish extends Component<{}, PublishState> { title="Publish" description="Publish a new data set into the Ocean Protocol Network." > - {(!this.context.isLogged || !this.context.isNile) && ( + {(!this.context.isLogged || !this.context.isCorrectNetwork) && ( )} diff --git a/client/src/routes/Search.test.tsx b/client/src/routes/Search.test.tsx index b8bf5d8..7663f93 100644 --- a/client/src/routes/Search.test.tsx +++ b/client/src/routes/Search.test.tsx @@ -14,7 +14,7 @@ describe('Search', () => { isLogged: false, isLoading: false, isWeb3: false, - isNile: false, + isCorrectNetwork: false, account: '', web3: {}, ocean: { From cbffc42bcae1ca40dd109fb6e02462ac9fb8d786 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Mon, 13 May 2019 16:17:59 +0200 Subject: [PATCH 17/31] fix network name during network polling --- client/src/context/UserProvider.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/context/UserProvider.tsx b/client/src/context/UserProvider.tsx index 71268b3..1d19131 100644 --- a/client/src/context/UserProvider.tsx +++ b/client/src/context/UserProvider.tsx @@ -258,7 +258,7 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { if (isWeb3) { const network = await ocean.keeper.getNetworkName() const isNile = network === 'Nile' - const isDuero = network === 'Duero' + const isDuero = network === 'Development' const isCorrectNetwork = isNile || isDuero network !== this.state.network && From 57ea109ec29f2e2653f2121933ea4487adeb109b Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Mon, 13 May 2019 16:34:20 +0200 Subject: [PATCH 18/31] Release 0.2.9 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 116cbce..572312c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "commons", - "version": "0.2.8", + "version": "0.2.9", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 4912453..838d044 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "commons", "description": "Ocean Protocol marketplace to explore, download, and publish open data sets.", - "version": "0.2.8", + "version": "0.2.9", "license": "Apache-2.0", "scripts": { "install": "./scripts/install.sh", From 74e2d204dc1719d9af950350c6dd25998f0c6f02 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Mon, 13 May 2019 16:34:37 +0200 Subject: [PATCH 19/31] update changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e73be9e..9ac5122 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v0.2.9](https://github.com/oceanprotocol/commons/compare/v0.2.8...v0.2.9) + +> 13 May 2019 + +- add Duero to network detection [`#121`](https://github.com/oceanprotocol/commons/pull/121) +- add duero to network detection [`f636170`](https://github.com/oceanprotocol/commons/commit/f636170e3cfede29ae53576ad2f56c75b3d47655) +- update changelog [`70deb12`](https://github.com/oceanprotocol/commons/commit/70deb126b8f7d2867d6c04c179ea18d9f24d17d6) +- Release 0.2.9 [`57ea109`](https://github.com/oceanprotocol/commons/commit/57ea109ec29f2e2653f2121933ea4487adeb109b) + #### [v0.2.8](https://github.com/oceanprotocol/commons/compare/v0.2.7...v0.2.8) > 10 May 2019 From 807723be350a60da97f25c53eed102bafcbf1c3c Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 14 May 2019 12:52:41 +0200 Subject: [PATCH 20/31] isCorrectNetwork -> isOceanNetwork --- client/__mocks__/user-mock.ts | 4 ++-- .../molecules/AccountStatus/Indicator.tsx | 2 +- .../molecules/AccountStatus/Popover.test.tsx | 2 +- .../molecules/AccountStatus/Popover.tsx | 4 ++-- .../src/components/organisms/AssetsUser.tsx | 4 ++-- .../components/organisms/Web3message.test.tsx | 4 ++-- .../src/components/organisms/Web3message.tsx | 4 ++-- client/src/config.ts | 13 ++++++----- client/src/context/UserProvider.tsx | 22 +++++++++---------- client/src/context/index.tsx | 2 +- client/src/routes/Details/AssetFile.test.tsx | 2 +- client/src/routes/Details/AssetFile.tsx | 4 ++-- .../src/routes/Details/AssetFilesDetails.tsx | 2 +- client/src/routes/Faucet.tsx | 2 +- client/src/routes/History.test.tsx | 2 +- client/src/routes/History.tsx | 2 +- client/src/routes/Publish/index.tsx | 2 +- client/src/routes/Search.test.tsx | 2 +- 18 files changed, 40 insertions(+), 39 deletions(-) diff --git a/client/__mocks__/user-mock.ts b/client/__mocks__/user-mock.ts index b80f205..4f27379 100644 --- a/client/__mocks__/user-mock.ts +++ b/client/__mocks__/user-mock.ts @@ -2,7 +2,7 @@ const userMock = { isLogged: false, isLoading: false, isWeb3: false, - isCorrectNetwork: false, + isOceanNetwork: false, account: '', web3: {}, ocean: {}, @@ -17,7 +17,7 @@ const userMockConnected = { isLogged: true, isLoading: false, isWeb3: true, - isCorrectNetwork: true, + isOceanNetwork: true, account: '0xxxxxx', web3: {}, ocean: {}, diff --git a/client/src/components/molecules/AccountStatus/Indicator.tsx b/client/src/components/molecules/AccountStatus/Indicator.tsx index b69ffbb..866922e 100644 --- a/client/src/components/molecules/AccountStatus/Indicator.tsx +++ b/client/src/components/molecules/AccountStatus/Indicator.tsx @@ -22,7 +22,7 @@ const Indicator = ({ {states => !states.isWeb3 ? ( - ) : !states.isLogged || !states.isCorrectNetwork ? ( + ) : !states.isLogged || !states.isOceanNetwork ? ( ) : states.isLogged ? ( diff --git a/client/src/components/molecules/AccountStatus/Popover.test.tsx b/client/src/components/molecules/AccountStatus/Popover.test.tsx index 12864fd..c0187eb 100644 --- a/client/src/components/molecules/AccountStatus/Popover.test.tsx +++ b/client/src/components/molecules/AccountStatus/Popover.test.tsx @@ -38,7 +38,7 @@ describe('Popover', () => { diff --git a/client/src/components/molecules/AccountStatus/Popover.tsx b/client/src/components/molecules/AccountStatus/Popover.tsx index d5606dd..ca03683 100644 --- a/client/src/components/molecules/AccountStatus/Popover.tsx +++ b/client/src/components/molecules/AccountStatus/Popover.tsx @@ -13,7 +13,7 @@ export default class Popover extends PureComponent<{ balance, network, isWeb3, - isCorrectNetwork + isOceanNetwork } = this.context return ( @@ -53,7 +53,7 @@ export default class Popover extends PureComponent<{ )}
    - {network && !isCorrectNetwork + {network && !isOceanNetwork ? 'Please connect to Custom RPC\n https://nile.dev-ocean.com' : network && `Connected to ${network} network`}
    diff --git a/client/src/components/organisms/AssetsUser.tsx b/client/src/components/organisms/AssetsUser.tsx index 824d73f..bb675d1 100644 --- a/client/src/components/organisms/AssetsUser.tsx +++ b/client/src/components/organisms/AssetsUser.tsx @@ -57,10 +57,10 @@ export default class AssetsUser extends PureComponent< } public render() { - const { account, isCorrectNetwork } = this.context + const { account, isOceanNetwork } = this.context return ( - isCorrectNetwork && + isOceanNetwork && account && (
    {this.props.recent && ( diff --git a/client/src/components/organisms/Web3message.test.tsx b/client/src/components/organisms/Web3message.test.tsx index 155d4f4..9c5b223 100644 --- a/client/src/components/organisms/Web3message.test.tsx +++ b/client/src/components/organisms/Web3message.test.tsx @@ -28,7 +28,7 @@ describe('Web3message', () => { it('renders with noAccount message', () => { const { container } = render( @@ -51,7 +51,7 @@ describe('Web3message', () => { value={{ ...userMock, isWeb3: true, - isCorrectNetwork: true + isOceanNetwork: true }} > diff --git a/client/src/components/organisms/Web3message.tsx b/client/src/components/organisms/Web3message.tsx index 0374986..e726ae8 100644 --- a/client/src/components/organisms/Web3message.tsx +++ b/client/src/components/organisms/Web3message.tsx @@ -32,7 +32,7 @@ export default class Web3message extends PureComponent { public render() { const { isWeb3, - isCorrectNetwork, + isOceanNetwork, isLogged, account, unlockAccounts @@ -40,7 +40,7 @@ export default class Web3message extends PureComponent { return !isWeb3 ? this.message(content.noweb3) - : !isCorrectNetwork + : !isOceanNetwork ? this.message(content.wrongNetwork) : !isLogged ? this.message(content.noAccount, '', unlockAccounts) diff --git a/client/src/config.ts b/client/src/config.ts index 63c9ef3..e238d0f 100644 --- a/client/src/config.ts +++ b/client/src/config.ts @@ -9,17 +9,17 @@ export const servicePort = process.env.REACT_APP_SERVICE_PORT || 4000 // OCEAN REMOTE CONNECTIONS // export const nodeScheme = process.env.REACT_APP_NODE_SCHEME || 'https' -export const nodeHost = process.env.REACT_APP_NODE_HOST || 'nile.dev-ocean.com' +export const nodeHost = process.env.REACT_APP_NODE_HOST || 'duero.dev-ocean.com' export const nodePort = process.env.REACT_APP_NODE_PORT || 443 export const aquariusScheme = process.env.REACT_APP_AQUARIUS_SCHEME || 'https' export const aquariusHost = - process.env.REACT_APP_AQUARIUS_HOST || 'nginx-aquarius.dev-ocean.com' + process.env.REACT_APP_AQUARIUS_HOST || 'aquarius.duero.dev-ocean.com' export const aquariusPort = process.env.REACT_APP_AQUARIUS_PORT || 443 export const brizoScheme = process.env.REACT_APP_BRIZO_SCHEME || 'https' export const brizoHost = - process.env.REACT_APP_BRIZO_HOST || 'nginx-brizo.dev-ocean.com' + process.env.REACT_APP_BRIZO_HOST || 'brizo.duero.dev-ocean.com' export const brizoPort = process.env.REACT_APP_BRIZO_PORT || 443 export const brizoAddress = process.env.REACT_APP_BRIZO_ADDRESS || @@ -27,18 +27,19 @@ export const brizoAddress = export const parityScheme = process.env.REACT_APP_PARITY_SCHEME || 'https' export const parityHost = - process.env.REACT_APP_PARITY_HOST || 'nile.dev-ocean.com' + process.env.REACT_APP_PARITY_HOST || 'duero.dev-ocean.com' export const parityPort = process.env.REACT_APP_PARITY_PORT || 443 export const secretStoreScheme = process.env.REACT_APP_SECRET_STORE_SCHEME || 'https' export const secretStoreHost = - process.env.REACT_APP_SECRET_STORE_HOST || 'secret-store.dev-ocean.com' + process.env.REACT_APP_SECRET_STORE_HOST || + 'secret-store.duero.dev-ocean.com' export const secretStorePort = process.env.REACT_APP_SECRET_STORE_PORT || 443 export const faucetScheme = process.env.REACT_APP_FAUCET_SCHEME || 'https' export const faucetHost = - process.env.REACT_APP_FAUCET_HOST || 'faucet.nile.dev-ocean.com' + process.env.REACT_APP_FAUCET_HOST || 'faucet.duero.dev-ocean.com' export const faucetPort = process.env.REACT_APP_FAUCET_PORT || 443 // diff --git a/client/src/context/UserProvider.tsx b/client/src/context/UserProvider.tsx index 1d19131..c6a69dd 100644 --- a/client/src/context/UserProvider.tsx +++ b/client/src/context/UserProvider.tsx @@ -46,7 +46,7 @@ interface UserProviderState { isLogged: boolean isLoading: boolean isWeb3: boolean - isCorrectNetwork: boolean + isOceanNetwork: boolean account: string balance: { eth: number @@ -74,7 +74,7 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { isLogged: false, isLoading: true, isWeb3: false, - isCorrectNetwork: false, + isOceanNetwork: false, balance: { eth: 0, ocn: 0 @@ -151,7 +151,7 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { // // Detecting network with window.web3 // - let isCorrectNetwork + let isOceanNetwork await window.web3.eth.net.getId((err, netId) => { if (err) return @@ -159,7 +159,7 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { const isNile = netId === 8995 const isDuero = netId === 2199 - isCorrectNetwork = isNile || isDuero + isOceanNetwork = isNile || isDuero const network = isNile ? 'Nile' @@ -168,14 +168,14 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { : netId.toString() if ( - isCorrectNetwork !== this.state.isCorrectNetwork || + isOceanNetwork !== this.state.isOceanNetwork || network !== this.state.network ) { - this.setState({ isCorrectNetwork, network }) + this.setState({ isOceanNetwork, network }) } }) - if (!isCorrectNetwork) { + if (!isOceanNetwork) { web3 = this.state.web3 // eslint-disable-line } @@ -209,13 +209,13 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { } private fetchAccounts = async () => { - const { ocean, isWeb3, isLogged, isCorrectNetwork } = this.state + const { ocean, isWeb3, isLogged, isOceanNetwork } = this.state if (isWeb3) { let accounts // Modern dapp browsers - if (window.ethereum && !isLogged && isCorrectNetwork) { + if (window.ethereum && !isLogged && isOceanNetwork) { // simply set to empty, and have user click a button somewhere // to initiate account unlocking accounts = [] @@ -259,10 +259,10 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { const network = await ocean.keeper.getNetworkName() const isNile = network === 'Nile' const isDuero = network === 'Development' - const isCorrectNetwork = isNile || isDuero + const isOceanNetwork = isNile || isDuero network !== this.state.network && - this.setState({ isCorrectNetwork, network }) + this.setState({ isOceanNetwork, network }) } } diff --git a/client/src/context/index.tsx b/client/src/context/index.tsx index a64937e..0cdf47d 100644 --- a/client/src/context/index.tsx +++ b/client/src/context/index.tsx @@ -4,7 +4,7 @@ export const User = React.createContext({ isLogged: false, isLoading: false, isWeb3: false, - isCorrectNetwork: false, + isOceanNetwork: false, account: '', web3: {}, ocean: {}, diff --git a/client/src/routes/Details/AssetFile.test.tsx b/client/src/routes/Details/AssetFile.test.tsx index d1c69c8..2b866d6 100644 --- a/client/src/routes/Details/AssetFile.test.tsx +++ b/client/src/routes/Details/AssetFile.test.tsx @@ -20,7 +20,7 @@ const contextConnectedMock = { isLogged: true, isLoading: false, isWeb3: true, - isCorrectNetwork: true, + isOceanNetwork: true, account: '', web3: {}, ocean: {}, diff --git a/client/src/routes/Details/AssetFile.tsx b/client/src/routes/Details/AssetFile.tsx index 6de7054..8c3ebb0 100644 --- a/client/src/routes/Details/AssetFile.tsx +++ b/client/src/routes/Details/AssetFile.tsx @@ -76,7 +76,7 @@ export default class AssetFile extends PureComponent< public render() { const { ddo, file } = this.props const { isLoading, message, error } = this.state - const { isLogged, isCorrectNetwork } = this.context + const { isLogged, isOceanNetwork } = this.context const { index } = file return ( @@ -102,7 +102,7 @@ export default class AssetFile extends PureComponent< // https://github.com/oceanprotocol/squid-js/pull/221 // is released onClick={() => this.purchaseAsset(ddo, index || 0)} - disabled={!isLogged || !isCorrectNetwork} + disabled={!isLogged || !isOceanNetwork} > Get file diff --git a/client/src/routes/Details/AssetFilesDetails.tsx b/client/src/routes/Details/AssetFilesDetails.tsx index 5d16575..4199e82 100644 --- a/client/src/routes/Details/AssetFilesDetails.tsx +++ b/client/src/routes/Details/AssetFilesDetails.tsx @@ -19,7 +19,7 @@ export default class AssetFilesDetails extends PureComponent<{ ))}
    - {(!this.context.isCorrectNetwork || !this.context.isLogged) && ( + {(!this.context.isOceanNetwork || !this.context.isLogged) && ( )} diff --git a/client/src/routes/Faucet.tsx b/client/src/routes/Faucet.tsx index 76556dd..55130b3 100644 --- a/client/src/routes/Faucet.tsx +++ b/client/src/routes/Faucet.tsx @@ -81,7 +81,7 @@ export default class Faucet extends PureComponent<{}, FaucetState> { primary onClick={() => this.getTokens(this.context.requestFromFaucet)} disabled={ - !this.context.isLogged || !this.context.isCorrectNetwork + !this.context.isLogged || !this.context.isOceanNetwork } > Request Ether diff --git a/client/src/routes/History.test.tsx b/client/src/routes/History.test.tsx index 5eae99a..77bf454 100644 --- a/client/src/routes/History.test.tsx +++ b/client/src/routes/History.test.tsx @@ -14,7 +14,7 @@ describe('History', () => { isLogged: false, isLoading: false, isWeb3: false, - isCorrectNetwork: false, + isOceanNetwork: false, account: '', web3: {}, ocean: {}, diff --git a/client/src/routes/History.tsx b/client/src/routes/History.tsx index 2b13c28..70de132 100644 --- a/client/src/routes/History.tsx +++ b/client/src/routes/History.tsx @@ -8,7 +8,7 @@ export default class History extends Component { public render() { return ( - {(!this.context.isLogged || !this.context.isCorrectNetwork) && ( + {(!this.context.isLogged || !this.context.isOceanNetwork) && ( )} diff --git a/client/src/routes/Publish/index.tsx b/client/src/routes/Publish/index.tsx index 4bc1349..86b6857 100644 --- a/client/src/routes/Publish/index.tsx +++ b/client/src/routes/Publish/index.tsx @@ -319,7 +319,7 @@ class Publish extends Component<{}, PublishState> { title="Publish" description="Publish a new data set into the Ocean Protocol Network." > - {(!this.context.isLogged || !this.context.isCorrectNetwork) && ( + {(!this.context.isLogged || !this.context.isOceanNetwork) && ( )} diff --git a/client/src/routes/Search.test.tsx b/client/src/routes/Search.test.tsx index 7663f93..037d633 100644 --- a/client/src/routes/Search.test.tsx +++ b/client/src/routes/Search.test.tsx @@ -14,7 +14,7 @@ describe('Search', () => { isLogged: false, isLoading: false, isWeb3: false, - isCorrectNetwork: false, + isOceanNetwork: false, account: '', web3: {}, ocean: { From 42dcb8c58422daebd5f7c2ec2902985d489ef4a1 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 14 May 2019 12:53:43 +0200 Subject: [PATCH 21/31] Duero network name --- client/src/context/UserProvider.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/context/UserProvider.tsx b/client/src/context/UserProvider.tsx index c6a69dd..7ea2287 100644 --- a/client/src/context/UserProvider.tsx +++ b/client/src/context/UserProvider.tsx @@ -258,7 +258,7 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { if (isWeb3) { const network = await ocean.keeper.getNetworkName() const isNile = network === 'Nile' - const isDuero = network === 'Development' + const isDuero = network === 'Duero' const isOceanNetwork = isNile || isDuero network !== this.state.network && From 6dcb7166ce9c7cbfe0d6a8708c9853b707030af3 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 14 May 2019 12:57:21 +0200 Subject: [PATCH 22/31] add Spree to network detection --- client/src/context/UserProvider.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/context/UserProvider.tsx b/client/src/context/UserProvider.tsx index 7ea2287..6189dde 100644 --- a/client/src/context/UserProvider.tsx +++ b/client/src/context/UserProvider.tsx @@ -158,8 +158,9 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { const isNile = netId === 8995 const isDuero = netId === 2199 + const isSpree = netId === 8996 - isOceanNetwork = isNile || isDuero + isOceanNetwork = isNile || isDuero || isSpree const network = isNile ? 'Nile' @@ -259,7 +260,8 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { const network = await ocean.keeper.getNetworkName() const isNile = network === 'Nile' const isDuero = network === 'Duero' - const isOceanNetwork = isNile || isDuero + const isSpree = network === 'Spree' + const isOceanNetwork = isNile || isDuero || isSpree network !== this.state.network && this.setState({ isOceanNetwork, network }) From f49fa14b2aa7d35a91f8003ddd297b4f2df8ca78 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 14 May 2019 13:03:48 +0200 Subject: [PATCH 23/31] less verbose error logging --- client/src/config.ts | 13 ++++++------- client/src/context/UserProvider.tsx | 2 +- client/src/ocean.ts | 2 +- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/client/src/config.ts b/client/src/config.ts index e238d0f..63c9ef3 100644 --- a/client/src/config.ts +++ b/client/src/config.ts @@ -9,17 +9,17 @@ export const servicePort = process.env.REACT_APP_SERVICE_PORT || 4000 // OCEAN REMOTE CONNECTIONS // export const nodeScheme = process.env.REACT_APP_NODE_SCHEME || 'https' -export const nodeHost = process.env.REACT_APP_NODE_HOST || 'duero.dev-ocean.com' +export const nodeHost = process.env.REACT_APP_NODE_HOST || 'nile.dev-ocean.com' export const nodePort = process.env.REACT_APP_NODE_PORT || 443 export const aquariusScheme = process.env.REACT_APP_AQUARIUS_SCHEME || 'https' export const aquariusHost = - process.env.REACT_APP_AQUARIUS_HOST || 'aquarius.duero.dev-ocean.com' + process.env.REACT_APP_AQUARIUS_HOST || 'nginx-aquarius.dev-ocean.com' export const aquariusPort = process.env.REACT_APP_AQUARIUS_PORT || 443 export const brizoScheme = process.env.REACT_APP_BRIZO_SCHEME || 'https' export const brizoHost = - process.env.REACT_APP_BRIZO_HOST || 'brizo.duero.dev-ocean.com' + process.env.REACT_APP_BRIZO_HOST || 'nginx-brizo.dev-ocean.com' export const brizoPort = process.env.REACT_APP_BRIZO_PORT || 443 export const brizoAddress = process.env.REACT_APP_BRIZO_ADDRESS || @@ -27,19 +27,18 @@ export const brizoAddress = export const parityScheme = process.env.REACT_APP_PARITY_SCHEME || 'https' export const parityHost = - process.env.REACT_APP_PARITY_HOST || 'duero.dev-ocean.com' + process.env.REACT_APP_PARITY_HOST || 'nile.dev-ocean.com' export const parityPort = process.env.REACT_APP_PARITY_PORT || 443 export const secretStoreScheme = process.env.REACT_APP_SECRET_STORE_SCHEME || 'https' export const secretStoreHost = - process.env.REACT_APP_SECRET_STORE_HOST || - 'secret-store.duero.dev-ocean.com' + process.env.REACT_APP_SECRET_STORE_HOST || 'secret-store.dev-ocean.com' export const secretStorePort = process.env.REACT_APP_SECRET_STORE_PORT || 443 export const faucetScheme = process.env.REACT_APP_FAUCET_SCHEME || 'https' export const faucetHost = - process.env.REACT_APP_FAUCET_HOST || 'faucet.duero.dev-ocean.com' + process.env.REACT_APP_FAUCET_HOST || 'faucet.nile.dev-ocean.com' export const faucetPort = process.env.REACT_APP_FAUCET_PORT || 443 // diff --git a/client/src/context/UserProvider.tsx b/client/src/context/UserProvider.tsx index 6189dde..743975a 100644 --- a/client/src/context/UserProvider.tsx +++ b/client/src/context/UserProvider.tsx @@ -204,7 +204,7 @@ export default class UserProvider extends PureComponent<{}, UserProviderState> { } catch (e) { // error in bootstrap process // show error connecting to ocean - Logger.log('web3 error', e) + Logger.error('web3 error', e.message) this.setState({ isLoading: false }) } } diff --git a/client/src/ocean.ts b/client/src/ocean.ts index 511788a..8ce2ed8 100644 --- a/client/src/ocean.ts +++ b/client/src/ocean.ts @@ -72,6 +72,6 @@ export async function requestFromFaucet(account: string) { }) return response.json() } catch (error) { - Logger.error('requestFromFaucet', error) + Logger.error('requestFromFaucet', error.message) } } From 062759bb461da3427d4eff13c9a952086f591cc5 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Tue, 14 May 2019 17:26:28 +0200 Subject: [PATCH 24/31] add AI for Good category --- client/src/components/atoms/CategoryImage.tsx | 2 ++ client/src/data/form-publish.json | 1 + 2 files changed, 3 insertions(+) diff --git a/client/src/components/atoms/CategoryImage.tsx b/client/src/components/atoms/CategoryImage.tsx index a02df06..e789d4e 100644 --- a/client/src/components/atoms/CategoryImage.tsx +++ b/client/src/components/atoms/CategoryImage.tsx @@ -133,6 +133,8 @@ const categoryImageFile = (category: string) => { case 'Visual Arts & Design': case 'visualart': return visualart + case 'AI for Good': + return dataofdata default: return fallback } diff --git a/client/src/data/form-publish.json b/client/src/data/form-publish.json index ab011a8..c90cda0 100644 --- a/client/src/data/form-publish.json +++ b/client/src/data/form-publish.json @@ -38,6 +38,7 @@ "type": "select", "required": true, "options": [ + "AI for Good", "Image Recognition", "Dataset Of Datasets", "Language", From 97b20b4e9b09f3ade7d55636fb6ef169bacf4222 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Wed, 15 May 2019 13:33:37 +0200 Subject: [PATCH 25/31] bump squid-js --- client/package-lock.json | 371 ++------------------------------------- client/package.json | 2 +- library.json | 2 +- 3 files changed, 18 insertions(+), 357 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index fc68d7b..c67e453 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1247,9 +1247,9 @@ "integrity": "sha512-nOpbSE/BG+tQBfLXZ/EqSOvUPzOuot84vHxjAfEU8K3v4eOnqFJVo+oyB7KlcF87wBJXDmi/Ir9qHY4c0Saipg==" }, "@oceanprotocol/squid": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/@oceanprotocol/squid/-/squid-0.5.8.tgz", - "integrity": "sha512-1hEOA5rF8qsLF6uSMVBAN4c6Licn2FCGdWLCHpZ6ePzyA2/3RXxhreUE/0mcTkmdITwlx1rCFFO+rYhDqgyPVQ==", + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@oceanprotocol/squid/-/squid-0.5.10.tgz", + "integrity": "sha512-ApwrlixdMpGxf7EM/Vpy27UAGYHCTAw7XiRjpuLeK7o1dHBXMdBAcfb1esypFob+ZOeq9UseVZ1rWQaPf+ROmA==", "requires": { "@oceanprotocol/keeper-contracts": "^0.9.1", "bignumber.js": "^8.1.1", @@ -1260,345 +1260,6 @@ "uuid": "^3.3.2", "web3": "1.0.0-beta.37", "whatwg-url": "^7.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=" - }, - "elliptic": { - "version": "6.3.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz", - "integrity": "sha1-VILZZG1UvLif19mU/J4ulWiHbj8=", - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "inherits": "^2.0.1" - } - }, - "ethers": { - "version": "4.0.0-beta.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.0-beta.1.tgz", - "integrity": "sha512-SoYhktEbLxf+fiux5SfCEwdzWENMvgIbMZD90I62s4GZD9nEjgEWy8ZboI3hck193Vs0bDoTohDISx84f2H2tw==", - "requires": { - "@types/node": "^10.3.2", - "aes-js": "3.0.0", - "bn.js": "^4.4.0", - "elliptic": "6.3.3", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.3", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - }, - "dependencies": { - "setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" - }, - "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" - } - } - }, - "eventemitter3": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-1.1.1.tgz", - "integrity": "sha1-R3hr2qCHyvext15zq8XH1UAVjNA=" - }, - "fs-extra": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-2.1.2.tgz", - "integrity": "sha1-BGxwFjzvmq1GsOSn+kZ/si1x3jU=", - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^2.1.0" - } - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" - }, - "jsonfile": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", - "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "scrypt-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", - "integrity": "sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q=" - }, - "swarm-js": { - "version": "0.1.37", - "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.37.tgz", - "integrity": "sha512-G8gi5fcXP/2upwiuOShJ258sIufBVztekgobr3cVgYXObZwJ5AXLqZn52AI+/ffft29pJexF9WNdUxjlkVehoQ==", - "requires": { - "bluebird": "^3.5.0", - "buffer": "^5.0.5", - "decompress": "^4.0.0", - "eth-lib": "^0.1.26", - "fs-extra": "^2.1.2", - "fs-promise": "^2.0.0", - "got": "^7.1.0", - "mime-types": "^2.1.16", - "mkdirp-promise": "^5.0.1", - "mock-fs": "^4.1.0", - "setimmediate": "^1.0.5", - "tar.gz": "^1.0.5", - "xhr-request-promise": "^0.1.2" - } - }, - "web3": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.0.0-beta.37.tgz", - "integrity": "sha512-8XLgUspdzicC/xHG82TLrcF/Fxzj2XYNJ1KTYnepOI77bj5rvpsxxwHYBWQ6/JOjk0HkZqoBfnXWgcIHCDhZhQ==", - "requires": { - "web3-bzz": "1.0.0-beta.37", - "web3-core": "1.0.0-beta.37", - "web3-eth": "1.0.0-beta.37", - "web3-eth-personal": "1.0.0-beta.37", - "web3-net": "1.0.0-beta.37", - "web3-shh": "1.0.0-beta.37", - "web3-utils": "1.0.0-beta.37" - } - }, - "web3-bzz": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.0.0-beta.37.tgz", - "integrity": "sha512-E+dho49Nsm/QpQvYWOF35YDsQrMvLB19AApENxhlQsu6HpWQt534DQul0t3Y/aAh8rlKD6Kanxt8LhHDG3vejQ==", - "requires": { - "got": "7.1.0", - "swarm-js": "0.1.37", - "underscore": "1.8.3" - } - }, - "web3-core": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.0.0-beta.37.tgz", - "integrity": "sha512-cIwEqCj7OJyefQNauI0HOgW4sSaOQ98V99H2/HEIlnCZylsDzfw7gtQUdwnRFiIyIxjbWy3iWsjwDPoXNPZBYg==", - "requires": { - "web3-core-helpers": "1.0.0-beta.37", - "web3-core-method": "1.0.0-beta.37", - "web3-core-requestmanager": "1.0.0-beta.37", - "web3-utils": "1.0.0-beta.37" - } - }, - "web3-core-helpers": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.37.tgz", - "integrity": "sha512-efaLOzN28RMnbugnyelgLwPWWaSwElQzcAJ/x3PZu+uPloM/lE5x0YuBKvIh7/PoSMlHqtRWj1B8CpuQOUQ5Ew==", - "requires": { - "underscore": "1.8.3", - "web3-eth-iban": "1.0.0-beta.37", - "web3-utils": "1.0.0-beta.37" - } - }, - "web3-core-method": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.0.0-beta.37.tgz", - "integrity": "sha512-pKWFUeqnVmzx3VrZg+CseSdrl/Yrk2ioid/HzolNXZE6zdoITZL0uRjnsbqXGEzgRRd1Oe/pFndpTlRsnxXloA==", - "requires": { - "underscore": "1.8.3", - "web3-core-helpers": "1.0.0-beta.37", - "web3-core-promievent": "1.0.0-beta.37", - "web3-core-subscriptions": "1.0.0-beta.37", - "web3-utils": "1.0.0-beta.37" - } - }, - "web3-core-subscriptions": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.37.tgz", - "integrity": "sha512-FdXl8so9kwkRRWziuCSpFsAuAdg9KvpXa1fQlT16uoGcYYfxwFO/nkwyBGQzkZt7emShI2IRugcazyPCZDwkOA==", - "requires": { - "eventemitter3": "1.1.1", - "underscore": "1.8.3", - "web3-core-helpers": "1.0.0-beta.37" - } - }, - "web3-eth": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.0.0-beta.37.tgz", - "integrity": "sha512-Eb3aGtkz3G9q+Z9DKgSQNbn/u8RtcZQQ0R4sW9hy5KK47GoT6vab5c6DiD3QWzI0BzitHzR5Ji+3VHf/hPUGgw==", - "requires": { - "underscore": "1.8.3", - "web3-core": "1.0.0-beta.37", - "web3-core-helpers": "1.0.0-beta.37", - "web3-core-method": "1.0.0-beta.37", - "web3-core-subscriptions": "1.0.0-beta.37", - "web3-eth-abi": "1.0.0-beta.37", - "web3-eth-accounts": "1.0.0-beta.37", - "web3-eth-contract": "1.0.0-beta.37", - "web3-eth-ens": "1.0.0-beta.37", - "web3-eth-iban": "1.0.0-beta.37", - "web3-eth-personal": "1.0.0-beta.37", - "web3-net": "1.0.0-beta.37", - "web3-utils": "1.0.0-beta.37" - } - }, - "web3-eth-abi": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.37.tgz", - "integrity": "sha512-g9DKZGM2OqwKp/tX3W/yihcj7mQCtJ6CXyZXEIZfuDyRBED/iSEIFfieDOd+yo16sokLMig6FG7ADhhu+19hdA==", - "requires": { - "ethers": "4.0.0-beta.1", - "underscore": "1.8.3", - "web3-utils": "1.0.0-beta.37" - } - }, - "web3-eth-accounts": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.37.tgz", - "integrity": "sha512-uvbHL62/zwo4GDmwKdqH9c/EgYd8QVnAfpVw8D3epSISpgbONNY7Hr4MRMSd/CqAP12l2Ls9JVQGLhhC83bW6g==", - "requires": { - "any-promise": "1.3.0", - "crypto-browserify": "3.12.0", - "eth-lib": "0.2.7", - "scrypt.js": "0.2.0", - "underscore": "1.8.3", - "uuid": "2.0.1", - "web3-core": "1.0.0-beta.37", - "web3-core-helpers": "1.0.0-beta.37", - "web3-core-method": "1.0.0-beta.37", - "web3-utils": "1.0.0-beta.37" - }, - "dependencies": { - "elliptic": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", - "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", - "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" - } - }, - "eth-lib": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", - "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", - "requires": { - "bn.js": "^4.11.6", - "elliptic": "^6.4.0", - "xhr-request-promise": "^0.1.2" - } - }, - "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" - } - } - }, - "web3-eth-contract": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.37.tgz", - "integrity": "sha512-h1B3A8Z/C7BlnTCHkrWbXZQTViDxfR12lKMeTkT8Sqj5phFmxrBlPE4ORy4lf1Dk5b23mZYE0r/IRACx4ThCrQ==", - "requires": { - "underscore": "1.8.3", - "web3-core": "1.0.0-beta.37", - "web3-core-helpers": "1.0.0-beta.37", - "web3-core-method": "1.0.0-beta.37", - "web3-core-promievent": "1.0.0-beta.37", - "web3-core-subscriptions": "1.0.0-beta.37", - "web3-eth-abi": "1.0.0-beta.37", - "web3-utils": "1.0.0-beta.37" - } - }, - "web3-eth-ens": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.37.tgz", - "integrity": "sha512-dR3UkrVzdRrJhfP57xBPx0CMiVnCcYFvh+u2XMkGydrhHgupSUkjqGr89xry/j1T0BkuN9mikpbyhdCVMXqMbg==", - "requires": { - "eth-ens-namehash": "2.0.8", - "underscore": "1.8.3", - "web3-core": "1.0.0-beta.37", - "web3-core-helpers": "1.0.0-beta.37", - "web3-core-promievent": "1.0.0-beta.37", - "web3-eth-abi": "1.0.0-beta.37", - "web3-eth-contract": "1.0.0-beta.37", - "web3-utils": "1.0.0-beta.37" - } - }, - "web3-eth-iban": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.37.tgz", - "integrity": "sha512-WQRniGJFxH/XCbd7miO6+jnUG+6bvuzfeufPIiOtCbeIC1ypp1kSqER8YVBDrTyinU1xnf1U5v0KBZ2yiWBJxQ==", - "requires": { - "bn.js": "4.11.6", - "web3-utils": "1.0.0-beta.37" - } - }, - "web3-eth-personal": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.37.tgz", - "integrity": "sha512-B4dZpGbD+nGnn48i6nJBqrQ+HB7oDmd+Q3wGRKOsHSK5HRWO/KwYeA7wgwamMAElkut50lIsT9EJl4Apfk3G5Q==", - "requires": { - "web3-core": "1.0.0-beta.37", - "web3-core-helpers": "1.0.0-beta.37", - "web3-core-method": "1.0.0-beta.37", - "web3-net": "1.0.0-beta.37", - "web3-utils": "1.0.0-beta.37" - } - }, - "web3-net": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.0.0-beta.37.tgz", - "integrity": "sha512-xG/uBtMdDa1UMXw9KjDUgf3fXA/fDEJUYUS0TDn+U9PMgngA+UVECHNNvQTrVVDxEky38V3sahwIDiopNsQdsw==", - "requires": { - "web3-core": "1.0.0-beta.37", - "web3-core-method": "1.0.0-beta.37", - "web3-utils": "1.0.0-beta.37" - } - }, - "web3-shh": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.0.0-beta.37.tgz", - "integrity": "sha512-h5STG/xqZNQWtCLYOu7NiMqwqPea8SfkKQUPUFxXKIPVCFVKpHuQEwW1qcPQRJMLhlQIv17xuoUe1A+RzDNbrw==", - "requires": { - "web3-core": "1.0.0-beta.37", - "web3-core-method": "1.0.0-beta.37", - "web3-core-subscriptions": "1.0.0-beta.37", - "web3-net": "1.0.0-beta.37" - } - }, - "web3-utils": { - "version": "1.0.0-beta.37", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.37.tgz", - "integrity": "sha512-kA1fyhO8nKgU21wi30oJQ/ssvu+9srMdjOTKbHYbQe4ATPcr5YNwwrxG3Bcpbu1bEwRUVKHCkqi+wTvcAWBdlQ==", - "requires": { - "bn.js": "4.11.6", - "eth-lib": "0.1.27", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randomhex": "0.1.5", - "underscore": "1.8.3", - "utf8": "2.1.1" - } - } } }, "@oceanprotocol/typographies": { @@ -6716,9 +6377,9 @@ } }, "file-saver": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.1.tgz", - "integrity": "sha512-dCB3K7/BvAcUmtmh1DzFdv0eXSVJ9IAFt1mw3XZfAexodNRoE29l3xB2EX4wH2q8m/UTzwzEPq/ArYk98kUkBQ==" + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.2.tgz", + "integrity": "sha512-Wz3c3XQ5xroCxd1G8b7yL0Ehkf0TC9oYC6buPFkNnU9EnaPlifeAFCyCh+iewXTyFRcg0a6j3J7FmJsIhlhBdw==" }, "file-type": { "version": "5.2.0", @@ -14295,18 +13956,18 @@ } }, "secp256k1": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.6.2.tgz", - "integrity": "sha512-90nYt7yb0LmI4A2jJs1grglkTAXrBwxYAjP9bpeKjvJKOjG2fOeH/YI/lchDMIvjrOasd5QXwvV2jwN168xNng==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.7.0.tgz", + "integrity": "sha512-YlUIghD6ilkMkzmFJpIdVjiamv2S8lNZ9YMwm1XII9JC0NcR5qQiv2DOp/G37sExBtaMStzba4VDJtvBXEbmMQ==", "requires": { - "bindings": "^1.2.1", - "bip66": "^1.1.3", - "bn.js": "^4.11.3", - "create-hash": "^1.1.2", + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", "drbg.js": "^1.0.1", - "elliptic": "^6.2.3", - "nan": "^2.2.1", - "safe-buffer": "^5.1.0" + "elliptic": "^6.4.1", + "nan": "^2.13.2", + "safe-buffer": "^5.1.2" } }, "seek-bzip": { diff --git a/client/package.json b/client/package.json index 6984755..393394c 100644 --- a/client/package.json +++ b/client/package.json @@ -13,7 +13,7 @@ }, "dependencies": { "@oceanprotocol/art": "^2.2.0", - "@oceanprotocol/squid": "^0.5.8", + "@oceanprotocol/squid": "^0.5.10", "@oceanprotocol/typographies": "^0.1.0", "classnames": "^2.2.6", "ethereum-blockies": "MyEtherWallet/blockies", diff --git a/library.json b/library.json index 1852f2d..5925c9e 100644 --- a/library.json +++ b/library.json @@ -19,7 +19,7 @@ }, { "name": "squid-js", - "version": "~0.5.4" + "version": "~0.5.10" }, { "name": "faucet", From f0ff2915e5a81dc3039ca53c3a1607a5cd367dd9 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Wed, 15 May 2019 13:42:05 +0200 Subject: [PATCH 26/31] Release 0.2.10 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 572312c..2fb80e8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "commons", - "version": "0.2.9", + "version": "0.2.10", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 838d044..f7cb389 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "commons", "description": "Ocean Protocol marketplace to explore, download, and publish open data sets.", - "version": "0.2.9", + "version": "0.2.10", "license": "Apache-2.0", "scripts": { "install": "./scripts/install.sh", From d49cace56a0aa551e26ad4eac2ecd196dcc499af Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Wed, 15 May 2019 13:42:26 +0200 Subject: [PATCH 27/31] update changelog --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ac5122..92ed7dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v0.2.10](https://github.com/oceanprotocol/commons/compare/v0.2.9...v0.2.10) + +> 15 May 2019 + +- AI for Good category [`#126`](https://github.com/oceanprotocol/commons/pull/126) +- Network detection tweaks [`#122`](https://github.com/oceanprotocol/commons/pull/122) +- bump squid-js [`97b20b4`](https://github.com/oceanprotocol/commons/commit/97b20b4e9b09f3ade7d55636fb6ef169bacf4222) +- isCorrectNetwork -> isOceanNetwork [`807723b`](https://github.com/oceanprotocol/commons/commit/807723be350a60da97f25c53eed102bafcbf1c3c) +- less verbose error logging [`f49fa14`](https://github.com/oceanprotocol/commons/commit/f49fa14b2aa7d35a91f8003ddd297b4f2df8ca78) + #### [v0.2.9](https://github.com/oceanprotocol/commons/compare/v0.2.8...v0.2.9) > 13 May 2019 From 7d64ec2d55ed2f14ca924ae4ce6dedc879621cfe Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Thu, 16 May 2019 11:39:25 +0200 Subject: [PATCH 28/31] fix react-ga initialization --- client/src/hoc/withTracker.tsx | 10 +++++----- client/src/routes/Details/AssetFile.test.tsx | 3 +++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/client/src/hoc/withTracker.tsx b/client/src/hoc/withTracker.tsx index f5a74b2..272b8dc 100644 --- a/client/src/hoc/withTracker.tsx +++ b/client/src/hoc/withTracker.tsx @@ -3,15 +3,15 @@ import ReactGA, { FieldsObject } from 'react-ga' import { RouteComponentProps } from 'react-router-dom' import { analyticsId } from '../config' +ReactGA.initialize(analyticsId, { + testMode: process.env.NODE_ENV === 'test', + debug: false +}) + const withTracker =

    ( WrappedComponent: any, options: FieldsObject = {} ) => { - ReactGA.initialize(analyticsId, { - testMode: process.env.NODE_ENV === 'test', - debug: false - }) - const trackPage = (page: string) => { options.isWeb3 = window.web3 !== undefined diff --git a/client/src/routes/Details/AssetFile.test.tsx b/client/src/routes/Details/AssetFile.test.tsx index 2b866d6..5b135b7 100644 --- a/client/src/routes/Details/AssetFile.test.tsx +++ b/client/src/routes/Details/AssetFile.test.tsx @@ -4,6 +4,7 @@ import React from 'react' import { render, fireEvent } from 'react-testing-library' import { DDO } from '@oceanprotocol/squid' import { StateMock } from '@react-mock/state' +import ReactGA from 'react-ga' import { User } from '../../context' import AssetFile from './AssetFile' @@ -31,6 +32,8 @@ const contextConnectedMock = { message: '' } +ReactGA.initialize('foo', { testMode: true }) + describe('AssetFile', () => { it('renders without crashing', () => { const { container } = render() From c5a4a15a3affc150f37bcc46a3286a97419c6ae0 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Thu, 16 May 2019 13:27:41 +0200 Subject: [PATCH 29/31] url encode & decode search term --- client/src/routes/Search.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/routes/Search.tsx b/client/src/routes/Search.tsx index 4036b4b..f8832c5 100644 --- a/client/src/routes/Search.tsx +++ b/client/src/routes/Search.tsx @@ -41,7 +41,7 @@ export default class Search extends PureComponent { const searchPage = queryString.parse(this.props.location.search).page await this.setState({ - searchTerm: JSON.stringify(searchTerm) + searchTerm: encodeURIComponent(`${searchTerm}`) }) // switch to respective page if query string is present @@ -60,7 +60,7 @@ export default class Search extends PureComponent { offset: this.state.offset, page: this.state.currentPage, query: { - text: [this.state.searchTerm], + text: [decodeURIComponent(this.state.searchTerm)], price: [-1, 1] }, sort: { @@ -117,9 +117,9 @@ export default class Search extends PureComponent {

    ${ + __html: `${totalResults} results for ${decodeURIComponent( this.state.searchTerm - }` + )}` }} /> )} From e8b150a8cb5d5fc3bae8c4684cfa73494752fb6d Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Thu, 16 May 2019 15:08:54 +0200 Subject: [PATCH 30/31] Release 0.2.11 --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2fb80e8..a1d3313 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "commons", - "version": "0.2.10", + "version": "0.2.11", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index f7cb389..f9209a6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "commons", "description": "Ocean Protocol marketplace to explore, download, and publish open data sets.", - "version": "0.2.10", + "version": "0.2.11", "license": "Apache-2.0", "scripts": { "install": "./scripts/install.sh", From a83184851ca1293a684463b32bd2dbc0c59d5583 Mon Sep 17 00:00:00 2001 From: Matthias Kretschmann Date: Thu, 16 May 2019 15:09:05 +0200 Subject: [PATCH 31/31] update changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 92ed7dd..07446ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v0.2.11](https://github.com/oceanprotocol/commons/compare/v0.2.10...v0.2.11) + +> 16 May 2019 + +- url encode & decode search term [`#130`](https://github.com/oceanprotocol/commons/pull/130) +- fix react-ga initialization [`#129`](https://github.com/oceanprotocol/commons/pull/129) +- update changelog [`d49cace`](https://github.com/oceanprotocol/commons/commit/d49cace56a0aa551e26ad4eac2ecd196dcc499af) +- Release 0.2.11 [`e8b150a`](https://github.com/oceanprotocol/commons/commit/e8b150a8cb5d5fc3bae8c4684cfa73494752fb6d) + #### [v0.2.10](https://github.com/oceanprotocol/commons/compare/v0.2.9...v0.2.10) > 15 May 2019