AgentGraph / frontend /src /hooks /useSystemNotifications.ts
wu981526092's picture
🚀 Deploy AgentGraph: Complete agent monitoring and knowledge graph system
c2ea5ed
import { useNotification } from "@/context/NotificationContext";
import { useNavigation } from "@/context/NavigationContext";
import { useCallback } from "react";
export interface SystemNotificationOptions {
type: "success" | "error" | "warning" | "info";
title: string;
message: string;
duration?: number;
persistent?: boolean; // Whether to also add to persistent notifications
}
export function useSystemNotifications() {
const { showNotification } = useNotification();
const { actions } = useNavigation();
const notify = useCallback(
({ persistent = true, ...options }: SystemNotificationOptions) => {
// Always show toast notification
showNotification(options);
// Add to persistent notifications if requested (default: true for system events)
if (persistent) {
actions.addNotification({
type: options.type,
title: options.title,
message: options.message,
});
}
},
[showNotification, actions]
);
// Convenience methods for different types
const notifySuccess = useCallback(
(title: string, message: string, persistent = true) => {
notify({ type: "success", title, message, persistent });
},
[notify]
);
const notifyError = useCallback(
(title: string, message: string, persistent = true) => {
notify({ type: "error", title, message, persistent });
},
[notify]
);
const notifyWarning = useCallback(
(title: string, message: string, persistent = true) => {
notify({ type: "warning", title, message, persistent });
},
[notify]
);
const notifyInfo = useCallback(
(title: string, message: string, persistent = false) => {
notify({ type: "info", title, message, persistent });
},
[notify]
);
return {
notify,
notifySuccess,
notifyError,
notifyWarning,
notifyInfo,
};
}