handleApiCall method

Future handleApiCall(
  1. MethodCall call
)

Implementation

Future<dynamic> handleApiCall(MethodCall call) async {
  switch (call.method) {
    case 'getNFCAvailability':
      return window.navigator.hasProperty('usb'.toJS).toDart ? 'available' : 'not_supported';

    case 'poll':
      return await WebUsbDriver.listen(call.arguments["timeout"], call.arguments["probeWebUSBMagic"]);

    case 'transceive':
      var payload = call.arguments["data"];
      if (payload is Uint8List) {
        final hex = NfcToolkit.toHex(payload);
        final response = await WebUsbDriver.exchange(hex);
        return NfcToolkit.fromHex(response);
      }
      return await WebUsbDriver.exchange(payload as String);

    case 'finish':
      return await WebUsbDriver.halt(call.arguments["closeWebUSB"]);

    case 'getDeviceInfo':
      return {
        'supported': window.navigator.hasProperty('usb'.toJS).toDart,
        'enabled': window.navigator.hasProperty('usb'.toJS).toDart,
        'manufacturer': 'WebBrowser',
        'model': 'WebUSB-Adapter',
      };

    default:
      throw PlatformException(code: "501", details: "Method ${call.method} not implemented for web");
  }
}