push notifications not working for some reason
CI/CD / Backend Unit Tests (push) Successful in 1m48s
CI/CD / Deploy (push) Successful in 1m38s

This commit is contained in:
2026-06-11 01:29:48 +02:00
parent 30d2abd4c5
commit 14725e180a
10 changed files with 429 additions and 63 deletions
+80 -61
View File
@@ -2,7 +2,7 @@
import "./globals.css";
import React from "react";
import React, {useState} from "react";
import { useColorScheme } from "react-native";
import { NavigationContainer, DefaultTheme, DarkTheme } from "@react-navigation/native";
import { createBottomTabNavigator } from "@react-navigation/bottom-tabs";
@@ -16,7 +16,11 @@ import {SafeAreaProvider} from "react-native-safe-area-context";
import AuthGate from "@/screens/AuthGate";
import {AuthProvider, useAuth} from "@/context/AuthContext";
import messaging, {setBackgroundMessageHandler} from "@react-native-firebase/messaging";
import {getMessaging} from "@firebase/messaging";
import { useUpdatecheck } from "./hooks/useUpdatecheck";
import { UpdatePrompt } from './components/UpdatePrompt';
import { usePushNotifications } from "./hooks/usePushNotifications";
messaging().setBackgroundMessageHandler(async () => {});
// Must be called before any navigator renders
enableScreens();
@@ -45,6 +49,7 @@ function ProfileTab() {
return user ? <Profile /> : <AuthGate />;
}
export default function App() {
const scheme = useColorScheme();
const dark = scheme === "dark";
@@ -54,72 +59,86 @@ export default function App() {
? { ...DarkTheme, colors: { ...DarkTheme.colors, background: "#0E0D0C" } }
: { ...DefaultTheme, colors: { ...DefaultTheme.colors, background: "#FDFAF5" } };
const { updateInfo } = useUpdatecheck();
const [updateDismissed, setUpdateDismissed] = useState(false);
usePushNotifications();
return (
<AuthProvider>
<SafeAreaProvider>
<NavigationContainer theme={navTheme}>
<Tab.Navigator
screenOptions={({ route }) => ({
headerShown: false,
<SafeAreaProvider>
<NavigationContainer theme={navTheme}>
<Tab.Navigator
screenOptions={({ route }) => ({
headerShown: false,
tabBarStyle: {
backgroundColor: tab.bg,
borderTopColor: tab.border,
borderTopWidth: 1,
height: 60,
paddingBottom: 8,
paddingTop: 6,
},
tabBarStyle: {
backgroundColor: tab.bg,
borderTopColor: tab.border,
borderTopWidth: 1,
height: 60,
paddingBottom: 8,
paddingTop: 6,
},
tabBarActiveTintColor: tab.active,
tabBarInactiveTintColor: tab.inactive,
tabBarActiveTintColor: tab.active,
tabBarInactiveTintColor: tab.inactive,
tabBarLabelStyle: {
fontSize: 10,
fontWeight: "600",
letterSpacing: 0.3,
},
tabBarLabelStyle: {
fontSize: 10,
fontWeight: "600",
letterSpacing: 0.3,
},
tabBarIcon: ({ focused, color, size }) => {
const icons: Record<
string,
{ active: keyof typeof Ionicons.glyphMap; inactive: keyof typeof Ionicons.glyphMap }
> = {
"Subscribed": { active: "bookmark", inactive: "bookmark-outline" },
"Discover": { active: "compass", inactive: "compass-outline" },
"Profile": { active: "person-circle", inactive: "person-circle-outline" },
};
const set = icons[route.name];
tabBarIcon: ({ focused, color, size }) => {
const icons: Record<
string,
{ active: keyof typeof Ionicons.glyphMap; inactive: keyof typeof Ionicons.glyphMap }
> = {
"Subscribed": { active: "bookmark", inactive: "bookmark-outline" },
"Discover": { active: "compass", inactive: "compass-outline" },
"Profile": { active: "person-circle", inactive: "person-circle-outline" },
};
const set = icons[route.name];
return (
<Ionicons
name={focused ? set.active : set.inactive}
size={focused ? size + 1 : size}
color={color}
/>
);
},
})}
>
<Tab.Screen
name="Subscribed"
component={SubscribedFeed}
options={{ title: "My Feed" }}
return (
<Ionicons
name={focused ? set.active : set.inactive}
size={focused ? size + 1 : size}
color={color}
/>
);
},
})}
>
<Tab.Screen
name="Subscribed"
component={SubscribedFeed}
options={{ title: "My Feed" }}
/>
<Tab.Screen
name="Discover"
component={AllFeed}
options={{ title: "Discover" }}
/>
<Tab.Screen
name="Profile"
component={ProfileTab}
options={{ title: "Profile" }}
/>
</Tab.Navigator>
</NavigationContainer>
{/* Overlays the entire app, including the nav bar */}
{updateInfo && !updateDismissed && (
<UpdatePrompt
updateInfo={updateInfo}
onDismiss={() => setUpdateDismissed(true)}
/>
<Tab.Screen
name="Discover"
component={AllFeed}
options={{ title: "Discover" }}
/>
<Tab.Screen
name="Profile"
component={ProfileTab}
options={{ title: "Profile" }}
/>
</Tab.Navigator>
</NavigationContainer>
</SafeAreaProvider>
)}
</AuthProvider>
</SafeAreaProvider>
</AuthProvider>
);
}
}