From 8f8af476cca54ad26b214e56af022b392d8f9389 Mon Sep 17 00:00:00 2001 From: Hailey Date: Tue, 28 May 2024 18:38:52 -0700 Subject: [PATCH] Bump `react-navigation` (#4216) * bump and rm patch * fix types * use `Home` default --------- Co-authored-by: Dan Abramov --- package.json | 8 +-- patches/@react-navigation+native+6.1.7.patch | 56 ----------------- .../@react-navigation+native+6.1.7.patch.md | 5 -- src/lib/routes/helpers.ts | 9 ++- src/view/com/feeds/FeedPage.tsx | 5 +- yarn.lock | 63 +++++++++---------- 6 files changed, 43 insertions(+), 103 deletions(-) delete mode 100644 patches/@react-navigation+native+6.1.7.patch delete mode 100644 patches/@react-navigation+native+6.1.7.patch.md diff --git a/package.json b/package.json index 5a936e3c..af3cb999 100644 --- a/package.json +++ b/package.json @@ -72,10 +72,10 @@ "@react-native-masked-view/masked-view": "0.3.0", "@react-native-menu/menu": "^0.8.0", "@react-native-picker/picker": "2.6.1", - "@react-navigation/bottom-tabs": "^6.5.7", - "@react-navigation/drawer": "^6.6.2", - "@react-navigation/native": "^6.1.6", - "@react-navigation/native-stack": "^6.9.12", + "@react-navigation/bottom-tabs": "^6.5.20", + "@react-navigation/drawer": "^6.6.15", + "@react-navigation/native": "^6.1.17", + "@react-navigation/native-stack": "^6.9.26", "@segment/analytics-next": "^1.51.3", "@segment/analytics-react": "^1.0.0-rc1", "@segment/analytics-react-native": "^2.10.1", diff --git a/patches/@react-navigation+native+6.1.7.patch b/patches/@react-navigation+native+6.1.7.patch deleted file mode 100644 index b604e2c1..00000000 --- a/patches/@react-navigation+native+6.1.7.patch +++ /dev/null @@ -1,56 +0,0 @@ -diff --git a/node_modules/@react-navigation/native/lib/commonjs/useLinking.js b/node_modules/@react-navigation/native/lib/commonjs/useLinking.js -index ef4f368..2b0da35 100644 ---- a/node_modules/@react-navigation/native/lib/commonjs/useLinking.js -+++ b/node_modules/@react-navigation/native/lib/commonjs/useLinking.js -@@ -273,8 +273,12 @@ function useLinking(ref, _ref) { - }); - const currentIndex = history.index; - try { -- if (nextIndex !== -1 && nextIndex < currentIndex) { -- // An existing entry for this path exists and it's less than current index, go back to that -+ if ( -+ nextIndex !== -1 && -+ nextIndex < currentIndex && -+ // We should only go back if the entry exists and it's less than current index -+ history.get(nextIndex - currentIndex) -+ ) { // An existing entry for this path exists and it's less than current index, go back to that - await history.go(nextIndex - currentIndex); - } else { - // We couldn't find an existing entry to go back to, so we'll go back by the delta -diff --git a/node_modules/@react-navigation/native/lib/module/useLinking.js b/node_modules/@react-navigation/native/lib/module/useLinking.js -index 62a3b43..11a5a28 100644 ---- a/node_modules/@react-navigation/native/lib/module/useLinking.js -+++ b/node_modules/@react-navigation/native/lib/module/useLinking.js -@@ -264,8 +264,12 @@ export default function useLinking(ref, _ref) { - }); - const currentIndex = history.index; - try { -- if (nextIndex !== -1 && nextIndex < currentIndex) { -- // An existing entry for this path exists and it's less than current index, go back to that -+ if ( -+ nextIndex !== -1 && -+ nextIndex < currentIndex && -+ // We should only go back if the entry exists and it's less than current index -+ history.get(nextIndex - currentIndex) -+ ) { // An existing entry for this path exists and it's less than current index, go back to that - await history.go(nextIndex - currentIndex); - } else { - // We couldn't find an existing entry to go back to, so we'll go back by the delta -diff --git a/node_modules/@react-navigation/native/src/useLinking.tsx b/node_modules/@react-navigation/native/src/useLinking.tsx -index 3db40b7..9ba4ecd 100644 ---- a/node_modules/@react-navigation/native/src/useLinking.tsx -+++ b/node_modules/@react-navigation/native/src/useLinking.tsx -@@ -381,7 +381,12 @@ export default function useLinking( - const currentIndex = history.index; - - try { -- if (nextIndex !== -1 && nextIndex < currentIndex) { -+ if ( -+ nextIndex !== -1 && -+ nextIndex < currentIndex && -+ // We should only go back if the entry exists and it's less than current index -+ history.get(nextIndex - currentIndex) -+ ) { - // An existing entry for this path exists and it's less than current index, go back to that - await history.go(nextIndex - currentIndex); - } else { diff --git a/patches/@react-navigation+native+6.1.7.patch.md b/patches/@react-navigation+native+6.1.7.patch.md deleted file mode 100644 index 60b0d4e1..00000000 --- a/patches/@react-navigation+native+6.1.7.patch.md +++ /dev/null @@ -1,5 +0,0 @@ -# React Navigation history bug patch - -This patches react-navigation to fix the issues in https://github.com/bluesky-social/social-app/issues/710. - -This is based on the PR found at https://github.com/react-navigation/react-navigation/pull/11833 diff --git a/src/lib/routes/helpers.ts b/src/lib/routes/helpers.ts index 0da88504..603b6f71 100644 --- a/src/lib/routes/helpers.ts +++ b/src/lib/routes/helpers.ts @@ -1,5 +1,6 @@ import {NavigationProp} from '@react-navigation/native' -import {State, RouteParams} from './types' + +import {RouteParams, State} from './types' export function getRootNavigation( nav: NavigationProp, @@ -10,7 +11,11 @@ export function getRootNavigation( return nav } -export function getCurrentRoute(state: State) { +export function getCurrentRoute(state?: State) { + if (!state) { + return {name: 'Home'} + } + let node = state.routes[state.index || 0] while (node.state?.routes && typeof node.state?.index === 'number') { node = node.state?.routes[node.state?.index] diff --git a/src/view/com/feeds/FeedPage.tsx b/src/view/com/feeds/FeedPage.tsx index f0a7c623..c80740b7 100644 --- a/src/view/com/feeds/FeedPage.tsx +++ b/src/view/com/feeds/FeedPage.tsx @@ -3,7 +3,7 @@ import {View} from 'react-native' import {AppBskyActorDefs} from '@atproto/api' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' -import {useNavigation} from '@react-navigation/native' +import {NavigationProp, useNavigation} from '@react-navigation/native' import {useQueryClient} from '@tanstack/react-query' import {getRootNavigation, getTabState, TabState} from '#/lib/routes/helpers' @@ -19,6 +19,7 @@ import {useSetMinimalShellMode} from '#/state/shell' import {useComposerControls} from '#/state/shell/composer' import {useAnalytics} from 'lib/analytics/analytics' import {ComposeIcon2} from 'lib/icons' +import {AllNavigatorParams} from 'lib/routes/types' import {s} from 'lib/styles' import {useHeaderOffset} from '#/components/hooks/useHeaderOffset' import {Feed} from '../posts/Feed' @@ -48,7 +49,7 @@ export function FeedPage({ }) { const {hasSession} = useSession() const {_} = useLingui() - const navigation = useNavigation() + const navigation = useNavigation>() const queryClient = useQueryClient() const {openComposer} = useComposerControls() const [isScrolledDown, setIsScrolledDown] = React.useState(false) diff --git a/yarn.lock b/yarn.lock index 07e2f73c..75a15a8e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5669,55 +5669,55 @@ invariant "^2.2.4" nullthrows "^1.1.1" -"@react-navigation/bottom-tabs@^6.5.7": - version "6.5.8" - resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.8.tgz#9536c6e45154abc183c363d07c94991e10b14856" - integrity sha512-0aa/jXea+LyBgR5NoRNWGKw0aFhjHwCkusigMRXIrCA4kINauDcAO0w0iFbZeKfaTCVAix5kK5UxDJJ2aJpevg== +"@react-navigation/bottom-tabs@^6.5.20": + version "6.5.20" + resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-6.5.20.tgz#5335e75b02c527ef0569bd97d4f9185d65616e49" + integrity sha512-ow6Z06iS4VqBO8d7FP+HsGjJLWt2xTWIvuWjpoCvsM/uQXzCRDIjBv9HaKcXbF0yTW7IMir0oDAbU5PFzEDdgA== dependencies: - "@react-navigation/elements" "^1.3.18" + "@react-navigation/elements" "^1.3.30" color "^4.2.3" warn-once "^0.1.0" -"@react-navigation/core@^6.4.9": - version "6.4.9" - resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.9.tgz#aa09ce534f5393427cb993cf242abdbd848fb2c7" - integrity sha512-G9GH7bP9x0qqupxZnkSftnkn4JoXancElTvFc8FVGfEvxnxP+gBo3wqcknyBi7M5Vad4qecsYjCOa9wqsftv9g== +"@react-navigation/core@^6.4.16": + version "6.4.16" + resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.16.tgz#f9369a134805174536b9aa0f0f483b930511caf9" + integrity sha512-UDTJBsHxnzgFETR3ZxhctP+RWr4SkyeZpbhpkQoIGOuwSCkt1SE0qjU48/u6r6w6XlX8OqVudn1Ab0QFXTHxuQ== dependencies: "@react-navigation/routers" "^6.1.9" escape-string-regexp "^4.0.0" nanoid "^3.1.23" query-string "^7.1.3" react-is "^16.13.0" - use-latest-callback "^0.1.5" + use-latest-callback "^0.1.9" -"@react-navigation/drawer@^6.6.2": - version "6.6.3" - resolved "https://registry.yarnpkg.com/@react-navigation/drawer/-/drawer-6.6.3.tgz#ad48b3e0a2d2771e7fc8bc46a8b269ef2ae11e54" - integrity sha512-oQzHqH6svtSIun6+rikQtku6ye2CyyxT4xf3RQLVsBvK7+g4tDdKKLcjgoJmuT1zBZC3SSu3wNeqp8cg4cr2PQ== +"@react-navigation/drawer@^6.6.15": + version "6.6.15" + resolved "https://registry.yarnpkg.com/@react-navigation/drawer/-/drawer-6.6.15.tgz#fcedba68f735103dbc035911f5959ce926081d62" + integrity sha512-GLkFQNxjtmxB/qXSHmu1DfoB89jCzW64tmX68iPndth+9U+0IP27GcCCaMZxQfwj+nI8Kn2zlTlXAZDIIHE+DQ== dependencies: - "@react-navigation/elements" "^1.3.18" + "@react-navigation/elements" "^1.3.30" color "^4.2.3" warn-once "^0.1.0" -"@react-navigation/elements@^1.3.18": - version "1.3.18" - resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.18.tgz#d8364b40276f3efb9c229c39da3b8b465f18f0a2" - integrity sha512-/0hwnJkrr415yP0Hf4PjUKgGyfshrvNUKFXN85Mrt1gY49hy9IwxZgrrxlh0THXkPeq8q4VWw44eHDfAcQf20Q== +"@react-navigation/elements@^1.3.30": + version "1.3.30" + resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.30.tgz#a81371f599af1070b12014f05d6c09b1a611fd9a" + integrity sha512-plhc8UvCZs0UkV+sI+3bisIyn78wz9O/BiWZXpounu72k/R/Sj5PuZYFJ1fi6psvriUveMCGh4LeZckAZu2qiQ== -"@react-navigation/native-stack@^6.9.12": - version "6.9.13" - resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.13.tgz#f308c398ee18fcd45de8ec7c04fe0641735feb31" - integrity sha512-ejlepMrvFneewL+XlXHHhn+6y3lwvavM4/R7XwBV0XJxCymujexK+7Vkg7UcvJ1lx4CRhOcyBSNfGmdNIHREyQ== +"@react-navigation/native-stack@^6.9.26": + version "6.9.26" + resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.9.26.tgz#90facf7783c9927f094bc9f01c613af75b6c241e" + integrity sha512-++dueQ+FDj2XkZ902DVrK79ub1vp19nSdAZWxKRgd6+Bc0Niiesua6rMCqymYOVaYh+dagwkA9r00bpt/U5WLw== dependencies: - "@react-navigation/elements" "^1.3.18" + "@react-navigation/elements" "^1.3.30" warn-once "^0.1.0" -"@react-navigation/native@^6.1.6": - version "6.1.7" - resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.7.tgz#968ef85b76d35f63111890668836fe2f125bbf90" - integrity sha512-W6E3+AtTombMucCRo6q7vPmluq8hSjS+IxfazJ/SokOe7ChJX7eLvvralIsJkjFj3iWV1KgOSnHxa6hdiFasBw== +"@react-navigation/native@^6.1.17": + version "6.1.17" + resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.17.tgz#439f15a99809d26ea4682d2a3766081cf2ca31cf" + integrity sha512-mer3OvfwWOHoUSMJyLa4vnBH3zpFmCwuzrBPlw7feXklurr/ZDiLjLxUScOot6jLRMz/67GyilEYMmP99LL0RQ== dependencies: - "@react-navigation/core" "^6.4.9" + "@react-navigation/core" "^6.4.16" escape-string-regexp "^4.0.0" fast-deep-equal "^3.1.3" nanoid "^3.1.23" @@ -21568,11 +21568,6 @@ use-isomorphic-layout-effect@^1.1.1: resolved "https://registry.yarnpkg.com/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz#497cefb13d863d687b08477d9e5a164ad8c1a6fb" integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA== -use-latest-callback@^0.1.5: - version "0.1.6" - resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.6.tgz#3fa6e7babbb5f9bfa24b5094b22939e1e92ebcf6" - integrity sha512-VO/P91A/PmKH9bcN9a7O3duSuxe6M14ZoYXgA6a8dab8doWNdhiIHzEkX/jFeTTRBsX0Ubk6nG4q2NIjNsj+bg== - use-latest-callback@^0.1.9: version "0.1.9" resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.1.9.tgz#10191dc54257e65a8e52322127643a8940271e2a"