mirror of
https://github.com/mudabbir-ahmad/MAD-Treasure-Hunt.git
synced 2026-10-08 03:00:20 +00:00
added games screen
games screen added to bottom navbar. Now user can go to games screen and select private or public game type
This commit is contained in:
1 parent
93fb30a7bb
commit
4d5eac38b7
5 files changed
+463
-162
No files matched your search
@@ -1,8 +1,8 @@
|
||||
import {useEffect, useState} from "react";
|
||||
import {ActivityIndicator, View} from "react-native";
|
||||
import {NavigationContainer} from "@react-navigation/native";
|
||||
import {createNativeStackNavigator} from "@react-navigation/native-stack";
|
||||
import {SafeAreaProvider} from "react-native-safe-area-context";
|
||||
import { useEffect, useState } from "react";
|
||||
import { ActivityIndicator, View } from "react-native";
|
||||
import { NavigationContainer } from "@react-navigation/native";
|
||||
import { createNativeStackNavigator } from "@react-navigation/native-stack";
|
||||
import { SafeAreaProvider } from "react-native-safe-area-context";
|
||||
import LoginScreen from "./src/components/screens/LoginScreen";
|
||||
import RegisterScreen from "./src/components/screens/RegisterScreen";
|
||||
import TeamScreen from "./src/components/screens/TeamScreen";
|
||||
@@ -11,7 +11,8 @@ import LeaderboardScreen from "./src/components/screens/LeaderboardScreen";
|
||||
import GameSettingsScreen from "./src/components/screens/GameSettingsScreen";
|
||||
import PlayersScreen from "./src/components/screens/PlayersScreen";
|
||||
import ExpandedMapScreen from "./src/components/screens/ExpandedMapScreen";
|
||||
import {loadSession} from "./src/hooks/SessionStore";
|
||||
import GameSelectionScreen from "./src/components/screens/GameSelectionScreen";
|
||||
import { loadSession } from "./src/hooks/SessionStore";
|
||||
|
||||
const RootStack = createNativeStackNavigator();
|
||||
const AuthStackNav = createNativeStackNavigator();
|
||||
@@ -19,71 +20,106 @@ const GameStackNav = createNativeStackNavigator();
|
||||
const AdminStackNav = createNativeStackNavigator();
|
||||
|
||||
const screenOptions = {
|
||||
headerShown: false,
|
||||
contentStyle: {backgroundColor: '#ffffff'},
|
||||
headerShown: false,
|
||||
contentStyle: { backgroundColor: "#ffffff" },
|
||||
};
|
||||
|
||||
const AuthStack = () => (
|
||||
<AuthStackNav.Navigator screenOptions={{...screenOptions, keyboardHandlingEnabled: false}}>
|
||||
<AuthStackNav.Screen name="LoginScreen" component={LoginScreen}/>
|
||||
<AuthStackNav.Screen name="RegisterScreen" component={RegisterScreen}/>
|
||||
</AuthStackNav.Navigator>
|
||||
<AuthStackNav.Navigator
|
||||
screenOptions={{ ...screenOptions, keyboardHandlingEnabled: false }}
|
||||
>
|
||||
<AuthStackNav.Screen name="LoginScreen" component={LoginScreen} />
|
||||
<AuthStackNav.Screen name="RegisterScreen" component={RegisterScreen} />
|
||||
</AuthStackNav.Navigator>
|
||||
);
|
||||
|
||||
const GameStack = () => (
|
||||
<GameStackNav.Navigator screenOptions={screenOptions}>
|
||||
<GameStackNav.Screen name="MapScreen" component={MapScreen}/>
|
||||
<GameStackNav.Screen name="TeamScreen" component={TeamScreen}/>
|
||||
<GameStackNav.Screen name="LeaderboardScreen" component={LeaderboardScreen}/>
|
||||
<GameStackNav.Screen name="PlayersScreen" component={PlayersScreen}/>
|
||||
<GameStackNav.Screen name="ExpandedMapScreen" component={ExpandedMapScreen}/>
|
||||
</GameStackNav.Navigator>
|
||||
<GameStackNav.Navigator screenOptions={screenOptions}>
|
||||
<GameStackNav.Screen
|
||||
name="GameSelectionScreen"
|
||||
component={GameSelectionScreen}
|
||||
/>
|
||||
<GameStackNav.Screen name="MapScreen" component={MapScreen} />
|
||||
<GameStackNav.Screen name="TeamScreen" component={TeamScreen} />
|
||||
<GameStackNav.Screen
|
||||
name="LeaderboardScreen"
|
||||
component={LeaderboardScreen}
|
||||
/>
|
||||
<GameStackNav.Screen name="PlayersScreen" component={PlayersScreen} />
|
||||
<GameStackNav.Screen
|
||||
name="ExpandedMapScreen"
|
||||
component={ExpandedMapScreen}
|
||||
/>
|
||||
</GameStackNav.Navigator>
|
||||
);
|
||||
|
||||
const AdminStack = () => (
|
||||
<AdminStackNav.Navigator screenOptions={screenOptions}>
|
||||
<AdminStackNav.Screen name="GameSettingsScreen" component={GameSettingsScreen}/>
|
||||
<AdminStackNav.Screen name="MapScreen" component={MapScreen}/>
|
||||
<AdminStackNav.Screen name="LeaderboardScreen" component={LeaderboardScreen}/>
|
||||
<AdminStackNav.Screen name="PlayersScreen" component={PlayersScreen}/>
|
||||
<AdminStackNav.Screen name="ExpandedMapScreen" component={ExpandedMapScreen}/>
|
||||
<AdminStackNav.Screen name="TeamScreen" component={TeamScreen}/>
|
||||
</AdminStackNav.Navigator>
|
||||
<AdminStackNav.Navigator screenOptions={screenOptions}>
|
||||
<AdminStackNav.Screen
|
||||
name="GameSelectionScreen"
|
||||
component={GameSelectionScreen}
|
||||
/>
|
||||
<AdminStackNav.Screen
|
||||
name="GameSettingsScreen"
|
||||
component={GameSettingsScreen}
|
||||
/>
|
||||
<AdminStackNav.Screen name="MapScreen" component={MapScreen} />
|
||||
<AdminStackNav.Screen
|
||||
name="LeaderboardScreen"
|
||||
component={LeaderboardScreen}
|
||||
/>
|
||||
<AdminStackNav.Screen name="PlayersScreen" component={PlayersScreen} />
|
||||
<AdminStackNav.Screen
|
||||
name="ExpandedMapScreen"
|
||||
component={ExpandedMapScreen}
|
||||
/>
|
||||
<AdminStackNav.Screen name="TeamScreen" component={TeamScreen} />
|
||||
</AdminStackNav.Navigator>
|
||||
);
|
||||
|
||||
export const App = () => {
|
||||
// Load persisted session from AsyncStorage before choosing initial route
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [initialRoute, setInitialRoute] = useState('Auth');
|
||||
// Load persisted session from AsyncStorage before choosing initial route
|
||||
const [loading, setLoading] = useState(true);
|
||||
const [initialRoute, setInitialRoute] = useState("Auth");
|
||||
|
||||
useEffect(() => {
|
||||
loadSession().then((session) => {
|
||||
if (session.currentUid) {
|
||||
setInitialRoute(session.isAcceptedAdmin ? 'Admin' : 'Game');
|
||||
}
|
||||
setLoading(false);
|
||||
});
|
||||
}, []);
|
||||
|
||||
if (loading) {
|
||||
return (
|
||||
<View style={{flex: 1, justifyContent: 'center', alignItems: 'center', backgroundColor: '#fff'}}>
|
||||
<ActivityIndicator size="large" />
|
||||
</View>
|
||||
);
|
||||
}
|
||||
useEffect(() => {
|
||||
loadSession().then((session) => {
|
||||
if (session.currentUid) {
|
||||
setInitialRoute(session.isAcceptedAdmin ? "Admin" : "Game");
|
||||
}
|
||||
setLoading(false);
|
||||
});
|
||||
}, []);
|
||||
|
||||
if (loading) {
|
||||
return (
|
||||
<SafeAreaProvider>
|
||||
<NavigationContainer>
|
||||
<RootStack.Navigator initialRouteName={initialRoute} screenOptions={screenOptions}>
|
||||
<RootStack.Screen name="Auth" component={AuthStack}/>
|
||||
<RootStack.Screen name="Game" component={GameStack}/>
|
||||
<RootStack.Screen name="Admin" component={AdminStack}/>
|
||||
</RootStack.Navigator>
|
||||
</NavigationContainer>
|
||||
</SafeAreaProvider>
|
||||
<View
|
||||
style={{
|
||||
flex: 1,
|
||||
justifyContent: "center",
|
||||
alignItems: "center",
|
||||
backgroundColor: "#fff",
|
||||
}}
|
||||
>
|
||||
<ActivityIndicator size="large" />
|
||||
</View>
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<SafeAreaProvider>
|
||||
<NavigationContainer>
|
||||
<RootStack.Navigator
|
||||
initialRouteName={initialRoute}
|
||||
screenOptions={screenOptions}
|
||||
>
|
||||
<RootStack.Screen name="Auth" component={AuthStack} />
|
||||
<RootStack.Screen name="Game" component={GameStack} />
|
||||
<RootStack.Screen name="Admin" component={AdminStack} />
|
||||
</RootStack.Navigator>
|
||||
</NavigationContainer>
|
||||
</SafeAreaProvider>
|
||||
);
|
||||
};
|
||||
|
||||
export default App;
|
||||
Reference in new issue
Block a user