Skip to content

Commit 4e408b9

Browse files
committed
fix: expose jumper widget navigation context to parent
1 parent d81c5c2 commit 4e408b9

2 files changed

Lines changed: 27 additions & 1 deletion

File tree

src/components/composite/JumperWidget/JumperWidget.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
} from 'react';
1616
import { useForm, useStore } from '@tanstack/react-form';
1717
import { useStore as useZustandStore } from 'zustand';
18+
import type { NavigationContextValue } from './context';
1819
import {
1920
FormContext,
2021
NavigationContext,
@@ -237,6 +238,7 @@ const JumperWidgetInner: FC<JumperWidgetInnerProps> = ({
237238
interface JumperWidgetProps {
238239
views: WidgetView[];
239240
statusSheet?: JumperWidgetStatusSheetProp;
241+
onNavigationReady?: (navigationContext: NavigationContextValue) => void;
240242
style?: {
241243
container?: SxProps<Theme>;
242244
mainView?: SxProps<Theme>;
@@ -248,6 +250,7 @@ interface JumperWidgetProps {
248250
export const JumperWidget: FC<JumperWidgetProps> = ({
249251
views,
250252
statusSheet,
253+
onNavigationReady,
251254
style,
252255
}) => {
253256
const uiStoreRef = useRef<ReturnType<typeof createWidgetStore> | null>(null);
@@ -318,6 +321,10 @@ export const JumperWidget: FC<JumperWidgetProps> = ({
318321
[currentViewId, goToView, submit, isSubmitting, error, clearError],
319322
);
320323

324+
useEffect(() => {
325+
onNavigationReady?.({ ...navigationContext });
326+
}, [navigationContext, onNavigationReady]);
327+
321328
return (
322329
<WidgetStoreContext.Provider value={uiStoreRef.current}>
323330
<FormContext.Provider value={form}>

src/components/composite/RequestRedeemModal/RequestRedeemModal.tsx

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { ModalContainer } from '@/components/core/modals/ModalContainer/ModalContainer';
22
import type { ModalContainerProps } from '@/components/core/modals/ModalContainer/ModalContainer';
33
import type { EarnOpportunityExtended } from '@/stores/depositFlow/DepositFlowStore';
4-
import { useMemo, useState, useCallback, type FC } from 'react';
4+
import { useMemo, useState, useCallback, useRef, type FC } from 'react';
55
import { useRedeemableClaims } from '@/hooks/earn/useRedeemableClaims';
66
import type { FormattedClaim } from './hooks/useFormatRedeemClaimData';
77
import { useFormatRedeemClaimData } from './hooks/useFormatRedeemClaimData';
88
import { useTransactionForm } from '@/hooks/transactions/useTransactionForm';
99
import { JumperWidget } from '@/components/composite/JumperWidget/JumperWidget';
10+
import type { NavigationContextValue } from '../JumperWidget/context';
1011
import { createTokenBalance } from '@/types/tokens';
1112
import { useTranslation } from 'react-i18next';
1213
import { RequestViewSubmitButton } from './components/RequestViewSubmitButton';
@@ -53,6 +54,15 @@ export const RequestRedeemModal: FC<RequestRedeemModalProps> = ({
5354
const { lpToken, lpTokenAmount, assetToken, refetchLpTokenAmount } =
5455
useEarnOpportunityTokens(earnOpportunity);
5556

57+
const widgetNavigationRef = useRef<NavigationContextValue | null>(null);
58+
59+
const handleWidgetNavigationReady = useCallback(
60+
(value: NavigationContextValue) => {
61+
widgetNavigationRef.current = value;
62+
},
63+
[],
64+
);
65+
5666
const isClaimFlow = selectedClaim !== null;
5767

5868
const fetchCallData = useCallback(async () => {
@@ -141,6 +151,14 @@ export const RequestRedeemModal: FC<RequestRedeemModalProps> = ({
141151
setSelectedClaim(null);
142152
handleResetAmount();
143153
refetchLpTokenAmount();
154+
if (
155+
widgetNavigationRef.current?.currentViewId !==
156+
RequestRedeemModalView.REQUEST_WITHDRAW
157+
) {
158+
widgetNavigationRef.current?.goToView(
159+
RequestRedeemModalView.REQUEST_WITHDRAW,
160+
);
161+
}
144162
},
145163
});
146164

@@ -227,6 +245,7 @@ export const RequestRedeemModal: FC<RequestRedeemModalProps> = ({
227245
<JumperWidget
228246
views={views}
229247
statusSheet={statusSheet}
248+
onNavigationReady={handleWidgetNavigationReady}
230249
style={widgetStyle}
231250
/>
232251
) : null}

0 commit comments

Comments
 (0)