tryFromJson static method

Parses an order's payment.preparation.kyc map. Returns null when the order does not need verification, or carries neither a usable session (verificationId and clientSecret) nor a usable Persona inquiry id.

Implementation

static CrossmintIdentityVerificationCredentials? tryFromJson(Object? value) {
  if (value is! Map<String, Object?>) return null;
  final String? verificationId = _nonEmpty(value['verificationId']);
  final String? clientSecret = _nonEmpty(value['clientSecret']);
  if (verificationId != null && clientSecret != null) {
    return CrossmintIdentityVerificationCredentials.session(
      verificationId: verificationId,
      clientSecret: clientSecret,
      deviceSessionKey: _nonEmpty(value['deviceSessionKey']),
    );
  }
  if (value['provider'] != _provider) return null;
  final Object? inquiryId = value['inquiryId'];
  if (inquiryId is! String || inquiryId.isEmpty) return null;
  final Object? sessionToken = value['sessionToken'];
  return CrossmintIdentityVerificationCredentials(
    inquiryId: inquiryId,
    sessionToken: sessionToken is String && sessionToken.isNotEmpty
        ? sessionToken
        : null,
  );
}