Fix state persistence: save state before navigation
All checks were successful
Build and Push Docker Images / docker (push) Successful in 47s
All checks were successful
Build and Push Docker Images / docker (push) Successful in 47s
Issue: Calculator inputs were not being saved before navigating to checkout because navigation happened synchronously before useEffect could run. Solution: Call saveState() directly in handleCalculate before navigation in both TripCalculator and MobileCalculator components. This ensures calculator inputs (fuel amount, distance, etc.) are properly preserved when users click "Calculate Impact" and then cancel checkout. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
5e642794d8
commit
043cdf07b3
@ -82,6 +82,19 @@ export function MobileCalculator({ vesselData, onOffsetClick, onBack }: Props) {
|
|||||||
|
|
||||||
const handleCalculate = useCallback((e: React.FormEvent) => {
|
const handleCalculate = useCallback((e: React.FormEvent) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
|
// Save state before setting results
|
||||||
|
saveState({
|
||||||
|
calculationType,
|
||||||
|
distance,
|
||||||
|
speed,
|
||||||
|
fuelRate,
|
||||||
|
fuelAmount,
|
||||||
|
fuelUnit,
|
||||||
|
customAmount,
|
||||||
|
offsetPercentage: 100,
|
||||||
|
});
|
||||||
|
|
||||||
if (calculationType === 'distance') {
|
if (calculationType === 'distance') {
|
||||||
const estimate = calculateTripCarbon(
|
const estimate = calculateTripCarbon(
|
||||||
vesselData,
|
vesselData,
|
||||||
@ -99,7 +112,7 @@ export function MobileCalculator({ vesselData, onOffsetClick, onBack }: Props) {
|
|||||||
co2Emissions
|
co2Emissions
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, [calculationType, distance, speed, fuelRate, fuelAmount, fuelUnit, vesselData]);
|
}, [calculationType, distance, speed, fuelRate, fuelAmount, fuelUnit, customAmount, vesselData, saveState]);
|
||||||
|
|
||||||
|
|
||||||
const handleCustomAmountChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {
|
const handleCustomAmountChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
|||||||
@ -66,6 +66,19 @@ export function TripCalculator({ vesselData, onOffsetClick }: Props) {
|
|||||||
|
|
||||||
const handleCalculate = useCallback((e: React.FormEvent) => {
|
const handleCalculate = useCallback((e: React.FormEvent) => {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
|
|
||||||
|
// Save state before navigating
|
||||||
|
saveState({
|
||||||
|
calculationType,
|
||||||
|
distance,
|
||||||
|
speed,
|
||||||
|
fuelRate,
|
||||||
|
fuelAmount,
|
||||||
|
fuelUnit,
|
||||||
|
customAmount,
|
||||||
|
offsetPercentage: 100,
|
||||||
|
});
|
||||||
|
|
||||||
if (calculationType === 'distance') {
|
if (calculationType === 'distance') {
|
||||||
const estimate = calculateTripCarbon(
|
const estimate = calculateTripCarbon(
|
||||||
vesselData,
|
vesselData,
|
||||||
@ -80,7 +93,7 @@ export function TripCalculator({ vesselData, onOffsetClick }: Props) {
|
|||||||
// Immediately navigate to projects page without showing results
|
// Immediately navigate to projects page without showing results
|
||||||
onOffsetClick?.(co2Emissions);
|
onOffsetClick?.(co2Emissions);
|
||||||
}
|
}
|
||||||
}, [calculationType, distance, speed, fuelRate, fuelAmount, fuelUnit, vesselData, onOffsetClick]);
|
}, [calculationType, distance, speed, fuelRate, fuelAmount, fuelUnit, customAmount, vesselData, onOffsetClick, saveState]);
|
||||||
|
|
||||||
|
|
||||||
const handleCustomAmountChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {
|
const handleCustomAmountChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user