Skip to content

Commit 8acc7a6

Browse files
authored
Merge pull request #24 from software-mansion-labs/@kosmydel/address-ideal-nav-review-v3
Address ideal nav review v3
2 parents 8e26531 + 1e8684b commit 8acc7a6

34 files changed

+143
-118
lines changed

src/CONST.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1448,7 +1448,7 @@ const CONST = {
14481448
GUIDES_CALL_TASK_IDS: {
14491449
CONCIERGE_DM: 'NewExpensifyConciergeDM',
14501450
WORKSPACE_INITIAL: 'WorkspaceHome',
1451-
WORKSPACE_OVERVIEW: 'WorkspaceGeneralSettings',
1451+
WORKSPACE_OVERVIEW: 'WorkspaceOverview',
14521452
WORKSPACE_CARD: 'WorkspaceCorporateCards',
14531453
WORKSPACE_REIMBURSE: 'WorkspaceReimburseReceipts',
14541454
WORKSPACE_BILLS: 'WorkspacePayBills',
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import type ForceFullScreenViewProps from './types';
2+
3+
function ForceFullScreenView({children}: ForceFullScreenViewProps) {
4+
return children;
5+
}
6+
7+
ForceFullScreenView.displayName = 'ForceFullScreenView';
8+
9+
export default ForceFullScreenView;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import React from 'react';
2+
import {View} from 'react-native';
3+
import useThemeStyles from '@hooks/useThemeStyles';
4+
import type ForceFullScreenViewProps from './types';
5+
6+
function ForceFullScreenView({children, forceFullScreen = false}: ForceFullScreenViewProps) {
7+
const styles = useThemeStyles();
8+
9+
if (forceFullScreen) {
10+
return <View style={forceFullScreen && styles.forcedBlockingViewContainer}>{children}</View>;
11+
}
12+
13+
return children;
14+
}
15+
16+
ForceFullScreenView.displayName = 'ForceFullScreenView';
17+
18+
export default ForceFullScreenView;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import type ChildrenProps from '@src/types/utils/ChildrenProps';
2+
3+
type ForceFullScreenViewProps = ChildrenProps & {
4+
forceFullScreen?: boolean;
5+
};
6+
7+
export default ForceFullScreenViewProps;

src/components/BlockingViews/FullPageNotFoundView.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import variables from '@styles/variables';
99
import type {TranslationPaths} from '@src/languages/types';
1010
import ROUTES from '@src/ROUTES';
1111
import BlockingView from './BlockingView';
12+
import ForceFullScreenView from './ForceFullScreenView';
1213

1314
type FullPageNotFoundViewProps = {
1415
/** Child elements */
@@ -37,6 +38,9 @@ type FullPageNotFoundViewProps = {
3738

3839
/** Function to call when pressing the navigation link */
3940
onLinkPress: () => void;
41+
42+
/** Whether we should force the full page view */
43+
forceFullScreen?: boolean;
4044
};
4145

4246
// eslint-disable-next-line rulesdir/no-negated-variables
@@ -50,13 +54,14 @@ function FullPageNotFoundView({
5054
shouldShowLink = true,
5155
shouldShowBackButton = true,
5256
onLinkPress = () => Navigation.dismissModal(),
57+
forceFullScreen = false,
5358
}: FullPageNotFoundViewProps) {
5459
const styles = useThemeStyles();
5560
const {translate} = useLocalize();
5661

5762
if (shouldShow) {
5863
return (
59-
<>
64+
<ForceFullScreenView forceFullScreen={forceFullScreen}>
6065
<HeaderWithBackButton
6166
onBackButtonPress={onBackButtonPress}
6267
shouldShowBackButton={shouldShowBackButton}
@@ -73,7 +78,7 @@ function FullPageNotFoundView({
7378
onLinkPress={onLinkPress}
7479
/>
7580
</View>
76-
</>
81+
</ForceFullScreenView>
7782
);
7883
}
7984

src/components/ScreenWrapper.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ type ScreenWrapperProps = {
5050
/** Whether to include padding bottom */
5151
includeSafeAreaPaddingBottom?: boolean;
5252

53+
/** This overrides the above prop. It force disable the safe area bottom padding. */
54+
shouldDisableSafeAreaPaddingBottom?: boolean;
55+
5356
/** Whether to include padding top */
5457
includePaddingTop?: boolean;
5558

@@ -103,6 +106,7 @@ function ScreenWrapper(
103106
headerGapStyles,
104107
children,
105108
shouldShowOfflineIndicator = true,
109+
shouldDisableSafeAreaPaddingBottom = false,
106110
offlineIndicatorStyle,
107111
style,
108112
shouldDismissKeyboardBeforeClose = true,
@@ -202,7 +206,7 @@ function ScreenWrapper(
202206
}
203207

204208
// We always need the safe area padding bottom if we're showing the offline indicator since it is bottom-docked.
205-
if (includeSafeAreaPaddingBottom || (isOffline && shouldShowOfflineIndicator)) {
209+
if (!shouldDisableSafeAreaPaddingBottom && (includeSafeAreaPaddingBottom || (isOffline && shouldShowOfflineIndicator))) {
206210
paddingStyle.paddingBottom = paddingBottom;
207211
}
208212

src/languages/es.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1566,7 +1566,7 @@ export default {
15661566
},
15671567
emptyWorkspace: {
15681568
title: 'Crea un espacio de trabajo',
1569-
subtitle: 'Administra gastos de empresa, emite tarjetas, envía facturas y mucho más.',
1569+
subtitle: 'En los espacios de trabajo podrás chatear con tu equipo, reembolsar gastos, emitir tarjetas, enviar y pagar facturas, y mucho más - todo en un mismo lugar.',
15701570
createAWorkspaceCTA: 'Comenzar',
15711571
features: {
15721572
trackAndCollect: 'Organiza recibos',

src/libs/Navigation/AppNavigator/ModalStackNavigators.tsx

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ type Screens = Partial<Record<Screen, () => React.ComponentType>>;
4040
* Create a modal stack navigator with an array of sub-screens.
4141
*
4242
* @param screens key/value pairs where the key is the name of the screen and the value is a functon that returns the lazy-loaded component
43+
* @param getScreenOptions optional function that returns the screen options, override the default options
4344
*/
4445
function createModalStackNavigator<TStackParams extends ParamListBase>(screens: Screens, getScreenOptions?: (styles: ThemeStyles) => StackNavigationOptions): React.ComponentType {
4546
const ModalStackNavigator = createStackNavigator<TStackParams>();
@@ -184,8 +185,6 @@ const NewTeachersUniteNavigator = createModalStackNavigator<TeachersUniteNavigat
184185

185186
const AccountSettingsModalStackNavigator = createModalStackNavigator(
186187
{
187-
[SCREENS.SETTINGS.ROOT]: () => require('../../../pages/settings/InitialSettingsPage').default as React.ComponentType,
188-
[SCREENS.SETTINGS.WORKSPACES]: () => require('../../../pages/workspace/WorkspacesListPage').default as React.ComponentType,
189188
[SCREENS.SETTINGS.PREFERENCES.ROOT]: () => require('../../../pages/settings/Preferences/PreferencesPage').default as React.ComponentType,
190189
[SCREENS.SETTINGS.SECURITY]: () => require('../../../pages/settings/Security/SecuritySettingsPage').default as React.ComponentType,
191190
[SCREENS.SETTINGS.PROFILE.ROOT]: () => require('../../../pages/settings/Profile/ProfilePage').default as React.ComponentType,
@@ -197,8 +196,6 @@ const AccountSettingsModalStackNavigator = createModalStackNavigator(
197196
);
198197

199198
const SettingsModalStackNavigator = createModalStackNavigator<SettingsNavigatorParamList>({
200-
[SCREENS.SETTINGS.SHARE_CODE]: () => require('../../../pages/ShareCodePage').default as React.ComponentType,
201-
[SCREENS.SETTINGS.PROFILE.ROOT]: () => require('../../../pages/settings/Profile/ProfilePage').default as React.ComponentType,
202199
[SCREENS.SETTINGS.PROFILE.PRONOUNS]: () => require('../../../pages/settings/Profile/PronounsPage').default as React.ComponentType,
203200
[SCREENS.SETTINGS.PROFILE.DISPLAY_NAME]: () => require('../../../pages/settings/Profile/DisplayNamePage').default as React.ComponentType,
204201
[SCREENS.SETTINGS.PROFILE.TIMEZONE]: () => require('../../../pages/settings/Profile/TimezoneInitialPage').default as React.ComponentType,
@@ -211,16 +208,12 @@ const SettingsModalStackNavigator = createModalStackNavigator<SettingsNavigatorP
211208
[SCREENS.SETTINGS.PROFILE.CONTACT_METHODS]: () => require('../../../pages/settings/Profile/Contacts/ContactMethodsPage').default as React.ComponentType,
212209
[SCREENS.SETTINGS.PROFILE.CONTACT_METHOD_DETAILS]: () => require('../../../pages/settings/Profile/Contacts/ContactMethodDetailsPage').default as React.ComponentType,
213210
[SCREENS.SETTINGS.PROFILE.NEW_CONTACT_METHOD]: () => require('../../../pages/settings/Profile/Contacts/NewContactMethodPage').default as React.ComponentType,
214-
[SCREENS.SETTINGS.PREFERENCES.ROOT]: () => require('../../../pages/settings/Preferences/PreferencesPage').default as React.ComponentType,
215211
[SCREENS.SETTINGS.PREFERENCES.PRIORITY_MODE]: () => require('../../../pages/settings/Preferences/PriorityModePage').default as React.ComponentType,
216212
[SCREENS.SETTINGS.PREFERENCES.LANGUAGE]: () => require('../../../pages/settings/Preferences/LanguagePage').default as React.ComponentType,
217213
[SCREENS.SETTINGS.PREFERENCES.THEME]: () => require('../../../pages/settings/Preferences/ThemePage').default as React.ComponentType,
218214
[SCREENS.SETTINGS.CLOSE]: () => require('../../../pages/settings/Security/CloseAccountPage').default as React.ComponentType,
219-
[SCREENS.SETTINGS.SECURITY]: () => require('../../../pages/settings/Security/SecuritySettingsPage').default as React.ComponentType,
220-
[SCREENS.SETTINGS.ABOUT]: () => require('../../../pages/settings/AboutPage/AboutPage').default as React.ComponentType,
221215
[SCREENS.SETTINGS.APP_DOWNLOAD_LINKS]: () => require('../../../pages/settings/AppDownloadLinks').default as React.ComponentType,
222216
[SCREENS.SETTINGS.LOUNGE_ACCESS]: () => require('../../../pages/settings/Profile/LoungeAccessPage').default as React.ComponentType,
223-
[SCREENS.SETTINGS.WALLET.ROOT]: () => require('../../../pages/settings/Wallet/WalletPage').default as React.ComponentType,
224217
[SCREENS.SETTINGS.WALLET.CARDS_DIGITAL_DETAILS_UPDATE_ADDRESS]: () => require('../../../pages/settings/Profile/PersonalDetails/AddressPage').default as React.ComponentType,
225218
[SCREENS.SETTINGS.WALLET.DOMAIN_CARD]: () => require('../../../pages/settings/Wallet/ExpensifyCardPage').default as React.ComponentType,
226219
[SCREENS.SETTINGS.WALLET.REPORT_VIRTUAL_CARD_FRAUD]: () => require('../../../pages/settings/Wallet/ReportVirtualCardFraudPage').default as React.ComponentType,
@@ -238,9 +231,6 @@ const SettingsModalStackNavigator = createModalStackNavigator<SettingsNavigatorP
238231
[SCREENS.SETTINGS.PROFILE.STATUS_CLEAR_AFTER]: () => require('../../../pages/settings/Profile/CustomStatus/StatusClearAfterPage').default as React.ComponentType,
239232
[SCREENS.SETTINGS.PROFILE.STATUS_CLEAR_AFTER_DATE]: () => require('../../../pages/settings/Profile/CustomStatus/SetDatePage').default as React.ComponentType,
240233
[SCREENS.SETTINGS.PROFILE.STATUS_CLEAR_AFTER_TIME]: () => require('../../../pages/settings/Profile/CustomStatus/SetTimePage').default as React.ComponentType,
241-
[SCREENS.WORKSPACE.INITIAL]: () => require('../../../pages/workspace/WorkspaceInitialPage').default as React.ComponentType,
242-
[SCREENS.WORKSPACE.CARD]: () => require('../../../pages/workspace/card/WorkspaceCardPage').default as React.ComponentType,
243-
[SCREENS.WORKSPACE.REIMBURSE]: () => require('../../../pages/workspace/reimburse/WorkspaceReimbursePage').default as React.ComponentType,
244234
[SCREENS.WORKSPACE.RATE_AND_UNIT]: () => require('../../../pages/workspace/reimburse/WorkspaceRateAndUnitPage').default as React.ComponentType,
245235
[SCREENS.WORKSPACE.INVITE]: () => require('../../../pages/workspace/WorkspaceInvitePage').default as React.ComponentType,
246236
[SCREENS.WORKSPACE.INVITE_MESSAGE]: () => require('../../../pages/workspace/WorkspaceInviteMessagePage').default as React.ComponentType,

src/libs/Navigation/AppNavigator/Navigators/BottomTabNavigator.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const Tab = createCustomBottomTabNavigator<BottomTabNavigatorParamList>();
1515

1616
const screenOptions: StackNavigationOptions = {
1717
headerShown: false,
18+
animationEnabled: false,
1819
};
1920

2021
function BottomTabNavigator() {

src/libs/Navigation/AppNavigator/Navigators/FullScreenNavigator.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ function FullScreenNavigator() {
2020

2121
return (
2222
<View style={styles.rootNavigatorContainerStyles(isSmallScreenWidth)}>
23-
<RootStack.Navigator isSmallScreenWidth={isSmallScreenWidth}>
23+
<RootStack.Navigator>
2424
<RootStack.Screen
2525
name={SCREENS.SETTINGS.ROOT}
2626
options={screenOptions.homeScreen}

src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/TopBar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ function TopBar() {
2222
<Search
2323
placeholder={translate('sidebarScreen.buttonSearch')}
2424
onPress={Session.checkIfActionIsAllowed(() => Navigation.navigate(ROUTES.SEARCH))}
25-
containerStyle={styles.flexGrow1}
25+
containerStyle={styles.flexShrink1}
2626
/>
2727
<SignInOrAvatarWithOptionalStatus />
2828
</View>

src/libs/Navigation/AppNavigator/createCustomBottomTabNavigator/index.tsx

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import type {DefaultNavigatorOptions, ParamListBase, StackActionHelpers, StackNa
22
import {createNavigatorFactory, StackRouter, useNavigationBuilder} from '@react-navigation/native';
33
import type {StackNavigationEventMap, StackNavigationOptions} from '@react-navigation/stack';
44
import {StackView} from '@react-navigation/stack';
5-
import PropTypes from 'prop-types';
65
import React from 'react';
76
import {View} from 'react-native';
87
import ScreenWrapper from '@components/ScreenWrapper';
@@ -16,23 +15,6 @@ type CustomNavigatorProps = DefaultNavigatorOptions<ParamListBase, StackNavigati
1615
initialRouteName: string;
1716
};
1817

19-
const propTypes = {
20-
/* Children for the useNavigationBuilder hook */
21-
children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]).isRequired,
22-
23-
/* initialRouteName for this navigator */
24-
initialRouteName: PropTypes.oneOf([PropTypes.string, undefined]),
25-
26-
/* Screen options defined for this navigator */
27-
// eslint-disable-next-line react/forbid-prop-types
28-
screenOptions: PropTypes.object,
29-
};
30-
31-
const defaultProps = {
32-
initialRouteName: undefined,
33-
screenOptions: undefined,
34-
};
35-
3618
function getStateToRender(state: StackNavigationState<ParamListBase>): StackNavigationState<ParamListBase> {
3719
const routesToRender = [state.routes.at(-1)] as NavigationStateRoute[];
3820
// We need to render at least one HOME screen to make sure everything load properly.
@@ -84,8 +66,6 @@ function CustomBottomTabNavigator({initialRouteName, children, screenOptions, ..
8466
);
8567
}
8668

87-
CustomBottomTabNavigator.defaultProps = defaultProps;
88-
CustomBottomTabNavigator.propTypes = propTypes;
8969
CustomBottomTabNavigator.displayName = 'CustomBottomTabNavigator';
9070

9171
export default createNavigatorFactory(CustomBottomTabNavigator);
Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,8 @@
11
import type {DefaultNavigatorOptions, ParamListBase, StackNavigationState, StackRouterOptions} from '@react-navigation/native';
22
import type {StackNavigationEventMap, StackNavigationOptions} from '@react-navigation/stack';
33

4-
type FullScreenNavigatorConfig = {
5-
isSmallScreenWidth: boolean;
6-
};
7-
84
type FullScreenNavigatorRouterOptions = StackRouterOptions;
95

10-
type FullScreenNavigatorProps = DefaultNavigatorOptions<ParamListBase, StackNavigationState<ParamListBase>, StackNavigationOptions, StackNavigationEventMap> & FullScreenNavigatorConfig;
6+
type FullScreenNavigatorProps = DefaultNavigatorOptions<ParamListBase, StackNavigationState<ParamListBase>, StackNavigationOptions, StackNavigationEventMap>;
117

12-
export type {FullScreenNavigatorConfig, FullScreenNavigatorProps, FullScreenNavigatorRouterOptions};
8+
export type {FullScreenNavigatorProps, FullScreenNavigatorRouterOptions};

src/libs/Navigation/Navigation.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ function goBack(fallbackRoute: Route = '', shouldEnforceFallback = false, should
209209
*/
210210
function closeFullScreen() {
211211
const rootState = navigationRef.getRootState();
212-
navigationRef.dispatch({...StackActions.pop(), target: rootState.key});
212+
navigationRef.dispatch({...StackActions.popToTop(), target: rootState.key});
213213
}
214214

215215
/**

src/libs/Navigation/TAB_TO_CENTRAL_PANE_MAPPING.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,17 @@ const TAB_TO_CENTRAL_PANE_MAPPING: Record<BottomTabName, CentralPaneName[]> = {
1515
],
1616
};
1717

18+
const generateCentralPaneToTabMapping = (): Record<CentralPaneName, BottomTabName> => {
19+
const mapping: Record<CentralPaneName, BottomTabName> = {} as Record<CentralPaneName, BottomTabName>;
20+
for (const [tabName, centralPaneNames] of Object.entries(TAB_TO_CENTRAL_PANE_MAPPING)) {
21+
for (const centralPaneName of centralPaneNames) {
22+
mapping[centralPaneName] = tabName as BottomTabName;
23+
}
24+
}
25+
return mapping;
26+
};
27+
28+
const CENTRAL_PANE_TO_TAB_MAPPING: Record<CentralPaneName, BottomTabName> = generateCentralPaneToTabMapping();
29+
30+
export {CENTRAL_PANE_TO_TAB_MAPPING};
1831
export default TAB_TO_CENTRAL_PANE_MAPPING;
Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// import CONST from '@src/CONST';
22
import SCREENS from '@src/SCREENS';
33
import getTopmostCentralPaneRoute from './getTopmostCentralPaneRoute';
4-
import TAB_TO_CENTRAL_PANE_MAPPING from './TAB_TO_CENTRAL_PANE_MAPPING';
4+
import {CENTRAL_PANE_TO_TAB_MAPPING} from './TAB_TO_CENTRAL_PANE_MAPPING';
55
import type {BottomTabName, NavigationPartialRoute, RootStackParamList, State} from './types';
66

77
// Get the route that matches the topmost central pane route in the navigation stack. e.g REPORT -> HOME
@@ -13,16 +13,11 @@ function getMatchingBottomTabRouteForState(state: State<RootStackParamList>): Na
1313
return defaultRoute;
1414
}
1515

16-
for (const [tabName, centralPaneNames] of Object.entries(TAB_TO_CENTRAL_PANE_MAPPING)) {
17-
if (centralPaneNames.includes(topmostCentralPaneRoute.name)) {
18-
if (tabName === SCREENS.WORKSPACE.INITIAL) {
19-
return {name: tabName, params: topmostCentralPaneRoute.params};
20-
}
21-
return {name: tabName as BottomTabName};
22-
}
16+
const tabName = CENTRAL_PANE_TO_TAB_MAPPING[topmostCentralPaneRoute.name];
17+
if (tabName === SCREENS.WORKSPACE.INITIAL) {
18+
return {name: tabName, params: topmostCentralPaneRoute.params};
2319
}
24-
25-
return defaultRoute;
20+
return {name: tabName as BottomTabName} || defaultRoute;
2621
}
2722

2823
export default getMatchingBottomTabRouteForState;

src/libs/Navigation/getTopmostCentralPaneName.ts renamed to src/libs/Navigation/getTopmostSettingsCentralPaneName.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import type {NavigationState, PartialState} from '@react-navigation/native';
22
import SCREENS from '@src/SCREENS';
33

44
// Get the name of topmost report in the navigation stack.
5-
function getTopmostCentralPaneName(state: NavigationState | PartialState<NavigationState>): string | undefined {
5+
function getTopmostSettingsCentralPaneName(state: NavigationState | PartialState<NavigationState>): string | undefined {
66
if (!state) {
77
return;
88
}
@@ -16,4 +16,4 @@ function getTopmostCentralPaneName(state: NavigationState | PartialState<Navigat
1616
return topmostCentralPane.state?.routes.at(-1)?.name;
1717
}
1818

19-
export default getTopmostCentralPaneName;
19+
export default getTopmostSettingsCentralPaneName;

src/libs/Navigation/linkTo.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,12 @@ function getActionForBottomTabNavigator(action: StackNavigationAction, state: Na
7373
const params = action.payload.params as ActionPayloadParams;
7474
const screen = params.screen;
7575

76+
// Check if the current bottom tab is the same as the one we want to navigate to. If it is, we don't need to do anything.
77+
const bottomTabCurrentTab = getTopmostBottomTabRoute(state);
78+
if (bottomTabCurrentTab?.name === screen) {
79+
return;
80+
}
81+
7682
return {
7783
type: CONST.NAVIGATION.ACTION_TYPE.PUSH,
7884
payload: {
@@ -149,7 +155,7 @@ export default function linkTo(navigation: NavigationContainerRef<RootStackParam
149155
const actionForBottomTabNavigator = getActionForBottomTabNavigator(action, rootState);
150156

151157
if (!actionForBottomTabNavigator) {
152-
throw new Error('Could not get action for bottom tab navigator');
158+
return;
153159
}
154160

155161
root.dispatch(actionForBottomTabNavigator);

src/pages/home/sidebar/AllSettingsScreen.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ function AllSettingsScreen() {
7575
<ScreenWrapper
7676
testID={AllSettingsScreen.displayName}
7777
includePaddingTop={false}
78-
offlineIndicatorStyle={styles.offlineIndicatorBottomTabBar}
78+
includeSafeAreaPaddingBottom={false}
79+
shouldDisableSafeAreaPaddingBottom
7980
>
8081
<Breadcrumbs
8182
breadcrumbs={[

src/pages/home/sidebar/SidebarScreen/BaseSidebarScreen.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ function BaseSidebarScreen(props) {
3131
style={[styles.sidebar, Browser.isMobile() ? styles.userSelectNone : {}]}
3232
testID={BaseSidebarScreen.displayName}
3333
includePaddingTop={false}
34-
offlineIndicatorStyle={styles.offlineIndicatorBottomTabBar}
34+
shouldDisableSafeAreaPaddingBottom
3535
>
3636
{({insets}) => (
3737
<View style={[styles.flex1]}>

0 commit comments

Comments
 (0)