33 lines
868 B
Dart
33 lines
868 B
Dart
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());
|
|
}
|
|
}
|