2
0

ActivityListItem.tsx 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import type { ActivityHasUserId, SupportedActivityActionType } from '~/interfaces/activity';
  2. import { ActivityLogActions } from '~/interfaces/activity';
  3. export const ActivityActionTranslationMap: Record<
  4. SupportedActivityActionType,
  5. string
  6. > = {
  7. [ActivityLogActions.ACTION_PAGE_CREATE]: 'created a page',
  8. [ActivityLogActions.ACTION_PAGE_UPDATE]: 'updated a page',
  9. [ActivityLogActions.ACTION_PAGE_DELETE]: 'deleted a page',
  10. [ActivityLogActions.ACTION_PAGE_DELETE_COMPLETELY]: 'deleted a page',
  11. [ActivityLogActions.ACTION_PAGE_RENAME]: 'renamed a page',
  12. [ActivityLogActions.ACTION_PAGE_REVERT]: 'reverted a page',
  13. [ActivityLogActions.ACTION_PAGE_DUPLICATE]: 'duplicated a page',
  14. [ActivityLogActions.ACTION_PAGE_LIKE]: 'liked a page',
  15. [ActivityLogActions.ACTION_COMMENT_CREATE]: 'posted a comment',
  16. };
  17. const translateAction = (action: SupportedActivityActionType): string => {
  18. return ActivityActionTranslationMap[action] || 'performed an unknown action';
  19. };
  20. export const ActivityListItem = ({ activity }: { activity: ActivityHasUserId }): JSX.Element => {
  21. const username = activity.user?.username;
  22. const action = activity.action as SupportedActivityActionType;
  23. const date = new Date(activity.createdAt).toLocaleString();
  24. return (
  25. <div className="activity-row">
  26. <p className="text-muted small mb-1">
  27. {username} {translateAction(action)} on {date}
  28. </p>
  29. </div>
  30. );
  31. };