uaestats_fe/lib/domain/entities/session_entity.dart
2024-10-28 16:45:11 +05:30

49 lines
1.3 KiB
Dart

import 'dart:convert';
enum SessionFreshness { fresh, stale, expired }
class SessionEntity {
const SessionEntity({
required this.id,
required this.expiresOn,
required this.token,
required this.modelJson,
});
factory SessionEntity.fromMap(Map<String, dynamic> map) => SessionEntity(
id: map['id'],
expiresOn: DateTime.fromMillisecondsSinceEpoch(
map['expiresOn'] as int,
),
token: map['token'] as String,
modelJson: map['modelJson'],
);
factory SessionEntity.fromJson(String source) => SessionEntity.fromMap(
json.decode(source) as Map<String, dynamic>,
);
final String id;
final DateTime expiresOn;
final String token;
final Map<String, dynamic> modelJson;
SessionFreshness get freshness {
final now = DateTime.now();
if (now.isAfter(expiresOn)) return SessionFreshness.expired;
if (expiresOn.difference(now) < const Duration(days: 7)) {
return SessionFreshness.stale;
}
return SessionFreshness.fresh;
}
Map<String, dynamic> toMap() => <String, dynamic>{
'id': id,
'expiresOn': expiresOn.millisecondsSinceEpoch,
'token': token,
'modelJson': modelJson,
};
String toJson() => json.encode(toMap());
}