submitConsent method

Future<AllowConsentResult?> submitConsent(
  1. ConsentMessage consentMessage
)

Implementation

Future<AllowConsentResult?> submitConsent(
    ConsentMessage consentMessage) async {
  Map<String, dynamic> payload = {
    "_consent_message_id": consentMessage.id,
    "_version": consentMessage.version
  };

  var trackingConsentMessageID =
      Pam.shared.config?.trackingConsentMessageID ?? "x";

  for (var element in consentMessage.permission) {
    payload["_allow_${element.name.key}"] = element.allow;
    if (consentMessage.id == trackingConsentMessageID &&
        element.name == ConsentPermissionName.preferencesCookies) {
      Pam.shared.setAllowTracking(true);
    }
  }

  var body = await Pam.shared.createTrackingBody("allow_consent", payload);
  var response = await Pam.shared.trackerAPI?.postTracker(body);
  if (response == null) {
    return null;
  }

  var result = AllowConsentResult(
      response.contactID, response.database, response.consentID);

  Pam.log([
    "SUBMIT CONSENT",
    "Type: ${consentMessage.type}, ID: ${consentMessage.id}",
    ...consentMessage.permission.map((t) => "β¦Ύ${t.name.key}=${t.allow}"),
    "πŸš₯πŸš₯πŸš₯πŸš₯πŸš₯ RESULT πŸš₯πŸš₯πŸš₯πŸš₯πŸš₯",
    response
  ]);

  return result;
}