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 (

Lookup by dissmiss key

{ if (e.key === 'Enter') { lookup(); } }} placeholder="dismiss key" /> {renderFoundNotification()}

Check all Notifications

{renderNotificationsList()}
); }; module.exports = NotificationLookup;