getSessionProps method

Future<Map<String, dynamic>> getSessionProps(
  1. String token,
  2. String eventName
)

Implementation

Future<Map<String, dynamic>> getSessionProps(
  String token,
  String eventName,
) async {
  if (!_isInitialized) await _initialize();
  Session session = await sessionManager.getCachedOrNewSession(eventName);
  SdkConfig sdkConfig = await configManager.getConfig(token);
  Debug.print("TrackingProvider: Session retrieved ${session.sessionId}");
  final now = DateTime.now();
  final nowMs = now.millisecondsSinceEpoch;
  final threshholdDelta = Duration(minutes: sdkConfig.sessionDurationMins);
  if (now.difference(getTimeFromTs(session.lastCachedTs)) > threshholdDelta) {
    Debug.print("TrackingProvider: Session expired. Creating a new session.");
    if (eventName == SdkTrackedEvents.sessionMeta.asString) {
      return _getSessionPropsMap(session);
    } else {
      await captureSession(session);
    }
    session = Session.newSession(createdTs: nowMs, event: eventName);
  } else {
    Debug.print("TrackingProvider: Updating cached timestamp for session.");
    session = session.copyWith(cachedTs: nowMs, endEventName: eventName);
  }
  await sessionManager.storeSessionInCache(session);
  return _getSessionPropsMap(session);
}