Refactored json storage

This commit is contained in:
2024-02-17 14:16:07 +01:00
parent 1a7f28703a
commit b2da8436e4
29 changed files with 389 additions and 235 deletions

View File

@@ -0,0 +1,32 @@
import 'dart:convert';
import 'package:tunas/clients/storage/storage_client.dart';
import 'package:tunas/repositories/json/models/json.dart';
class JsonRepository {
String accountFile = 'tunas_main_account.json';
final StorageClient _storageClient;
JsonRepository({
required storageClient,
}) : _storageClient = storageClient;
saveJson(Json json) async {
await _storageClient.save(json.getJsonFileName(), jsonEncode(json.toJson()));
}
Future<T> loadJson<T extends Json>(Json json, JsonFactory<T> jsonFactory) async {
String jsonString = await _storageClient.load(json.getJsonFileName());
if (jsonString.isEmpty) {
return jsonFactory.fromJson({});
} else {
return jsonFactory.fromJson(jsonDecode(jsonString));
}
}
deleteJson(Json json) async {
await _storageClient.delete(json.getJsonFileName());
}
}

View File

@@ -0,0 +1,8 @@
abstract class Json {
Map<String, dynamic> toJson();
String getJsonFileName();
}
abstract class JsonFactory<T extends Json> {
T fromJson(Map<String, dynamic> json);
}