import React from 'react'; import { View, ScrollView, TouchableOpacity, Image } from 'react-native'; import { Loading, Label, scaleUtils } from '@widergy/mobile-ui'; import { BluetoothState } from '../../bluetooth/constants'; import type { BluetoothContextType } from '../../bluetooth/context'; import BluetoothImage from '../assets/bonding/bluetooth.png'; import BluetoothInError from '../assets/bonding/bluetoothInError.png'; import Device from '../assets/bonding/device.png'; import DeviceList from '../assets/bonding/deviceList.png'; import Check from '../assets/bonding/check.png'; import DeviceConnected from '../assets/bonding/deviceConnected.png'; import styles from './styles'; import StepProbeLinkage from '../StepProbeLinkage'; import Colors from '../Colors'; import type { ProbePairingTranslations } from './types'; export const configForState = ({ bluetoothContext, closeProbeLinkage, selectedDevice, setSelectedDevice, translations, onSetTargetDevice, }: { bluetoothContext: BluetoothContextType; closeProbeLinkage: any; selectedDevice: any; setSelectedDevice: any; translations: ProbePairingTranslations; onSetTargetDevice: Function; }) => { const SIZE_LOADING = scaleUtils.moderateHorizontalScale(164); const error = bluetoothContext.scanError || bluetoothContext.connectionError; const map = { [BluetoothState.UNAVAILABLE]: { renderContent: () => { return ( ); }, }, [BluetoothState.IDLE]: { renderContent: () => error ? ( { closeProbeLinkage(); bluetoothContext.stopScan(); }, key: 'exit', }, ]} /> ) : ( bluetoothContext.startScan()} buttons={[ { title: translations.idleTextButtonContinue, onPress: () => { bluetoothContext.startScan(); }, key: 'scan', }, ]} /> ), }, [BluetoothState.SCANNING]: { renderContent: () => { return bluetoothContext.scannedDevices.length > 0 ? ( { if (selectedDevice) { bluetoothContext.connect(selectedDevice, onSetTargetDevice).catch(err => { console.log({ err }); }); setSelectedDevice(null); } }, disabled: !selectedDevice, key: 'next', }, ]} > {bluetoothContext.scannedDevices.map(device => ( { if (selectedDevice !== device) { setSelectedDevice(device); } else { setSelectedDevice(null); } }} key={device.id} > {selectedDevice === device && } ))} ) : ( { closeProbeLinkage(); bluetoothContext.stopScan(); }, key: 'cancel', secondary: true, }, ]} > ); }, }, [BluetoothState.CONNECTING]: { renderContent: () => { return ( { bluetoothContext.stopScan(); }, key: 'cancel', }, ]} > ); }, }, [BluetoothState.CONNECTED]: { renderContent: () => ( { closeProbeLinkage(); }, key: 'success', }, ]} > ), }, }; return map[bluetoothContext.bluetoothState]; };