Browse Source

Web3 providers fix

develop
Ezerous 4 years ago
parent
commit
162f5446bf
  1. 2
      package.json
  2. 1
      src/defaultOptions.js
  3. 7
      src/web3/web3Reducer.js
  4. 43
      src/web3/web3Saga.js
  5. 10
      yarn.lock

2
package.json

@ -1,6 +1,6 @@
{ {
"name": "@ezerous/drizzle", "name": "@ezerous/drizzle",
"version": "0.4.0", "version": "0.4.1",
"description": "A reactive data-store for web3 and smart contracts.", "description": "A reactive data-store for web3 and smart contracts.",
"license": "MIT", "license": "MIT",
"author": "Ezerous <ezerous@gmail.com>", "author": "Ezerous <ezerous@gmail.com>",

1
src/defaultOptions.js

@ -1,5 +1,6 @@
const defaultOptions = { const defaultOptions = {
web3: { web3: {
customProvider:{},
fallback: { fallback: {
type: 'ws', type: 'ws',
url: 'ws://127.0.0.1:8545' url: 'ws://127.0.0.1:8545'

7
src/web3/web3Reducer.js

@ -2,7 +2,8 @@ import * as Action from './web3Actions'
import { ACCOUNTS_FAILED } from '../accounts/accountsActions' import { ACCOUNTS_FAILED } from '../accounts/accountsActions'
const initialState = { const initialState = {
status: 'initializing' status: 'initializing',
isMetaMask: false
} }
const web3Reducer = (state = initialState, action) => { const web3Reducer = (state = initialState, action) => {
@ -14,9 +15,11 @@ const web3Reducer = (state = initialState, action) => {
} }
if (action.type === Action.WEB3_INITIALIZED) { if (action.type === Action.WEB3_INITIALIZED) {
const { web3 } = action;
return { return {
...state, ...state,
status: 'initialized' status: 'initialized',
isMetaMask: !!(web3 && web3.currentProvider && web3.currentProvider.isMetaMask)
} }
} }

43
src/web3/web3Saga.js

@ -33,31 +33,28 @@ export function * initializeWeb3 (options) {
yield put({ type: Action.WEB3_FAILED, error }); yield put({ type: Action.WEB3_FAILED, error });
} }
} else if (typeof window.web3 !== 'undefined') { } else if (options.customProvider) {
// Checking if Web3 has been injected by the browser (Mist/MetaMask) web3 = options.customProvider
// Use Mist/MetaMask's provider. yield put({ type: Action.WEB3_INITIALIZED, web3 })
web3 = new Web3(window.web3.currentProvider) return web3
yield put({ type: Action.WEB3_INITIALIZED, web3 })
return web3
} else if (options.fallback) { } else if (options.fallback) {
// Attempt fallback if no web3 injection. // Attempt fallback if no web3 injection.
switch (options.fallback.type) { switch (options.fallback.type) {
case 'ws': case 'ws':
const provider = new Web3.providers.WebsocketProvider( const provider = new Web3.providers.WebsocketProvider(
options.fallback.url options.fallback.url
) )
web3 = new Web3(provider) web3 = new Web3(provider)
yield put({ type: Action.WEB3_INITIALIZED, web3 }) yield put({ type: Action.WEB3_INITIALIZED, web3 })
return web3 return web3
default: default:
// Invalid options; throw. // Invalid options; throw.
throw new Error('Invalid web3 fallback provided.') throw new Error('Invalid web3 fallback provided.')
} }
} else { } else {
// Out of web3 options; throw. // Out of web3 options; throw.
throw new Error('Cannot find injected web3 or valid fallback.') throw new Error('Cannot find injected web3 or valid fallback.')
} }
} catch (error) { } catch (error) {
yield put({ type: Action.WEB3_FAILED, error }) yield put({ type: Action.WEB3_FAILED, error })

10
yarn.lock

@ -645,7 +645,7 @@ decompress-response@^3.2.0, decompress-response@^3.3.0:
dependencies: dependencies:
mimic-response "^1.0.0" mimic-response "^1.0.0"
deepmerge@4.2.2: deepmerge@~4.2.2:
version "4.2.2" version "4.2.2"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
@ -1226,7 +1226,7 @@ is-plain-obj@^1.1.0:
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4=
is-plain-object@5.0.0: is-plain-object@~5.0.0:
version "5.0.0" version "5.0.0"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344"
integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
@ -1767,14 +1767,14 @@ readable-stream@^3.6.0:
string_decoder "^1.1.1" string_decoder "^1.1.1"
util-deprecate "^1.0.1" util-deprecate "^1.0.1"
redux-saga@1.1.3: redux-saga@~1.1.3:
version "1.1.3" version "1.1.3"
resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.1.3.tgz#9f3e6aebd3c994bbc0f6901a625f9a42b51d1112" resolved "https://registry.yarnpkg.com/redux-saga/-/redux-saga-1.1.3.tgz#9f3e6aebd3c994bbc0f6901a625f9a42b51d1112"
integrity sha512-RkSn/z0mwaSa5/xH/hQLo8gNf4tlvT18qXDNvedihLcfzh+jMchDgaariQoehCpgRltEm4zHKJyINEz6aqswTw== integrity sha512-RkSn/z0mwaSa5/xH/hQLo8gNf4tlvT18qXDNvedihLcfzh+jMchDgaariQoehCpgRltEm4zHKJyINEz6aqswTw==
dependencies: dependencies:
"@redux-saga/core" "^1.1.3" "@redux-saga/core" "^1.1.3"
redux@4.0.5, redux@^4.0.4: redux@^4.0.4, redux@~4.0.5:
version "4.0.5" version "4.0.5"
resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f" resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f"
integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w== integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==
@ -2417,7 +2417,7 @@ web3-utils@1.3.0:
underscore "1.9.1" underscore "1.9.1"
utf8 "3.0.0" utf8 "3.0.0"
web3@1.3.0: web3@~1.3.0:
version "1.3.0" version "1.3.0"
resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.0.tgz#8fe4cd6e2a21c91904f343ba75717ee4c76bb349" resolved "https://registry.yarnpkg.com/web3/-/web3-1.3.0.tgz#8fe4cd6e2a21c91904f343ba75717ee4c76bb349"
integrity sha512-4q9dna0RecnrlgD/bD1C5S+81Untbd6Z/TBD7rb+D5Bvvc0Wxjr4OP70x+LlnwuRDjDtzBwJbNUblh2grlVArw== integrity sha512-4q9dna0RecnrlgD/bD1C5S+81Untbd6Z/TBD7rb+D5Bvvc0Wxjr4OP70x+LlnwuRDjDtzBwJbNUblh2grlVArw==

Loading…
Cancel
Save