trackUserLogin method
Implementation
Future<PamResponse> trackUserLogin(String custID) async {
return await queue.add(() async {
try {
final loginPayload = _createIdentityPayload(custID);
var notiKey =
Platform.isAndroid ? "android_notification" : "ios_notification";
var deletePayload = <String, dynamic>{
"_delete_media": {notiKey: ""}
};
final previousDestination = await _createTrackingDestination();
final deleteResponse = await _postTrackerTo(
"delete_media", deletePayload, previousDestination);
if (deleteResponse.error != null) {
await _activateCustomer(custID);
return deleteResponse;
}
if (previousDestination.sessionType == _TrackingSessionType.public) {
final publicLoginResponse =
await _postTrackerTo("login", loginPayload, previousDestination);
if (publicLoginResponse.error != null) {
await _activateCustomer(custID);
return publicLoginResponse;
}
}
await _activateCustomer(custID);
final loginDestination = await _createTrackingDestination();
final response =
await _postTrackerTo("login", loginPayload, loginDestination);
final push = await getPushToken();
if (push != null && response.error == null) {
await _setDeviceToken(push);
}
return response;
} catch (error, stackTrace) {
return _createInternalErrorResponse(
"USER LOGIN ERROR", error, stackTrace);
}
});
}