import 'package:freezed_annotation/freezed_annotation.dart'; import 'package:veilid_support/veilid_support.dart'; part 'user_login.freezed.dart'; part 'user_login.g.dart'; // Represents a currently logged in account // User logins are stored in the user_logins tablestore table // indexed by the accountSuperIdentityRecordKey @Freezed(toJson: true) sealed class UserLogin with _$UserLogin { @JsonSerializable() const factory UserLogin({ // SuperIdentity record key for the user // used to index the local accounts table required TypedKey superIdentityRecordKey, // The identity secret as unlocked from the local accounts table required TypedSecret identitySecret, // The account record key, owner key and secret pulled from the identity required AccountRecordInfo accountRecordInfo, // The time this login was most recently used required Timestamp lastActive, }) = _UserLogin; factory UserLogin.fromJson(dynamic json) { try { return _$UserLoginFromJson(json as Map); // Need to catch any errors here too // ignore: avoid_catches_without_on_clauses } catch (e, st) { throw Exception('invalid user login: $e\n$st'); } } }