/* @flow */ import React, { Component } from 'react'; import Select from 'react-select'; import TrezorConnect from 'trezor-connect'; import type { Props } from './index'; import type { TrezorDevice } from '~/flowtype'; export const DeviceSelect = (props: Props) => { const { devices } = props; const { transport } = props.connect; const selected: ?TrezorDevice = props.wallet.selectedDevice; if (!selected) return null; let deviceStatus: string = 'Connected'; let css: string = 'device-select device'; if (props.deviceDropdownOpened) css += ' opened'; if (!selected.connected) { css += ' disconnected'; deviceStatus = 'Disconnected'; } else if (!selected.available) { css += ' unavailable'; deviceStatus = 'Unavailable'; } else { if (selected.type === 'acquired') { if (selected.status === 'occupied') { css += ' used-elsewhere'; deviceStatus = 'Used in other window'; } else if (selected.status === 'used') { css += ' reload-features'; } } else if (selected.type === 'unacquired') { css += ' unacquired'; deviceStatus = 'Used in other window'; } } if (selected.features && selected.features.major_version > 1) { css += ' trezor-t'; } const handleOpen = () => { props.toggleDeviceDropdown(!props.deviceDropdownOpened); }; const deviceCount = devices.length; const webusb: boolean = !!((transport && transport.version.indexOf('webusb') >= 0)); const disabled: boolean = (devices.length < 1 && !webusb) || (devices.length === 1 && !selected.features && !webusb); if (disabled) { css += ' disabled'; } return (