Improved json auto save & budget mobile UI
This commit is contained in:
@@ -4,6 +4,7 @@ import 'package:tunas/repositories/metadata/models/budget.dart';
|
||||
import 'package:tunas/repositories/metadata/models/category.dart';
|
||||
import 'package:tunas/repositories/metadata/models/account.dart';
|
||||
import 'package:tunas/repositories/metadata/models/metadata.dart';
|
||||
import 'package:tunas/repositories/metadata/models/settings.dart';
|
||||
|
||||
class MetadataRepository {
|
||||
|
||||
@@ -11,6 +12,7 @@ class MetadataRepository {
|
||||
final _categoriesController = BehaviorSubject<List<Category>>.seeded(const []);
|
||||
final _budgetController = BehaviorSubject<List<Budget>>.seeded(const []);
|
||||
final _accountController = BehaviorSubject<List<Account>>.seeded(const []);
|
||||
final _settingsController = BehaviorSubject<Settings>.seeded(const Settings());
|
||||
|
||||
MetadataRepository({
|
||||
required jsonRepository,
|
||||
@@ -40,6 +42,14 @@ class MetadataRepository {
|
||||
return _accountController.asBroadcastStream();
|
||||
}
|
||||
|
||||
Settings getSettings() {
|
||||
return _settingsController.value;
|
||||
}
|
||||
|
||||
Stream<Settings> getSettingsStream() {
|
||||
return _settingsController.asBroadcastStream();
|
||||
}
|
||||
|
||||
void loadMetadata() async {
|
||||
Metadata metadata = await _jsonRepository.loadJson(Metadata(), MetadataFactory());
|
||||
_broadcastMetadata(metadata);
|
||||
@@ -69,6 +79,14 @@ class MetadataRepository {
|
||||
return accounts;
|
||||
}
|
||||
|
||||
Settings saveSettings(Settings settings) {
|
||||
Metadata metadata = _constructMetadataFromControllers();
|
||||
metadata.settings = settings;
|
||||
_jsonRepository.saveJson(metadata);
|
||||
_settingsController.add(settings);
|
||||
return settings;
|
||||
}
|
||||
|
||||
void deleteMetadata() {
|
||||
Metadata metadata = Metadata();
|
||||
_jsonRepository.saveJson(metadata);
|
||||
@@ -79,6 +97,7 @@ class MetadataRepository {
|
||||
_categoriesController.add(metadata.categories);
|
||||
_budgetController.add(metadata.budgets);
|
||||
_accountController.add(metadata.accounts);
|
||||
_settingsController.add(metadata.settings);
|
||||
}
|
||||
|
||||
Metadata _constructMetadataFromControllers() {
|
||||
@@ -86,6 +105,7 @@ class MetadataRepository {
|
||||
categories: _categoriesController.value,
|
||||
budgets: _budgetController.value,
|
||||
accounts: _accountController.value,
|
||||
settings: _settingsController.value,
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user