adujstments

This commit is contained in:
Milan Paunovic
2025-02-16 01:07:12 +01:00
parent d9ee1cd921
commit c184eb3293
5 changed files with 477 additions and 216 deletions

View File

@ -1,15 +1,18 @@
import React, {useCallback} from "react";
import React, {memo, useCallback, useMemo} from "react";
import {Drawer} from "expo-router/drawer";
import {DrawerContentScrollView, DrawerContentComponentProps, DrawerNavigationOptions} from "@react-navigation/drawer";
import {
DrawerContentComponentProps,
DrawerContentScrollView,
DrawerNavigationOptions,
DrawerNavigationProp
} from "@react-navigation/drawer";
import {ImageBackground, Pressable, StyleSheet} from "react-native";
import {Button, ButtonSize, Text, View} from "react-native-ui-lib";
import * as Device from "expo-device";
import {DeviceType} from "expo-device";
import {useSetAtom} from "jotai";
import {Ionicons} from "@expo/vector-icons";
import {DeviceType} from "expo-device";
import {DrawerNavigationProp} from "@react-navigation/drawer";
import {ParamListBase, Theme} from '@react-navigation/native';
import {RouteProp} from "@react-navigation/native";
import {ParamListBase, RouteProp, Theme} from '@react-navigation/native';
import {useSignOut} from "@/hooks/firebase/useSignOut";
import {CalendarHeader} from "@/components/pages/calendar/CalendarHeader";
@ -205,7 +208,7 @@ interface HeaderRightProps {
navigation: DrawerScreenNavigationProp;
}
const HeaderRight: React.FC<HeaderRightProps> = ({route, navigation}) => {
const HeaderRight: React.FC<HeaderRightProps> = memo(({route, navigation}) => {
const showViewSwitch = ["calendar", "todos", "index"].includes(route.name);
const isCalendarPage = ["calendar", "index"].includes(route.name);
@ -222,43 +225,7 @@ const HeaderRight: React.FC<HeaderRightProps> = ({route, navigation}) => {
)}
<ViewSwitch navigation={navigation}/>
</View>
);
};
const screenOptions: (props: {
route: RouteProp<ParamListBase, string>;
navigation: DrawerNavigationProp<ParamListBase, string>;
theme: Theme;
}) => DrawerNavigationOptions = ({route, navigation}) => ({
lazy: true,
headerShown: true,
headerTitleAlign: "left",
headerTitle: ({children}) => {
const isCalendarRoute = ["calendar", "index"].includes(route.name);
if (isCalendarRoute) return null;
return (
<View flexG centerV paddingL-10>
<Text style={styles.headerTitle}>
{children}
</Text>
</View>
);
},
headerLeft: () => (
<Pressable
onPress={() => navigation.toggleDrawer()}
hitSlop={{top: 10, bottom: 10, left: 10, right: 10}}
style={({pressed}) => [styles.drawerTrigger, {opacity: pressed ? 0.4 : 1}]}
>
<DrawerIcon/>
</Pressable>
),
headerRight: () => <HeaderRight
route={route as RouteProp<DrawerParamList>}
navigation={navigation as DrawerNavigationProp<DrawerParamList>}
/>,
drawerStyle: styles.drawer,
)
});
interface DrawerScreen {
@ -280,6 +247,45 @@ const DRAWER_SCREENS: DrawerScreen[] = [
];
const TabLayout: React.FC = () => {
const screenOptions = useMemo(() => {
return ({route, navigation}: {
route: RouteProp<ParamListBase, string>;
navigation: DrawerNavigationProp<ParamListBase, string>;
theme: Theme;
}): DrawerNavigationOptions => ({
lazy: true,
headerShown: true,
headerTitleAlign: "left",
headerTitle: ({children}) => {
const isCalendarRoute = ["calendar", "index"].includes(route.name);
if (isCalendarRoute) return null;
return (
<View flexG centerV paddingL-10>
<Text style={styles.headerTitle}>
{children}
</Text>
</View>
);
},
headerLeft: () => (
<Pressable
onPress={() => navigation.toggleDrawer()}
hitSlop={{top: 10, bottom: 10, left: 10, right: 10}}
style={({pressed}) => [styles.drawerTrigger, {opacity: pressed ? 0.4 : 1}]}
>
<DrawerIcon/>
</Pressable>
),
headerRight: () => <HeaderRight
route={route as RouteProp<DrawerParamList>}
navigation={navigation as DrawerNavigationProp<DrawerParamList>}
/>,
drawerStyle: styles.drawer,
});
}, []);
return (
<Drawer
initialRouteName="index"

View File

@ -70,9 +70,9 @@ if (Platform.OS === 'ios') {
}
if (__DEV__) {
functions().useEmulator("localhost", 5001);
firestore().useEmulator("localhost", 5471);
auth().useEmulator("http://localhost:9099");
// functions().useEmulator("localhost", 5001);
// firestore().useEmulator("localhost", 5471);
// auth().useEmulator("http://localhost:9099");
}
type TextStyleBase =