-
Notifications
You must be signed in to change notification settings - Fork 3.5k
[NoQA] Perf: PlatormStackNavigation - Use @react-navigation/native-stack on mobile platforms
#37891
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
210 commits
Select commit
Hold shift + click to select a range
7628767
feat: revert native stack to the state when PR was merged
kirillzyusko 349e3b0
fix: cross platform slide_from_left transition
kirillzyusko afcb123
fix (#37257): use instead of transition
kirillzyusko 90c03a7
fix: ts & eslint
kirillzyusko 047ea38
fix: show profile picture from settings
kirillzyusko b5e5e7d
fix: consistent transitions on Android for Settings/Profile screen
kirillzyusko 9664f2b
fix: Status screen, pronounce screen, start chat screen -> fixed keyb…
kirillzyusko 8860266
fix: hide keyboard on swipe for Private notes
kirillzyusko afde8de
feat: added integration with InteractionManager
kirillzyusko 07fb94f
fix: prettier
kirillzyusko 6b6690c
chore: rename patches to be more consistent wwith other changes
kirillzyusko b9d2262
fix: new chat -> description (keyboard close on back swipe)
kirillzyusko 2aec5af
chore: added PRs references for patches
kirillzyusko 3bc8265
fix: double back press from preferences causes buttons on settings sc…
kirillzyusko f2c32e6
chore: removed commented out code
kirillzyusko 2fff6cb
fix: leftModalStackNavigator platform specific options
kirillzyusko ffa510b
fix: incorrect automatic types conversion
kirillzyusko 651bbef
chore: update RNS to latest version, remove patch
kirillzyusko 915bafc
Merge branch 'main' into perf/native-stack-v2
6729764
Merge branch 'main' into perf/native-stack-v2
ea5172c
Merge branch 'main' into perf/native-stack-v2
5ca7316
update deps
a0be472
implement typed createPlatformStackNavigator
5282af1
simplify abstraction layer
3121e45
re-structure platform depdendent stack navigation options
3b9b5b0
move files
57bfdd2
simplify and improve createPlatformStackNavigator
a9dbb9e
fix: default animation
85fc4bb
adapt pages
75b5cac
add patch for additional (onyx) props
1c60ee6
use PlatformStackScreenProps
1f78767
Merge branch 'main' into perf/native-stack-v2
c5b5775
fix: lint errors
23b70c2
fix: pass generic parameter
a47a398
replace remaining stack navigators
289ba71
restructure styles
18fc893
improve platform navigation
3b40ab2
update custom navigator factories
0dbc9a7
adapt custom navigators
b3ec7ef
remove log
7ec5d05
Merge branch 'main' into perf/native-stack-v2
8c4df3a
remove remaining references to native stack and stack directly
f33eba6
update pods
884627b
fix: order of animations
568cf4a
move files
eda54ab
remove Podfile changes
de68a31
remove unused defaultScreenOptions
f8dc036
update animations
e6aae18
add more animations
86a3af7
fix: remove animations from bottom tab navigator
69a534c
keyboardHandlingEnabled prop only on stack
9296237
add default screen options prop
346f4e6
remove stack animation props
8744c4b
add react import
210a95f
fix: bottom tab not working
96cd874
add more types
b4f3248
add transformScreenOptions function
5e453ba
adapt platform stack navigation
6e8a07d
rename types
57a3250
play around with animations
f937f54
Merge branch 'main' into perf/native-stack-v2
5acaa45
update patch
a346076
fix: patch
256ee99
adapt responsive stack navigator
c9c2008
adapt
15b7689
rename generic parameters
48632e7
fix: react navigation types
6327d66
move navigators out of factory
1080e07
add defaultOptions to CustomBottomTabNavigator
6649b86
fix: animations
be6b3ed
Merge branch 'main' into perf/native-stack-v2
32cfce4
simplify ResponsiveStackNavigator types
9f592f3
update Podfile.lock
850bb3d
fix: no animation on small screens
706dc61
simplify PlatformStackNavigation code
10e50c2
simplify ResponsiveStackNavigator
26a667a
update type names
1620f0c
fix: param
43f7848
simplify types
2fe3e72
simplify responsive stack navigator
85d015e
simplify Bottom tab navigator
00fa244
further improve logic of PlatformStackNaivgation
6d25042
simplify custom routers
56d210f
Merge branch 'main' into perf/native-stack-v2
0dcb55e
improve types and add comments
8875023
update screen props type usage
4b40806
allow nativeOnly and webOnly options
a2f16c3
fix: defaultScreenOptions
b322da4
fix: last TS error
451ce65
fix: lint errors
ed39726
Merge branch 'main' into perf/native-stack-v2
929c655
Merge branch 'main' into perf/native-stack-v2
899f180
fix: navigation updating every render
549d0f1
fix: Podfile
5a35435
fix: React not found
22c0e16
simplify web animations
d78c8ed
update patches
8ba4ccc
add keyboardHandlingEnabled option to native stack
316d44f
use defaultScreenOptions
8a4524c
update defaultScreenOptions type
09a39b9
fix: bottom tab navigator transformState on native
3f094af
Merge branch 'main' into perf/native-stack-v2
7c04f3f
change iOS animation
26bc827
Merge branch 'main' into perf/native-stack-v2
kirillzyusko bd961fa
fix: crash when attempt to upload a photo
kirillzyusko d64570d
chore: update react-native-screens to latest version
kirillzyusko 4292e59
Merge branch 'main' into perf/native-stack-v2
kirillzyusko 552b978
fix: update lock files
kirillzyusko 3d37d9d
fix: lint, typescript
kirillzyusko c443b1c
fix: typo
kirillzyusko fb718b7
fix: issue#4
kirillzyusko 5cf5c71
Merge branch 'main' into perf/native-stack-v2
kirillzyusko 1e61de8
fix: CI
kirillzyusko 935e673
fix: post changes after merge
kirillzyusko 36d426b
Merge branch 'main' into perf/native-stack-v2
kirillzyusko 6076420
Merge branch 'main' into perf/native-stack-v2
kirillzyusko 4142883
Merge branch 'main' into perf/native-stack-v2
kirillzyusko f6faabd
Merge branch 'main' into perf/native-stack-v2
3e1e8ca
Merge branch 'main' into perf/native-stack-v2
2b741ff
fix: merge conflict
d068e77
remove outdated file
87a9884
fix: TS errors
3d068bc
chore: remove Podfile.lock diff
4b04c4a
fix: memoize also on native
70a6d48
remove TODO comment
bea66c0
update web/native only navigation options and rename
91ee836
update styles based on recent navigation option rename
041262a
migrate stack navigator
7129a3c
use CustomRouter
239e6ea
extended @react-navigation/core patch
2968c26
simplify patch
cc81448
fix: patch
9aadd77
fix: patch
ac34ed9
fix: simplify platform stack logic
94c6ec2
simplify navigation option conversion
2442679
restructure types
5258724
Merge branch 'main' into perf/native-stack-v2
7684407
improve patch
625a00b
update patch
1a992c7
simplify types
f132d9c
update patch
b97e15a
fix: bottom stack always uses `slide_from_right` animation
30b5e48
move PlatformStackNavigatorComponent
05e7be0
fix: rename navigator components
9927faf
prioritize others over common navigation options
af97d99
fix: patch
a4effeb
restructure
1e4f480
add defaultScreenOptions for PlatformStackNavigator
fcb9849
use defaultScreenOptions on navigator
63c9f94
use defaultPlatformStackScreenOptions in ResponsiveStackNavigator
3ebddd8
add `ios_from_left` animation to `react-native-screens`
1dae4dd
use ios like animations on android
a07e571
fix: lint errors
9c85763
update RNS patch
e0a9fc0
update RNS patch
ed0c177
update RNS patch
1bd5a6a
update patch
ecd8b53
update RNS patch
e4be7cf
update RNS patch
24287b5
update patch
2fa23e3
Merge branch 'main' into perf/native-stack-v2
5b1e5fb
fix: patch
a404e55
update patch
3ea4cdd
fix: patch (patch-package bug, renamed files lead to error when patch…
296afc1
Merge branch 'main' into perf/native-stack-v2
chrispader d5e7497
Merge branch 'main' into perf/native-stack-v2
chrispader b37e0a2
revert unintentional patch change
chrispader 8d50c0c
fix: StackView import
chrispader 8f1dc94
fix: eslint
chrispader d3c33c4
re-arrange options
chrispader 0527250
Merge branch 'main' into perf/native-stack-v2
chrispader b90ba70
Merge branch 'main' into perf/native-stack-v2
chrispader 75c40fb
fix: wrong replacements
chrispader 6db8b60
fix: lint
chrispader 0e9cbfd
Merge branch 'main' into perf/native-stack-v2
chrispader 234e91e
disable gesture for no animation screens
chrispader b7155b1
fix: animation wrong direction in modals
chrispader c4639ab
update RouteProp types
chrispader 3f4280d
move type
chrispader 88cbda4
fix: missing prop
chrispader 7d7823d
Merge branch 'main' into perf/native-stack-v2
chrispader fb5a17d
fix: VisionCamera fabric bug, deinit camera session on screen unmount
chrispader ce4f8c6
update Podfile.lock
chrispader 5701c46
Merge branch 'main' into perf/native-stack-v2
chrispader c3c7c7a
remove screen and component changes
chrispader c2062c6
Merge branch 'main' into perf/native-stack-v2
chrispader 4f50477
further remove migration code
chrispader e3f4372
keep old custom navigator factories
chrispader 78de04c
add back old navigator factories
chrispader cb2687a
revert Podfile.lock changes
chrispader 300922a
Merge branch 'main' into perf/native-stack-v2
chrispader 225194a
fix: missing react import
chrispader f32a857
Merge branch 'main' into perf/native-stack-v2
chrispader 525325b
fix: vision camera patch
chrispader 107e5c5
fix: lint and ts
chrispader d416c6e
Merge branch 'main' into perf/native-stack-v2
chrispader 1d51dbf
fix: lint
chrispader e989200
fix: apply bottom tab state transformation to mobile as well, because…
kirillzyusko d880c39
fix: storybook
kirillzyusko ec2cbe9
fix: create constants and re-use them instead of string duplication
kirillzyusko e012a79
fix: changes after review
kirillzyusko 922d145
fix: eslint
kirillzyusko fffd74d
fix: last changes after review
kirillzyusko 064ad5b
fix: eslint
kirillzyusko 0ade1e1
fix: I hope it's last fix for eslint
kirillzyusko 3325a07
fix: eslint
kirillzyusko 6c22124
fix: remove unused properties
kirillzyusko bf06916
fix: partially resolve new comments
kirillzyusko 3bc381c
fix: removed unused files
kirillzyusko 707e207
fix: refactor types
kirillzyusko File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
1,435 changes: 1,435 additions & 0 deletions
1,435
patches/@react-navigation+core+6.4.11+002+platform-navigation-stack-types.patch
Large diffs are not rendered by default.
Oops, something went wrong.
157 changes: 157 additions & 0 deletions
157
patches/@react-navigation+native-stack+6.9.26+001+keyboardHandlingEnabled-prop.patch
Large diffs are not rendered by default.
Oops, something went wrong.
196 changes: 196 additions & 0 deletions
196
...hes/@react-navigation+native-stack+6.9.26+002+added-interaction-manager-integration.patch
Large diffs are not rendered by default.
Oops, something went wrong.
413 changes: 413 additions & 0 deletions
413
patches/react-native-screens+3.34.0+002+ios_from_left_animation.patch
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
191 changes: 191 additions & 0 deletions
191
...libs/Navigation/AppNavigator/createCustomPlatformStackBottomTabNavigator/BottomTabBar.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,191 @@ | ||
| import {useNavigation} from '@react-navigation/native'; | ||
| import React, {memo, useCallback, useEffect, useState} from 'react'; | ||
| import {NativeModules, View} from 'react-native'; | ||
| import {useOnyx} from 'react-native-onyx'; | ||
| import Icon from '@components/Icon'; | ||
| import * as Expensicons from '@components/Icon/Expensicons'; | ||
| import {PressableWithFeedback} from '@components/Pressable'; | ||
| import type {SearchQueryString} from '@components/Search/types'; | ||
| import Tooltip from '@components/Tooltip'; | ||
| import useActiveWorkspace from '@hooks/useActiveWorkspace'; | ||
| import useLocalize from '@hooks/useLocalize'; | ||
| import useTheme from '@hooks/useTheme'; | ||
| import useThemeStyles from '@hooks/useThemeStyles'; | ||
| import * as Session from '@libs/actions/Session'; | ||
| import interceptAnonymousUser from '@libs/interceptAnonymousUser'; | ||
| import Navigation from '@libs/Navigation/Navigation'; | ||
| import type {AuthScreensParamList} from '@libs/Navigation/types'; | ||
| import {isCentralPaneName} from '@libs/NavigationUtils'; | ||
| import * as PolicyUtils from '@libs/PolicyUtils'; | ||
| import * as SearchUtils from '@libs/SearchUtils'; | ||
| import type {BrickRoad} from '@libs/WorkspacesSettingsUtils'; | ||
| import {getChatTabBrickRoad} from '@libs/WorkspacesSettingsUtils'; | ||
| import navigationRef from '@navigation/navigationRef'; | ||
| import BottomTabAvatar from '@pages/home/sidebar/BottomTabAvatar'; | ||
| import BottomTabBarFloatingActionButton from '@pages/home/sidebar/BottomTabBarFloatingActionButton'; | ||
| import variables from '@styles/variables'; | ||
| import * as Welcome from '@userActions/Welcome'; | ||
| import * as OnboardingFlow from '@userActions/Welcome/OnboardingFlow'; | ||
| import CONST from '@src/CONST'; | ||
| import NAVIGATORS from '@src/NAVIGATORS'; | ||
| import ONYXKEYS from '@src/ONYXKEYS'; | ||
| import type {Route} from '@src/ROUTES'; | ||
| import ROUTES from '@src/ROUTES'; | ||
| import SCREENS from '@src/SCREENS'; | ||
|
|
||
| type BottomTabBarProps = { | ||
| selectedTab: string | undefined; | ||
| }; | ||
|
|
||
| /** | ||
| * Returns SearchQueryString that has policyID correctly set. | ||
| * | ||
| * When we're coming back to Search Screen we might have pre-existing policyID inside SearchQuery. | ||
| * There are 2 cases when we might want to remove this `policyID`: | ||
| * - if Policy was removed in another screen | ||
| * - if WorkspaceSwitcher was used to globally unset a policyID | ||
| * Otherwise policyID will be inserted into query | ||
| */ | ||
| function handleQueryWithPolicyID(query: SearchQueryString, activePolicyID?: string): SearchQueryString { | ||
| const queryJSON = SearchUtils.buildSearchQueryJSON(query); | ||
| if (!queryJSON) { | ||
| return query; | ||
| } | ||
|
|
||
| const policyID = activePolicyID ?? queryJSON.policyID; | ||
| const policy = PolicyUtils.getPolicy(policyID); | ||
|
|
||
| // In case policy is missing or there is no policy currently selected via WorkspaceSwitcher we remove it | ||
| if (!activePolicyID || !policy) { | ||
| delete queryJSON.policyID; | ||
| } else { | ||
| queryJSON.policyID = policyID; | ||
| } | ||
|
|
||
| return SearchUtils.buildSearchQueryString(queryJSON); | ||
| } | ||
|
|
||
| function BottomTabBar({selectedTab}: BottomTabBarProps) { | ||
| const theme = useTheme(); | ||
| const styles = useThemeStyles(); | ||
| const {translate} = useLocalize(); | ||
| const navigation = useNavigation(); | ||
| const {activeWorkspaceID} = useActiveWorkspace(); | ||
| const [isLoadingApp] = useOnyx(ONYXKEYS.IS_LOADING_APP); | ||
| const transactionViolations = useOnyx(ONYXKEYS.COLLECTION.TRANSACTION_VIOLATIONS); | ||
| const [chatTabBrickRoad, setChatTabBrickRoad] = useState<BrickRoad>(getChatTabBrickRoad(activeWorkspaceID)); | ||
|
|
||
| useEffect(() => { | ||
| setChatTabBrickRoad(getChatTabBrickRoad(activeWorkspaceID)); | ||
| }, [activeWorkspaceID, transactionViolations]); | ||
|
|
||
| useEffect(() => { | ||
| const navigationState = navigation.getState(); | ||
| const routes = navigationState?.routes; | ||
| const currentRoute = routes?.at(navigationState?.index ?? 0); | ||
| // When we are redirected to the Settings tab from the OldDot, we don't want to call the Welcome.show() method. | ||
| // To prevent this, the value of the bottomTabRoute?.name is checked here | ||
| if (!!(currentRoute && currentRoute.name !== NAVIGATORS.BOTTOM_TAB_NAVIGATOR && !isCentralPaneName(currentRoute.name)) || Session.isAnonymousUser()) { | ||
| return; | ||
| } | ||
|
|
||
| // HybridApp has own entry point when we decide whether to display onboarding and explanation modal. | ||
| if (NativeModules.HybridAppModule) { | ||
| return; | ||
| } | ||
|
|
||
| Welcome.isOnboardingFlowCompleted({ | ||
| onNotCompleted: () => OnboardingFlow.startOnboardingFlow(), | ||
| }); | ||
|
|
||
| // eslint-disable-next-line react-compiler/react-compiler, react-hooks/exhaustive-deps | ||
| }, [isLoadingApp]); | ||
|
|
||
| const navigateToChats = useCallback(() => { | ||
| if (selectedTab === SCREENS.HOME) { | ||
| return; | ||
| } | ||
| const route = activeWorkspaceID ? (`/w/${activeWorkspaceID}/${ROUTES.HOME}` as Route) : ROUTES.HOME; | ||
| Navigation.navigate(route); | ||
| }, [activeWorkspaceID, selectedTab]); | ||
|
|
||
| const navigateToSearch = useCallback(() => { | ||
| if (selectedTab === SCREENS.SEARCH.BOTTOM_TAB) { | ||
| return; | ||
| } | ||
| interceptAnonymousUser(() => { | ||
| const rootState = navigationRef.getRootState(); | ||
| const lastSearchRoute = rootState.routes.filter((route) => route.name === SCREENS.SEARCH.CENTRAL_PANE).at(-1); | ||
|
|
||
| if (lastSearchRoute) { | ||
| const {q, ...rest} = lastSearchRoute.params as AuthScreensParamList[typeof SCREENS.SEARCH.CENTRAL_PANE]; | ||
| const cleanedQuery = handleQueryWithPolicyID(q, activeWorkspaceID); | ||
|
|
||
| Navigation.navigate( | ||
| ROUTES.SEARCH_CENTRAL_PANE.getRoute({ | ||
| query: cleanedQuery, | ||
| ...rest, | ||
| }), | ||
| ); | ||
| return; | ||
| } | ||
|
|
||
| const defaultCannedQuery = SearchUtils.buildCannedSearchQuery(); | ||
| // when navigating to search we might have an activePolicyID set from workspace switcher | ||
| const query = activeWorkspaceID ? `${defaultCannedQuery} ${CONST.SEARCH.SYNTAX_ROOT_KEYS.POLICY_ID}:${activeWorkspaceID}` : defaultCannedQuery; | ||
| Navigation.navigate(ROUTES.SEARCH_CENTRAL_PANE.getRoute({query})); | ||
| }); | ||
| }, [activeWorkspaceID, selectedTab]); | ||
|
|
||
| return ( | ||
| <View style={styles.bottomTabBarContainer}> | ||
| <Tooltip text={translate('common.inbox')}> | ||
| <PressableWithFeedback | ||
| onPress={navigateToChats} | ||
| role={CONST.ROLE.BUTTON} | ||
| accessibilityLabel={translate('common.inbox')} | ||
| wrapperStyle={styles.flex1} | ||
| style={styles.bottomTabBarItem} | ||
| > | ||
| <View> | ||
| <Icon | ||
| src={Expensicons.Inbox} | ||
| fill={selectedTab === SCREENS.HOME ? theme.iconMenu : theme.icon} | ||
| width={variables.iconBottomBar} | ||
| height={variables.iconBottomBar} | ||
| /> | ||
| {chatTabBrickRoad && ( | ||
| <View style={styles.bottomTabStatusIndicator(chatTabBrickRoad === CONST.BRICK_ROAD_INDICATOR_STATUS.INFO ? theme.iconSuccessFill : theme.danger)} /> | ||
| )} | ||
| </View> | ||
| </PressableWithFeedback> | ||
| </Tooltip> | ||
| <Tooltip text={translate('common.search')}> | ||
| <PressableWithFeedback | ||
| onPress={navigateToSearch} | ||
| role={CONST.ROLE.BUTTON} | ||
| accessibilityLabel={translate('common.search')} | ||
| wrapperStyle={styles.flex1} | ||
| style={styles.bottomTabBarItem} | ||
| > | ||
| <View> | ||
| <Icon | ||
| src={Expensicons.MoneySearch} | ||
| fill={selectedTab === SCREENS.SEARCH.BOTTOM_TAB ? theme.iconMenu : theme.icon} | ||
| width={variables.iconBottomBar} | ||
| height={variables.iconBottomBar} | ||
| /> | ||
| </View> | ||
| </PressableWithFeedback> | ||
| </Tooltip> | ||
| <BottomTabAvatar isSelected={selectedTab === SCREENS.SETTINGS.ROOT} /> | ||
| <View style={[styles.flex1, styles.bottomTabBarItem]}> | ||
| <BottomTabBarFloatingActionButton /> | ||
| </View> | ||
| </View> | ||
| ); | ||
| } | ||
|
|
||
| BottomTabBar.displayName = 'BottomTabBar'; | ||
|
|
||
| export default memo(BottomTabBar); | ||
22 changes: 22 additions & 0 deletions
22
...vigator/createCustomPlatformStackBottomTabNavigator/BottomTabNavigationContentWrapper.tsx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| import React from 'react'; | ||
| import {View} from 'react-native'; | ||
| import ScreenWrapper from '@components/ScreenWrapper'; | ||
| import useThemeStyles from '@hooks/useThemeStyles'; | ||
| import type {NavigationContentWrapperProps} from '@libs/Navigation/PlatformStackNavigation/types'; | ||
|
|
||
| function BottomTabNavigationContentWrapper({children, displayName}: NavigationContentWrapperProps) { | ||
| const styles = useThemeStyles(); | ||
|
|
||
| return ( | ||
| <ScreenWrapper | ||
| testID={displayName} | ||
| shouldShowOfflineIndicator={false} | ||
| shouldEnableKeyboardAvoidingView={false} | ||
| shouldEnablePickerAvoiding={false} | ||
| > | ||
| <View style={styles.flex1}>{children}</View> | ||
| </ScreenWrapper> | ||
| ); | ||
| } | ||
|
|
||
| export default BottomTabNavigationContentWrapper; |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is possible to put
/w/${activeWorkspaceID}/${ROUTES.HOME}on ROUTES.ts?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@fabioh8010 again, I think it's copied/pasted code, so not sure if we need to do that 🙈
And additionally - is it possible to create dynamic routes in
ROUTES.ts? Or we want to add two routes and use ternary operator inBottomTabBar.tsxand choose between two routes?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Answered here