Skip to content

Commit 5537fa7

Browse files
committed
Return stale result for superseded useRailsForm successes
1 parent 0f4cfeb commit 5537fa7

2 files changed

Lines changed: 8 additions & 1 deletion

File tree

packages/react-on-rails/src/useRailsForm.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,7 @@ export function useRailsForm<TData extends object>(initialData: TData): UseRails
566566
options.onSuccess?.(result);
567567
} else {
568568
finishSubmission();
569+
return staleSubmitResult(response);
569570
}
570571
return result;
571572
},

packages/react-on-rails/tests/useRailsForm.test.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -920,13 +920,19 @@ describe('useRailsForm', () => {
920920
await result.current.post('/things', { onSuccess: secondOnSuccess });
921921
});
922922

923+
let firstResult: unknown;
923924
await act(async () => {
924925
resolveFirst(mockResponse({ status: 200, body: { redirect_to: '/first' } }));
925-
await firstSubmit;
926+
firstResult = await firstSubmit;
926927
});
927928

928929
expect(secondOnSuccess).toHaveBeenCalledTimes(1);
929930
expect(firstOnSuccess).not.toHaveBeenCalled();
931+
expect(firstResult).toMatchObject({
932+
ok: false,
933+
stale: true,
934+
response: expect.objectContaining({ status: 200 }),
935+
});
930936
});
931937

932938
it('propagates onSuccess errors after finishing the successful submission state', async () => {

0 commit comments

Comments
 (0)