Files
PiliPlus/lib/utils/accounts/account_adapter.dart
bggRGjQaUbCoE 7f70ee5045 refa: dir
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
2025-05-03 15:26:06 +08:00

48 lines
1.2 KiB
Dart

import 'package:PiliPlus/utils/accounts/account.dart';
import 'package:PiliPlus/utils/storage.dart';
import 'package:cookie_jar/cookie_jar.dart';
import 'package:hive/hive.dart';
class LoginAccountAdapter extends TypeAdapter<LoginAccount> {
@override
final int typeId = 9;
@override
LoginAccount read(BinaryReader reader) {
final numOfFields = reader.readByte();
final fields = <int, dynamic>{
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
};
return LoginAccount(
fields[0] as DefaultCookieJar,
fields[1] as String?,
fields[2] as String?,
(fields[3] as List?)?.cast<AccountType>().toSet(),
);
}
@override
void write(BinaryWriter writer, LoginAccount obj) {
writer
..writeByte(4)
..writeByte(0)
..write(obj.cookieJar)
..writeByte(1)
..write(obj.accessKey)
..writeByte(2)
..write(obj.refresh)
..writeByte(3)
..write(obj.type.toList());
}
@override
int get hashCode => typeId.hashCode;
@override
bool operator ==(Object other) =>
identical(this, other) ||
other is LoginAccountAdapter &&
runtimeType == other.runtimeType &&
typeId == other.typeId;
}