2025-12-22 15:04:04 +08:00
|
|
|
|
import 'dart:convert';
|
|
|
|
|
|
|
|
|
|
|
|
import 'package:hive_ce/hive.dart';
|
2024-09-17 23:19:05 -04:00
|
|
|
|
import 'package:vaani/features/per_book_settings/models/book_settings.dart';
|
2025-11-28 17:05:35 +08:00
|
|
|
|
import 'package:vaani/features/settings/models/models.dart';
|
2024-05-08 05:03:49 -04:00
|
|
|
|
|
|
|
|
|
|
// register all models to Hive for serialization
|
2026-01-13 11:56:49 +08:00
|
|
|
|
void registerModels() {
|
2025-12-22 15:04:04 +08:00
|
|
|
|
Hive.registerAdapter(
|
|
|
|
|
|
JsonAdapter<AppSettings>(
|
|
|
|
|
|
id: 1,
|
|
|
|
|
|
fromJson: AppSettings.fromJson,
|
|
|
|
|
|
),
|
2024-05-08 05:03:49 -04:00
|
|
|
|
);
|
2025-12-22 15:04:04 +08:00
|
|
|
|
Hive.registerAdapter(
|
|
|
|
|
|
JsonAdapter<ApiSettings>(
|
|
|
|
|
|
id: 2,
|
|
|
|
|
|
fromJson: ApiSettings.fromJson,
|
|
|
|
|
|
),
|
2024-05-08 05:03:49 -04:00
|
|
|
|
);
|
2025-12-22 15:04:04 +08:00
|
|
|
|
Hive.registerAdapter(
|
|
|
|
|
|
JsonAdapter<AudiobookShelfServer>(
|
|
|
|
|
|
id: 3,
|
|
|
|
|
|
fromJson: AudiobookShelfServer.fromJson,
|
|
|
|
|
|
),
|
2024-05-08 05:03:49 -04:00
|
|
|
|
);
|
2025-12-22 15:04:04 +08:00
|
|
|
|
Hive.registerAdapter(
|
|
|
|
|
|
JsonAdapter<AuthenticatedUser>(
|
|
|
|
|
|
id: 4,
|
|
|
|
|
|
fromJson: AuthenticatedUser.fromJson,
|
|
|
|
|
|
),
|
2024-09-17 23:19:05 -04:00
|
|
|
|
);
|
2025-12-22 15:04:04 +08:00
|
|
|
|
Hive.registerAdapter(
|
|
|
|
|
|
JsonAdapter<BookSettings>(
|
|
|
|
|
|
id: 5,
|
|
|
|
|
|
fromJson: BookSettings.fromJson,
|
|
|
|
|
|
),
|
2024-09-17 23:19:05 -04:00
|
|
|
|
);
|
2024-05-08 05:03:49 -04:00
|
|
|
|
}
|
2025-12-22 15:04:04 +08:00
|
|
|
|
|
|
|
|
|
|
/// 通用 JSON Adapter(适合简单模型)
|
|
|
|
|
|
class JsonAdapter<T> extends TypeAdapter<T> {
|
|
|
|
|
|
final T Function(Map<String, dynamic>) fromJson;
|
|
|
|
|
|
final int id;
|
|
|
|
|
|
|
|
|
|
|
|
const JsonAdapter({
|
|
|
|
|
|
required this.id,
|
|
|
|
|
|
required this.fromJson,
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
int get typeId => id;
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
T read(BinaryReader reader) {
|
|
|
|
|
|
final jsonString = reader.readString();
|
|
|
|
|
|
final jsonMap = jsonDecode(jsonString);
|
|
|
|
|
|
return fromJson(jsonMap);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@override
|
|
|
|
|
|
void write(BinaryWriter writer, T obj) {
|
|
|
|
|
|
writer.writeString(jsonEncode(obj));
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Future registerModels() async {
|
|
|
|
|
|
// Hive.registerAdapter<AppSettings>(
|
|
|
|
|
|
// 'AppSettings',
|
|
|
|
|
|
// ((json) => AppSettings.fromJson(json)),
|
|
|
|
|
|
// );
|
|
|
|
|
|
// Hive.registerAdapter<ApiSettings>(
|
|
|
|
|
|
// 'ApiSettings',
|
|
|
|
|
|
// ((json) => ApiSettings.fromJson(json)),
|
|
|
|
|
|
// );
|
|
|
|
|
|
// Hive.registerAdapter<AudiobookShelfServer>(
|
|
|
|
|
|
// 'AudiobookShelfServer',
|
|
|
|
|
|
// ((json) => AudiobookShelfServer.fromJson(json)),
|
|
|
|
|
|
// );
|
|
|
|
|
|
// Hive.registerAdapter<AuthenticatedUser>(
|
|
|
|
|
|
// 'AuthenticatedUser',
|
|
|
|
|
|
// ((json) => AuthenticatedUser.fromJson(json)),
|
|
|
|
|
|
// );
|
|
|
|
|
|
// Hive.registerAdapter<BookSettings>(
|
|
|
|
|
|
// 'BookSettings',
|
|
|
|
|
|
// ((json) => BookSettings.fromJson(json)),
|
|
|
|
|
|
// );
|
|
|
|
|
|
// Hive.registerAdapter<BookSettings>(
|
|
|
|
|
|
// '_\$BookSettingsImpl', // hack because of freezed
|
|
|
|
|
|
// ((json) => BookSettings.fromJson(json)),
|
|
|
|
|
|
// );
|
|
|
|
|
|
// }
|