diff --git a/src/Notifications/NotificationRowItem.jsx b/src/Notifications/NotificationRowItem.jsx
index c66d356..136420a 100644
--- a/src/Notifications/NotificationRowItem.jsx
+++ b/src/Notifications/NotificationRowItem.jsx
@@ -1,14 +1,14 @@
import React, { useCallback } from 'react';
-import { useIntl } from '@edx/frontend-platform/i18n';
-import { Icon } from '@edx/paragon';
-import * as timeago from 'timeago.js';
-import PropTypes from 'prop-types';
import { useDispatch } from 'react-redux';
+import { useIntl } from '@edx/frontend-platform/i18n';
+import PropTypes from 'prop-types';
+import { Icon } from '@edx/paragon';
import { Link } from 'react-router-dom';
+import * as timeago from 'timeago.js';
+import { getIconByType } from './utils';
+import { markNotificationsAsRead } from './data/thunks';
import { messages } from './messages';
import timeLocale from '../common/time-locale';
-import { markNotificationsAsRead } from './data/thunks';
-import { getIconByType } from './utils';
const NotificationRowItem = ({
id, type, contentUrl, content, courseName, createdAt, lastRead,
@@ -38,7 +38,7 @@ const NotificationRowItem = ({
// eslint-disable-next-line react/no-danger
dangerouslySetInnerHTML={{ __html: content }}
/>
-
+
{courseName}
{intl.formatMessage(messages.fullStop)}
diff --git a/src/Notifications/NotificationSections.jsx b/src/Notifications/NotificationSections.jsx
index d9aa446..8e1c617 100644
--- a/src/Notifications/NotificationSections.jsx
+++ b/src/Notifications/NotificationSections.jsx
@@ -1,26 +1,21 @@
import React, { useCallback, useMemo } from 'react';
-import { useIntl } from '@edx/frontend-platform/i18n';
-import { useSelector, useDispatch } from 'react-redux';
import { Button } from '@edx/paragon';
+import { useDispatch, useSelector } from 'react-redux';
+import { useIntl } from '@edx/frontend-platform/i18n';
import isEmpty from 'lodash/isEmpty';
import { messages } from './messages';
import NotificationRowItem from './NotificationRowItem';
-import {
- getSelectedAppNotificationIds,
- getSelectedAppName,
- getNotificationsByIds,
- getPaginationData,
-} from './data/selectors';
-import { splitNotificationsByTime } from './utils';
import { markAllNotificationsAsRead } from './data/thunks';
+import { selectNotificationsByIds, selectPaginationData, selectSelectedAppName } from './data/selectors';
+import { splitNotificationsByTime } from './utils';
+import { updatePaginationRequest } from './data/slice';
const NotificationSections = () => {
const intl = useIntl();
const dispatch = useDispatch();
- const selectedAppName = useSelector(getSelectedAppName());
- const notificationIds = useSelector(getSelectedAppNotificationIds(selectedAppName));
- const notifications = useSelector(getNotificationsByIds(notificationIds));
- const paginationData = useSelector(getPaginationData());
+ const selectedAppName = useSelector(selectSelectedAppName());
+ const notifications = useSelector(selectNotificationsByIds);
+ const paginationData = useSelector(selectPaginationData());
const { today = [], earlier = [] } = useMemo(
() => splitNotificationsByTime(notifications),
[notifications],
@@ -30,20 +25,28 @@ const NotificationSections = () => {
dispatch(markAllNotificationsAsRead(selectedAppName));
}, [dispatch, selectedAppName]);
+ const updatePagination = useCallback(() => {
+ dispatch(updatePaginationRequest());
+ }, [dispatch]);
+
const renderNotificationSection = (section, items) => {
if (isEmpty(items)) { return null; }
return (
-
+
{section === 'today' && intl.formatMessage(messages.notificationTodayHeading)}
{section === 'earlier' && intl.formatMessage(messages.notificationEarlierHeading)}
{notifications?.length > 0 && (section === 'earlier' ? today.length === 0 : true) && (
-
+
+
)}
{items.map((notification) => (
@@ -67,7 +70,7 @@ const NotificationSections = () => {
{renderNotificationSection('today', today)}
{renderNotificationSection('earlier', earlier)}
{paginationData.currentPage < paginationData.numPages && (
-