aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/components/qr-scanner/qr-scanner.component.js
diff options
context:
space:
mode:
Diffstat (limited to 'ui/app/components/qr-scanner/qr-scanner.component.js')
-rw-r--r--ui/app/components/qr-scanner/qr-scanner.component.js186
1 files changed, 0 insertions, 186 deletions
diff --git a/ui/app/components/qr-scanner/qr-scanner.component.js b/ui/app/components/qr-scanner/qr-scanner.component.js
deleted file mode 100644
index a0b52495d..000000000
--- a/ui/app/components/qr-scanner/qr-scanner.component.js
+++ /dev/null
@@ -1,186 +0,0 @@
-import React, { Component } from 'react'
-import PropTypes from 'prop-types'
-import {connect} from 'react-redux'
-import { BrowserQRCodeReader } from '@zxing/library'
-import adapter from 'webrtc-adapter' // eslint-disable-line import/no-nodejs-modules, no-unused-vars
-import { hideQrScanner, qrCodeDetected} from '../../actions'
-import Spinner from '../spinner'
-
-class QrScanner extends Component {
- static propTypes = {
- visible: PropTypes.bool,
- hideQrScanner: PropTypes.func,
- qrCodeDetected: PropTypes.func,
- }
- constructor (props) {
- super(props)
- this.state = {
- ready: false,
- msg: 'Accesing your camera...',
- }
- this.scanning = false
- this.codeReader = null
- }
-
- componentDidUpdate () {
- if (this.props.visible && this.camera && !this.scanning) {
- this.scanning = true
- this.initCamera()
- }
- }
-
- initCamera () {
- console.log('QR-SCANNER: initCamera ')
- this.codeReader = new BrowserQRCodeReader()
- this.codeReader.getVideoInputDevices()
- .then(videoInputDevices => {
- console.log('QR-SCANNER: getVideoInputDevices ', videoInputDevices)
- setTimeout(_ => {
- this.setState({
- ready: true,
- msg: 'Place the QR code in front of your camera so we can read it...'})
- console.log('QR-SCANNER: this.state.ready = true')
- }, 2000)
-
- console.log('QR-SCANNER: started scanning...')
- this.codeReader.decodeFromInputVideoDevice(videoInputDevices[0].deviceId, 'video')
- .then(content => {
- console.log('QR-SCANNER: content found!', content)
- this.codeReader.reset()
- console.log('QR-SCANNER: stopped scanning...')
- const result = this.parseContent(content.text)
- if (result.type !== 'unknown') {
- console.log('QR-SCANNER: CODE DETECTED', result)
- this.props.qrCodeDetected(result)
- this.props.hideQrScanner()
- this.setState({ ready: false })
- } else {
- this.setState({msg: 'Error: We couldn\'t identify that QR code'})
- console.log('QR-SCANNER: Unknown code')
- }
- })
- .catch(err => {
- console.log('QR-SCANNER: decodeFromInputVideoDevice threw an exception: ', err)
- })
- }).catch(err => {
- console.log('QR-SCANNER: getVideoInputDevices threw an exception: ', err)
- })
- }
-
- parseContent (content) {
- let type = 'unknown'
- let values = {}
-
- // Here we could add more cases
- // To parse other codes (transactions for ex.)
-
- if (content.split('ethereum:').length > 1) {
- type = 'address'
- values = {'address': content.split('ethereum:')[1] }
- }
- return {type, values}
- }
-
-
- stopAndClose = () => {
- console.log('QR-SCANNER: stopping scanner...')
- this.codeReader.reset()
- this.scanning = false
- this.props.hideQrScanner()
- this.setState({ ready: false })
- }
-
- render () {
- const { visible } = this.props
-
- if (!visible) {
- return null
- }
-
- return (
- <div className={'qr-code-modal-wrapper'}>
- <div className={'qr-scanner'}
- style={{
- position: 'fixed',
- top: '50%',
- left: '50%',
- zIndex: 1050,
- minWidth: '320px',
- minHeight: '400px',
- maxWidth: '300px',
- maxHeight: '300px',
- transform: 'translate(-50%, -50%)',
- backgroundColor: '#ffffff',
- padding: '15px',
- }}
- >
- <h3 style={{
- textAlign: 'center',
- marginBottom: '20px',
- fontSize: '1.5rem',
- fontWeight: '500',
- }}>
- Scan QR code
- </h3>
- <div
- className={'qr-code-video-wrapper'}
- style={{
- overflow: 'hidden',
- width: '100%',
- height: '275px',
- display: 'flex',
- alignItems: 'center',
- justifyContent: 'center',
- }}>
- <video
- id="video"
- style={{
- width: 'auto',
- height: '275px',
- marginLeft: '-15%',
- display: this.state.ready ? 'block' : 'none',
- transform: 'scaleX(-1)',
- }}
- ref={(cam) => {
- this.camera = cam
- }}
- />
- { !this.state.ready ? <Spinner color={'#F7C06C'} /> : null}
- </div>
- <div className={'qr-code-help'} style={{textAlign: 'center', fontSize: '12px', padding: '15px'}}>
- {this.state.msg}
- </div>
- </div>
- <div
- className={'qr-code-modal-overlay'}
- style={{
- position: 'fixed',
- top: '0',
- right: '0',
- bottom: '0',
- left: '0',
- zIndex: '1040',
- backgroundColor: 'rgba(0, 0, 0, 0.5)',
- animationFillMode: 'forwards',
- animationDuration: '0.3s',
- animationName: 'anim_171532470906313',
- animationTimingFunction: 'ease-out',
- }}
- onClick={this.stopAndClose}
- />
- </div>
- )
- }
-}
-
-function mapDispatchToProps (dispatch) {
- return {
- hideQrScanner: () => dispatch(hideQrScanner()),
- qrCodeDetected: (data) => dispatch(qrCodeDetected(data)),
- }
-}
-function mapStateToProps (state) {
- return {}
-}
-
-export default connect(mapStateToProps, mapDispatchToProps)(QrScanner)