complete budget page

This commit is contained in:
2024-03-01 22:53:19 +01:00
parent 979fecb60a
commit f86c4cd18b
16 changed files with 547 additions and 164 deletions

View File

@@ -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 {