Demo

Bluetooth

BLE scan/connect. Web requires a user gesture; mobile uses the native BLE client.

Bluetooth

BLE scan/connect. Web requires a user gesture; mobile uses the native BLE client.

  • Methods: requestPermission(), scan(), connect(id), disconnect(id)
  • Call from a click/tap handler on web
TSXBluetooth — React
1import { useState } from "react"; 2import { Bluetooth, toast } from "@quan-erp/shared-frontend-core"; 3 4export function BleScanner() { 5 const [devices, setDevices] = useState<unknown[]>([]); 6 const [connectedId, setConnectedId] = useState<string | null>(null); 7 const ble = Bluetooth.instance; 8 9 async function scan() { 10 try { 11 await ble.requestPermission(); 12 const found = await ble.scan(); 13 setDevices(Array.isArray(found) ? found : []); 14 } catch (e) { 15 toast.error((e as Error).message ?? "BLE scan failed"); 16 } 17 } 18 19 async function connect(id: string) { 20 try { 21 await ble.connect(id); 22 setConnectedId(id); 23 } catch (e) { 24 toast.error((e as Error).message ?? "BLE connect failed"); 25 } 26 } 27 28 async function disconnect() { 29 if (!connectedId) return; 30 await ble.disconnect(connectedId); 31 setConnectedId(null); 32 } 33 34 return ( 35 <div> 36 <button type="button" onClick={() => void scan()}> 37 Scan 38 </button> 39 <button type="button" onClick={() => void disconnect()}> 40 Disconnect 41 </button> 42 <pre>{JSON.stringify({ connectedId, devices }, null, 2)}</pre> 43 </div> 44 ); 45}