web backbutton ui fix

alpha
Jan Umbach 2023-03-10 13:33:04 +01:00
parent 65c3bff706
commit 74a5ba5106
3 changed files with 55 additions and 16 deletions

View File

@ -9,7 +9,7 @@ import {appVarActions} from '@caj/configs/appVarReducer';
import imgSrc from '@caj/img/maimg.png'; import imgSrc from '@caj/img/maimg.png';
import {placeholder} from '@caj/lang/default'; import {placeholder} from '@caj/lang/default';
import {getBackgroundColor} from '@caj/configs/colors'; import {defaultHeaderStyle, themeNB, themeSelector} from '@caj/configs/colors';
import {saveVarChanges} from '@caj/helper/appData'; import {saveVarChanges} from '@caj/helper/appData';
import {Box, Input, VStack, Center, Avatar, Text, Button} from 'native-base'; import {Box, Input, VStack, Center, Avatar, Text, Button} from 'native-base';
@ -20,11 +20,14 @@ import {
LinkingOptions, LinkingOptions,
NavigationContainer, NavigationContainer,
NavigatorScreenParams, NavigatorScreenParams,
ParamListBase,
RouteProp, RouteProp,
useNavigation, useNavigation,
useRoute,
} from '@react-navigation/native'; } from '@react-navigation/native';
import { import {
createNativeStackNavigator, createNativeStackNavigator,
NativeStackNavigationOptions,
NativeStackNavigationProp, NativeStackNavigationProp,
} from '@react-navigation/native-stack'; } from '@react-navigation/native-stack';
import {createBottomTabNavigator} from '@react-navigation/bottom-tabs'; import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
@ -48,6 +51,8 @@ import {
} from './components/NotLoggedIn'; } from './components/NotLoggedIn';
import ChatMainScreen from './components/chat/screen/main'; import ChatMainScreen from './components/chat/screen/main';
import ChatScreenStack from './components/chat/screen/main'; import ChatScreenStack from './components/chat/screen/main';
import MaterialIcon from 'react-native-vector-icons/MaterialIcons';
import {ThemeMode} from './configs/appVar';
const styles = StyleSheet.create({ const styles = StyleSheet.create({
container: { container: {
@ -70,7 +75,10 @@ export type RootScreenNavigationProp =
export default function Navigation() { export default function Navigation() {
return ( return (
<Stack.Navigator screenOptions={{headerShown: false}}> <Stack.Navigator
screenOptions={{
headerShown: false,
}}>
<Stack.Screen name="Home" component={HomeStack} /> <Stack.Screen name="Home" component={HomeStack} />
<Stack.Screen <Stack.Screen
name="Register" name="Register"
@ -159,3 +167,29 @@ function HomeStack() {
} }
const Tab = createBottomTabNavigator<HomeStackNavigatorParamList>(); const Tab = createBottomTabNavigator<HomeStackNavigatorParamList>();
export function WebBackButtonOptions<L extends ParamListBase>(
nav: NativeStackNavigationProp<L>,
_theme: ThemeMode,
place?: 'registration',
): NativeStackNavigationOptions {
if (Platform.OS === 'web') {
const theme = themeNB(_theme);
return {
headerLeft: () => (
<MaterialIcon
style={{marginLeft: 16}}
name="arrow-back"
onPress={() => {
nav.pop();
}}
size={32}
color={defaultHeaderStyle(_theme, place).headerTintColor}
/>
),
};
}
return {};
}

View File

@ -12,7 +12,7 @@ import {
userNameOptions, userNameOptions,
XToken, XToken,
} from '@caj/configs/types'; } from '@caj/configs/types';
import {RootScreenNavigationProp} from '@caj/Navigation'; import {RootScreenNavigationProp, WebBackButtonOptions} from '@caj/Navigation';
import {RootState, store} from '@caj/redux/store'; import {RootState, store} from '@caj/redux/store';
import {useNavigation} from '@react-navigation/native'; import {useNavigation} from '@react-navigation/native';
import { import {
@ -135,15 +135,20 @@ function RegisterScreen() {
(state: RootState) => state.appVariables.preferences.theme, (state: RootState) => state.appVariables.preferences.theme,
); );
const navigation = useNavigation<LoginScreenNavigationProp>();
return ( return (
<LoginStack.Navigator> <LoginStack.Navigator
screenOptions={{
...WebBackButtonOptions(navigation, theme, 'registration'),
headerShown: true,
...defaultHeaderStyle(theme, 'registration'),
}}>
<LoginStack.Screen <LoginStack.Screen
name="RegStepOne" name="RegStepOne"
options={{ options={{
animation: 'slide_from_left', animation: 'slide_from_left',
title: lang.account.registration.registration, title: lang.account.registration.registration,
headerShown: true,
...defaultHeaderStyle(theme, 'registration'),
}} }}
component={StepOne} component={StepOne}
/> />
@ -152,8 +157,6 @@ function RegisterScreen() {
options={{ options={{
animation: 'slide_from_right', animation: 'slide_from_right',
title: lang.account.registration.registration, title: lang.account.registration.registration,
headerShown: true,
...defaultHeaderStyle(theme, 'registration'),
}} }}
component={StepTwo} component={StepTwo}
/> />
@ -162,8 +165,6 @@ function RegisterScreen() {
options={{ options={{
animation: 'slide_from_right', animation: 'slide_from_right',
title: lang.account.registration.registration, title: lang.account.registration.registration,
headerShown: true,
...defaultHeaderStyle(theme, 'registration'),
}} }}
component={StepFinal} component={StepFinal}
/> />
@ -172,8 +173,6 @@ function RegisterScreen() {
options={{ options={{
animation: 'slide_from_right', animation: 'slide_from_right',
title: lang.account.login.title, title: lang.account.login.title,
headerShown: true,
...defaultHeaderStyle(theme, 'registration'),
}} }}
component={Login} component={Login}
/> />

View File

@ -4,9 +4,13 @@ import ChatScreenStack, {
} from '@caj/components/chat/screen/main'; } from '@caj/components/chat/screen/main';
import NotLoggedIn from '@caj/components/NotLoggedIn'; import NotLoggedIn from '@caj/components/NotLoggedIn';
import {defaultHeaderStyle} from '@caj/configs/colors'; import {defaultHeaderStyle} from '@caj/configs/colors';
import {RootStackNavigatorParamList} from '@caj/Navigation'; import {
HomeScreenNavigationProp,
RootStackNavigatorParamList,
WebBackButtonOptions,
} from '@caj/Navigation';
import {RootState} from '@caj/redux/store'; import {RootState} from '@caj/redux/store';
import {NavigatorScreenParams} from '@react-navigation/native'; import {NavigatorScreenParams, useNavigation} from '@react-navigation/native';
import { import {
createNativeStackNavigator, createNativeStackNavigator,
NativeStackNavigationProp, NativeStackNavigationProp,
@ -32,8 +36,10 @@ function ChatTab() {
(state: RootState) => state.appVariables.preferences.theme, (state: RootState) => state.appVariables.preferences.theme,
); );
const navigation = useNavigation<ChatScreenNavigationProp>();
return ( return (
<ChatStack.Navigator> <ChatStack.Navigator initialRouteName="Overview">
<ChatStack.Screen <ChatStack.Screen
name="Overview" name="Overview"
options={{ options={{
@ -46,7 +52,7 @@ function ChatTab() {
<ChatStack.Screen <ChatStack.Screen
name="Chat" name="Chat"
component={ChatScreenStack} component={ChatScreenStack}
options={ChatScreenOptions()} options={{...ChatScreenOptions(), ...WebBackButtonOptions(navigation, theme)}}
/> />
</ChatStack.Navigator> </ChatStack.Navigator>
); );