handleGeneratorBluetoothPress function

Future<void> handleGeneratorBluetoothPress({
  1. required BuildContext context,
  2. required WidgetRef ref,
  3. required String? hubSerialNumber,
})

Handles generator Bluetooth connect/disconnect actions.

Implementation

Future<void> handleGeneratorBluetoothPress({
  required BuildContext context,
  required WidgetRef ref,
  required String? hubSerialNumber,
}) async {
  if (hubSerialNumber == null || hubSerialNumber.isEmpty) {
    return;
  }

  final isBluetoothConnected =
      ref.read(hubBleManagerFamily(hubSerialNumber)) is BleConnected;

  if (!isBluetoothConnected) {
    await showModalBottomSheet<void>(
      context: context,
      isScrollControlled: true,
      backgroundColor: Colors.transparent,
      builder: (_) => PairGeneratorBottomSheet(
        hubSerialNumber: hubSerialNumber,
      ),
    );
    return;
  }

  await showAppActionDialog(
    context,
    title: context.sharedL10n.disconnectBluetoothDevice,
    content: Text(context.sharedL10n.disconnectGeneratorContent),
    closeButtonText: context.sharedL10n.cancel,
    actionButtonText: context.sharedL10n.disconnect,
    onActionPressed: () async {
      await ref
          .read(hubBleManagerFamily(hubSerialNumber).notifier)
          .disconnect();
    },
  );
}