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