setReservedAttribute method

  1. @override
Future<InappifySdkResult<void>> setReservedAttribute(
  1. InappifyReservedAttributeRequest request
)
inherited

Stores a reserved customer attribute.

Implementation

@override
Future<InappifySdkResult<void>> setReservedAttribute(
  InappifyReservedAttributeRequest request,
) async {
  final cancelled = _preCancelled<void>(
    'setReservedAttribute',
    request.cancellation,
  );
  if (cancelled != null) return cancelled;
  final setter = _documentedReservedSetter(request.attribute);
  if (setter == null) {
    return InappifySdkResult<void>.failure(
      InappifyFailure.unsupported(
        'setReservedAttribute.${request.attribute.name}',
      ),
      snapshot: _snapshot,
    );
  }
  return _run<void>(
    'setReservedAttribute',
    action: () async {
      await _bridge.call(
        setter,
        positionalArguments: <Object?>[
          request.value,
          if (request.cancellation != null) const <String, Object?>{},
        ],
        cancellation: request.cancellation,
        injectAbortSignal: request.cancellation != null,
      );
      _readCustomerPropertyBestEffort();
    },
    cancellation: request.cancellation,
    mutationMayHaveCommitted: true,
  );
}