createTrackingBody method
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;
}