aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/constants/api.ts1
-rw-r--r--src/routes/tabs/NavigationBar.tsx31
-rw-r--r--src/services/NotificationService.ts99
3 files changed, 91 insertions, 40 deletions
diff --git a/src/constants/api.ts b/src/constants/api.ts
index f02ee407..8d2e1a1e 100644
--- a/src/constants/api.ts
+++ b/src/constants/api.ts
@@ -45,6 +45,7 @@ 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 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 1693d057..3359fc0d 100644
--- a/src/routes/tabs/NavigationBar.tsx
+++ b/src/routes/tabs/NavigationBar.tsx
@@ -6,6 +6,7 @@ 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 {ScreenType} from '../../types';
import {haveUnreadNotifications, SCREEN_WIDTH, isIPhoneX} from '../../utils';
import MainStackScreen from '../main/MainStackScreen';
@@ -32,12 +33,7 @@ const NavigationBar: React.FC = () => {
const [iconStart, setIconStart] = useState<number[]>([0, -100]);
const [tipStart, setTipStart] = useState<number[]>([0, -100]);
const [complete, setComplete] = useState<boolean>(false);
- const [notificationSets, setNotificationSets] = useState({
- CMT: 412314213123,
- FR_REQ: 52131,
- PR_V: 3,
- TAG: 712321,
- });
+ const [notificationSets, setNotificationSets] = useState({});
const [timeCount, setTimeCount] = useState<boolean>(false);
const [timeOut, setTimeOut] = useState<boolean>(false);
const iconRef = useRef(null);
@@ -130,10 +126,17 @@ const NavigationBar: React.FC = () => {
}, [complete]);
useEffect(() => {
- setTimeout(() => {
- console.log('iconRef', iconRef);
- }, 60000);
- });
+ // setTimeout(() => {
+ // console.log('iconRef', iconRef);
+ // }, 60000);
+
+ const getCount = async () => {
+ const data = await getNotificationsUnreadCount();
+ setNotificationSets(data);
+ };
+
+ getCount();
+ }, []);
return (
<>
@@ -172,22 +175,22 @@ const NavigationBar: React.FC = () => {
</Text>
</>
)}
- {notificationSets.PR_V && (
+ {notificationSets.P_VIEW && (
<>
<Image
source={require('../../assets/images/pill-icon-3.png')}
style={styles.indicationIcon}
/>
<Text style={styles.text}>
- {numberWithCommas(notificationSets.PR_V)}
+ {numberWithCommas(notificationSets.P_VIEW)}
</Text>
</>
)}
- {notificationSets.TAG && (
+ {notificationSets.MOM_TAG && (
<>
<PillIcon4 style={styles.indicationIcon} />
<Text style={styles.text}>
- {numberWithCommas(notificationSets.TAG)}
+ {numberWithCommas(notificationSets.MOM_TAG)}
</Text>
</>
)}
diff --git a/src/services/NotificationService.ts b/src/services/NotificationService.ts
index c5c843f5..92f1cdd1 100644
--- a/src/services/NotificationService.ts
+++ b/src/services/NotificationService.ts
@@ -1,31 +1,78 @@
import AsyncStorage from '@react-native-community/async-storage';
-import {NOTIFICATIONS_ENDPOINT} from '../constants';
+import {
+ NOTIFICATIONS_ENDPOINT,
+ NOTIFICATIONS_COUNT_ENDPOINT,
+} 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,
- });
- }
- return typedData;
+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 [];
- } catch (error) {
- console.log('Unable to fetch notifications');
- return [];
+ return typedData;
}
- };
+ return [];
+ } catch (error) {
+ console.log('Unable to fetch notifications');
+ return [];
+ }
+};
+
+export const getNotificationsUnreadCount: () => Promise<{
+ CMT?: number;
+ FRD_REQ?: number;
+ P_VIEW?: number;
+ MOM_TAG?: number;
+}> = async () => {
+ try {
+ const token = await AsyncStorage.getItem('token');
+ const response = await fetch(NOTIFICATIONS_COUNT_ENDPOINT, {
+ method: 'GET',
+ headers: {
+ Authorization: 'Token ' + token,
+ },
+ });
+ if (response.status === 200) {
+ const data: any = await response.json();
+ const typedData: {
+ CMT?: number;
+ FRD_REQ?: number;
+ P_VIEW?: number;
+ MOM_TAG?: number;
+ } = {};
+ if (data.CMT && data.CMT > 0) {
+ typedData.CMT = data.CMT;
+ }
+ if (data.FRD_REQ && data.FRD_REQ > 0) {
+ typedData.FRD_REQ = data.FRD_REQ;
+ }
+ if (data.P_VIEW && data.P_VIEW > 0) {
+ typedData.P_VIEW = data.P_VIEW;
+ }
+ if (data.MOM_TAG && data.MOM_TAG > 0) {
+ typedData.MOM_TAG = data.MOM_TAG;
+ }
+ return typedData;
+ }
+ return [];
+ } catch (error) {
+ console.log('Unable to fetch notifications');
+ return [];
+ }
+};