diff --git a/packages/desktop-client/e2e/schedules.test.js-snapshots/Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-10-chromium-linux.png b/packages/desktop-client/e2e/schedules.test.js-snapshots/Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-10-chromium-linux.png index fa2f9434209..d7fdcf4f754 100644 Binary files a/packages/desktop-client/e2e/schedules.test.js-snapshots/Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-10-chromium-linux.png and b/packages/desktop-client/e2e/schedules.test.js-snapshots/Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-10-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/schedules.test.js-snapshots/Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-11-chromium-linux.png b/packages/desktop-client/e2e/schedules.test.js-snapshots/Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-11-chromium-linux.png index ba91cd0fa05..a70a6870cda 100644 Binary files a/packages/desktop-client/e2e/schedules.test.js-snapshots/Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-11-chromium-linux.png and b/packages/desktop-client/e2e/schedules.test.js-snapshots/Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-11-chromium-linux.png differ diff --git a/packages/desktop-client/e2e/schedules.test.js-snapshots/Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-12-chromium-linux.png b/packages/desktop-client/e2e/schedules.test.js-snapshots/Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-12-chromium-linux.png index 5bc5d5a483f..11a107a25f3 100644 Binary files a/packages/desktop-client/e2e/schedules.test.js-snapshots/Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-12-chromium-linux.png and b/packages/desktop-client/e2e/schedules.test.js-snapshots/Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-12-chromium-linux.png differ diff --git a/packages/desktop-client/src/components/schedules/ScheduleDetails.jsx b/packages/desktop-client/src/components/schedules/ScheduleDetails.jsx index aa4afd3d79f..50964d6c455 100644 --- a/packages/desktop-client/src/components/schedules/ScheduleDetails.jsx +++ b/packages/desktop-client/src/components/schedules/ScheduleDetails.jsx @@ -102,8 +102,7 @@ export function ScheduleDetails({ id, transaction }) { fields: { payee: schedule._payee, account: schedule._account, - // defalut to a non-zero value so the sign can be changed before the value - amount: schedule._amount || -1000, + amount: schedule._amount || 0, amountOp: schedule._amountOp || 'isapprox', date: schedule._date, posts_transaction: action.schedule.posts_transaction, diff --git a/packages/desktop-client/src/components/util/AmountInput.tsx b/packages/desktop-client/src/components/util/AmountInput.tsx index 671be17d9bc..1b8fd0df872 100644 --- a/packages/desktop-client/src/components/util/AmountInput.tsx +++ b/packages/desktop-client/src/components/util/AmountInput.tsx @@ -55,7 +55,9 @@ export function AmountInput({ autoDecimals = false, }: AmountInputProps) { const format = useFormat(); - const negative = (initialValue === 0 && zeroSign === '-') || initialValue < 0; + const [symbol, setSymbol] = useState<'+' | '-'>( + initialValue === 0 ? zeroSign : initialValue > 0 ? '+' : '-', + ); const initialValueAbsolute = format(Math.abs(initialValue || 0), 'financial'); const [value, setValue] = useState(initialValueAbsolute); @@ -73,12 +75,16 @@ export function AmountInput({ }, [focused]); function onSwitch() { - fireUpdate(!negative); + const amount = getAmount(); + if (amount === 0) { + setSymbol(symbol === '+' ? '-' : '+'); + } + fireUpdate(amount * -1); } - function getAmount(negate) { - const valueOrInitial = Math.abs(amountToInteger(evalArithmetic(value))); - return negate ? valueOrInitial * -1 : valueOrInitial; + function getAmount() { + const signedValued = symbol === '-' ? symbol + value : value; + return amountToInteger(evalArithmetic(signedValued)); } function onInputTextChange(val) { @@ -89,13 +95,19 @@ export function AmountInput({ onChangeValue?.(val); } - function fireUpdate(negate) { - onUpdate?.(getAmount(negate)); + function fireUpdate(amount) { + onUpdate?.(amount); + if (amount > 0) { + setSymbol('+'); + } else if (amount < 0) { + setSymbol('-'); + } } function onInputAmountBlur(e) { if (!ref.current?.contains(e.relatedTarget)) { - fireUpdate(negative); + const amount = getAmount(); + fireUpdate(amount); } onBlur?.(e); } @@ -109,14 +121,15 @@ export function AmountInput({ <Button variant="bare" isDisabled={disabled} - aria-label={`Make ${negative ? 'positive' : 'negative'}`} + aria-label={`Make ${symbol === '-' ? 'positive' : 'negative'}`} style={{ padding: '0 7px' }} onPress={onSwitch} ref={buttonRef} > - {negative ? ( + {symbol === '-' && ( <SvgSubtract style={{ width: 8, height: 8, color: 'inherit' }} /> - ) : ( + )} + {symbol === '+' && ( <SvgAdd style={{ width: 8, height: 8, color: 'inherit' }} /> )} </Button> @@ -128,7 +141,8 @@ export function AmountInput({ inputStyle={inputStyle} onKeyUp={e => { if (e.key === 'Enter') { - fireUpdate(negative); + const amount = getAmount(); + fireUpdate(amount); } }} onChangeValue={onInputTextChange} diff --git a/upcoming-release-notes/3732.md b/upcoming-release-notes/3732.md new file mode 100644 index 00000000000..5717114e139 --- /dev/null +++ b/upcoming-release-notes/3732.md @@ -0,0 +1,6 @@ +--- +category: Bugfix +authors: [lelemm] +--- + +Fix #2932: Schedule reset amount to ten (10) when amount is zero (0).