diff --git a/packages/blockchain-wallet-v4-frontend/src/data/modules/sfox/actionTypes.js b/packages/blockchain-wallet-v4-frontend/src/data/modules/sfox/actionTypes.js index 4d1f3567c2e..09f37365a88 100644 --- a/packages/blockchain-wallet-v4-frontend/src/data/modules/sfox/actionTypes.js +++ b/packages/blockchain-wallet-v4-frontend/src/data/modules/sfox/actionTypes.js @@ -23,3 +23,6 @@ export const SFOX_LOADING = '@COMPONENT.SFOX_LOADING' export const SFOX_SUCCESS = '@COMPONENT.SFOX_SUCCESS' export const SFOX_FAILURE = '@COMPONENT.SFOX_FAILURE' export const SFOX_NOT_ASKED = '@COMPONENT.SFOX_NOT_ASKED' + +export const ENABLE_SIFT_SCIENCE = '@COMPONENT.ENABLE_SIFT_SCIENCE' +export const DISABLE_SIFT_SCIENCE = '@COMPONENT.DISABLE_SIFT_SCIENCE' diff --git a/packages/blockchain-wallet-v4-frontend/src/data/modules/sfox/actions.js b/packages/blockchain-wallet-v4-frontend/src/data/modules/sfox/actions.js index e08cacc39c7..26b07b26e67 100644 --- a/packages/blockchain-wallet-v4-frontend/src/data/modules/sfox/actions.js +++ b/packages/blockchain-wallet-v4-frontend/src/data/modules/sfox/actions.js @@ -25,3 +25,6 @@ export const sfoxNotAsked = () => ({ type: AT.SFOX_NOT_ASKED }) export const sfoxLoading = () => ({ type: AT.SFOX_LOADING }) export const sfoxSuccess = () => ({ type: AT.SFOX_SUCCESS }) export const sfoxFailure = (error) => ({ type: AT.SFOX_FAILURE, payload: error }) + +export const enableSiftScience = () => ({ type: AT.ENABLE_SIFT_SCIENCE }) +export const disableSiftScience = () => ({ type: AT.DISABLE_SIFT_SCIENCE }) diff --git a/packages/blockchain-wallet-v4-frontend/src/data/modules/sfox/reducers.js b/packages/blockchain-wallet-v4-frontend/src/data/modules/sfox/reducers.js index b62bbe0c463..493a69fdf31 100644 --- a/packages/blockchain-wallet-v4-frontend/src/data/modules/sfox/reducers.js +++ b/packages/blockchain-wallet-v4-frontend/src/data/modules/sfox/reducers.js @@ -4,7 +4,8 @@ import { Remote } from 'blockchain-wallet-v4/src' const INITIAL_STATE = { sfoxBusy: Remote.NotAsked, - qaSellAddress: null + qaSellAddress: null, + siftScienceEnabled: false } const sfoxSignup = (state = INITIAL_STATE, action) => { @@ -29,6 +30,12 @@ const sfoxSignup = (state = INITIAL_STATE, action) => { case AT.SFOX_FAILURE: { return assoc('sfoxBusy', Remote.Failure(payload), state) } + case AT.ENABLE_SIFT_SCIENCE: { + return assoc('siftScienceEnabled', true, state) + } + case AT.DISABLE_SIFT_SCIENCE: { + return assoc('siftScienceEnabled', false, state) + } default: return state } diff --git a/packages/blockchain-wallet-v4-frontend/src/modals/SfoxExchangeData/sift-science.js b/packages/blockchain-wallet-v4-frontend/src/modals/SfoxExchangeData/sift-science.js new file mode 100644 index 00000000000..f0894360e43 --- /dev/null +++ b/packages/blockchain-wallet-v4-frontend/src/modals/SfoxExchangeData/sift-science.js @@ -0,0 +1,68 @@ +import React, { Component } from 'react' +import { connect } from 'react-redux' +import { bindActionCreators } from 'redux' +import { actions, selectors } from 'data' +import { path } from 'ramda' + +class ISignThisContainer extends Component { + constructor (props) { + super(props) + this.state = { enabled: false } + } + componentDidMount () { + let receiveMessage = (e) => { + const helperDomain = path(['domains', 'walletHelper'], this.propswalletOptions) + if (!e.data.command) return + if (e.data.from !== 'sift-science') return + if (e.data.to !== 'exchange') return + if (e.origin !== helperDomain) return + switch (e.data.command) { + case 'done': + // Remove Sift Science iframe: + this.props.sfoxFrontendActions.disableSiftScience() + break + default: + return null + } + + }; + window.addEventListener('message', receiveMessage, false) + } + + render () { + const { options, userId, siftScienceEnabled } = this.props + const walletOptions = options || path(['data'], this.props.walletOptions) + const helperDomain = path(['domains', 'walletHelper'], walletOptions) + const sfoxSiftScience = path(['platforms', 'web', 'sfox', 'config', 'siftScience'], walletOptions) + + let url = `${helperDomain}/wallet-helper/sift-science/#/key/${sfoxSiftScience}/user/${userId}` + // url += scope.tradeId ? `/trade/${scope.tradeId}` : ''; + + if (userId) { + return null + } + + if (siftScienceEnabled) { + return ( +