complete budget page
This commit is contained in:
@@ -1,19 +1,31 @@
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:tunas/clients/storage/storage_client.dart';
|
||||
import 'package:tunas/clients/storage/json_storage_client.dart';
|
||||
import 'package:tunas/repositories/json/models/json.dart';
|
||||
|
||||
class JsonRepository {
|
||||
String accountFile = 'tunas_main_account.json';
|
||||
|
||||
final StorageClient _storageClient;
|
||||
final JsonStorageClient _storageClient;
|
||||
|
||||
Map<String, Timer> saveTimerMap = {};
|
||||
|
||||
JsonRepository({
|
||||
required storageClient,
|
||||
}) : _storageClient = storageClient;
|
||||
|
||||
saveJson(Json json) async {
|
||||
await _storageClient.save(json.getJsonFileName(), jsonEncode(json.toJson()));
|
||||
void saveJson(Json json) {
|
||||
Timer? saveTimer = saveTimerMap[json.getJsonFileName()];
|
||||
|
||||
if (saveTimer != null) {
|
||||
saveTimer.cancel();
|
||||
}
|
||||
|
||||
saveTimer = Timer(const Duration(milliseconds: 500), () {
|
||||
saveTimerMap.remove(json.getJsonFileName());
|
||||
_storageClient.save(json.getJsonFileName(), jsonEncode(json.toJson()));
|
||||
});
|
||||
}
|
||||
|
||||
Future<T> loadJson<T extends Json>(Json json, JsonFactory<T> jsonFactory) async {
|
||||
|
||||
Reference in New Issue
Block a user