aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/constants/api.ts3
-rw-r--r--src/routes/tabs/NavigationBar.tsx34
-rw-r--r--src/services/NotificationService.ts72
3 files changed, 67 insertions, 42 deletions
diff --git a/src/constants/api.ts b/src/constants/api.ts
index 8d2e1a1e..b55489d9 100644
--- a/src/constants/api.ts
+++ b/src/constants/api.ts
@@ -45,7 +45,8 @@ export const BLOCK_USER_ENDPOINT: string = API_URL + 'block/';
export const PASSWORD_RESET_ENDPOINT: string = API_URL + 'password-reset/';
export const MOMENT_CATEGORY_ENDPOINT: string = API_URL + 'moment-category/';
export const NOTIFICATIONS_ENDPOINT: string = API_URL + 'notifications/';
-export const NOTIFICATIONS_COUNT_ENDPOINT: string = API_URL + 'notifications/unread_count/'
+export const NOTIFICATIONS_COUNT_ENDPOINT: string = API_URL + 'notifications/unread_count/';
+export const NOTIFICATIONS_DATE: string = API_URL + 'notifications/seen/';
export const DISCOVER_ENDPOINT: string = API_URL + 'discover/';
export const SEARCH_BUTTONS_ENDPOPINT: string =
DISCOVER_ENDPOINT + 'search_buttons/';
diff --git a/src/routes/tabs/NavigationBar.tsx b/src/routes/tabs/NavigationBar.tsx
index 4b291023..77131098 100644
--- a/src/routes/tabs/NavigationBar.tsx
+++ b/src/routes/tabs/NavigationBar.tsx
@@ -6,7 +6,10 @@ import {useSelector} from 'react-redux';
import {NavigationIcon} from '../../components';
import {NO_NOTIFICATIONS} from '../../store/initialStates';
import {RootState} from '../../store/rootReducer';
-import {getNotificationsUnreadCount} from '../../services';
+import {
+ getNotificationsUnreadCount,
+ setNotificationsReadDate,
+} from '../../services';
import {ScreenType} from '../../types';
import {haveUnreadNotifications, SCREEN_WIDTH, isIPhoneX} from '../../utils';
import MainStackScreen from '../main/MainStackScreen';
@@ -41,10 +44,8 @@ const NavigationBar: React.FC = () => {
const navBarPos = 20;
- const [
- unreadNotificationsPresent,
- setUnreadNotificationsPresent,
- ] = useState<boolean>(false);
+ const [unreadNotificationsPresent, setUnreadNotificationsPresent] =
+ useState<boolean>(false);
useEffect(() => {
const determine = async () => {
@@ -56,6 +57,7 @@ const NavigationBar: React.FC = () => {
}, [notifications]);
useEffect(() => {
+ console.log('notifications', notificationSets);
setTimeout(() => {
if (iconRef.current) {
iconRef.current.measure(
@@ -94,18 +96,18 @@ const NavigationBar: React.FC = () => {
}, 100);
}, [notificationSets, iconRef, tipRef]);
- useEffect(() => {
- if (timeCount) {
- setTimeout(() => {
- setTimeOut(true);
- }, 5000);
- }
- }, [timeCount]);
+ // useEffect(() => {
+ // if (timeCount) {
+ // setTimeout(() => {
+ // setTimeOut(true);
+ // }, 5000);
+ // }
+ // }, [timeCount]);
useEffect(() => {
const getCount = async () => {
- // const data = await getNotificationsUnreadCount();
- const data = {};
+ const data = await getNotificationsUnreadCount();
+ // const data = {};
setTimeout(() => {
setNotificationSets(data);
}, 100);
@@ -250,6 +252,7 @@ const NavigationBar: React.FC = () => {
listeners={{
tabPress: (_) => {
setShowIcon(false);
+ setNotificationsReadDate();
},
}}
/>
@@ -298,7 +301,7 @@ const styles = StyleSheet.create({
fontSize: normalize(10),
justifyContent: 'center',
alignItems: 'center',
- marginRight: 10,
+ marginRight: 5,
},
tip: {
position: 'absolute',
@@ -311,6 +314,7 @@ const styles = StyleSheet.create({
height: 14,
width: 14,
margin: 2,
+ marginLeft: 5,
},
svgIndicationIcon: {
height: 14,
diff --git a/src/services/NotificationService.ts b/src/services/NotificationService.ts
index 92f1cdd1..3c0245a5 100644
--- a/src/services/NotificationService.ts
+++ b/src/services/NotificationService.ts
@@ -2,37 +2,37 @@ import AsyncStorage from '@react-native-community/async-storage';
import {
NOTIFICATIONS_ENDPOINT,
NOTIFICATIONS_COUNT_ENDPOINT,
+ NOTIFICATIONS_DATE,
} from '../constants';
import {NotificationType} from '../types';
-export const getNotificationsData: () => Promise<
- NotificationType[]
-> = async () => {
- try {
- const token = await AsyncStorage.getItem('token');
- const response = await fetch(NOTIFICATIONS_ENDPOINT, {
- method: 'GET',
- headers: {
- Authorization: 'Token ' + token,
- },
- });
- if (response.status === 200) {
- const data: any[] = await response.json();
- let typedData: NotificationType[] = [];
- for (const o of data) {
- typedData.push({
- ...o.notification,
- unread: false,
- });
+export const getNotificationsData: () => Promise<NotificationType[]> =
+ async () => {
+ try {
+ const token = await AsyncStorage.getItem('token');
+ const response = await fetch(NOTIFICATIONS_ENDPOINT, {
+ method: 'GET',
+ headers: {
+ Authorization: 'Token ' + token,
+ },
+ });
+ if (response.status === 200) {
+ const data: any[] = await response.json();
+ let typedData: NotificationType[] = [];
+ for (const o of data) {
+ typedData.push({
+ ...o.notification,
+ unread: false,
+ });
+ }
+ return typedData;
}
- return typedData;
+ return [];
+ } catch (error) {
+ console.log('Unable to fetch notifications');
+ return [];
}
- return [];
- } catch (error) {
- console.log('Unable to fetch notifications');
- return [];
- }
-};
+ };
export const getNotificationsUnreadCount: () => Promise<{
CMT?: number;
@@ -76,3 +76,23 @@ export const getNotificationsUnreadCount: () => Promise<{
return [];
}
};
+
+export const setNotificationsReadDate: () => Promise<boolean> = async () => {
+ try {
+ const token = await AsyncStorage.getItem('token');
+ const response = await fetch(NOTIFICATIONS_DATE, {
+ method: 'POST',
+ headers: {
+ Authorization: 'Token ' + token,
+ },
+ });
+ if (response.status === 204) {
+ return true;
+ } else {
+ return false;
+ }
+ } catch (error) {
+ console.log('Unable to fetch notifications');
+ return false;
+ }
+};