createTrackingBody method

Future<Map<String, dynamic>> createTrackingBody(
  1. String? event,
  2. Map<String, dynamic>? payload
)

Implementation

Future<Map<String, dynamic>> createTrackingBody(
    String? event, Map<String, dynamic>? payload) async {
  var platformName = await _getPlatformName();
  var packageInfo = await PackageInfo.fromPlatform();

  Map<String, dynamic> body = {
    "event": event,
    "platform": platformName,
    "form_fields": [],
  };

  var contactID = await getContactID();
  var osVersion = await _getOSVersion();

  Pam.log(["GET contact ID = $contactID"]);

  Map<String, dynamic> formField = {
    "os_version": osVersion,
    "app_version": packageInfo.version,
    "_session_id": getSessionID(),
    "_consent_message_id": config?.trackingConsentMessageID,
    "_database": await getDatabaseAlias()
  };

  String loginKey = "customer";

  if (config?.loginKey != "") {
    loginKey = config?.loginKey ?? "customer";
  }

  if (payload?.containsKey(loginKey) == false &&
      payload?.containsKey("_key_name") == false) {
    if (isNotEmpty(contactID)) {
      formField["_contact_id"] = contactID;
    }
  }

  payload?.forEach((key, value) {
    if (key == "page_url" || key == "page_title") {
      body[key] = value;
    } else {
      formField[key] = value;
    }
  });

  if (await isUserLogin()) {
    formField["customer"] = await _getCustID();
  }

  formField["uuid"] = await _getDeviceUDID();

  body["form_fields"] = formField;
  return body;
}