Transactions

This commit is contained in:
Hillel Coren 2022-10-24 15:05:18 +03:00
parent ee5570abf5
commit 8e0249f043
6 changed files with 37 additions and 37 deletions

View File

@ -70,15 +70,15 @@ class TransactionRepository {
), ),
); );
final TransactionItemResponse transactionResponse = serializers final TransactionListResponse transactionResponse = serializers
.deserializeWith(TransactionItemResponse.serializer, response); .deserializeWith(TransactionListResponse.serializer, response);
return transactionResponse.data; return transactionResponse.data.first;
} }
Future<TransactionEntity> convertToExpense( Future<BuiltList<TransactionEntity>> convertToExpense(
Credentials credentials, Credentials credentials,
String transactionId, List<String> transactionIds,
String vendorId, String vendorId,
String categoryId, String categoryId,
) async { ) async {
@ -88,19 +88,19 @@ class TransactionRepository {
credentials.token, credentials.token,
data: json.encode( data: json.encode(
{ {
'transactions': [ 'transactions': transactionIds
{ .map((transactionId) => {
'id': transactionId, 'id': transactionId,
'vendor_id': vendorId, 'vendor_id': vendorId,
'ninja_category_id': categoryId, 'ninja_category_id': categoryId,
} })
] .toList()
}, },
), ),
); );
final TransactionItemResponse transactionResponse = serializers final TransactionListResponse transactionResponse = serializers
.deserializeWith(TransactionItemResponse.serializer, response); .deserializeWith(TransactionListResponse.serializer, response);
return transactionResponse.data; return transactionResponse.data;
} }

View File

@ -218,28 +218,28 @@ class ConvertTransactionToPaymentFailure implements StopSaving {
final dynamic error; final dynamic error;
} }
class ConvertTransactionToExpenseRequest implements StartSaving { class ConvertTransactionsToExpensesRequest implements StartSaving {
ConvertTransactionToExpenseRequest( ConvertTransactionsToExpensesRequest(
this.completer, this.completer,
this.transactionId, this.transactionIds,
this.vendorId, this.vendorId,
this.categoryId, this.categoryId,
); );
final Completer completer; final Completer completer;
final String transactionId; final List<String> transactionIds;
final String vendorId; final String vendorId;
final String categoryId; final String categoryId;
} }
class ConvertTransactionToExpenseSuccess implements StopSaving, PersistData { class ConvertTransactionsToExpensesSuccess implements StopSaving, PersistData {
ConvertTransactionToExpenseSuccess(this.transaction); ConvertTransactionsToExpensesSuccess(this.transactions);
final TransactionEntity transaction; final BuiltList<TransactionEntity> transactions;
} }
class ConvertTransactionToExpenseFailure implements StopSaving { class ConvertTransactionsToExpensesFailure implements StopSaving {
ConvertTransactionToExpenseFailure(this.error); ConvertTransactionsToExpensesFailure(this.error);
final dynamic error; final dynamic error;
} }

View File

