invokeSDKApiMethod<T> method

Future<SyneriseResult<T>> invokeSDKApiMethod<T>(
  1. String invokeMethodName, {
  2. dynamic parameters,
  3. bool isMappable = false,
  4. GenericTypeKey? genericTypeKey,
})

Implementation

Future<SyneriseResult<T>> invokeSDKApiMethod<T>(String invokeMethodName,
    {dynamic parameters,
    bool isMappable = false,
    GenericTypeKey? genericTypeKey}) async {
  SyneriseResult<T>? result;
  await Dependencies.backgroundMethodChannel
      .invokeMethod(invokeMethodName, parameters)
      .then((dynamic value) {
    if (!isMappable) {
      if (value is T) {
        result = SyneriseResult<T>(value, null);
      } else {
        result = SyneriseResult<T>(
            null, SyneriseError.unknownApiCommunicationError());
      }
    } else {
      dynamic finalValue = genericTypeKey != null
          ? Mappings.makeGenericMapping(genericTypeKey, value)
          : Mappings.makeMapping<T>(value as Map);

      if (finalValue != null && finalValue is T) {
        result = SyneriseResult<T>(finalValue, null);
      } else {
        result = SyneriseResult<T>(
            null, SyneriseError.unknownApiCommunicationError());
      }
    }
  }).catchError((e) {
    result = SyneriseResult<T>(null, SyneriseError.fromObject(e));
  });
  return Future.value(result);
}