From 5549cbbe104a212b05868ef5edf2dd312d400dc3 Mon Sep 17 00:00:00 2001 From: gibbyb Date: Tue, 15 Oct 2024 15:53:05 -0500 Subject: [PATCH] Init commit. Rewrite of old project. Not done --- app.json | 42 ++- app/(tabs)/_layout.tsx | 59 ++-- app/(tabs)/explore.tsx | 102 ------- app/(tabs)/index.tsx | 70 ----- app/(tabs)/messages.tsx | 0 app/(tabs)/settings.tsx | 0 app/+html.tsx | 39 --- app/+not-found.tsx | 31 ++- app/_layout.tsx | 38 +-- assets/images/adaptive-icon.png | Bin 17547 -> 4202669 bytes assets/images/default-profile.png | Bin 0 -> 30925 bytes assets/images/favicon.png | Bin 1466 -> 8911 bytes assets/images/icon.png | Bin 22380 -> 4202669 bytes assets/images/partial-react-logo.png | Bin 5075 -> 0 bytes assets/images/react-logo.png | Bin 6341 -> 0 bytes assets/images/react-logo@2x.png | Bin 14225 -> 0 bytes assets/images/react-logo@3x.png | Bin 21252 -> 0 bytes assets/images/splash.png | Bin 47346 -> 2674033 bytes components/HelloWave.tsx | 37 --- components/ThemedView.tsx | 14 - components/auth/SignInScreen.tsx | 153 +++++++++++ components/{ => default}/Collapsible.tsx | 0 components/{ => default}/ExternalLink.tsx | 0 .../{ => default}/ParallaxScrollView.tsx | 0 .../__tests__/ThemedText-test.tsx | 3 +- .../__snapshots__/ThemedText-test.tsx.snap | 0 components/navigation/TabBarIcon.tsx | 1 - components/services/SecureStore.tsx | 95 +++++++ .../notifications/PushNotificationManager.tsx | 107 ++++++++ .../{ThemedText.tsx => theme/Theme.tsx} | 11 +- components/theme/buttons/DefaultButton.tsx | 55 ++++ components/theme/buttons/TextButton.tsx | 37 +++ constants/Types.ts | 131 +++++++++ hooks/useColorScheme.web.ts | 2 +- hooks/useThemeColor.ts | 2 +- package.json | 8 +- pnpm-lock.yaml | 254 ++++++++++++++++++ scripts/reset-project.js | 73 ----- 38 files changed, 957 insertions(+), 407 deletions(-) delete mode 100644 app/(tabs)/explore.tsx create mode 100644 app/(tabs)/messages.tsx create mode 100644 app/(tabs)/settings.tsx delete mode 100644 app/+html.tsx create mode 100644 assets/images/default-profile.png delete mode 100644 assets/images/partial-react-logo.png delete mode 100644 assets/images/react-logo.png delete mode 100644 assets/images/react-logo@2x.png delete mode 100644 assets/images/react-logo@3x.png delete mode 100644 components/HelloWave.tsx delete mode 100644 components/ThemedView.tsx create mode 100644 components/auth/SignInScreen.tsx rename components/{ => default}/Collapsible.tsx (100%) rename components/{ => default}/ExternalLink.tsx (100%) rename components/{ => default}/ParallaxScrollView.tsx (100%) rename components/{ => default}/__tests__/ThemedText-test.tsx (82%) rename components/{ => default}/__tests__/__snapshots__/ThemedText-test.tsx.snap (100%) create mode 100644 components/services/SecureStore.tsx create mode 100644 components/services/notifications/PushNotificationManager.tsx rename components/{ThemedText.tsx => theme/Theme.tsx} (75%) create mode 100644 components/theme/buttons/DefaultButton.tsx create mode 100644 components/theme/buttons/TextButton.tsx create mode 100644 constants/Types.ts delete mode 100755 scripts/reset-project.js diff --git a/app.json b/app.json index 7ebbb86..398afa2 100644 --- a/app.json +++ b/app.json @@ -13,13 +13,25 @@ "backgroundColor": "#ffffff" }, "ios": { - "supportsTablet": true + "supportsTablet": true, + "usesAppleSignIn": true, + "config": { + "usesNonExemptEncryption": false + }, + "infoPList": { + "NSLocationWhenInUseUsageDescription": "This app uses your location in order to allow you to share your location in chat.", + "NSCameraUsageDescription": "This app uses your camera to take photos & send them in the chat." + } }, "android": { "adaptiveIcon": { "foregroundImage": "./assets/images/adaptive-icon.png", "backgroundColor": "#ffffff" - } + }, + "permissions": [ + "android.permission.ACCESS_COARSE_LOCATION", + "android.permission.ACCESS_FINE_LOCATION" + ] }, "web": { "bundler": "metro", @@ -27,10 +39,32 @@ "favicon": "./assets/images/favicon.png" }, "plugins": [ - "expo-router" + "expo-router", + "expo-apple-authentication", + [ + "expo-secure-store", + { + "faceIDPermission": "Allow $(PRODUCT_NAME) to access your Face ID biometric data." + } + ], + [ + "expo-location", + { + "locationAlwaysAndWhenInUsePermission": "Allow $(PRODUCT_NAME) to use your location." + } + ] ], "experiments": { "typedRoutes": true - } + }, + "extra": { + "router": { + "origin": false + }, + "eas": { + "projectId": "c7056557-31c8-4f5c-a3e5-802df6a3bf7d" + } + }, + "owner": "gibbyb" } } diff --git a/app/(tabs)/_layout.tsx b/app/(tabs)/_layout.tsx index 22a49b6..6a1f594 100644 --- a/app/(tabs)/_layout.tsx +++ b/app/(tabs)/_layout.tsx @@ -1,37 +1,60 @@ -import { Tabs } from 'expo-router'; -import React from 'react'; +import { Tabs } from "expo-router"; +import { TabBarIcon } from "@/components/navigation/TabBarIcon"; +import { Colors } from "@/constants/Colors"; +import { useColorScheme } from "@/hooks/useColorScheme"; -import { TabBarIcon } from '@/components/navigation/TabBarIcon'; -import { Colors } from '@/constants/Colors'; -import { useColorScheme } from '@/hooks/useColorScheme'; - -export default function TabLayout() { - const colorScheme = useColorScheme(); +const TabLayout = () => { + const scheme = useColorScheme() ?? 'dark'; return ( + tabBarActiveTintColor: Colors[scheme].tint, + //headerShown: false + headerStyle: { + backgroundColor: Colors[scheme].background, + }, + headerShadowVisible: false, + headerTintColor: Colors[scheme].tint, + tabBarStyle: { + backgroundColor: Colors[scheme].background, + borderTopColor: Colors[scheme].tint, + borderTopWidth: 1, + }, + }} + > + ( - + ), }} /> - ( - + ), }} /> + + ( + + ), + }} + /> + ); -} +}; +export default TabLayout; diff --git a/app/(tabs)/explore.tsx b/app/(tabs)/explore.tsx deleted file mode 100644 index e480218..0000000 --- a/app/(tabs)/explore.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import Ionicons from '@expo/vector-icons/Ionicons'; -import { StyleSheet, Image, Platform } from 'react-native'; - -import { Collapsible } from '@/components/Collapsible'; -import { ExternalLink } from '@/components/ExternalLink'; -import ParallaxScrollView from '@/components/ParallaxScrollView'; -import { ThemedText } from '@/components/ThemedText'; -import { ThemedView } from '@/components/ThemedView'; - -export default function TabTwoScreen() { - return ( - }> - - Explore - - This app includes example code to help you get started. - - - This app has two screens:{' '} - app/(tabs)/index.tsx and{' '} - app/(tabs)/explore.tsx - - - The layout file in app/(tabs)/_layout.tsx{' '} - sets up the tab navigator. - - - Learn more - - - - - You can open this project on Android, iOS, and the web. To open the web version, press{' '} - w in the terminal running this project. - - - - - For static images, you can use the @2x and{' '} - @3x suffixes to provide files for - different screen densities - - - - Learn more - - - - - Open app/_layout.tsx to see how to load{' '} - - custom fonts such as this one. - - - - Learn more - - - - - This template has light and dark mode support. The{' '} - useColorScheme() hook lets you inspect - what the user's current color scheme is, and so you can adjust UI colors accordingly. - - - Learn more - - - - - This template includes an example of an animated component. The{' '} - components/HelloWave.tsx component uses - the powerful react-native-reanimated library - to create a waving hand animation. - - {Platform.select({ - ios: ( - - The components/ParallaxScrollView.tsx{' '} - component provides a parallax effect for the header image. - - ), - })} - - - ); -} - -const styles = StyleSheet.create({ - headerImage: { - color: '#808080', - bottom: -90, - left: -35, - position: 'absolute', - }, - titleContainer: { - flexDirection: 'row', - gap: 8, - }, -}); diff --git a/app/(tabs)/index.tsx b/app/(tabs)/index.tsx index 324aeb7..e69de29 100644 --- a/app/(tabs)/index.tsx +++ b/app/(tabs)/index.tsx @@ -1,70 +0,0 @@ -import { Image, StyleSheet, Platform } from 'react-native'; - -import { HelloWave } from '@/components/HelloWave'; -import ParallaxScrollView from '@/components/ParallaxScrollView'; -import { ThemedText } from '@/components/ThemedText'; -import { ThemedView } from '@/components/ThemedView'; - -export default function HomeScreen() { - return ( - - }> - - Welcome! - - - - Step 1: Try it - - Edit app/(tabs)/index.tsx to see changes. - Press{' '} - - {Platform.select({ ios: 'cmd + d', android: 'cmd + m' })} - {' '} - to open developer tools. - - - - Step 2: Explore - - Tap the Explore tab to learn more about what's included in this starter app. - - - - Step 3: Get a fresh start - - When you're ready, run{' '} - npm run reset-project to get a fresh{' '} - app directory. This will move the current{' '} - app to{' '} - app-example. - - - - ); -} - -const styles = StyleSheet.create({ - titleContainer: { - flexDirection: 'row', - alignItems: 'center', - gap: 8, - }, - stepContainer: { - gap: 8, - marginBottom: 8, - }, - reactLogo: { - height: 178, - width: 290, - bottom: 0, - left: 0, - position: 'absolute', - }, -}); diff --git a/app/(tabs)/messages.tsx b/app/(tabs)/messages.tsx new file mode 100644 index 0000000..e69de29 diff --git a/app/(tabs)/settings.tsx b/app/(tabs)/settings.tsx new file mode 100644 index 0000000..e69de29 diff --git a/app/+html.tsx b/app/+html.tsx deleted file mode 100644 index 8b92456..0000000 --- a/app/+html.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import { ScrollViewStyleReset } from 'expo-router/html'; -import { type PropsWithChildren } from 'react'; - -/** - * This file is web-only and used to configure the root HTML for every web page during static rendering. - * The contents of this function only run in Node.js environments and do not have access to the DOM or browser APIs. - */ -export default function Root({ children }: PropsWithChildren) { - return ( - - - - - - - {/* - Disable body scrolling on web. This makes ScrollView components work closer to how they do on native. - However, body scrolling is often nice to have for mobile web. If you want to enable it, remove this line. - */} - - - {/* Using raw CSS styles as an escape-hatch to ensure the background color never flickers in dark-mode. */} -