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];
};