From 8e0249f043c3b1a0f3b711f80ff777e253fb2fd6 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Mon, 24 Oct 2022 15:05:18 +0300 Subject: [PATCH] Transactions --- .../repositories/transaction_repository.dart | 28 +++++++++---------- .../transaction/transaction_actions.dart | 18 ++++++------ .../transaction/transaction_middleware.dart | 13 +++++---- .../transaction/transaction_reducer.dart | 7 ++--- lib/redux/transaction/transaction_state.dart | 4 +-- .../transaction/view/transaction_view_vm.dart | 4 +-- 6 files changed, 37 insertions(+), 37 deletions(-) diff --git a/lib/data/repositories/transaction_repository.dart b/lib/data/repositories/transaction_repository.dart index bbc728dd2..76e719812 100644 --- a/lib/data/repositories/transaction_repository.dart +++ b/lib/data/repositories/transaction_repository.dart @@ -70,15 +70,15 @@ class TransactionRepository { ), ); - final TransactionItemResponse transactionResponse = serializers - .deserializeWith(TransactionItemResponse.serializer, response); + final TransactionListResponse transactionResponse = serializers + .deserializeWith(TransactionListResponse.serializer, response); - return transactionResponse.data; + return transactionResponse.data.first; } - Future convertToExpense( + Future> convertToExpense( Credentials credentials, - String transactionId, + List transactionIds, String vendorId, String categoryId, ) async { @@ -88,19 +88,19 @@ class TransactionRepository { credentials.token, data: json.encode( { - 'transactions': [ - { - 'id': transactionId, - 'vendor_id': vendorId, - 'ninja_category_id': categoryId, - } - ] + 'transactions': transactionIds + .map((transactionId) => { + 'id': transactionId, + 'vendor_id': vendorId, + 'ninja_category_id': categoryId, + }) + .toList() }, ), ); - final TransactionItemResponse transactionResponse = serializers - .deserializeWith(TransactionItemResponse.serializer, response); + final TransactionListResponse transactionResponse = serializers + .deserializeWith(TransactionListResponse.serializer, response); return transactionResponse.data; } diff --git a/lib/redux/transaction/transaction_actions.dart b/lib/redux/transaction/transaction_actions.dart index 6b5c08dd3..f1a5e5a2e 100644 --- a/lib/redux/transaction/transaction_actions.dart +++ b/lib/redux/transaction/transaction_actions.dart @@ -218,28 +218,28 @@ class ConvertTransactionToPaymentFailure implements StopSaving { final dynamic error; } -class ConvertTransactionToExpenseRequest implements StartSaving { - ConvertTransactionToExpenseRequest( +class ConvertTransactionsToExpensesRequest implements StartSaving { + ConvertTransactionsToExpensesRequest( this.completer, - this.transactionId, + this.transactionIds, this.vendorId, this.categoryId, ); final Completer completer; - final String transactionId; + final List transactionIds; final String vendorId; final String categoryId; } -class ConvertTransactionToExpenseSuccess implements StopSaving, PersistData { - ConvertTransactionToExpenseSuccess(this.transaction); +class ConvertTransactionsToExpensesSuccess implements StopSaving, PersistData { + ConvertTransactionsToExpensesSuccess(this.transactions); - final TransactionEntity transaction; + final BuiltList transactions; } -class ConvertTransactionToExpenseFailure implements StopSaving { - ConvertTransactionToExpenseFailure(this.error); +class ConvertTransactionsToExpensesFailure implements StopSaving { + ConvertTransactionsToExpensesFailure(this.error); final dynamic error; } diff --git a/lib/redux/transaction/transaction_middleware.dart b/lib/redux/transaction/transaction_middleware.dart index 2a6370481..e8d8027af 100644 --- a/lib/redux/transaction/transaction_middleware.dart +++ b/lib/redux/transaction/transaction_middleware.dart @@ -1,3 +1,4 @@ +import 'package:built_collection/built_collection.dart'; import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart'; import 'package:redux/redux.dart'; @@ -41,7 +42,7 @@ List> createStoreTransactionsMiddleware([ TypedMiddleware(convertTransactions), TypedMiddleware( convertToPayment), - TypedMiddleware( + TypedMiddleware( convertToExpense), ]; } @@ -225,23 +226,23 @@ Middleware _convertToPayment(TransactionRepository repository) { Middleware _convertToExpense(TransactionRepository repository) { return (Store store, dynamic dynamicAction, NextDispatcher next) { - final action = dynamicAction as ConvertTransactionToExpenseRequest; + final action = dynamicAction as ConvertTransactionsToExpensesRequest; repository .convertToExpense( store.state.credentials, - action.transactionId, + action.transactionIds, action.vendorId, action.categoryId, ) - .then((TransactionEntity transaction) { - store.dispatch(ConvertTransactionToExpenseSuccess(transaction)); + .then((BuiltList transactions) { + store.dispatch(ConvertTransactionsToExpensesSuccess(transactions)); store.dispatch(RefreshData()); if (action.completer != null) { action.completer.complete(null); } }).catchError((Object error) { print(error); - store.dispatch(ConvertTransactionToExpenseFailure(error)); + store.dispatch(ConvertTransactionsToExpensesFailure(error)); if (action.completer != null) { action.completer.completeError(error); } diff --git a/lib/redux/transaction/transaction_reducer.dart b/lib/redux/transaction/transaction_reducer.dart index d8d1284e4..496730344 100644 --- a/lib/redux/transaction/transaction_reducer.dart +++ b/lib/redux/transaction/transaction_reducer.dart @@ -209,7 +209,7 @@ final transactionsReducer = combineReducers([ TypedReducer(_updateTransaction), TypedReducer( _convertTransactionToPayment), - TypedReducer( + TypedReducer( _convertTransactionToExpense), //TypedReducer(_convertTransactions), TypedReducer(_addTransaction), @@ -272,9 +272,8 @@ TransactionState _convertTransactionToPayment(TransactionState transactionState, } TransactionState _convertTransactionToExpense(TransactionState transactionState, - ConvertTransactionToExpenseSuccess action) { - return transactionState - .rebuild((b) => b..map[action.transaction.id] = action.transaction); + ConvertTransactionsToExpensesSuccess action) { + return transactionState.loadTransactions(action.transactions); } /* diff --git a/lib/redux/transaction/transaction_state.dart b/lib/redux/transaction/transaction_state.dart index 2e913780c..4ca85713d 100644 --- a/lib/redux/transaction/transaction_state.dart +++ b/lib/redux/transaction/transaction_state.dart @@ -34,9 +34,9 @@ abstract class TransactionState } } - TransactionState loadTransactions(BuiltList clients) { + TransactionState loadTransactions(BuiltList transactions) { final map = Map.fromIterable( - clients, + transactions, key: (dynamic item) => item.id, value: (dynamic item) => item, ); diff --git a/lib/ui/transaction/view/transaction_view_vm.dart b/lib/ui/transaction/view/transaction_view_vm.dart index 62253efcb..7eed6ed50 100644 --- a/lib/ui/transaction/view/transaction_view_vm.dart +++ b/lib/ui/transaction/view/transaction_view_vm.dart @@ -83,10 +83,10 @@ class TransactionViewVM { }, onConvertToExpense: (context, transactionId, vendorId, categoryId) { store.dispatch( - ConvertTransactionToExpenseRequest( + ConvertTransactionsToExpensesRequest( snackBarCompleter( context, AppLocalization.of(context).convertedTransaction), - transactionId, + [transactionId], vendorId, categoryId, ),