veilidchat/lib/account_manager/models/user_login/user_login.dart
2025-05-17 18:02:17 -04:00

36 lines
1.2 KiB
Dart

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<String, dynamic>);
// Need to catch any errors here too
// ignore: avoid_catches_without_on_clauses
} catch (e, st) {
throw Exception('invalid user login: $e\n$st');
}
}
}