getSession method
Future<Session?>
getSession({
- required String appName,
- required String userId,
- required String sessionId,
- 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);
}