UserModelNotification.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import React, {
  2. forwardRef, ForwardRefRenderFunction,
  3. } from 'react';
  4. import type { IUser, HasObjectId } from '@growi/core';
  5. import { useRouter } from 'next/router';
  6. import type { IInAppNotificationOpenable } from '~/client/interfaces/in-app-notification-openable';
  7. import type { IInAppNotification } from '~/interfaces/in-app-notification';
  8. import { ModelNotification } from './ModelNotification';
  9. import { useActionMsgAndIconForUserModelNotification } from './useActionAndMsg';
  10. interface Props {
  11. notification: IInAppNotification<IUser> & HasObjectId
  12. }
  13. const UserModelNotification: ForwardRefRenderFunction<IInAppNotificationOpenable, Props> = (props: Props, ref) => {
  14. const { notification } = props;
  15. const { actionMsg, actionIcon } = useActionMsgAndIconForUserModelNotification(notification);
  16. const router = useRouter();
  17. // publish open()
  18. const publishOpen = () => {
  19. router.push('/admin/users');
  20. };
  21. const actionUsers = notification.target.username;
  22. return (
  23. <ModelNotification
  24. notification={notification}
  25. actionMsg={actionMsg}
  26. actionIcon={actionIcon}
  27. actionUsers={actionUsers}
  28. publishOpen={publishOpen}
  29. ref={ref}
  30. />
  31. );
  32. };
  33. export default forwardRef(UserModelNotification);