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
.deserializeWith(TransactionItemResponse.serializer, response);
final TransactionListResponse transactionResponse = serializers
.deserializeWith(TransactionListResponse.serializer, response);
return transactionResponse.data;
return transactionResponse.data.first;
}
Future<TransactionEntity> convertToExpense(
Future<BuiltList<TransactionEntity>> convertToExpense(
Credentials credentials,
String transactionId,
List<String> 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;
}

View File

@ -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<String> 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<TransactionEntity> transactions;
}
class ConvertTransactionToExpenseFailure implements StopSaving {
ConvertTransactionToExpenseFailure(this.error);
class ConvertTransactionsToExpensesFailure implements StopSaving {
ConvertTransactionsToExpensesFailure(this.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/widgets.dart';
import 'package:redux/redux.dart';
@ -41,7 +42,7 @@ List<Middleware<AppState>> createStoreTransactionsMiddleware([
TypedMiddleware<AppState, ConvertTransactionsRequest>(convertTransactions),
TypedMiddleware<AppState, ConvertTransactionToPaymentRequest>(
convertToPayment),
TypedMiddleware<AppState, ConvertTransactionToExpenseRequest>(
TypedMiddleware<AppState, ConvertTransactionsToExpensesRequest>(
convertToExpense),
];
}
@ -225,23 +226,23 @@ Middleware<AppState> _convertToPayment(TransactionRepository repository) {
Middleware<AppState> _convertToExpense(TransactionRepository repository) {
return (Store<AppState> 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<TransactionEntity> 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);
}

View File

@ -209,7 +209,7 @@ final transactionsReducer = combineReducers<TransactionState>([
TypedReducer<TransactionState, SaveTransactionSuccess>(_updateTransaction),
TypedReducer<TransactionState, ConvertTransactionToPaymentSuccess>(
_convertTransactionToPayment),
TypedReducer<TransactionState, ConvertTransactionToExpenseSuccess>(
TypedReducer<TransactionState, ConvertTransactionsToExpensesSuccess>(
_convertTransactionToExpense),
//TypedReducer<TransactionState, ConvertTransactionsSuccess>(_convertTransactions),
TypedReducer<TransactionState, AddTransactionSuccess>(_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);
}
/*

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(
clients,
transactions,
key: (dynamic item) => item.id,
value: (dynamic item) => item,
);

View File

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