require('./notificationLookup.less');
const React = require('react');
const { useState, useRef } = require('react');
const cx = require('classnames');
const request = require('superagent');
const Moment = require('moment');
const NotificationDetail = ({ notification, onDelete }) => (
- Key
- {notification.dismissKey}
- Title
- {notification.title || 'No Title'}
- Text
- {notification.text || 'No Text'}
- Created
- {Moment(notification.createdAt).format('LLLL')}
- Start
- {Moment(notification.startAt).format('LLLL') || 'No Start Time'}
- Stop
- {Moment(notification.stopAt).format('LLLL') || 'No End Time'}
);
const NotificationLookup = () => {
const [foundNotification, setFoundNotification] = useState(null);
const [searching, setSearching] = useState(false);
const [error, setError] = useState(null);
const [notifications, setNotifications] = useState([]);
const lookupRef = useRef(null);
const lookup = async () => {
const query = lookupRef.current.value;
if (!query.trim()) {
setError('Please enter a valid dismiss key.');
return;
}
setSearching(true);
setError(null);
try {
const res = await request.get(`/admin/notification/lookup/${query}`);
if (res.body) {
setFoundNotification(res.body);
} else {
setFoundNotification(null);
setError('No notification found.');
}
} catch {
setError('Error fetching notification.');
} finally {
setSearching(false);
}
};
const lookupAll = async () => {
setSearching(true);
setError(null);
try {
const res = await request.get('/admin/notification/all');
setNotifications(res.body || []);
} catch {
setError('Error fetching all notifications.');
} finally {
setSearching(false);
}
};
const deleteNotification = async (dismissKey) => {
if (!dismissKey) return;
const confirmed = window.confirm(
`Really delete notification ${dismissKey}?`
);
if (!confirmed) {
console.log('CANCELLED');
return;
}
console.log('CONFIRMED');
try {
await request.delete(`/admin/notification/delete/${dismissKey}`);
// Only reset the foundNotification if it matches the one being deleted
if (foundNotification && foundNotification.dismissKey === dismissKey) {
setFoundNotification(null);
}
// Optionally refresh the list of all notifications
lookupAll();
} catch {
setError('Error deleting notification.');
}
};
const renderFoundNotification = () => {
if (error) {
return {error}
;
}
if (!foundNotification) {
return No notification found.
;
}
return (
);
};
const renderNotificationsList = () => {
if (error) {
return {error}
;
}
if (notifications.length === 0) {
return No notifications available.
;
}
return (
{notifications.map((notification) => (
{notification.title || 'No Title'}
))}
);
};
return (
);
};
module.exports = NotificationLookup;