1
0
mirror of https://github.com/aclindsa/moneygo.git synced 2025-06-28 18:48:38 -04:00

Reduxify CRUD actions for transactions

This commit is contained in:
2017-05-24 19:47:18 -04:00
parent 7f736812b3
commit 6762b3e721
11 changed files with 370 additions and 203 deletions

@ -9,6 +9,7 @@ var SelectedAccountReducer = require('./SelectedAccountReducer');
var SelectedSecurityReducer = require('./SelectedSecurityReducer');
var ReportReducer = require('./ReportReducer');
var SelectedReportReducer = require('./SelectedReportReducer');
var TransactionReducer = require('./TransactionReducer');
var TransactionPageReducer = require('./TransactionPageReducer');
var ErrorReducer = require('./ErrorReducer');
@ -22,6 +23,7 @@ module.exports = Redux.combineReducers({
selectedSecurity: SelectedSecurityReducer,
reports: ReportReducer,
selectedReport: SelectedReportReducer,
transactions: TransactionReducer,
transactionPage: TransactionPageReducer,
error: ErrorReducer
});

@ -1,30 +1,34 @@
var assign = require('object-assign');
var TransactionPageConstants = require('../constants/TransactionPageConstants');
var TransactionConstants = require('../constants/TransactionConstants');
var UserConstants = require('../constants/UserConstants');
var AccountConstants = require('../constants/AccountConstants');
var Account = require('../models').Account;
module.exports = function(state = {account: new Account(), pageSize: 1, page: 0, numPages: 0, transactions: [], endingBalance: "0" }, action) {
module.exports = function(state = {account: new Account(), pageSize: 1, page: 0, numPages: 0, transactions: [], endingBalance: "0", selection: -1, upToDate: false }, action) {
switch (action.type) {
case TransactionPageConstants.FETCH_TRANSACTION_PAGE:
return {
case AccountConstants.ACCOUNT_SELECTED:
case TransactionConstants.FETCH_TRANSACTION_PAGE:
return assign({}, state, {
account: action.account,
pageSize: action.pageSize,
page: action.page,
numPages: 0,
transactions: [],
endingBalance: "0"
};
case TransactionPageConstants.TRANSACTION_PAGE_FETCHED:
return {
endingBalance: "0",
upToDate: true
});
case TransactionConstants.TRANSACTION_PAGE_FETCHED:
return assign({}, state, {
account: action.account,
pageSize: action.pageSize,
page: action.page,
numPages: action.numPages,
transactions: action.transactions,
endingBalance: action.endingBalance
};
transactions: action.transactions.map(function(t) {return t.TransactionId}),
endingBalance: action.endingBalance,
upToDate: true
});
case UserConstants.USER_LOGGEDOUT:
return {
account: new Account(),
@ -32,8 +36,28 @@ module.exports = function(state = {account: new Account(), pageSize: 1, page: 0,
page: 0,
numPages: 0,
transactions: [],
endingBalance: "0"
endingBalance: "0",
selection: -1,
upToDate: false
};
case TransactionConstants.TRANSACTION_CREATED:
case TransactionConstants.TRANSACTION_UPDATED:
return assign({}, state, {
upToDate: false
});
case TransactionConstants.TRANSACTION_REMOVED:
return assign({}, state, {
transactions: state.transactions.filter(function(t) {return t != action.transactionId}),
upToDate: false
});
case TransactionConstants.TRANSACTION_SELECTED:
return assign({}, state, {
selection: action.transactionId
});
case TransactionConstants.SELECTION_CLEARED:
return assign({}, state, {
selection: -1
});
default:
return state;
}

@ -0,0 +1,32 @@
var assign = require('object-assign');
var TransactionConstants = require('../constants/TransactionConstants');
var UserConstants = require('../constants/UserConstants');
module.exports = function(state = {}, action) {
switch (action.type) {
case TransactionConstants.TRANSACTION_PAGE_FETCHED:
var transactions = assign({}, state);
for (var tidx in action.transactions) {
var t = action.transactions[tidx];
transactions = assign({}, transactions, {
[t.TransactionId]: t
});
}
return transactions;
case TransactionConstants.TRANSACTION_CREATED:
case TransactionConstants.TRANSACTION_UPDATED:
var transaction = action.transaction;
return assign({}, state, {
[transaction.TransactionId]: transaction
});
case TransactionConstants.TRANSACTION_REMOVED:
var transactions = assign({}, state);
delete transactions[action.transactionId];
return transactions;
case UserConstants.USER_LOGGEDOUT:
return {};
default:
return state;
}
};