logEvents static method
Implementation
static Future<void> logEvents() async {
String? payloadString =
await SensfrxFlutter.getRawDeviceFingerprintsPayload();
if (payloadString == null || payloadString.isEmpty) {
debugPrint('Error: Payload string is null or empty');
return;
}
Map<String, dynamic> devicePayload = json.decode(payloadString);
EventManager eventManager = EventManager(
location: TrackLocationEvent.toJson(),
deviceLogs: devicePayload,
events: currentBatch,
);
debugPrint("Events Batch : ${eventManager.toJson()}");
String baseUrl =
Constants.sandbox ? Constants.baseUrlSandbox : Constants.baseUrlDev;
String timestamp = DateTime.now().millisecondsSinceEpoch.toString();
String signature = AppSignature.generateSignature("event");
try {
String? package = await getPackageName();
String? token = await SensfrxFlutter.getRequestToken();
final response = await http.post(
Uri.parse("$baseUrl/user_events"),
body: jsonEncode(eventManager.toJson()),
headers: {
'Content-Type': 'application/json',
'package': package,
'authorization': Utils.encodeSecret(SensfrxFlutter.getSecretKey()),
'token': token!,
'timestamp': timestamp,
'sign': signature,
},
);
debugPrint("baseUrl : $baseUrl /ser_events");
debugPrint("package : $package");
debugPrint("authorization : ${ Utils.encodeSecret(SensfrxFlutter.getSecretKey())}");
debugPrint("token : $token");
debugPrint("timestamp : $timestamp");
debugPrint('Signature: $signature');
final jsonData = jsonDecode(response.body);
final status = jsonData['status'];
final message = jsonData['message'];
debugPrint("EventQueueManager Response :> $jsonData");
if (status == 200) {
Fluttertoast.showToast(
msg: message,
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.BOTTOM,
backgroundColor: Colors.black54,
textColor: Colors.white,
);
resetRetryCount();
flushQueue();
} else {
currentRetryCount++;
if (currentRetryCount <= maxRetryAttempts) {
increaseQueueSize();
if (currentBatch.length >= maxQueueSize) {
await logEvents();
}
} else if (currentBatch.length >= 100) {
flushQueue();
} else {
resetRetryCount();
}
}
} catch (error) {
debugPrint('Error: $error');
} finally {
loggingInProgress = false;
}
}