@ -1,3 +1,4 @@
import 'package:built_collection/built_collection.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart'; import 'package:flutter/widgets.dart';
import 'package:redux/redux.dart'; import 'package:redux/redux.dart';
@ -41,7 +42,7 @@ List<Middleware<AppState>> createStoreTransactionsMiddleware([
TypedMiddleware<AppState, ConvertTransactionsRequest>(convertTransactions), TypedMiddleware<AppState, ConvertTransactionsRequest>(convertTransactions),
TypedMiddleware<AppState, ConvertTransactionToPaymentRequest>( TypedMiddleware<AppState, ConvertTransactionToPaymentRequest>(
convertToPayment), convertToPayment),
TypedMiddleware<AppState, ConvertTransactionToExpenseRequest>( TypedMiddleware<AppState, ConvertTransactionsToExpensesRequest>(
convertToExpense), convertToExpense),
]; ];
} }
@ -225,23 +226,23 @@ Middleware<AppState> _convertToPayment(TransactionRepository repository) {
Middleware<AppState> _convertToExpense(TransactionRepository repository) { Middleware<AppState> _convertToExpense(TransactionRepository repository) {
return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) { return (Store<AppState> store, dynamic dynamicAction, NextDispatcher next) {
final action = dynamicAction as ConvertTransactionToExpenseRequest; final action = dynamicAction as ConvertTransactionsToExpensesRequest;
repository repository
.convertToExpense( .convertToExpense(
store.state.credentials, store.state.credentials,
action.transactionId, action.transactionIds,
action.vendorId, action.vendorId,
action.categoryId, action.categoryId,
) )
.then((TransactionEntity transaction) { .then((BuiltList<TransactionEntity> transactions) {
store.dispatch(ConvertTransactionToExpenseSuccess(transaction)); store.dispatch(ConvertTransactionsToExpensesSuccess(transactions));
store.dispatch(RefreshData()); store.dispatch(RefreshData());
if (action.completer != null) { if (action.completer != null) {
action.completer.complete(null); action.completer.complete(null);
} }
}).catchError((Object error) { }).catchError((Object error) {
print(error); print(error);
store.dispatch(ConvertTransactionToExpenseFailure(error)); store.dispatch(ConvertTransactionsToExpensesFailure(error));
if (action.completer != null) { if (action.completer != null) {
action.completer.completeError(error); action.completer.completeError(error);
} }

View File

@ -209,7 +209,7 @@ final transactionsReducer = combineReducers<TransactionState>([
TypedReducer<TransactionState, SaveTransactionSuccess>(_updateTransaction), TypedReducer<TransactionState, SaveTransactionSuccess>(_updateTransaction),
TypedReducer<TransactionState, ConvertTransactionToPaymentSuccess>( TypedReducer<TransactionState, ConvertTransactionToPaymentSuccess>(
_convertTransactionToPayment), _convertTransactionToPayment),
TypedReducer<TransactionState, ConvertTransactionToExpenseSuccess>( TypedReducer<TransactionState, ConvertTransactionsToExpensesSuccess>(
_convertTransactionToExpense), _convertTransactionToExpense),
//TypedReducer<TransactionState, ConvertTransactionsSuccess>(_convertTransactions), //TypedReducer<TransactionState, ConvertTransactionsSuccess>(_convertTransactions),
TypedReducer<TransactionState, AddTransactionSuccess>(_addTransaction), TypedReducer<TransactionState, AddTransactionSuccess>(_addTransaction),
@ -272,9 +272,8 @@ TransactionState _convertTransactionToPayment(TransactionState transactionState,
} }
TransactionState _convertTransactionToExpense(TransactionState transactionState, TransactionState _convertTransactionToExpense(TransactionState transactionState,
ConvertTransactionToExpenseSuccess action) { ConvertTransactionsToExpensesSuccess action) {
return transactionState return transactionState.loadTransactions(action.transactions);
.rebuild((b) => b..map[action.transaction.id] = action.transaction);
} }
/* /*

View File

@ -34,9 +34,9 @@ abstract class TransactionState
} }
} }
TransactionState loadTransactions(BuiltList<TransactionEntity> clients) { TransactionState loadTransactions(BuiltList<TransactionEntity> transactions) {
final map = Map<String, TransactionEntity>.fromIterable( final map = Map<String, TransactionEntity>.fromIterable(
clients, transactions,
key: (dynamic item) => item.id, key: (dynamic item) => item.id,
value: (dynamic item) => item, value: (dynamic item) => item,
); );

View File

@ -83,10 +83,10 @@ class TransactionViewVM {
}, },
onConvertToExpense: (context, transactionId, vendorId, categoryId) { onConvertToExpense: (context, transactionId, vendorId, categoryId) {
store.dispatch( store.dispatch(
ConvertTransactionToExpenseRequest( ConvertTransactionsToExpensesRequest(
snackBarCompleter<Null>( snackBarCompleter<Null>(
context, AppLocalization.of(context).convertedTransaction), context, AppLocalization.of(context).convertedTransaction),
transactionId, [transactionId],
vendorId, vendorId,
categoryId, categoryId,
), ),