Refactored json storage
This commit is contained in:
32
lib/repositories/json/json_repository.dart
Normal file
32
lib/repositories/json/json_repository.dart
Normal 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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user