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 {
|
||||
|
||||
@@ -45,37 +45,37 @@ class MetadataRepository {
|
||||
_broadcastMetadata(metadata);
|
||||
}
|
||||
|
||||
Future<List<Category>> saveCategories(List<Category> categories) async {
|
||||
List<Category> saveCategories(List<Category> categories) {
|
||||
Metadata metadata = _constructMetadataFromControllers();
|
||||
metadata.categories = categories;
|
||||
await _jsonRepository.saveJson(metadata);
|
||||
_jsonRepository.saveJson(metadata);
|
||||
_categoriesController.add(categories);
|
||||
return categories;
|
||||
}
|
||||
|
||||
Future<List<Budget>> saveBudgets(List<Budget> budgets) async {
|
||||
List<Budget> saveBudgets(List<Budget> budgets) {
|
||||
Metadata metadata = _constructMetadataFromControllers();
|
||||
metadata.budgets = budgets;
|
||||
await _jsonRepository.saveJson(metadata);
|
||||
_jsonRepository.saveJson(metadata);
|
||||
_budgetController.add(budgets);
|
||||
return budgets;
|
||||
}
|
||||
|
||||
Future<List<Account>> saveAccounts(List<Account> accounts) async {
|
||||
List<Account> saveAccounts(List<Account> accounts) {
|
||||
Metadata metadata = _constructMetadataFromControllers();
|
||||
metadata.accounts = accounts;
|
||||
await _jsonRepository.saveJson(metadata);
|
||||
_jsonRepository.saveJson(metadata);
|
||||
_accountController.add(accounts);
|
||||
return accounts;
|
||||
}
|
||||
|
||||
deleteMetadata() async {
|
||||
void deleteMetadata() {
|
||||
Metadata metadata = Metadata();
|
||||
await _jsonRepository.saveJson(metadata);
|
||||
_jsonRepository.saveJson(metadata);
|
||||
_broadcastMetadata(metadata);
|
||||
}
|
||||
|
||||
_broadcastMetadata(Metadata metadata) {
|
||||
void _broadcastMetadata(Metadata metadata) {
|
||||
_categoriesController.add(metadata.categories);
|
||||
_budgetController.add(metadata.budgets);
|
||||
_accountController.add(metadata.accounts);
|
||||
|
||||
@@ -20,20 +20,20 @@ class TransactionsRepository {
|
||||
return _transactionsController.asBroadcastStream();
|
||||
}
|
||||
|
||||
loadTransactions() async {
|
||||
Future<void> loadTransactions() async {
|
||||
Transactions transactions = await _jsonRepository.loadJson(Transactions(), TransactionsFactory());
|
||||
_transactionsController.add(transactions.transactions);
|
||||
}
|
||||
|
||||
saveTransactions(List<Transaction> transactionsList) async {
|
||||
void saveTransactions(List<Transaction> transactionsList) {
|
||||
Transactions transactions = Transactions(transactions: transactionsList);
|
||||
await _jsonRepository.saveJson(transactions);
|
||||
_jsonRepository.saveJson(transactions);
|
||||
_transactionsController.add(transactionsList);
|
||||
}
|
||||
|
||||
deleteTransactions() async {
|
||||
void deleteTransactions() {
|
||||
Transactions transactions = Transactions();
|
||||
await _jsonRepository.saveJson(transactions);
|
||||
_jsonRepository.saveJson(transactions);
|
||||
_transactionsController.add([]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user