diff --git a/dapp/config/custom-environment-variables.json b/dapp/config/custom-environment-variables.json index 5f3520d4..d80f502d 100644 --- a/dapp/config/custom-environment-variables.json +++ b/dapp/config/custom-environment-variables.json @@ -1,6 +1,9 @@ { "web3": { - "apiKey": "COMMUNITY_WEB3_API_KEY" + "apiKey": "COMMUNITY_WEB3_API_KEY", + "portis": { + "id": "COMMMUNITY_WEB3_PORTIS_ID" + } }, "api": { "url": { diff --git a/dapp/config/default.json b/dapp/config/default.json index 1f75824d..7a1fc7ea 100644 --- a/dapp/config/default.json +++ b/dapp/config/default.json @@ -1,7 +1,9 @@ { "web3": { - "fuseProvider": "http://rpc.fuse.io", + "fuseProvider": "https://rpc.fuse.io", "supportedNetworks": ["main", "ropsten", "fuse"], + "portis": { + }, "addresses": { "ropsten": { "ColuLocalNetwork": "0x41C9d91E96b933b74ae21bCBb617369CBE022530", @@ -35,7 +37,14 @@ }, "options": { "fuse": { - "gasPrice": 1e9 + "gasPrice": 1e9, + "transactionConfirmationBlocks": 1 + }, + "ropsten": { + "transactionConfirmationBlocks": 1 + }, + "main": { + "transactionConfirmationBlocks": 2 } } }, diff --git a/dapp/config/production.json b/dapp/config/production.json index 2c7169c8..f6a6ef1c 100644 --- a/dapp/config/production.json +++ b/dapp/config/production.json @@ -1,5 +1,6 @@ { "web3": { + "fuseProvider": "https://rpc.fuse.io", "addresses": { "ropsten": { "ColuLocalNetwork": "0x41C9d91E96b933b74ae21bCBb617369CBE022530", diff --git a/dapp/config/qa.json b/dapp/config/qa.json index ac2bc1bc..146356b3 100644 --- a/dapp/config/qa.json +++ b/dapp/config/qa.json @@ -1,4 +1,7 @@ { + "web3": { + "fuseProvider": "https://rpc.fuse.io" + }, "api": { "auth": { "domain": { diff --git a/dapp/package.json b/dapp/package.json index adb7b30a..abd96c97 100644 --- a/dapp/package.json +++ b/dapp/package.json @@ -28,6 +28,11 @@ ] }, "dependencies": { + "3box": "^1.9.0", + "@portis/web3": "^2.0.0-beta.30", + "@fuse/entities-contracts": "../contracts/entities/", + "@fuse/roles": "../packages/roles", + "@fuse/token-factory-contracts": "../contracts/token-factory/", "babel-core": "^6.26.3", "babel-eslint": "^8.2.3", "babel-loader": "^7.1.4", @@ -40,6 +45,7 @@ "config": "^1.30.0", "connected-react-router": "^6.2.2", "css-loader": "^2.1.1", + "ethereumjs-wallet": "^0.6.3", "file-loader": "^1.1.11", "formik": "^1.5.1", "foundation-sites": "^6.5.3", @@ -71,14 +77,12 @@ "sass-loader": "^7.0.1", "style-loader": "^0.20.3", "superagent": "^3.8.3", - "web3": "1.0.0-beta.37", + "web3": "^1.0.0-beta.55", + "web3-provider-engine": "git+https://github.com/mikeshultz/web3-provider-engine.git#skipcache-option", "webpack": "^4.6.0", "webpack-cli": "^3.1.2", "websocket": "^1.0.28", - "yup": "^0.27.0", - "@fuse/token-factory-contracts": "../contracts/token-factory/", - "@fuse/entities-contracts": "../contracts/entities/", - "@fuse/roles": "../packages/roles" + "yup": "^0.27.0" }, "devDependencies": { "chai": "^4.1.2", diff --git a/dapp/src/actions/accounts.js b/dapp/src/actions/accounts.js index fb4e7499..24a7d0ce 100644 --- a/dapp/src/actions/accounts.js +++ b/dapp/src/actions/accounts.js @@ -11,6 +11,9 @@ export const FETCH_BALANCES = createRequestTypes('FETCH_BALANCES') export const FETCH_TOKENS_WITH_BALANCES = createRequestTypes('FETCH_TOKENS_WITH_BALANCES') export const ADD_USER = createRequestTypes('ADD_USER') +export const SIGN_IN = createRequestTypes('SIGN_IN') +export const CREATE_3BOX_PROFILE = createRequestTypes('CREATE_3BOX_PROFILE') + export const balanceOfToken = (tokenAddress, accountAddress, options) => action(BALANCE_OF_TOKEN.REQUEST, { tokenAddress, accountAddress, options }) export const balanceOfNative = (accountAddress) => action(BALANCE_OF_NATIVE.REQUEST, { accountAddress }) export const balanceOfCln = (accountAddress) => action(BALANCE_OF_CLN.REQUEST, { accountAddress }) @@ -18,3 +21,6 @@ export const balanceOfCln = (accountAddress) => action(BALANCE_OF_CLN.REQUEST, { export const fetchBalances = (tokens, accountAddress) => action(FETCH_BALANCES.REQUEST, { accountAddress, tokens }) export const fetchTokensWithBalances = (accountAddress) => action(FETCH_TOKENS_WITH_BALANCES.REQUEST, { accountAddress }) export const fetchCommunities = (accountAddress) => communitiesAction(FETCH_COMMUNITIES.REQUEST, { accountAddress }) + +export const signIn = (accountAddress) => action(SIGN_IN.REQUEST, { accountAddress }) +export const create3boxProfile = (accountAddress, data) => action(CREATE_3BOX_PROFILE.REQUEST, { accountAddress, data }) diff --git a/dapp/src/actions/communityEntities.js b/dapp/src/actions/communityEntities.js index 9d839565..6d906ccc 100644 --- a/dapp/src/actions/communityEntities.js +++ b/dapp/src/actions/communityEntities.js @@ -17,12 +17,15 @@ export const REMOVE_ADMIN_ROLE = createTransactionRequestTypes('REMOVE_ADMIN_ROL export const CONFIRM_USER = createTransactionRequestTypes('CONFIRM_USER') export const FETCH_ENTITY = createRequestTypes('FETCH_ENTITY') +export const JOIN_COMMUNITY = createRequestTypes('JOIN_COMMUNITY') +export const IMPORT_EXISTING_ENTITY = createRequestTypes('IMPORT_EXISTING_ENTITY') +export const UPLOAD_IMAGE = createRequestTypes('UPLOAD_IMAGE') export const fetchEntities = (communityAddress) => entitiesAction(FETCH_USERS_ENTITIES.REQUEST, { communityAddress }) export const fetchUsersEntities = (communityAddress, entityType = 'user') => entitiesAction(FETCH_USERS_ENTITIES.REQUEST, { communityAddress, entityType }) export const fetchBusinessesEntities = (communityAddress, entityType = 'business') => entitiesAction(FETCH_BUSINESSES_ENTITIES.REQUEST, { communityAddress, entityType }) -export const fetchEntity = (account) => entitiesAction(FETCH_ENTITY.REQUEST, { account }) +export const fetchEntity = (communityAddress, account) => entitiesAction(FETCH_ENTITY.REQUEST, { communityAddress, account }) export const addEntity = (communityAddress, data, isClosed) => action(ADD_ENTITY.REQUEST, { communityAddress, data, isClosed }) export const removeEntity = (communityAddress, account) => action(REMOVE_ENTITY.REQUEST, { communityAddress, account }) @@ -30,5 +33,8 @@ export const addAdminRole = (account) => action(ADD_ADMIN_ROLE.REQUEST, { accoun export const removeAdminRole = (account) => action(REMOVE_ADMIN_ROLE.REQUEST, { account }) export const confirmUser = (account) => action(CONFIRM_USER.REQUEST, { account }) export const editEntity = (listAddress, hash, data) => action(EDIT_ENTITY.REQUEST, { listAddress, hash, data }) +export const joinCommunity = (communityAddress, data) => action(JOIN_COMMUNITY.REQUEST, { communityAddress, data }) +export const importExistingEntity = (accountAddress, communityAddress, isClosed) => action(IMPORT_EXISTING_ENTITY.REQUEST, { accountAddress, communityAddress, isClosed }) +export const uploadImage = (image) => action(UPLOAD_IMAGE.REQUEST, { image }) export const toggleCommunityMode = (communityAddress, isClosed) => action(TOGGLE_COMMUNITY_MODE.REQUEST, { communityAddress, isClosed }) diff --git a/dapp/src/actions/metadata.js b/dapp/src/actions/metadata.js index ef11cd0e..6d2e7973 100644 --- a/dapp/src/actions/metadata.js +++ b/dapp/src/actions/metadata.js @@ -4,6 +4,7 @@ export const entityName = 'metadata' export const FETCH_METADATA = createRequestTypes('FETCH_METADATA') export const CREATE_METADATA = createRequestTypes('CREATE_METADATA') +export const CREATE_ENTITY_METADATA = createRequestTypes('CREATE_ENTITY_METADATA') export const fetchMetadata = (tokenURI) => action(FETCH_METADATA.REQUEST, { tokenURI }) export const createMetadata = (metadata) => action(CREATE_METADATA.REQUEST, { metadata }) diff --git a/dapp/src/actions/network.js b/dapp/src/actions/network.js index 13fe71c1..14fa0c57 100644 --- a/dapp/src/actions/network.js +++ b/dapp/src/actions/network.js @@ -3,6 +3,7 @@ import { requestAction, createRequestTypes } from './utils' export const GET_NETWORK_TYPE = createRequestTypes('GET_NETWORK_TYPE') export const GET_BLOCK_NUMBER = createRequestTypes('GET_BLOCK_NUMBER') +export const CHANGE_NETWORK = createRequestTypes('CHANGE_NETWORK') export const UNSUPPORTED_NETWORK_ERROR = 'UNSUPPORTED_NETWORK_ERROR' export const CHECK_ACCOUNT_CHANGED = createRequestTypes('CHECK_ACCOUNT_CHANGED') @@ -11,9 +12,10 @@ export const ACCOUNT_LOGGED_OUT = 'ACCOUNT_LOGGED_OUT' export const FETCH_GAS_PRICES = createRequestTypes('FETCH_GAS_PRICES') export const getNetworkType = () => requestAction(GET_NETWORK_TYPE) +export const getBlockNumber = (networkType, bridgeType) => requestAction(GET_BLOCK_NUMBER, { networkType, bridgeType }) +export const changeNetwork = (networkType) => requestAction(CHANGE_NETWORK, { networkType }) export const checkAccountChanged = (selectedAddress) => requestAction(CHECK_ACCOUNT_CHANGED, { selectedAddress }) export const fetchGasPrices = () => requestAction(FETCH_GAS_PRICES) -export const getBlockNumber = (networkType, bridgeType) => requestAction(GET_BLOCK_NUMBER, { networkType, bridgeType }) diff --git a/dapp/src/components/common/CommunityLogo/index.jsx b/dapp/src/components/common/CommunityLogo/index.jsx index fd01b450..cf8070d8 100644 --- a/dapp/src/components/common/CommunityLogo/index.jsx +++ b/dapp/src/components/common/CommunityLogo/index.jsx @@ -2,12 +2,6 @@ import React from 'react' import PropTypes from 'prop-types' import Loader from 'components/common/Loader' import classNames from 'classnames' -// import logoDarkBlue from 'images/token-dark_blue.svg' -// import logoGreen from 'images/token-green.svg' -// import logoGreenGradiant from 'images/token-green_gradient.svg' -// import logoMain from 'images/token-main.svg' -// import logoMainDark from 'images/token-main-dark.svg' -// import logoMainGradiant from 'images/token-main-gradient.svg' import DAI_1 from 'images/DAI_CoinIcon1.svg' import DAI_2 from 'images/DAI_CoinIcon2.svg' import DAI_3 from 'images/DAI_CoinIcon3.svg' @@ -15,15 +9,11 @@ import tokenOne from 'images/CoinIcon1.svg' import tokenTwo from 'images/CoinIcon2.svg' import tokenThird from 'images/CoinIcon3.svg' -const getImages = (networkType) => { - // const isRopsten = networkType === 'ropsten' - const pictureEnum = { - 'CoinIcon1.svg': tokenOne, - 'CoinIcon2.svg': tokenTwo, - 'CoinIcon3.svg': tokenThird - } - return pictureEnum -} +const getImages = () => ({ + 'CoinIcon1.svg': tokenOne, + 'CoinIcon2.svg': tokenTwo, + 'CoinIcon3.svg': tokenThird +}) const getDaiIcons = () => ({ 'CoinIcon1.svg': DAI_1, @@ -31,7 +21,7 @@ const getDaiIcons = () => ({ 'CoinIcon3.svg': DAI_3 }) -const CommunityLogo = ({ networkType, metadata: { communityLogo }, token: { symbol }, isSmall = false, isBig = false, isDaiToken = false }) => { +const CommunityLogo = ({ networkType, metadata: { communityLogo = 'CoinIcon1.svg' }, token: { symbol }, isSmall = false, isBig = false, isDaiToken = false }) => { const wrapperClasses = classNames(`logo-circle__outer`, { 'logo-circle__outer--normal': !isSmall && !isBig }, { 'logo-circle__outer--small': isSmall && !isBig }, @@ -44,7 +34,7 @@ const CommunityLogo = ({ networkType, metadata: { communityLogo }, token: { symb