diff --git a/app/components/UI/Predict/components/FeaturedCarousel/FeaturedCarouselCard.tsx b/app/components/UI/Predict/components/FeaturedCarousel/FeaturedCarouselCard.tsx index 9ff1c7585c77..a6bcc38d7899 100644 --- a/app/components/UI/Predict/components/FeaturedCarousel/FeaturedCarouselCard.tsx +++ b/app/components/UI/Predict/components/FeaturedCarousel/FeaturedCarouselCard.tsx @@ -1,7 +1,8 @@ import React, { useCallback } from 'react'; import { TouchableOpacity } from 'react-native'; import { Image } from 'expo-image'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { Box, @@ -21,10 +22,7 @@ import { PredictOutcome, PredictOutcomeToken, } from '../../types'; -import { - PredictNavigationParamList, - PredictEntryPoint, -} from '../../types/navigation'; +import { PredictEntryPoint } from '../../types/navigation'; import { formatPercentage } from '../../utils/format'; import { PredictEventValues } from '../../constants/eventNames'; import { usePredictActionGuard } from '../../hooks/usePredictActionGuard'; @@ -47,8 +45,7 @@ const FeaturedCarouselCard: React.FC = ({ entryPoint = PredictEventValues.ENTRY_POINT.PREDICT_FEED, }) => { const tw = useTailwind(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { openBuySheet } = usePredictPreviewSheet(); const { executeGuardedAction } = usePredictActionGuard({ navigation }); diff --git a/app/components/UI/Predict/components/FeaturedCarousel/FeaturedCarouselSportCard.tsx b/app/components/UI/Predict/components/FeaturedCarousel/FeaturedCarouselSportCard.tsx index bc30b0214e2d..6e6396488088 100644 --- a/app/components/UI/Predict/components/FeaturedCarousel/FeaturedCarouselSportCard.tsx +++ b/app/components/UI/Predict/components/FeaturedCarousel/FeaturedCarouselSportCard.tsx @@ -1,6 +1,7 @@ import React, { useCallback, useMemo } from 'react'; import { TouchableOpacity } from 'react-native'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { useSelector } from 'react-redux'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { @@ -25,10 +26,7 @@ import { PredictOutcomeToken, PredictSportTeam, } from '../../types'; -import { - PredictNavigationParamList, - PredictEntryPoint, -} from '../../types/navigation'; +import { PredictEntryPoint } from '../../types/navigation'; import { formatPercentage } from '../../utils/format'; import { PredictEventValues } from '../../constants/eventNames'; import { usePredictActionGuard } from '../../hooks/usePredictActionGuard'; @@ -66,8 +64,7 @@ const FeaturedCarouselSportCard: React.FC = ({ entryPoint = PredictEventValues.ENTRY_POINT.PREDICT_FEED, }) => { const tw = useTailwind(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { openBuySheet } = usePredictPreviewSheet(); const { executeGuardedAction } = usePredictActionGuard({ navigation }); const livePricesEnabled = useSelector( diff --git a/app/components/UI/Predict/components/PredictActivity/PredictActivity.tsx b/app/components/UI/Predict/components/PredictActivity/PredictActivity.tsx index 2b10aa47c1d2..646a45ac9f94 100644 --- a/app/components/UI/Predict/components/PredictActivity/PredictActivity.tsx +++ b/app/components/UI/Predict/components/PredictActivity/PredictActivity.tsx @@ -13,6 +13,7 @@ import { formatPercentage, formatPrice } from '../../utils/format'; import { strings } from '../../../../../../locales/i18n'; import Routes from '../../../../../constants/navigation/Routes'; import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { PredictActivityItem, PredictActivityType } from '../../types'; import { useAnalytics } from '../../../../hooks/useAnalytics/useAnalytics'; import { MonetizedPrimitive } from '../../../../../core/Analytics/MetaMetrics.types'; @@ -38,7 +39,7 @@ const PredictActivity: React.FC = ({ containerStyle, }) => { const tw = useTailwind(); - const navigation = useNavigation(); + const navigation = useNavigation(); const { trackEvent, createEventBuilder } = useAnalytics(); const isDebit = item.type === PredictActivityType.BUY; const signedAmount = `${isDebit ? '-' : '+'}${formatPrice( diff --git a/app/components/UI/Predict/components/PredictActivityDetail/PredictActivityDetail.tsx b/app/components/UI/Predict/components/PredictActivityDetail/PredictActivityDetail.tsx index bdc40075a596..f4472b67bfe1 100644 --- a/app/components/UI/Predict/components/PredictActivityDetail/PredictActivityDetail.tsx +++ b/app/components/UI/Predict/components/PredictActivityDetail/PredictActivityDetail.tsx @@ -1,4 +1,5 @@ import { RouteProp, useNavigation, useRoute } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React, { useMemo, useEffect } from 'react'; import { SafeAreaView } from 'react-native-safe-area-context'; import { useSelector } from 'react-redux'; @@ -35,7 +36,7 @@ import { PredictActivityDetailsSelectorsIDs } from '../../Predict.testIds'; interface PredictActivityDetailProps {} const PredictActivityDetails: React.FC = () => { - const navigation = useNavigation(); + const navigation = useNavigation(); const route = useRoute>(); const { activity } = route.params || {}; diff --git a/app/components/UI/Predict/components/PredictAddFundsSheet/PredictAddFundsSheet.tsx b/app/components/UI/Predict/components/PredictAddFundsSheet/PredictAddFundsSheet.tsx index 69794b8fd6f1..19bd3428b732 100644 --- a/app/components/UI/Predict/components/PredictAddFundsSheet/PredictAddFundsSheet.tsx +++ b/app/components/UI/Predict/components/PredictAddFundsSheet/PredictAddFundsSheet.tsx @@ -16,8 +16,8 @@ import BottomSheetHeader from '../../../../../component-library/components/Botto import { ButtonVariants } from '../../../../../component-library/components/Buttons/Button/Button.types'; import { usePredictDeposit } from '../../hooks/usePredictDeposit'; import { usePredictActionGuard } from '../../hooks/usePredictActionGuard'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; -import { PredictNavigationParamList } from '../../types/navigation'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { PredictEventValues } from '../../constants/eventNames'; import { usePredictBottomSheet, @@ -35,8 +35,7 @@ const PredictAddFundsSheet = forwardRef< PredictAddFundsSheetProps >(({ onDismiss }, ref) => { const tw = useTailwind(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { deposit } = usePredictDeposit(); const { executeGuardedAction } = usePredictActionGuard({ navigation, diff --git a/app/components/UI/Predict/components/PredictBalance/PredictBalance.tsx b/app/components/UI/Predict/components/PredictBalance/PredictBalance.tsx index 96817a39edf8..8e5ff5ff58c2 100644 --- a/app/components/UI/Predict/components/PredictBalance/PredictBalance.tsx +++ b/app/components/UI/Predict/components/PredictBalance/PredictBalance.tsx @@ -10,7 +10,8 @@ import { import { useTailwind } from '@metamask/design-system-twrnc-preset'; import images from 'images/image-icons'; import React, { useCallback, useEffect, useMemo } from 'react'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { useQueryClient } from '@tanstack/react-query'; import { useSelector } from 'react-redux'; import { predictQueries } from '../../queries'; @@ -43,7 +44,6 @@ import { usePredictBalance } from '../../hooks/usePredictBalance'; import { usePredictDeposit } from '../../hooks/usePredictDeposit'; import { formatPrice } from '../../utils/format'; import { usePredictActionGuard } from '../../hooks/usePredictActionGuard'; -import { PredictNavigationParamList } from '../../types/navigation'; import { usePredictWithdraw } from '../../hooks/usePredictWithdraw'; import { usePredictAccountState } from '../../hooks/usePredictAccountState'; import { PredictEventValues } from '../../constants/eventNames'; @@ -71,8 +71,7 @@ const PredictBalance: React.FC = ({ selectPredictPortfolioEnabledFlag, ); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const queryClient = useQueryClient(); const { diff --git a/app/components/UI/Predict/components/PredictCryptoUpDownMarketCard/PredictCryptoUpDownMarketCard.tsx b/app/components/UI/Predict/components/PredictCryptoUpDownMarketCard/PredictCryptoUpDownMarketCard.tsx index 050548de7ba6..b9146bb53643 100644 --- a/app/components/UI/Predict/components/PredictCryptoUpDownMarketCard/PredictCryptoUpDownMarketCard.tsx +++ b/app/components/UI/Predict/components/PredictCryptoUpDownMarketCard/PredictCryptoUpDownMarketCard.tsx @@ -35,7 +35,8 @@ import { TextVariant, } from '@metamask/design-system-react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { useTheme } from '../../../../../util/theme'; import { PredictEventValues } from '../../constants/eventNames'; import { usePredictActionGuard } from '../../hooks/usePredictActionGuard'; @@ -54,10 +55,7 @@ import { type PredictMarketBuyButtonPress, type PriceQuery, } from '../../types'; -import type { - PredictEntryPoint, - PredictNavigationParamList, -} from '../../types/navigation'; +import type { PredictEntryPoint } from '../../types/navigation'; import { getEventStartTime, getCryptoSymbol, @@ -1124,8 +1122,7 @@ const PredictCryptoUpDownMarketCard: React.FC< const isCompact = isCarousel; const tw = useTailwind(); const { colors } = useTheme(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { navigateToMarketDetails } = usePredictNavigation(); const { openBuySheet } = usePredictPreviewSheet(); const resolvedEntryPoint = useResolvedPredictEntryPoint(propEntryPoint); diff --git a/app/components/UI/Predict/components/PredictCryptoUpDownPositions/PredictCryptoUpDownPosition.tsx b/app/components/UI/Predict/components/PredictCryptoUpDownPositions/PredictCryptoUpDownPosition.tsx index 83256221b892..8896e270050b 100644 --- a/app/components/UI/Predict/components/PredictCryptoUpDownPositions/PredictCryptoUpDownPosition.tsx +++ b/app/components/UI/Predict/components/PredictCryptoUpDownPositions/PredictCryptoUpDownPosition.tsx @@ -10,11 +10,8 @@ import { TextVariant, } from '@metamask/design-system-react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; -import { - NavigationProp, - useIsFocused, - useNavigation, -} from '@react-navigation/native'; +import { useIsFocused, useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { useSelector } from 'react-redux'; import { strings } from '../../../../../../locales/i18n'; import Button, { @@ -45,7 +42,6 @@ import { type PredictMarket, type PredictPosition, } from '../../types'; -import { PredictNavigationParamList } from '../../types/navigation'; import { formatCents, formatPrice } from '../../utils/format'; const AUTO_REFRESH_TIMEOUT = 5000; @@ -62,8 +58,7 @@ const PredictCryptoUpDownPosition: React.FC< const tw = useTailwind(); const privacyMode = useSelector(selectPrivacyMode); const isFocused = useIsFocused(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { onCashOut } = usePredictCashOut({ market, diff --git a/app/components/UI/Predict/components/PredictDetailsHeaderSkeleton/PredictDetailsHeaderSkeleton.tsx b/app/components/UI/Predict/components/PredictDetailsHeaderSkeleton/PredictDetailsHeaderSkeleton.tsx index 967c03198db3..9c3f823c68a8 100644 --- a/app/components/UI/Predict/components/PredictDetailsHeaderSkeleton/PredictDetailsHeaderSkeleton.tsx +++ b/app/components/UI/Predict/components/PredictDetailsHeaderSkeleton/PredictDetailsHeaderSkeleton.tsx @@ -8,6 +8,7 @@ import { import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { Pressable } from 'react-native'; import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { useSafeAreaInsets } from 'react-native-safe-area-context'; import Icon, { IconName, @@ -27,7 +28,7 @@ const PredictDetailsHeaderSkeleton: React.FC< PredictDetailsHeaderSkeletonProps > = ({ testID = PREDICT_DETAILS_HEADER_SKELETON }) => { const tw = useTailwind(); - const navigation = useNavigation(); + const navigation = useNavigation(); const insets = useSafeAreaInsets(); return ( diff --git a/app/components/UI/Predict/components/PredictGTMModal/PredictGTMModal.tsx b/app/components/UI/Predict/components/PredictGTMModal/PredictGTMModal.tsx index fe31f0e12aa0..7eafdaef3430 100644 --- a/app/components/UI/Predict/components/PredictGTMModal/PredictGTMModal.tsx +++ b/app/components/UI/Predict/components/PredictGTMModal/PredictGTMModal.tsx @@ -1,4 +1,5 @@ import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React, { useState, useEffect } from 'react'; import { Image, View } from 'react-native'; import Animated, { @@ -37,7 +38,7 @@ import { PREDICT_GTM_MODAL_TEST_IDS } from './PredictGTMModal.testIds'; const PredictGTMModal = () => { const { trackEvent, createEventBuilder } = useAnalytics(); - const { navigate } = useNavigation(); + const { navigate } = useNavigation(); const theme = useTheme(); const [imageLoaded, setImageLoaded] = useState(false); const opacity = useSharedValue(0); diff --git a/app/components/UI/Predict/components/PredictMarketMultiple/PredictMarketMultiple.tsx b/app/components/UI/Predict/components/PredictMarketMultiple/PredictMarketMultiple.tsx index ef3ee5f12022..5fdacb672a92 100644 --- a/app/components/UI/Predict/components/PredictMarketMultiple/PredictMarketMultiple.tsx +++ b/app/components/UI/Predict/components/PredictMarketMultiple/PredictMarketMultiple.tsx @@ -8,7 +8,8 @@ import { TextVariant, } from '@metamask/design-system-react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React from 'react'; import { TouchableOpacity, View } from 'react-native'; import { Image } from 'expo-image'; @@ -37,10 +38,7 @@ import { PredictOutcomeToken, type PredictMarketBuyButtonPress, } from '../../types'; -import { - PredictNavigationParamList, - PredictEntryPoint, -} from '../../types/navigation'; +import { PredictEntryPoint } from '../../types/navigation'; import { formatPercentage, formatVolume } from '../../utils/format'; import styleSheet from './PredictMarketMultiple.styles'; import { PredictEventValues } from '../../constants/eventNames'; @@ -77,8 +75,7 @@ const PredictMarketMultiple: React.FC = ({ }) => { const resolvedEntryPoint = useResolvedPredictEntryPoint(propEntryPoint); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { openBuySheet } = usePredictPreviewSheet(); const { styles } = useStyles(styleSheet, { isCarousel }); const tw = useTailwind(); diff --git a/app/components/UI/Predict/components/PredictMarketOutcome/PredictMarketOutcome.tsx b/app/components/UI/Predict/components/PredictMarketOutcome/PredictMarketOutcome.tsx index d2516864f2a1..c259eaca83da 100644 --- a/app/components/UI/Predict/components/PredictMarketOutcome/PredictMarketOutcome.tsx +++ b/app/components/UI/Predict/components/PredictMarketOutcome/PredictMarketOutcome.tsx @@ -7,7 +7,8 @@ import { TextVariant, } from '@metamask/design-system-react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React, { memo } from 'react'; import { View } from 'react-native'; import { Image } from 'expo-image'; @@ -27,10 +28,7 @@ import { PredictOutcomeToken, PredictOutcome as PredictOutcomeType, } from '../../types'; -import { - PredictNavigationParamList, - PredictEntryPoint, -} from '../../types/navigation'; +import { PredictEntryPoint } from '../../types/navigation'; import { PredictEventValues } from '../../constants/eventNames'; import { formatCents, @@ -61,8 +59,7 @@ const PredictMarketOutcomeComponent: React.FC = ({ }) => { const { styles } = useStyles(styleSheet, {}); const tw = useTailwind(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { executeGuardedAction } = usePredictActionGuard({ navigation, diff --git a/app/components/UI/Predict/components/PredictMarketSingle/PredictMarketSingle.tsx b/app/components/UI/Predict/components/PredictMarketSingle/PredictMarketSingle.tsx index 439bbc2a6e9f..584803e5738a 100644 --- a/app/components/UI/Predict/components/PredictMarketSingle/PredictMarketSingle.tsx +++ b/app/components/UI/Predict/components/PredictMarketSingle/PredictMarketSingle.tsx @@ -7,7 +7,8 @@ import { TextVariant, } from '@metamask/design-system-react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React from 'react'; import { TouchableOpacity, View } from 'react-native'; import { Image } from 'expo-image'; @@ -26,10 +27,7 @@ import { PredictOutcomeToken, type PredictMarketBuyButtonPress, } from '../../types'; -import { - PredictNavigationParamList, - PredictEntryPoint, -} from '../../types/navigation'; +import { PredictEntryPoint } from '../../types/navigation'; import { formatVolume } from '../../utils/format'; import styleSheet from './PredictMarketSingle.styles'; import { PredictEventValues } from '../../constants/eventNames'; @@ -156,8 +154,7 @@ const PredictMarketSingle: React.FC = ({ const resolvedEntryPoint = useResolvedPredictEntryPoint(propEntryPoint); const outcome = market.outcomes[0]; - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { openBuySheet } = usePredictPreviewSheet(); const { styles } = useStyles(styleSheet, { isCarousel }); const tw = useTailwind(); diff --git a/app/components/UI/Predict/components/PredictMarketSportCard/PredictMarketSportCard.tsx b/app/components/UI/Predict/components/PredictMarketSportCard/PredictMarketSportCard.tsx index 265791aac6e9..a570fb41e094 100644 --- a/app/components/UI/Predict/components/PredictMarketSportCard/PredictMarketSportCard.tsx +++ b/app/components/UI/Predict/components/PredictMarketSportCard/PredictMarketSportCard.tsx @@ -13,7 +13,8 @@ import { TextVariant, } from '@metamask/design-system-react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React, { useCallback, useMemo } from 'react'; import { TouchableOpacity } from 'react-native'; import { useSelector } from 'react-redux'; @@ -36,10 +37,7 @@ import { PredictSportTeam, type PredictMarketBuyButtonPress, } from '../../types'; -import { - PredictEntryPoint, - PredictNavigationParamList, -} from '../../types/navigation'; +import { PredictEntryPoint } from '../../types/navigation'; import type { TransactionActiveAbTestEntry } from '../../../../../util/transactions/transaction-active-ab-test-attribution-registry'; import PredictSportScoreboard from '../PredictSportScoreboard'; import { isGameEnded } from '../../utils/scoreboard'; @@ -147,8 +145,7 @@ const PredictMarketSportCard: React.FC = ({ const tw = useTailwind(); const { colors } = useTheme(); const resolvedEntryPoint = useResolvedPredictEntryPoint(propEntryPoint); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { openBuySheet } = usePredictPreviewSheet(); const { executeGuardedAction } = usePredictActionGuard({ navigation }); const livePricesEnabled = useSelector( diff --git a/app/components/UI/Predict/components/PredictNewButton/PredictNewButton.tsx b/app/components/UI/Predict/components/PredictNewButton/PredictNewButton.tsx index 58642f0487b6..a46d3ccedf9c 100644 --- a/app/components/UI/Predict/components/PredictNewButton/PredictNewButton.tsx +++ b/app/components/UI/Predict/components/PredictNewButton/PredictNewButton.tsx @@ -1,5 +1,6 @@ import React from 'react'; import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { Pressable } from 'react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { @@ -24,7 +25,7 @@ import { PREDICT_NEW_BUTTON_TEST_IDS } from './PredictNewButton.testIds'; interface PredictNewButtonProps {} const PredictNewButton: React.FC = () => { - const navigation = useNavigation(); + const navigation = useNavigation(); const tw = useTailwind(); const handlePress = () => { diff --git a/app/components/UI/Predict/components/PredictPositionsEmpty/PredictPositionsEmpty.tsx b/app/components/UI/Predict/components/PredictPositionsEmpty/PredictPositionsEmpty.tsx index e9eb36aa6a2a..f14167428da9 100644 --- a/app/components/UI/Predict/components/PredictPositionsEmpty/PredictPositionsEmpty.tsx +++ b/app/components/UI/Predict/components/PredictPositionsEmpty/PredictPositionsEmpty.tsx @@ -1,8 +1,5 @@ -import { - StackActions, - type NavigationProp, - useNavigation, -} from '@react-navigation/native'; +import { StackActions, useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React, { useCallback } from 'react'; import { Box, @@ -22,7 +19,6 @@ import Routes from '../../../../../constants/navigation/Routes'; import PredictionsEmptyDarkIcon from '../../../../../images/predictions-dark.svg'; import PredictionsEmptyLightIcon from '../../../../../images/predictions-light.svg'; import { PredictPositionsEmptySelectorsIDs } from '../../Predict.testIds'; -import type { PredictNavigationParamList } from '../../types/navigation'; interface PredictPositionsEmptyProps { testID?: string; @@ -31,8 +27,7 @@ interface PredictPositionsEmptyProps { const PredictPositionsEmpty = ({ testID = PredictPositionsEmptySelectorsIDs.CONTAINER, }: PredictPositionsEmptyProps) => { - const navigation = - useNavigation>(); + const navigation = useNavigation(); const tw = useTailwind(); const designSystemTheme = useDesignSystemTheme(); const EmptyIcon = diff --git a/app/components/UI/Predict/components/PredictPositionsHeader/PredictPositionsHeader.tsx b/app/components/UI/Predict/components/PredictPositionsHeader/PredictPositionsHeader.tsx index b15a24f37d8d..161d7239c385 100644 --- a/app/components/UI/Predict/components/PredictPositionsHeader/PredictPositionsHeader.tsx +++ b/app/components/UI/Predict/components/PredictPositionsHeader/PredictPositionsHeader.tsx @@ -7,11 +7,8 @@ import { TextVariant, } from '@metamask/design-system-react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; -import { - NavigationProp, - useNavigation, - useFocusEffect, -} from '@react-navigation/native'; +import { useNavigation, useFocusEffect } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React, { forwardRef, useCallback, @@ -47,7 +44,6 @@ import { useUnrealizedPnL } from '../../hooks/useUnrealizedPnL'; import { usePredictActionGuard } from '../../hooks/usePredictActionGuard'; import { usePredictPositions } from '../../hooks/usePredictPositions'; import { PredictPosition, PredictPositionStatus } from '../../types'; -import { PredictNavigationParamList } from '../../types/navigation'; import { formatPercentage, formatPredictUnrealizedPnLStringParts, @@ -77,8 +73,7 @@ const PredictPositionsHeader = forwardRef< const { onError } = props; const privacyMode = useSelector(selectPrivacyMode); const { claim, isClaimPending } = usePredictClaim(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const tw = useTailwind(); const { executeGuardedAction } = usePredictActionGuard({ navigation, diff --git a/app/components/UI/Predict/components/PredictPositionsList/PredictPositionsList.tsx b/app/components/UI/Predict/components/PredictPositionsList/PredictPositionsList.tsx index b3c493c40597..c93771cefc86 100644 --- a/app/components/UI/Predict/components/PredictPositionsList/PredictPositionsList.tsx +++ b/app/components/UI/Predict/components/PredictPositionsList/PredictPositionsList.tsx @@ -1,4 +1,5 @@ -import { type NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React, { useCallback } from 'react'; import { ScrollView } from 'react-native'; import { Box } from '@metamask/design-system-react-native'; @@ -9,7 +10,6 @@ import { PredictEventValues } from '../../constants/eventNames'; import type { PredictPortfolioModel } from '../../hooks/usePredictPortfolio'; import { PredictPositionsListSelectorsIDs } from '../../Predict.testIds'; import { PredictPositionStatus, type PredictPosition } from '../../types'; -import type { PredictNavigationParamList } from '../../types/navigation'; import PredictPositionItem from '../PredictPosition/PredictPosition'; import PredictPositionsEmpty from '../PredictPositionsEmpty'; @@ -53,8 +53,7 @@ const PredictPositionsList = ({ isPrivacyMode, portfolio, }: PredictPositionsListProps) => { - const navigation = - useNavigation>(); + const navigation = useNavigation(); const tw = useTailwind(); const openPositions = portfolio.openPositions.filter( (position) => position.status === PredictPositionStatus.OPEN, diff --git a/app/components/UI/Predict/components/PredictPositionsViewHeader/PredictPositionsViewHeader.tsx b/app/components/UI/Predict/components/PredictPositionsViewHeader/PredictPositionsViewHeader.tsx index 5590da77cf04..e66023a7cef6 100644 --- a/app/components/UI/Predict/components/PredictPositionsViewHeader/PredictPositionsViewHeader.tsx +++ b/app/components/UI/Predict/components/PredictPositionsViewHeader/PredictPositionsViewHeader.tsx @@ -1,4 +1,5 @@ -import { type NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React, { useCallback, useMemo } from 'react'; import { Box, @@ -16,10 +17,7 @@ import { PredictEventValues } from '../../constants/eventNames'; import { usePredictActionGuard } from '../../hooks/usePredictActionGuard'; import type { PredictPortfolioModel } from '../../hooks/usePredictPortfolio'; import { PredictPositionsViewSelectorsIDs } from '../../Predict.testIds'; -import type { - PredictEntryPoint, - PredictNavigationParamList, -} from '../../types/navigation'; +import type { PredictEntryPoint } from '../../types/navigation'; import { formatPredictUnrealizedPnLStringParts, formatPrice, @@ -53,8 +51,7 @@ const PredictPositionsViewHeader = ({ isPrivacyMode, portfolio, }: PredictPositionsViewHeaderProps) => { - const navigation = - useNavigation>(); + const navigation = useNavigation(); const tw = useTailwind(); const { claim } = portfolio; const { executeGuardedAction } = usePredictActionGuard({ navigation }); diff --git a/app/components/UI/Predict/components/PredictSportCardFooter/PredictSportCardFooter.tsx b/app/components/UI/Predict/components/PredictSportCardFooter/PredictSportCardFooter.tsx index 2fd5a65cfd61..92ee429b90ec 100644 --- a/app/components/UI/Predict/components/PredictSportCardFooter/PredictSportCardFooter.tsx +++ b/app/components/UI/Predict/components/PredictSportCardFooter/PredictSportCardFooter.tsx @@ -1,5 +1,6 @@ import React, { useCallback } from 'react'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { Box, BoxFlexDirection } from '@metamask/design-system-react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { @@ -7,10 +8,7 @@ import { PredictMarketStatus, PredictOutcomeToken, } from '../../types'; -import { - PredictNavigationParamList, - PredictEntryPoint, -} from '../../types/navigation'; +import { PredictEntryPoint } from '../../types/navigation'; import { PredictEventValues } from '../../constants/eventNames'; import { usePredictPreviewSheet } from '../../contexts'; import { useResolvedPredictEntryPoint } from '../../hooks/useResolvedPredictEntryPoint'; @@ -39,8 +37,7 @@ const PredictSportCardFooter: React.FC = ({ onBuyButtonPress, }) => { const tw = useTailwind(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const resolvedEntryPoint = useResolvedPredictEntryPoint(propEntryPoint); diff --git a/app/components/UI/Predict/components/PredictUnavailable/PredictUnavailable.tsx b/app/components/UI/Predict/components/PredictUnavailable/PredictUnavailable.tsx index 78a4195078c1..7f4cbf011c8e 100644 --- a/app/components/UI/Predict/components/PredictUnavailable/PredictUnavailable.tsx +++ b/app/components/UI/Predict/components/PredictUnavailable/PredictUnavailable.tsx @@ -17,6 +17,7 @@ import { import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { InteractionManager, TouchableOpacity } from 'react-native'; import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { strings } from '../../../../../../locales/i18n'; // Internal dependencies. @@ -42,7 +43,7 @@ const PredictUnavailable = forwardRef< const sheetRef = useRef(null); const [isVisible, setIsVisible] = useState(false); const tw = useTailwind(); - const navigation = useNavigation(); + const navigation = useNavigation(); const handleSheetClosed = useCallback(() => { setIsVisible(false); diff --git a/app/components/UI/Predict/components/PredictWorldCupMainFeedBanner/PredictWorldCupMainFeedBanner.tsx b/app/components/UI/Predict/components/PredictWorldCupMainFeedBanner/PredictWorldCupMainFeedBanner.tsx index b6a5c8ee24d3..720d4dc3c288 100644 --- a/app/components/UI/Predict/components/PredictWorldCupMainFeedBanner/PredictWorldCupMainFeedBanner.tsx +++ b/app/components/UI/Predict/components/PredictWorldCupMainFeedBanner/PredictWorldCupMainFeedBanner.tsx @@ -1,6 +1,7 @@ import React, { useCallback, useEffect, useMemo, useRef } from 'react'; import { ImageSourcePropType, useWindowDimensions } from 'react-native'; import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { useSelector } from 'react-redux'; import { strings } from '../../../../../../locales/i18n'; import Routes from '../../../../../constants/navigation/Routes'; @@ -64,7 +65,7 @@ const PredictWorldCupMainFeedBanner: React.FC< PredictWorldCupMainFeedBannerProps > = ({ fallbackImageSource, variant = 'default' }) => { const { width: windowWidth } = useWindowDimensions(); - const navigation = useNavigation(); + const navigation = useNavigation(); const hasTrackedBannerViewed = useRef(false); const predictWorldCupConfig = useSelector(selectPredictWorldCupConfig); const bannerWidth = Math.max( diff --git a/app/components/UI/Predict/components/PredictWorldCupWinnerModule/PredictWorldCupWinnerModule.tsx b/app/components/UI/Predict/components/PredictWorldCupWinnerModule/PredictWorldCupWinnerModule.tsx index c406ccf38348..5b47bb43973a 100644 --- a/app/components/UI/Predict/components/PredictWorldCupWinnerModule/PredictWorldCupWinnerModule.tsx +++ b/app/components/UI/Predict/components/PredictWorldCupWinnerModule/PredictWorldCupWinnerModule.tsx @@ -1,7 +1,8 @@ import React, { useCallback } from 'react'; import { Pressable, ScrollView, View } from 'react-native'; import { Image } from 'expo-image'; -import { useNavigation, NavigationProp } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { Box, @@ -20,10 +21,7 @@ import type { PredictOutcome, PredictOutcomeToken, } from '../../types'; -import type { - PredictEntryPoint, - PredictNavigationParamList, -} from '../../types/navigation'; +import type { PredictEntryPoint } from '../../types/navigation'; import type { TransactionActiveAbTestEntry } from '../../../../../util/transactions/transaction-active-ab-test-attribution-registry'; const PREDICT_WORLD_CUP_HUB_ANALYTICS_TAB = { @@ -106,8 +104,7 @@ const PredictWorldCupWinnerModule: React.FC< transactionActiveAbTests, }) => { const tw = useTailwind(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { openBuySheet } = usePredictPreviewSheet(); const { executeGuardedAction } = usePredictActionGuard({ navigation }); const resolvedEntryPoint = useResolvedPredictEntryPoint(propEntryPoint); diff --git a/app/components/UI/Predict/contexts/PredictPreviewSheetContext.tsx b/app/components/UI/Predict/contexts/PredictPreviewSheetContext.tsx index 318d6872fee4..da3c1c773347 100644 --- a/app/components/UI/Predict/contexts/PredictPreviewSheetContext.tsx +++ b/app/components/UI/Predict/contexts/PredictPreviewSheetContext.tsx @@ -19,6 +19,7 @@ import React, { import { Image } from 'expo-image'; import { useSelector } from 'react-redux'; import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../core/NavigationService/types'; import { strings } from '../../../../../locales/i18n'; import Routes from '../../../../constants/navigation/Routes'; import { IconName } from '../../../../component-library/components/Icons/Icon'; @@ -197,7 +198,7 @@ const PredictPreviewSheetContext = createContext< */ export const usePredictPreviewSheet = (): PredictPreviewSheetContextValue => { const ctx = useContext(PredictPreviewSheetContext); - const navigation = useNavigation(); + const navigation = useNavigation(); const fallback = useMemo( () => ({ @@ -242,7 +243,7 @@ interface PredictPreviewSheetProviderProps { export const PredictPreviewSheetProvider: React.FC< PredictPreviewSheetProviderProps > = ({ children, disableBottomSheet = false }) => { - const navigation = useNavigation(); + const navigation = useNavigation(); const bottomSheetEnabled = useSelector(selectPredictBottomSheetEnabledFlag); const payWithAnyTokenEnabled = useSelector( selectPredictWithAnyTokenEnabledFlag, diff --git a/app/components/UI/Predict/hooks/usePredictActionGuard.ts b/app/components/UI/Predict/hooks/usePredictActionGuard.ts index d2b69773b2e0..9848541ccbe2 100644 --- a/app/components/UI/Predict/hooks/usePredictActionGuard.ts +++ b/app/components/UI/Predict/hooks/usePredictActionGuard.ts @@ -1,12 +1,11 @@ import { useCallback } from 'react'; -import { NavigationProp } from '@react-navigation/native'; import Routes from '../../../../constants/navigation/Routes'; import Engine from '../../../../core/Engine'; -import { PredictNavigationParamList } from '../types/navigation'; +import type { AppNavigationProp } from '../../../../core/NavigationService/types'; import { usePredictEligibility } from './usePredictEligibility'; interface UsePredictActionGuardOptions { - navigation: NavigationProp; + navigation: AppNavigationProp; } interface ExecuteGuardedActionOptions { diff --git a/app/components/UI/Predict/hooks/usePredictCashOut.ts b/app/components/UI/Predict/hooks/usePredictCashOut.ts index cd1c0e94e456..41c9bcc6e235 100644 --- a/app/components/UI/Predict/hooks/usePredictCashOut.ts +++ b/app/components/UI/Predict/hooks/usePredictCashOut.ts @@ -1,5 +1,6 @@ import { useContext, useCallback } from 'react'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../core/NavigationService/types'; import { IconName } from '../../../../component-library/components/Icons/Icon'; import { ToastContext, @@ -11,7 +12,6 @@ import { PredictEventValues } from '../constants/eventNames'; import { usePredictActionGuard } from './usePredictActionGuard'; import { usePredictPreviewSheet } from '../contexts'; import type { PredictMarket, PredictPosition } from '../types'; -import type { PredictNavigationParamList } from '../types/navigation'; interface UsePredictCashOutOptions { market: PredictMarket; @@ -22,8 +22,7 @@ export const usePredictCashOut = ({ market, callerName, }: UsePredictCashOutOptions) => { - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { executeGuardedAction } = usePredictActionGuard({ navigation }); const { openSellSheet } = usePredictPreviewSheet(); const { toastRef } = useContext(ToastContext); diff --git a/app/components/UI/Predict/hooks/usePredictClaim.ts b/app/components/UI/Predict/hooks/usePredictClaim.ts index 1a9a2d5d4f18..74ba84000dad 100644 --- a/app/components/UI/Predict/hooks/usePredictClaim.ts +++ b/app/components/UI/Predict/hooks/usePredictClaim.ts @@ -1,4 +1,5 @@ import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../core/NavigationService/types'; import { useCallback, useContext } from 'react'; import { useSelector } from 'react-redux'; import { strings } from '../../../../../locales/i18n'; @@ -29,7 +30,7 @@ export const usePredictClaim = () => { const { claim: claimWinnings } = usePredictTrading(); const theme = useAppThemeFromContext(); const { toastRef } = useContext(ToastContext); - const navigation = useNavigation(); + const navigation = useNavigation(); useSelector(selectSelectedAccountGroupId); const evmAccount = getEvmAccountFromSelectedAccountGroup(); diff --git a/app/components/UI/Predict/hooks/usePredictDeposit.ts b/app/components/UI/Predict/hooks/usePredictDeposit.ts index d26c68b8eb9f..6ba168bf3b14 100644 --- a/app/components/UI/Predict/hooks/usePredictDeposit.ts +++ b/app/components/UI/Predict/hooks/usePredictDeposit.ts @@ -1,4 +1,5 @@ import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../core/NavigationService/types'; import { useCallback, useContext } from 'react'; import { useSelector } from 'react-redux'; import { ToastContext } from '../../../../component-library/components/Toast'; @@ -27,7 +28,7 @@ export const usePredictDeposit = () => { const { navigateToConfirmation } = useConfirmNavigation(); const theme = useAppThemeFromContext(); const { toastRef } = useContext(ToastContext); - const navigation = useNavigation(); + const navigation = useNavigation(); // Subscribe to account group changes so the hook re-renders when the user switches accounts useSelector(selectSelectedAccountGroupId); diff --git a/app/components/UI/Predict/hooks/usePredictNavigation.ts b/app/components/UI/Predict/hooks/usePredictNavigation.ts index 9b677de88644..46b87f6e5c42 100644 --- a/app/components/UI/Predict/hooks/usePredictNavigation.ts +++ b/app/components/UI/Predict/hooks/usePredictNavigation.ts @@ -1,4 +1,5 @@ import { StackActions, useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../core/NavigationService/types'; import { useCallback } from 'react'; import Routes from '../../../../constants/navigation/Routes'; import { @@ -17,7 +18,7 @@ interface NavigateToMarketDetailsOptions { } export const usePredictNavigation = () => { - const navigation = useNavigation(); + const navigation = useNavigation(); const navigateToBuyPreview = useCallback( ( diff --git a/app/components/UI/Predict/hooks/usePredictToastRegistrations.tsx b/app/components/UI/Predict/hooks/usePredictToastRegistrations.tsx index df3eb6640e13..70f63cbf27ea 100644 --- a/app/components/UI/Predict/hooks/usePredictToastRegistrations.tsx +++ b/app/components/UI/Predict/hooks/usePredictToastRegistrations.tsx @@ -5,6 +5,7 @@ import { Spinner, } from '@metamask/design-system-react-native'; import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../core/NavigationService/types'; import { useQueryClient } from '@tanstack/react-query'; import React, { useCallback, useMemo } from 'react'; import { useSelector } from 'react-redux'; @@ -146,7 +147,7 @@ export const usePredictToastRegistrations = (): ToastRegistration[] => { const { deposit } = usePredictDeposit(); const { claim } = usePredictClaim(); const { withdraw, withdrawTransaction } = usePredictWithdraw(); - const navigation = useNavigation(); + const navigation = useNavigation(); const theme = useAppThemeFromContext(); // Subscribe to account group changes so the hook re-renders when the user switches accounts diff --git a/app/components/UI/Predict/hooks/usePredictWithdraw.ts b/app/components/UI/Predict/hooks/usePredictWithdraw.ts index 0e161ce92dbf..23d18d55fd24 100644 --- a/app/components/UI/Predict/hooks/usePredictWithdraw.ts +++ b/app/components/UI/Predict/hooks/usePredictWithdraw.ts @@ -1,4 +1,5 @@ import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../core/NavigationService/types'; import { useCallback, useContext } from 'react'; import { ConfirmationLoader } from '../../../Views/confirmations/components/confirm/confirm-component'; import { useConfirmNavigation } from '../../../Views/confirmations/hooks/useConfirmNavigation'; @@ -16,7 +17,7 @@ import Routes from '../../../../constants/navigation/Routes'; export const usePredictWithdraw = () => { const { prepareWithdraw } = usePredictTrading(); const { navigateToConfirmation } = useConfirmNavigation(); - const navigation = useNavigation(); + const navigation = useNavigation(); const { toastRef } = useContext(ToastContext); const withdrawTransaction = useSelector(selectPredictWithdrawTransaction); diff --git a/app/components/UI/Predict/hooks/usePredictWorldCupFeedSession.ts b/app/components/UI/Predict/hooks/usePredictWorldCupFeedSession.ts index 77bbb6d18835..47d472c7c2d2 100644 --- a/app/components/UI/Predict/hooks/usePredictWorldCupFeedSession.ts +++ b/app/components/UI/Predict/hooks/usePredictWorldCupFeedSession.ts @@ -1,6 +1,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { type LayoutChangeEvent, ScrollView } from 'react-native'; import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../core/NavigationService/types'; import { v4 as uuidv4 } from 'uuid'; import Engine from '../../../../core/Engine'; import Routes from '../../../../constants/navigation/Routes'; @@ -49,7 +50,7 @@ export function usePredictWorldCupFeedSession({ transactionActiveAbTests, }: UsePredictWorldCupFeedSessionOptions): UsePredictWorldCupFeedSessionResult { // eslint-disable-next-line @typescript-eslint/no-explicit-any - const navigation = useNavigation(); + const navigation = useNavigation(); const tabsScrollViewRef = useRef(null); const tabLayoutsRef = useRef>( diff --git a/app/components/UI/Predict/types/navigation.ts b/app/components/UI/Predict/types/navigation.ts index 6eeaa7d7029b..736d9556b93b 100644 --- a/app/components/UI/Predict/types/navigation.ts +++ b/app/components/UI/Predict/types/navigation.ts @@ -29,9 +29,12 @@ export type PredictEntryPoint = | typeof PredictEventValues.ENTRY_POINT.HOMEPAGE_FEATURED_LIST | typeof PredictEventValues.ENTRY_POINT.MAIN_TRADE_BUTTON | typeof PredictEventValues.ENTRY_POINT.HOMESCREEN_PILL + | typeof PredictEventValues.ENTRY_POINT.REWARDS + | typeof PredictEventValues.ENTRY_POINT.GTM_MODAL | typeof PredictEventValues.ENTRY_POINT.BACKGROUND | typeof PredictEventValues.ENTRY_POINT.TRENDING_SEARCH | typeof PredictEventValues.ENTRY_POINT.TRENDING + | typeof PredictEventValues.ENTRY_POINT.BUY_PREVIEW | typeof PredictEventValues.ENTRY_POINT.HOME_SECTION | typeof PredictEventValues.ENTRY_POINT.EXPLORE; diff --git a/app/components/UI/Predict/views/PredictAddFundsModal/PredictAddFundsModal.tsx b/app/components/UI/Predict/views/PredictAddFundsModal/PredictAddFundsModal.tsx index 4a252bf0e5b1..1da787028795 100644 --- a/app/components/UI/Predict/views/PredictAddFundsModal/PredictAddFundsModal.tsx +++ b/app/components/UI/Predict/views/PredictAddFundsModal/PredictAddFundsModal.tsx @@ -4,6 +4,7 @@ import { useRoute, type RouteProp, } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import PredictAddFundsSheet, { PredictAddFundsSheetRef, } from '../../components/PredictAddFundsSheet/PredictAddFundsSheet'; @@ -16,7 +17,7 @@ type PredictAddFundsModalRoute = RouteProp< >; const PredictAddFundsModal: React.FC = () => { - const navigation = useNavigation(); + const navigation = useNavigation(); const route = useRoute(); const autoDeposit = route.params?.autoDeposit ?? false; const predictUnavailableRef = useRef(null); diff --git a/app/components/UI/Predict/views/PredictBuyPreview/PredictBuyPreview.tsx b/app/components/UI/Predict/views/PredictBuyPreview/PredictBuyPreview.tsx index 74651206ae83..87cef12043f3 100644 --- a/app/components/UI/Predict/views/PredictBuyPreview/PredictBuyPreview.tsx +++ b/app/components/UI/Predict/views/PredictBuyPreview/PredictBuyPreview.tsx @@ -18,6 +18,7 @@ import { useNavigation, useRoute, } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React, { useState, useRef, @@ -130,7 +131,7 @@ const PredictBuyPreview = (props: PredictBuyPreviewProps) => { }; // eslint-disable-next-line react-hooks/exhaustive-deps }, []); - const { goBack, dispatch, addListener } = useNavigation(); + const { goBack, dispatch, addListener } = useNavigation(); const route = useRoute>(); diff --git a/app/components/UI/Predict/views/PredictBuyWithAnyToken/PredictBuyWithAnyToken.tsx b/app/components/UI/Predict/views/PredictBuyWithAnyToken/PredictBuyWithAnyToken.tsx index a29589f701d1..c7daa4278224 100644 --- a/app/components/UI/Predict/views/PredictBuyWithAnyToken/PredictBuyWithAnyToken.tsx +++ b/app/components/UI/Predict/views/PredictBuyWithAnyToken/PredictBuyWithAnyToken.tsx @@ -5,12 +5,8 @@ import { BoxJustifyContent, } from '@metamask/design-system-react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; -import { - NavigationProp, - RouteProp, - useNavigation, - useRoute, -} from '@react-navigation/native'; +import { RouteProp, useNavigation, useRoute } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React, { useCallback, useEffect, @@ -120,8 +116,7 @@ const PredictBuyWithAnyToken = (props: PredictBuyPreviewProps) => { const tw = useTailwind(); const keypadRef = useRef(null); const feeBreakdownSheetRef = useRef(null); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const route = useRoute>(); diff --git a/app/components/UI/Predict/views/PredictBuyWithAnyToken/components/PredictBuyPreviewHeader/PredictBuyPreviewHeader.tsx b/app/components/UI/Predict/views/PredictBuyWithAnyToken/components/PredictBuyPreviewHeader/PredictBuyPreviewHeader.tsx index bf2318d7d4f0..e9f5d89a1684 100644 --- a/app/components/UI/Predict/views/PredictBuyWithAnyToken/components/PredictBuyPreviewHeader/PredictBuyPreviewHeader.tsx +++ b/app/components/UI/Predict/views/PredictBuyWithAnyToken/components/PredictBuyPreviewHeader/PredictBuyPreviewHeader.tsx @@ -11,6 +11,7 @@ import { } from '@metamask/design-system-react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../../../core/NavigationService/types'; import React from 'react'; import { TouchableOpacity } from 'react-native'; import { Image } from 'expo-image'; @@ -128,7 +129,7 @@ export function PredictBuyPreviewHeaderBack({ }: { onBack?: () => void; }) { - const { goBack } = useNavigation(); + const { goBack } = useNavigation(); return ( diff --git a/app/components/UI/Predict/views/PredictBuyWithAnyToken/components/PredictPayWithRow/PredictPayWithRow.tsx b/app/components/UI/Predict/views/PredictBuyWithAnyToken/components/PredictPayWithRow/PredictPayWithRow.tsx index 90b7966f4aa5..804eba18fea0 100644 --- a/app/components/UI/Predict/views/PredictBuyWithAnyToken/components/PredictPayWithRow/PredictPayWithRow.tsx +++ b/app/components/UI/Predict/views/PredictBuyWithAnyToken/components/PredictPayWithRow/PredictPayWithRow.tsx @@ -1,6 +1,7 @@ import React, { useCallback } from 'react'; import { TouchableOpacity } from 'react-native'; import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../../../core/NavigationService/types'; import { Box, BoxAlignItems, @@ -50,7 +51,7 @@ export function PredictPayWithRow({ onPaymentSelectorOpen, }: PredictPayWithRowProps) { usePredictDefaultPaymentToken(); - const navigation = useNavigation(); + const navigation = useNavigation(); const { payToken } = useTransactionPayToken(); const transactionMeta = useTransactionMetadataRequest(); const from = transactionMeta?.txParams?.from; diff --git a/app/components/UI/Predict/views/PredictBuyWithAnyToken/hooks/usePredictBuyActions.ts b/app/components/UI/Predict/views/PredictBuyWithAnyToken/hooks/usePredictBuyActions.ts index 9e7e9a10a0e0..580eb6d51539 100644 --- a/app/components/UI/Predict/views/PredictBuyWithAnyToken/hooks/usePredictBuyActions.ts +++ b/app/components/UI/Predict/views/PredictBuyWithAnyToken/hooks/usePredictBuyActions.ts @@ -1,6 +1,5 @@ import { StackActions, useNavigation } from '@react-navigation/native'; -import type { NativeStackNavigationProp } from '@react-navigation/native-stack'; -import type { PredictNavigationParamList } from '../../../types/navigation'; +import type { AppStackNavigationProp } from '../../../../../../core/NavigationService/types'; import { useCallback, useEffect, useMemo, useRef } from 'react'; import { ActiveOrderState, @@ -69,8 +68,7 @@ export const usePredictBuyActions = ({ onClose, transactionActiveAbTests, }: UsePredictBuyActionsParams) => { - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { onConfirm: onApprovalConfirm, approvalRequest } = useApprovalRequest(); const { onReject } = useConfirmActions(); diff --git a/app/components/UI/Predict/views/PredictBuyWithAnyToken/hooks/usePredictBuyConditions.ts b/app/components/UI/Predict/views/PredictBuyWithAnyToken/hooks/usePredictBuyConditions.ts index 5a0dc4e46279..d907ad75e50b 100644 --- a/app/components/UI/Predict/views/PredictBuyWithAnyToken/hooks/usePredictBuyConditions.ts +++ b/app/components/UI/Predict/views/PredictBuyWithAnyToken/hooks/usePredictBuyConditions.ts @@ -1,5 +1,6 @@ import { BigNumber } from 'bignumber.js'; import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../../core/NavigationService/types'; import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; import { useIsTransactionPayLoading, @@ -37,7 +38,7 @@ export const usePredictBuyConditions = ({ totalPayForPredictBalance, hasBlockingPayAlerts, }: UsePredictBuyConditionsParams) => { - const navigation = useNavigation(); + const navigation = useNavigation(); const { isBalanceLoading, availableBalance } = usePredictBuyAvailableBalance(); const isPayTotalsLoading = useIsTransactionPayLoading(); diff --git a/app/components/UI/Predict/views/PredictFeed/PredictFeed.tsx b/app/components/UI/Predict/views/PredictFeed/PredictFeed.tsx index 7ea8c66ca7d1..42e18383bb46 100644 --- a/app/components/UI/Predict/views/PredictFeed/PredictFeed.tsx +++ b/app/components/UI/Predict/views/PredictFeed/PredictFeed.tsx @@ -37,6 +37,7 @@ import { RouteProp, useFocusEffect, } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { PredictMarketListSelectorsIDs, PredictSearchSelectorsIDs, @@ -561,7 +562,7 @@ const PredictFeed: React.FC = ({ const tw = useTailwind(); const { colors } = useTheme(); - const navigation = useNavigation(); + const navigation = useNavigation(); const route = useRoute>(); const transactionActiveAbTests = route.params?.transactionActiveAbTests; diff --git a/app/components/UI/Predict/views/PredictFeedView/PredictFeedView.tsx b/app/components/UI/Predict/views/PredictFeedView/PredictFeedView.tsx index fa012546710d..84fdd8fa2083 100644 --- a/app/components/UI/Predict/views/PredictFeedView/PredictFeedView.tsx +++ b/app/components/UI/Predict/views/PredictFeedView/PredictFeedView.tsx @@ -5,6 +5,7 @@ import { RouteProp, useFocusEffect, } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { FlashList } from '@shopify/flash-list'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { @@ -54,7 +55,7 @@ const INITIAL_SKELETON_COUNT = 4; */ const PredictFeedView: React.FC = () => { const tw = useTailwind(); - const navigation = useNavigation(); + const navigation = useNavigation(); const route = useRoute>(); const { feedId, initialTabId, initialFilterId, entryPoint } = diff --git a/app/components/UI/Predict/views/PredictHome/PredictHome.tsx b/app/components/UI/Predict/views/PredictHome/PredictHome.tsx index d7abe1ebc7d9..63ac6114ff06 100644 --- a/app/components/UI/Predict/views/PredictHome/PredictHome.tsx +++ b/app/components/UI/Predict/views/PredictHome/PredictHome.tsx @@ -8,6 +8,7 @@ import { RouteProp, useFocusEffect, } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { Box, Text, TextVariant } from '@metamask/design-system-react-native'; import { strings } from '../../../../../../locales/i18n'; @@ -46,7 +47,7 @@ import { PredictHomeSelectorsIDs } from '../../Predict.testIds'; const PredictHome: React.FC = () => { const tw = useTailwind(); const { colors } = useTheme(); - const navigation = useNavigation(); + const navigation = useNavigation(); const route = useRoute>(); const transactionActiveAbTests = route.params?.transactionActiveAbTests; diff --git a/app/components/UI/Predict/views/PredictHome/components/PredictCategoriesSection/PredictCategoriesSection.tsx b/app/components/UI/Predict/views/PredictHome/components/PredictCategoriesSection/PredictCategoriesSection.tsx index 1f5490362d74..07ffe813d7f1 100644 --- a/app/components/UI/Predict/views/PredictHome/components/PredictCategoriesSection/PredictCategoriesSection.tsx +++ b/app/components/UI/Predict/views/PredictHome/components/PredictCategoriesSection/PredictCategoriesSection.tsx @@ -13,13 +13,13 @@ import { IconSize, } from '../../../../../../../component-library/components/Icons/Icon'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; -import { useNavigation, type NavigationProp } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../../../core/NavigationService/types'; import { strings } from '../../../../../../../../locales/i18n'; import Routes from '../../../../../../../constants/navigation/Routes'; import Engine from '../../../../../../../core/Engine'; import SectionHeader from '../../../../../../../component-library/components-temp/SectionHeader'; import { PredictEventValues } from '../../../../constants/eventNames'; -import type { PredictNavigationParamList } from '../../../../types/navigation'; import { PREDICT_HOME_CATEGORIES, type PredictHomeCategory, @@ -44,8 +44,7 @@ const PredictCategoriesSection: React.FC = ({ testID = PREDICT_CATEGORIES_SECTION_TEST_IDS.SECTION, }) => { const tw = useTailwind(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const handlePress = useCallback( (category: PredictHomeCategory) => { diff --git a/app/components/UI/Predict/views/PredictHome/components/PredictLiveNowSection/PredictLiveNowSection.tsx b/app/components/UI/Predict/views/PredictHome/components/PredictLiveNowSection/PredictLiveNowSection.tsx index 7a160b263a23..2ac21104ba84 100644 --- a/app/components/UI/Predict/views/PredictHome/components/PredictLiveNowSection/PredictLiveNowSection.tsx +++ b/app/components/UI/Predict/views/PredictHome/components/PredictLiveNowSection/PredictLiveNowSection.tsx @@ -11,7 +11,8 @@ import { } from '@metamask/design-system-react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { FlashList, type ListRenderItem } from '@shopify/flash-list'; -import { useNavigation, type NavigationProp } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../../../core/NavigationService/types'; import { strings } from '../../../../../../../../locales/i18n'; import Routes from '../../../../../../../constants/navigation/Routes'; import Engine from '../../../../../../../core/Engine'; @@ -20,7 +21,6 @@ import PredictMarketSkeleton from '../../../../components/PredictMarketSkeleton' import { PaginationDots } from '../../../../components/PaginationDots/PaginationDots'; import { PredictEventValues } from '../../../../constants/eventNames'; import type { PredictMarket as PredictMarketType } from '../../../../types'; -import type { PredictNavigationParamList } from '../../../../types/navigation'; import { PREDICT_LIVE_NOW_SECTION_TEST_IDS } from './PredictLiveNowSection.testIds'; import { usePredictLiveNowSection } from './usePredictLiveNowSection'; @@ -50,8 +50,7 @@ const PredictLiveNowSection: React.FC = ({ testID = PREDICT_LIVE_NOW_SECTION_TEST_IDS.SECTION, }) => { const tw = useTailwind(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { width: screenWidth } = useWindowDimensions(); const cardWidth = useMemo( () => screenWidth * CARD_WIDTH_RATIO, diff --git a/app/components/UI/Predict/views/PredictHome/components/PredictPopularTodaySection/PredictPopularTodaySection.tsx b/app/components/UI/Predict/views/PredictHome/components/PredictPopularTodaySection/PredictPopularTodaySection.tsx index f923d833fc08..aeaa0cb37bba 100644 --- a/app/components/UI/Predict/views/PredictHome/components/PredictPopularTodaySection/PredictPopularTodaySection.tsx +++ b/app/components/UI/Predict/views/PredictHome/components/PredictPopularTodaySection/PredictPopularTodaySection.tsx @@ -1,6 +1,7 @@ import React, { useCallback, useMemo } from 'react'; import { Pressable, ScrollView } from 'react-native'; -import { useNavigation, type NavigationProp } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../../../core/NavigationService/types'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { Box, @@ -21,10 +22,7 @@ import type { PredictFilterOption, PredictFilterOptionsParams, } from '../../../../types'; -import type { - PredictFeedRouteParams, - PredictNavigationParamList, -} from '../../../../types/navigation'; +import type { PredictFeedRouteParams } from '../../../../types/navigation'; import { PredictHomeSelectorsIDs } from '../../../../Predict.testIds'; /** @@ -108,8 +106,7 @@ const PredictPopularTodaySection: React.FC = ({ rowCount = DEFAULT_CHIP_ROW_COUNT, }) => { const tw = useTailwind(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { filterOptions, isLoading } = usePredictFilterOptions( POPULAR_TODAY_FILTER_PARAMS, ); diff --git a/app/components/UI/Predict/views/PredictHome/components/PredictPortfolio/PredictPortfolioModule.tsx b/app/components/UI/Predict/views/PredictHome/components/PredictPortfolio/PredictPortfolioModule.tsx index 5c2650082a2d..8bcfa162da7c 100644 --- a/app/components/UI/Predict/views/PredictHome/components/PredictPortfolio/PredictPortfolioModule.tsx +++ b/app/components/UI/Predict/views/PredictHome/components/PredictPortfolio/PredictPortfolioModule.tsx @@ -1,5 +1,6 @@ import React, { useCallback, useMemo } from 'react'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../../../core/NavigationService/types'; import { Box } from '@metamask/design-system-react-native'; import { useSelector } from 'react-redux'; import Routes from '../../../../../../../constants/navigation/Routes'; @@ -9,7 +10,6 @@ import { selectPrivacyMode } from '../../../../../../../selectors/preferencesCon import { PredictEventValues } from '../../../../constants/eventNames'; import { usePredictActionGuard } from '../../../../hooks/usePredictActionGuard'; import { usePredictPortfolio } from '../../../../hooks/usePredictPortfolio'; -import type { PredictNavigationParamList } from '../../../../types/navigation'; import PredictClaimButton from '../../../../components/PredictActionButtons/PredictClaimButton'; import PredictPortfolioActions from './PredictPortfolioActions'; import PredictPortfolioSummary from './PredictPortfolioSummary'; @@ -27,8 +27,7 @@ const PredictPortfolioModule: React.FC = ({ }) => { const privacyMode = useSelector(selectPrivacyMode); const { enableDepositWalletWithdraw } = useSelector(selectMetaMaskPayFlags); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { executeGuardedAction } = usePredictActionGuard({ navigation }); const { availableBalance, diff --git a/app/components/UI/Predict/views/PredictHome/components/PredictTrendingSection/PredictTrendingSection.tsx b/app/components/UI/Predict/views/PredictHome/components/PredictTrendingSection/PredictTrendingSection.tsx index d9dc04c7a7f3..5c522ef690bc 100644 --- a/app/components/UI/Predict/views/PredictHome/components/PredictTrendingSection/PredictTrendingSection.tsx +++ b/app/components/UI/Predict/views/PredictHome/components/PredictTrendingSection/PredictTrendingSection.tsx @@ -5,7 +5,8 @@ import { TextColor, TextVariant, } from '@metamask/design-system-react-native'; -import { useNavigation, type NavigationProp } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../../../core/NavigationService/types'; import { strings } from '../../../../../../../../locales/i18n'; import Routes from '../../../../../../../constants/navigation/Routes'; import Engine from '../../../../../../../core/Engine'; @@ -13,7 +14,6 @@ import SectionHeader from '../../../../../../../component-library/components-tem import PredictMarket from '../../../../components/PredictMarket'; import PredictMarketSkeleton from '../../../../components/PredictMarketSkeleton'; import { PredictEventValues } from '../../../../constants/eventNames'; -import type { PredictNavigationParamList } from '../../../../types/navigation'; import { PREDICT_TRENDING_SECTION_TEST_IDS } from './PredictTrendingSection.testIds'; import { TRENDING_DISPLAY_LIMIT, @@ -37,8 +37,7 @@ interface PredictTrendingSectionProps { const PredictTrendingSection: React.FC = ({ testID = PREDICT_TRENDING_SECTION_TEST_IDS.SECTION, }) => { - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { markets, isLoading, showEmptyState } = usePredictTrendingSection(); const handleSeeAll = useCallback(() => { diff --git a/app/components/UI/Predict/views/PredictMarketDetails/PredictMarketDetails.tsx b/app/components/UI/Predict/views/PredictMarketDetails/PredictMarketDetails.tsx index cba0a6c408a9..493c38c68189 100644 --- a/app/components/UI/Predict/views/PredictMarketDetails/PredictMarketDetails.tsx +++ b/app/components/UI/Predict/views/PredictMarketDetails/PredictMarketDetails.tsx @@ -1,9 +1,4 @@ -import { - NavigationProp, - RouteProp, - useNavigation, - useRoute, -} from '@react-navigation/native'; +import { RouteProp, useNavigation, useRoute } from '@react-navigation/native'; import React, { useMemo, useState, useEffect, useCallback } from 'react'; import { InteractionManager, RefreshControl, ScrollView } from 'react-native'; import { @@ -68,8 +63,7 @@ import { usePredictPreviewSheet } from '../../contexts'; interface PredictMarketDetailsProps {} const PredictMarketDetails: React.FC = () => { - const navigation = - useNavigation>(); + const navigation = useNavigation(); const { openBuySheet, isBuySheetOpen } = usePredictPreviewSheet(); const { colors } = useTheme(); const { claim, isClaimPending } = usePredictClaim(); @@ -349,20 +343,13 @@ const PredictMarketDetails: React.FC = () => { const handlePolymarketResolution = useCallback(() => { InteractionManager.runAfterInteractions(() => { - // `navigation` is typed to the Predict stack (for usePredictActionGuard), - // but Webview is a root-level route. Cast to the root prop for this - // cross-stack navigation. TODO(nav-phase-4): migrate Predict call sites - // + usePredictActionGuard to AppNavigationProp and drop this cast. - (navigation as unknown as AppNavigationProp).navigate( - Routes.WEBVIEW.MAIN, - { - screen: Routes.WEBVIEW.SIMPLE, - params: { - url: 'https://docs.polymarket.com/polymarket-learn/markets/how-are-markets-resolved', - title: strings('predict.market_details.resolution_details'), - }, + navigation.navigate(Routes.WEBVIEW.MAIN, { + screen: Routes.WEBVIEW.SIMPLE, + params: { + url: 'https://docs.polymarket.com/polymarket-learn/markets/how-are-markets-resolved', + title: strings('predict.market_details.resolution_details'), }, - ); + }); }); }, [navigation]); diff --git a/app/components/UI/Predict/views/PredictPositionsView/PredictPositionsView.tsx b/app/components/UI/Predict/views/PredictPositionsView/PredictPositionsView.tsx index 1b407b4510a1..a434f36c31c0 100644 --- a/app/components/UI/Predict/views/PredictPositionsView/PredictPositionsView.tsx +++ b/app/components/UI/Predict/views/PredictPositionsView/PredictPositionsView.tsx @@ -1,9 +1,9 @@ import { - type NavigationProp, type RouteProp, useNavigation, useRoute, } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React, { useCallback, useEffect, @@ -93,8 +93,7 @@ const PredictPositionsTabs = ({ }; const PredictPositionsView = () => { - const navigation = - useNavigation>(); + const navigation = useNavigation(); const route = useRoute>(); const tw = useTailwind(); diff --git a/app/components/UI/Predict/views/PredictSellPreview/PredictSellPreview.tsx b/app/components/UI/Predict/views/PredictSellPreview/PredictSellPreview.tsx index 3ec7a0dd7845..d31b6e8e7dde 100644 --- a/app/components/UI/Predict/views/PredictSellPreview/PredictSellPreview.tsx +++ b/app/components/UI/Predict/views/PredictSellPreview/PredictSellPreview.tsx @@ -12,6 +12,7 @@ import { useNavigation, useRoute, } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import React, { useCallback, useEffect, useMemo, useState } from 'react'; import { ActivityIndicator, View } from 'react-native'; import { Image } from 'expo-image'; @@ -64,7 +65,7 @@ import { PREDICT_SELL_PREVIEW_TEST_IDS } from './PredictSellPreview.testIds'; const PredictSellPreview = (props: PredictSellPreviewProps) => { const tw = useTailwind(); const { styles } = useStyles(styleSheet, {}); - const { goBack, dispatch } = useNavigation(); + const { goBack, dispatch } = useNavigation(); const route = useRoute>(); diff --git a/app/components/UI/Predict/views/PredictTransactionsView/PredictTransactionsView.tsx b/app/components/UI/Predict/views/PredictTransactionsView/PredictTransactionsView.tsx index aa3908b1d9d3..a9c2d9076353 100644 --- a/app/components/UI/Predict/views/PredictTransactionsView/PredictTransactionsView.tsx +++ b/app/components/UI/Predict/views/PredictTransactionsView/PredictTransactionsView.tsx @@ -17,7 +17,8 @@ import { } from '@metamask/design-system-react-native'; import { useTailwind } from '@metamask/design-system-twrnc-preset'; import { Image } from 'expo-image'; -import { NavigationProp, useNavigation } from '@react-navigation/native'; +import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import PredictActivity from '../../components/PredictActivity/PredictActivity'; import { PredictActivityType, @@ -39,7 +40,6 @@ import { getPredictPositionsHistoryListSelector, PredictPositionsHistoryListSelectorsIDs, } from '../../Predict.testIds'; -import type { PredictNavigationParamList } from '../../types/navigation'; import Routes from '../../../../../constants/navigation/Routes'; interface PredictTransactionsViewProps { @@ -106,8 +106,7 @@ const ClaimPendingPositionRow = ({ position, }: ClaimPendingPositionRowProps) => { const tw = useTailwind(); - const navigation = - useNavigation>(); + const navigation = useNavigation(); const handlePress = useCallback(() => { navigation.navigate(Routes.PREDICT.MARKET_DETAILS, { diff --git a/app/components/UI/Predict/views/PredictUnavailableModal/PredictUnavailableModal.tsx b/app/components/UI/Predict/views/PredictUnavailableModal/PredictUnavailableModal.tsx index f5fa54b9ca04..bb963ee080c1 100644 --- a/app/components/UI/Predict/views/PredictUnavailableModal/PredictUnavailableModal.tsx +++ b/app/components/UI/Predict/views/PredictUnavailableModal/PredictUnavailableModal.tsx @@ -1,11 +1,12 @@ import React, { useCallback, useEffect, useRef } from 'react'; import { useNavigation } from '@react-navigation/native'; +import type { AppNavigationProp } from '../../../../../core/NavigationService/types'; import PredictUnavailable, { PredictUnavailableRef, } from '../../components/PredictUnavailable/PredictUnavailable'; const PredictUnavailableModal: React.FC = () => { - const navigation = useNavigation(); + const navigation = useNavigation(); const predictUnavailableRef = useRef(null); useEffect(() => { diff --git a/app/core/NavigationService/types.ts b/app/core/NavigationService/types.ts index cca469f786ee..ad9f53fbd348 100644 --- a/app/core/NavigationService/types.ts +++ b/app/core/NavigationService/types.ts @@ -1103,9 +1103,14 @@ export type AppNavigationProp = Omit< }; /** - * Use when calling stack-only APIs (`replace`, `push`, `pop`, `popToTop`). + * Use when calling stack-only APIs (`replace`, `push`, `pop`, `popToTop`, + * native-stack events like `transitionEnd`). * Mirrors {@link AppNavigationProp}'s `getState()` override, which accounts for * `getState()` potentially returning undefined when the navigator is not mounted. + * + * Note: still keyed to the loose global `RootParamList` during Phase 4. Prefer + * {@link AppNavigationProp} for strict route/param checking unless you need + * stack-only APIs. */ export type AppStackNavigationProp = Omit< NativeStackNavigationProp,