From a011b63fb1300c5ba497fc55817524b7cc1ab586 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Sun, 4 Jan 2026 18:00:39 +0100 Subject: [PATCH] Feat: Aktualisiert Transaktionen wenn die wiederkehrenden generiert wurden --- lib/Controller/transaction_controller.dart | 14 ++++++++++++++ lib/Tasks/generate_transactions_task.dart | 18 +++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/lib/Controller/transaction_controller.dart b/lib/Controller/transaction_controller.dart index 58c60fc..da0f8c5 100644 --- a/lib/Controller/transaction_controller.dart +++ b/lib/Controller/transaction_controller.dart @@ -1,7 +1,10 @@ import 'dart:async'; +import 'dart:isolate'; import 'package:drift/drift.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:logger/logger.dart'; import '../Entities/drift_database.dart'; import '../Pages/Dialog/dialog_action.dart'; @@ -11,6 +14,7 @@ import '../Pages/Dialog/dialog_type_enum.dart'; import '../Pages/Dialog/dynamic_dialog.dart'; import '../Repositories/transaction_repository.dart'; import 'account_controller.dart'; +import 'port_controller.dart'; /// Steuert die Interaktion mit den Transaktionen class TransactionController { @@ -67,6 +71,16 @@ class TransactionController { unawaited(updateTransactions()); }); + if (!kIsWeb) { + final ReceivePort receivePort = ReceivePort() + ..listen((_) { + Logger().i('Received update-transactions signal'); + unawaited(updateTransactions()); + }); + + PortController().addPort(receivePort.sendPort, 'update-transactions'); + } + unawaited(updateTransactions()); } diff --git a/lib/Tasks/generate_transactions_task.dart b/lib/Tasks/generate_transactions_task.dart index 2115b1b..f92320c 100644 --- a/lib/Tasks/generate_transactions_task.dart +++ b/lib/Tasks/generate_transactions_task.dart @@ -1,7 +1,12 @@ +import 'dart:async'; + import 'package:drift/drift.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:logger/logger.dart'; +import '../Controller/port_controller.dart'; +import '../Controller/transaction_controller.dart'; import '../Entities/drift_database.dart'; import '../Entities/time_frame_enum.dart'; import '../Repositories/recurring_transacation_repository.dart'; @@ -34,10 +39,21 @@ class GenerateTransactionsTask extends Task { ); final Transaction? transaction = transactions.firstOrNull; - await _generateTransactions(recurringTransaction, transaction?.date); + await _generateTransactions( + recurringTransaction, + transaction?.date, + number: transactions.length, + ); } _logger.i('Generating transactions completed.'); + + if (!kIsWeb) { + PortController().getPort('update-transactions')?.send('ready'); + } else { + unawaited(TransactionController().updateTransactions()); + } + return true; }