From 20a2edbbda383d1a285087eedc0fc93ed991bd96 Mon Sep 17 00:00:00 2001 From: mudabbir-ahmad Date: Thu, 9 Apr 2026 18:18:18 +0100 Subject: [PATCH] fixed issues with merge + Global logic --- App.js | 36 +- assets/icons/events-icon.png | Bin 0 -> 34931 bytes src/components/UI/Button.js | 1 + src/components/UI/CodeJoinRow.js | 75 ++++ src/components/layout/BottomNavbar.js | 353 ++++++------------ src/components/layout/Screen.js | 50 +-- src/components/layout/TopNavbar.js | 3 +- src/components/screens/GameSelectionScreen.js | 29 +- src/components/screens/LoginScreen.js | 7 +- src/components/screens/MapScreen.js | 182 +++++---- src/components/screens/RegisterScreen.js | 7 +- .../screens/global/GlobalCacheViewScreen.js | 15 +- .../screens/global/GlobalEventsScreen.js | 31 +- .../screens/global/GlobalLeaderboardScreen.js | 29 +- .../screens/global/GlobalMapScreen.js | 25 +- src/hooks/SessionStore.js | 22 +- src/hooks/useGameHook.js | 6 + src/utils/gameConstants.js | 7 + 18 files changed, 459 insertions(+), 419 deletions(-) create mode 100644 assets/icons/events-icon.png create mode 100644 src/components/UI/CodeJoinRow.js create mode 100644 src/utils/gameConstants.js diff --git a/App.js b/App.js index fb2944e..1d85452 100644 --- a/App.js +++ b/App.js @@ -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"; @@ -12,12 +12,11 @@ import GameSettingsScreen from "./src/components/screens/GameSettingsScreen"; import DepartmentSettingsScreen from "./src/components/screens/DepartmentSettingsScreen"; import PlayersScreen from "./src/components/screens/PlayersScreen"; import ExpandedMapScreen from "./src/components/screens/ExpandedMapScreen"; -import GameSelectionScreen from "./src/components/screens/GameSelectionScreen"; import GlobalEventsScreen from "./src/components/screens/global/GlobalEventsScreen"; import GlobalMapScreen from "./src/components/screens/global/GlobalMapScreen"; import GlobalCacheViewScreen from "./src/components/screens/global/GlobalCacheViewScreen"; import GlobalLeaderboardScreen from "./src/components/screens/global/GlobalLeaderboardScreen"; -import { loadSession } from "./src/hooks/SessionStore"; +import {loadSession} from "./src/hooks/SessionStore"; const RootStack = createNativeStackNavigator(); const AuthStackNav = createNativeStackNavigator(); @@ -26,7 +25,7 @@ const AdminStackNav = createNativeStackNavigator(); const screenOptions = { headerShown: false, - contentStyle: { backgroundColor: "#ffffff" }, + contentStyle: { backgroundColor: "#1e1e2e" }, }; const AuthStack = () => ( @@ -40,10 +39,6 @@ const AuthStack = () => ( const GameStack = () => ( - ( const AdminStack = () => ( - + ( component={GlobalLeaderboardScreen} /> - - - - - - - - - ); export const App = () => { diff --git a/assets/icons/events-icon.png b/assets/icons/events-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c0f1d795fc43ef62745b563efca083e4002750a8 GIT binary patch literal 34931 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 Nfv2mV%Q~loCIC*}b6o%c literal 0 HcmV?d00001 diff --git a/src/components/UI/Button.js b/src/components/UI/Button.js index efa099d..111ceb8 100644 --- a/src/components/UI/Button.js +++ b/src/components/UI/Button.js @@ -36,6 +36,7 @@ const styles = StyleSheet.create({ flex: 1, flexDirection: "row", gap: 5, + marginHorizontal: 4, }, label: { fontSize: 16, diff --git a/src/components/UI/CodeJoinRow.js b/src/components/UI/CodeJoinRow.js new file mode 100644 index 0000000..1f94daf --- /dev/null +++ b/src/components/UI/CodeJoinRow.js @@ -0,0 +1,75 @@ +import {StyleSheet, TextInput, View} from 'react-native'; +import {Button} from './Button'; + +const CodeJoinRow = ({ + value, + onChange, + placeholder, + buttonLabel = 'Join', + onSubmit, + disabled = false, + style, +}) => { + // Initialisation ------------- + // State ---------------------- + // Handlers ------------------- + // View ----------------------- + + return ( + + onChange(text.toUpperCase())} + autoCapitalize="characters" + editable={!disabled} + /> +