getCapabilities method

  1. @override
Future<InappifyBackendCapabilities> getCapabilities()
override

Reports whether this adapter can own a complete SDK session.

The default implementation is intentionally unavailable so existing federated implementations continue to use the Dart backend until they explicitly implement the complete versioned contract.

Implementation

@override
Future<InappifyBackendCapabilities> getCapabilities() async {
  try {
    final response = await _invoke(
      method: InappifyChannelContract.handshake,
      payload: <String, Object?>{
        'clientProtocolVersions': const <int>[
          InappifyChannelContract.protocolVersion,
        ],
      },
    );
    if (!response.isSuccess || response.data == null) {
      return InappifyBackendCapabilities.unavailable(
        backendKind: InappifyBackendKind.methodChannel,
      );
    }
    return InappifyBackendCapabilities.fromMap(response.data!);
  } on MissingPluginException {
    return InappifyBackendCapabilities.unavailable(
      backendKind: InappifyBackendKind.methodChannel,
    );
  } on PlatformException {
    return InappifyBackendCapabilities.unavailable(
      backendKind: InappifyBackendKind.methodChannel,
    );
  } on FormatException {
    return InappifyBackendCapabilities.unavailable(
      backendKind: InappifyBackendKind.methodChannel,
    );
  } catch (_) {
    return InappifyBackendCapabilities.unavailable(
      backendKind: InappifyBackendKind.methodChannel,
    );
  }
}