Skip to content
Snippets Groups Projects
Unverified Commit 2e600e52 authored by Joel Jeremy Marquez's avatar Joel Jeremy Marquez Committed by GitHub
Browse files

[Maintenance] Update TransactionEdit conponent onEdit function to use...

[Maintenance] Update TransactionEdit conponent onEdit function to use serialized transactions (#2555)

* [Maintenance] Update onEdit to use serialized transactions

* Release notes
parent b5f617db
No related branches found
No related tags found
No related merge requests found
...@@ -495,10 +495,10 @@ const TransactionEditInner = memo(function TransactionEditInner({ ...@@ -495,10 +495,10 @@ const TransactionEditInner = memo(function TransactionEditInner({
}; };
const onSave = async () => { const onSave = async () => {
const [transaction] = unserializedTransactions; const [unserializedTransaction] = unserializedTransactions;
const onConfirmSave = async () => { const onConfirmSave = async () => {
const { account: accountId } = transaction; const { account: accountId } = unserializedTransaction;
const account = accountsById[accountId]; const account = accountsById[accountId];
if (unserializedTransactions.find(t => t.account == null)) { if (unserializedTransactions.find(t => t.account == null)) {
...@@ -516,7 +516,7 @@ const TransactionEditInner = memo(function TransactionEditInner({ ...@@ -516,7 +516,7 @@ const TransactionEditInner = memo(function TransactionEditInner({
navigate(`/accounts/${account.id}`, { replace: true }); navigate(`/accounts/${account.id}`, { replace: true });
}; };
if (transaction.reconciled) { if (unserializedTransaction.reconciled) {
// On mobile any save gives the warning. // On mobile any save gives the warning.
// On the web only certain changes trigger a warning. // On the web only certain changes trigger a warning.
// Should we bring that here as well? Or does the nature of the editing form // Should we bring that here as well? Or does the nature of the editing form
...@@ -536,31 +536,22 @@ const TransactionEditInner = memo(function TransactionEditInner({ ...@@ -536,31 +536,22 @@ const TransactionEditInner = memo(function TransactionEditInner({
onSave(); onSave();
}; };
const onEdit = async (transaction, name, value) => { const onEdit = async (serializedTransaction, name, value) => {
const newTransaction = { ...transaction, [name]: value }; const newTransaction = { ...serializedTransaction, [name]: value };
await props.onEdit(newTransaction); await props.onEdit(newTransaction);
onClearActiveEdit(); onClearActiveEdit();
}; };
const onClick = (transactionId, name) => { const onClick = (transactionId, name) => {
onRequestActiveEdit?.(getFieldName(transaction.id, name), () => { onRequestActiveEdit?.(getFieldName(transaction.id, name), () => {
const transaction = unserializedTransactions.find( const transactionToEdit = transactions.find(t => t.id === transactionId);
t => t.id === transactionId,
);
switch (name) { switch (name) {
case 'category': case 'category':
dispatch( dispatch(
pushModal('category-autocomplete', { pushModal('category-autocomplete', {
categoryGroups, categoryGroups,
onSelect: categoryId => { onSelect: categoryId => {
// This is a deficiency of this API, need to fix. It onEdit(transactionToEdit, name, categoryId);
// assumes that it receives a serialized transaction,
// but we only have access to the raw transaction
onEdit(
serializeTransaction(transaction, dateFormat),
name,
categoryId,
);
}, },
onClose: () => { onClose: () => {
onClearActiveEdit(); onClearActiveEdit();
...@@ -572,14 +563,7 @@ const TransactionEditInner = memo(function TransactionEditInner({ ...@@ -572,14 +563,7 @@ const TransactionEditInner = memo(function TransactionEditInner({
dispatch( dispatch(
pushModal('account-autocomplete', { pushModal('account-autocomplete', {
onSelect: accountId => { onSelect: accountId => {
// This is a deficiency of this API, need to fix. It onEdit(transactionToEdit, name, accountId);
// assumes that it receives a serialized transaction,
// but we only have access to the raw transaction
onEdit(
serializeTransaction(transaction, dateFormat),
name,
accountId,
);
}, },
onClose: () => { onClose: () => {
onClearActiveEdit(); onClearActiveEdit();
...@@ -591,14 +575,7 @@ const TransactionEditInner = memo(function TransactionEditInner({ ...@@ -591,14 +575,7 @@ const TransactionEditInner = memo(function TransactionEditInner({
dispatch( dispatch(
pushModal('payee-autocomplete', { pushModal('payee-autocomplete', {
onSelect: payeeId => { onSelect: payeeId => {
// This is a deficiency of this API, need to fix. It onEdit(transactionToEdit, name, payeeId);
// assumes that it receives a serialized transaction,
// but we only have access to the raw transaction
onEdit(
serializeTransaction(transaction, dateFormat),
name,
payeeId,
);
}, },
onClose: () => { onClose: () => {
onClearActiveEdit(); onClearActiveEdit();
...@@ -611,14 +588,7 @@ const TransactionEditInner = memo(function TransactionEditInner({ ...@@ -611,14 +588,7 @@ const TransactionEditInner = memo(function TransactionEditInner({
pushModal('edit-field', { pushModal('edit-field', {
name, name,
onSubmit: (name, value) => { onSubmit: (name, value) => {
// This is a deficiency of this API, need to fix. It onEdit(transactionToEdit, name, value);
// assumes that it receives a serialized transaction,
// but we only have access to the raw transaction
onEdit(
serializeTransaction(transaction, dateFormat),
name,
value,
);
}, },
onClose: () => { onClose: () => {
onClearActiveEdit(); onClearActiveEdit();
...@@ -631,18 +601,18 @@ const TransactionEditInner = memo(function TransactionEditInner({ ...@@ -631,18 +601,18 @@ const TransactionEditInner = memo(function TransactionEditInner({
}; };
const onDelete = id => { const onDelete = id => {
const [transaction, ..._childTransactions] = unserializedTransactions; const [unserializedTransaction] = unserializedTransactions;
const onConfirmDelete = () => { const onConfirmDelete = () => {
props.onDelete(id); props.onDelete(id);
if (transaction.id !== id) { if (unserializedTransaction.id !== id) {
// Only a child transaction was deleted. // Only a child transaction was deleted.
onClearActiveEdit(); onClearActiveEdit();
return; return;
} }
const { account: accountId } = transaction; const { account: accountId } = unserializedTransaction;
if (accountId) { if (accountId) {
navigate(`/accounts/${accountId}`, { replace: true }); navigate(`/accounts/${accountId}`, { replace: true });
} else { } else {
...@@ -650,7 +620,7 @@ const TransactionEditInner = memo(function TransactionEditInner({ ...@@ -650,7 +620,7 @@ const TransactionEditInner = memo(function TransactionEditInner({
} }
}; };
if (transaction.reconciled) { if (unserializedTransaction.reconciled) {
dispatch( dispatch(
pushModal('confirm-transaction-edit', { pushModal('confirm-transaction-edit', {
onConfirm: onConfirmDelete, onConfirm: onConfirmDelete,
...@@ -683,9 +653,11 @@ const TransactionEditInner = memo(function TransactionEditInner({ ...@@ -683,9 +653,11 @@ const TransactionEditInner = memo(function TransactionEditInner({
}; };
useEffect(() => { useEffect(() => {
const noAmountTransaction = childTransactions.find(t => t.amount === 0); const noAmountChildTransaction = childTransactions.find(
if (noAmountTransaction) { t => t.amount === 0,
scrollChildTransactionIntoView(noAmountTransaction.id); );
if (noAmountChildTransaction) {
scrollChildTransactionIntoView(noAmountChildTransaction.id);
} }
}, [childTransactions]); }, [childTransactions]);
......
---
category: Maintenance
authors: [joel-jeremy]
---
Update TransactionEdit component onEdit function to use serialized transactions.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment