diff --git a/app.json b/app.json index fb225abe..0e256076 100644 --- a/app.json +++ b/app.json @@ -46,7 +46,12 @@ ], "package": "com.nuvio.app", "versionCode": 1, - "architectures": ["arm64-v8a", "armeabi-v7a", "x86", "x86_64"] + "architectures": [ + "arm64-v8a", + "armeabi-v7a", + "x86", + "x86_64" + ] }, "web": { "favicon": "./assets/favicon.png" @@ -65,7 +70,8 @@ "project": "react-native", "organization": "tapframe" } - ] + ], + "expo-localization" ] } } diff --git a/package-lock.json b/package-lock.json index 2cba9c04..d6e8b487 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,14 +31,17 @@ "date-fns": "^4.1.0", "eventemitter3": "^5.0.1", "expo": "~52.0.43", + "expo-application": "~6.0.2", "expo-auth-session": "^6.0.3", "expo-blur": "^14.0.3", "expo-dev-client": "~5.0.20", - "expo-file-system": "^18.0.12", + "expo-device": "~7.0.3", + "expo-file-system": "~18.0.12", "expo-haptics": "~14.0.1", "expo-image": "~2.0.7", "expo-intent-launcher": "~12.0.2", "expo-linear-gradient": "~14.0.2", + "expo-localization": "~16.0.1", "expo-notifications": "~0.29.14", "expo-random": "^14.0.1", "expo-screen-orientation": "~8.0.4", @@ -47,6 +50,7 @@ "expo-web-browser": "~14.0.2", "lodash": "^4.17.21", "lottie-react-native": "^7.3.1", + "posthog-react-native": "^4.4.0", "react": "18.3.1", "react-native": "0.76.9", "react-native-gesture-handler": "~2.20.2", @@ -3479,6 +3483,12 @@ "node": ">=14" } }, + "node_modules/@posthog/core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.0.0.tgz", + "integrity": "sha512-gquQld+duT9DdzLIFoHZkUMW0DZOTSLCtSjuuC/zKFz65Qecbz9p37DHBJMkw0dCuB8Mgh2GtH8Ag3PznJrP3g==", + "license": "MIT" + }, "node_modules/@react-native-async-storage/async-storage": { "version": "1.23.1", "resolved": "https://registry.npmjs.org/@react-native-async-storage/async-storage/-/async-storage-1.23.1.tgz", @@ -7876,6 +7886,44 @@ "expo": "*" } }, + "node_modules/expo-device": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-7.0.3.tgz", + "integrity": "sha512-uNGhDYmpDj/3GySWZmRiYSt52Phdim11p0pXfgpCq/nMks0+UPZwl3D0vin5N8/gpVe5yzb13GYuFxiVoDyniw==", + "license": "MIT", + "dependencies": { + "ua-parser-js": "^0.7.33" + }, + "peerDependencies": { + "expo": "*" + } + }, + "node_modules/expo-device/node_modules/ua-parser-js": { + "version": "0.7.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.40.tgz", + "integrity": "sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "license": "MIT", + "bin": { + "ua-parser-js": "script/cli.js" + }, + "engines": { + "node": "*" + } + }, "node_modules/expo-file-system": { "version": "18.0.12", "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.0.12.tgz", @@ -7978,6 +8026,19 @@ "react-native": "*" } }, + "node_modules/expo-localization": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-16.0.1.tgz", + "integrity": "sha512-kUrXiV/Pq9r7cG+TMt+Qa49IUQ9Y/czVwen4hmiboTclTopcWdIeCzYZv6JGtufoPpjEO9vVx1QJrXYl9V2u0Q==", + "license": "MIT", + "dependencies": { + "rtl-detect": "^1.0.2" + }, + "peerDependencies": { + "expo": "*", + "react": "*" + } + }, "node_modules/expo-manifests": { "version": "0.15.8", "resolved": "https://registry.npmjs.org/expo-manifests/-/expo-manifests-0.15.8.tgz", @@ -12099,6 +12160,64 @@ "optional": true, "peer": true }, + "node_modules/posthog-react-native": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/posthog-react-native/-/posthog-react-native-4.4.0.tgz", + "integrity": "sha512-+n9tXx+MZ9+5eF+h0yzZ7rd7H0eoVmg8hwoIhX9OayRpVRxHRdD42xDKQCXiWEjHVCHrCizfhIt7yPNwcz4p+w==", + "license": "MIT", + "dependencies": { + "@posthog/core": "1.0.0" + }, + "peerDependencies": { + "@react-native-async-storage/async-storage": ">=1.0.0", + "@react-navigation/native": ">= 5.0.0", + "expo-application": ">= 4.0.0", + "expo-device": ">= 4.0.0", + "expo-file-system": ">= 13.0.0", + "expo-localization": ">= 11.0.0", + "posthog-react-native-session-replay": ">= 1.1.1", + "react-native-device-info": ">= 10.0.0", + "react-native-localize": ">= 3.0.0", + "react-native-navigation": ">= 6.0.0", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-svg": ">= 15.0.0" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + }, + "@react-navigation/native": { + "optional": true + }, + "expo-application": { + "optional": true + }, + "expo-device": { + "optional": true + }, + "expo-file-system": { + "optional": true + }, + "expo-localization": { + "optional": true + }, + "posthog-react-native-session-replay": { + "optional": true + }, + "react-native-device-info": { + "optional": true + }, + "react-native-localize": { + "optional": true + }, + "react-native-navigation": { + "optional": true + }, + "react-native-safe-area-context": { + "optional": true + } + } + }, "node_modules/prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -13457,6 +13576,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rtl-detect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rtl-detect/-/rtl-detect-1.1.2.tgz", + "integrity": "sha512-PGMBq03+TTG/p/cRB7HCLKJ1MgDIi07+QU1faSjiYRfmY5UsAttV9Hs08jDAHVwcOwmVLcSJkpwyfXszVjWfIQ==", + "license": "BSD-3-Clause" + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", diff --git a/package.json b/package.json index b7e6eae8..30e24b52 100644 --- a/package.json +++ b/package.json @@ -32,14 +32,17 @@ "date-fns": "^4.1.0", "eventemitter3": "^5.0.1", "expo": "~52.0.43", + "expo-application": "~6.0.2", "expo-auth-session": "^6.0.3", "expo-blur": "^14.0.3", "expo-dev-client": "~5.0.20", - "expo-file-system": "^18.0.12", + "expo-device": "~7.0.3", + "expo-file-system": "~18.0.12", "expo-haptics": "~14.0.1", "expo-image": "~2.0.7", "expo-intent-launcher": "~12.0.2", "expo-linear-gradient": "~14.0.2", + "expo-localization": "~16.0.1", "expo-notifications": "~0.29.14", "expo-random": "^14.0.1", "expo-screen-orientation": "~8.0.4", @@ -48,6 +51,7 @@ "expo-web-browser": "~14.0.2", "lodash": "^4.17.21", "lottie-react-native": "^7.3.1", + "posthog-react-native": "^4.4.0", "react": "18.3.1", "react-native": "0.76.9", "react-native-gesture-handler": "~2.20.2", diff --git a/src/navigation/AppNavigator.tsx b/src/navigation/AppNavigator.tsx index 62b2d2d1..fa7fdf13 100644 --- a/src/navigation/AppNavigator.tsx +++ b/src/navigation/AppNavigator.tsx @@ -15,6 +15,7 @@ import { Stream } from '../types/streams'; import { SafeAreaProvider } from 'react-native-safe-area-context'; import { useTheme } from '../contexts/ThemeContext'; import { Toasts } from '@backpackapp-io/react-native-toast'; +import { PostHogProvider } from 'posthog-react-native'; // Import screens with their proper types import HomeScreen from '../screens/HomeScreen'; @@ -1062,9 +1063,16 @@ const InnerNavigator = ({ initialRouteName }: { initialRouteName?: keyof RootSta }; const AppNavigator = ({ initialRouteName }: { initialRouteName?: keyof RootStackParamList }) => ( - - - + + + + + ); export default AppNavigator; \ No newline at end of file