getSession method

  1. @override
Future<Session?> getSession({
  1. required String appName,
  2. required String userId,
  3. required String sessionId,
  4. GetSessionConfig? config,
})
override

Returns a single session when it exists, otherwise null.

Implementation

@override
Future<Session?> getSession({
  required String appName,
  required String userId,
  required String sessionId,
  GetSessionConfig? config,
}) async {
  final Session? session = _sessions[appName]?[userId]?[sessionId];
  if (session == null) {
    return null;
  }

  final Session copied = session.copyWith();

  if (config != null) {
    if (config.numRecentEvents != null && config.numRecentEvents! == 0) {
      copied.events = <Event>[];
    } else if (config.numRecentEvents != null &&
        config.numRecentEvents! > 0) {
      final int count = config.numRecentEvents!;
      if (copied.events.length > count) {
        copied.events = copied.events.sublist(copied.events.length - count);
      }
    }

    if (config.afterTimestamp != null) {
      copied.events = copied.events
          .where((Event event) => event.timestamp >= config.afterTimestamp!)
          .toList();
    }
  }

  return _mergeState(appName: appName, userId: userId, session: copied);
}