aboutsummaryrefslogtreecommitdiff
path: root/src/routes/tabs
diff options
context:
space:
mode:
Diffstat (limited to 'src/routes/tabs')
-rw-r--r--src/routes/tabs/NavigationBar.tsx43
1 files changed, 36 insertions, 7 deletions
diff --git a/src/routes/tabs/NavigationBar.tsx b/src/routes/tabs/NavigationBar.tsx
index 3757c56b..7d29ab67 100644
--- a/src/routes/tabs/NavigationBar.tsx
+++ b/src/routes/tabs/NavigationBar.tsx
@@ -1,15 +1,36 @@
import {createBottomTabNavigator} from '@react-navigation/bottom-tabs';
-import React, {Fragment} from 'react';
+import React, {Fragment, useEffect, useState} from 'react';
import {useSelector} from 'react-redux';
import {NavigationIcon} from '../../components';
+import {NO_NOTIFICATIONS} from '../../store/initialStates';
import {RootState} from '../../store/rootReducer';
import {ScreenType} from '../../types';
+import {haveUnreadNotifications} from '../../utils';
import MainStackScreen from '../main/MainStackScreen';
const Tabs = createBottomTabNavigator();
const NavigationBar: React.FC = () => {
- const {isOnboardedUser} = useSelector((state: RootState) => state.user);
+ const {isOnboardedUser, newNotificationReceived} = useSelector(
+ (state: RootState) => state.user,
+ );
+
+ const {notifications: {notifications} = NO_NOTIFICATIONS} = useSelector(
+ (state: RootState) => state,
+ );
+
+ const [unreadNotificationsPresent, setUnreadNotificationsPresent] = useState<
+ boolean
+ >(false);
+
+ useEffect(() => {
+ const determine = async () => {
+ setUnreadNotificationsPresent(
+ await haveUnreadNotifications(notifications),
+ );
+ };
+ determine();
+ }, [notifications]);
return (
<Tabs.Navigator
@@ -23,7 +44,15 @@ const NavigationBar: React.FC = () => {
case 'Upload':
return <NavigationIcon tab="Upload" disabled={!focused} />;
case 'Notifications':
- return <NavigationIcon tab="Notifications" disabled={!focused} />;
+ return (
+ <NavigationIcon
+ newIcon={
+ newNotificationReceived || unreadNotificationsPresent
+ }
+ tab="Notifications"
+ disabled={!focused}
+ />
+ );
case 'Profile':
return <NavigationIcon tab="Profile" disabled={!focused} />;
default:
@@ -44,14 +73,14 @@ const NavigationBar: React.FC = () => {
},
}}>
<Tabs.Screen
- name="Notifications"
+ name="Search"
component={MainStackScreen}
- initialParams={{screenType: ScreenType.Notifications}}
+ initialParams={{screenType: ScreenType.Search}}
/>
<Tabs.Screen
- name="Search"
+ name="Notifications"
component={MainStackScreen}
- initialParams={{screenType: ScreenType.Search}}
+ initialParams={{screenType: ScreenType.Notifications}}
/>
<Tabs.Screen
name="Profile"