NotificationContent.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import React from 'react';
  2. import { PagePathLabel } from '@growi/ui';
  3. import { IInAppNotification } from '../../interfaces/in-app-notification';
  4. import { apiv3Post } from '../../client/util/apiv3-client';
  5. import FormattedDistanceDate from '../FormattedDistanceDate';
  6. interface Props {
  7. actionUsers: string
  8. notification: IInAppNotification
  9. }
  10. const notificationClickHandler = async(notification: IInAppNotification) => {
  11. try {
  12. await apiv3Post('/in-app-notification/open', { id: notification._id });
  13. // jump to target page
  14. // window.location.href = notification.target.path;
  15. }
  16. catch (err) {
  17. // logger.error(err);
  18. }
  19. };
  20. export const PageCommentNotification = (props: Props): JSX.Element => {
  21. const pagePath = { path: props.notification.target.path };
  22. return (
  23. <div onClick={() => notificationClickHandler(props.notification)}>
  24. <div>
  25. <b>{props.actionUsers}</b> commented on <PagePathLabel page={pagePath} />
  26. </div>
  27. <i className="fa fa-comment-o mr-2" />
  28. <FormattedDistanceDate id={props.notification._id} date={props.notification.createdAt} isShowTooltip={false} />
  29. </div>
  30. );
  31. };
  32. export const PageUpdateNotification = (props: Props): JSX.Element => {
  33. const pagePath = { path: props.notification.target.path };
  34. return (
  35. <div onClick={() => notificationClickHandler(props.notification)}>
  36. <div>
  37. <b>{props.actionUsers}</b> page updated on <PagePathLabel page={pagePath} />
  38. </div>
  39. <i className="fa fa-file-o mr-2" />
  40. <FormattedDistanceDate id={props.notification._id} date={props.notification.createdAt} isShowTooltip={false} />
  41. </div>
  42. );
  43. };