| 12345678910111213141516171819202122232425262728293031323334353637 |
- import type { FC } from 'react';
- import type { HasObjectId } from '@growi/core';
- import type { IInAppNotification } from '~/interfaces/in-app-notification';
- import { useAuditLogBulkExportJobModelNotification } from './AuditLogBulkExportJobModelNotification';
- import { usePageBulkExportJobModelNotification } from './PageBulkExportJobModelNotification';
- import { usePageModelNotification } from './PageModelNotification';
- import { useUserModelNotification } from './UserModelNotification';
- export interface ModelNotificationUtils {
- Notification: FC;
- publishOpen?: () => void;
- clickLink?: string;
- // Whether actions from clicking notification is disabled or not.
- // User can still open the notification when true.
- isDisabled?: boolean;
- }
- export const useModelNotification = (
- notification: IInAppNotification & HasObjectId,
- ): ModelNotificationUtils | null => {
- const pageModelNotificationUtils = usePageModelNotification(notification);
- const userModelNotificationUtils = useUserModelNotification(notification);
- const pageBulkExportResultModelNotificationUtils =
- usePageBulkExportJobModelNotification(notification);
- const auditLogBulkExportJobModelNotificationUtils =
- useAuditLogBulkExportJobModelNotification(notification);
- const modelNotificationUtils =
- pageModelNotificationUtils ??
- userModelNotificationUtils ??
- pageBulkExportResultModelNotificationUtils ??
- auditLogBulkExportJobModelNotificationUtils;
- return modelNotificationUtils;
- };
|