import type { FC } from 'react'; import React, { useCallback, useState } from 'react'; import { isPopulated } from '@growi/core'; import { pagePathUtils } from '@growi/core/dist/utils'; import { UserPicture } from '@growi/ui/dist/components'; import { format } from 'date-fns/format'; import { CopyToClipboard } from 'react-copy-to-clipboard'; import { useTranslation } from 'react-i18next'; import { Tooltip } from 'reactstrap'; import type { IActivityHasId } from '~/interfaces/activity'; type Props = { activityList: IActivityHasId[]; }; const formatDate = (date: Date): string => { return format(new Date(date), 'yyyy/MM/dd HH:mm:ss'); }; export const ActivityTable: FC = (props: Props) => { const { t } = useTranslation(); const [activeTooltipId, setActiveTooltipId] = useState(null); const showToolTip = useCallback((id: string) => { setActiveTooltipId(id); setTimeout(() => { setActiveTooltipId(null); }, 1000); }, []); return (
{props.activityList.map((activity) => { return ( ); })}
{t('admin:audit_log_management.user')} {t('admin:audit_log_management.date')} {t('admin:audit_log_management.action')} {t('admin:audit_log_management.ip')} {t('admin:audit_log_management.url')}
{activity.user != null && ( <> {activity.snapshot?.username} )} {formatDate(activity.createdAt)} {t(`admin:audit_log_action.${activity.action}`)} {activity.ip}
{activity.endpoint} showToolTip(activity._id)} > copied!
); };