in src/bluetooth/Bluetooth.tsx [239:294]
function BluetoothDetail({
route: {
params: {deviceId, deviceName},
},
}: BluetoothDetailProps) {
const [items, setData] = React.useState<ItemProps[] | null>(() => null);
const [iotcentralClient] = useIoTCentralClient();
React.useEffect(() => {
const bleManager = IotcBleManager.getInstance();
bleManager.startDeviceScan(null, {scanMode: 2}, (error, device) => {
if (error) {
console.error(error);
}
if (device?.id !== deviceId) {
return;
}
const model = bleManager.getModelForDevice(device);
const deviceData = model.onScan(device);
if (!deviceData) {
return;
}
const itemProps = model.getItemProps(deviceData);
iotcentralClient?.sendTelemetry(deviceData);
iotcentralClient?.sendProperty({bleDeviceName: device.name});
setData(
itemProps.map(item => ({
...item,
sendInterval(_value) {},
enable(_value) {},
})),
);
});
}, [deviceId, iotcentralClient]);
if (!(deviceName && items)) {
return (
<View style={styles.listLoaderContainer}>
<Loader visible message="Scanning for device" style={styles.loader} />
</View>
);
}
return (
<>
<CardView items={items} />
</>
);
}