import React from 'react'; import PropTypes from 'prop-types'; import { format } from 'date-fns'; import { UserPicture } from '@growi/ui'; import { pagePathUtils } from '@growi/core'; const { userPageRoot } = pagePathUtils; const formatType = 'yyyy/MM/dd HH:mm'; const AuthorInfo = (props) => { const { mode, user, date, locate, } = props; const infoLabelForSubNav = mode === 'create' ? 'Created by' : 'Updated by'; const nullinfoLabelForFooter = mode === 'create' ? 'Created by' : 'Updated by'; const infoLabelForFooter = mode === 'create' ? 'Created at' : 'Last revision posted at'; const userLabel = user != null ? {user.name} : Unknown; if (locate === 'footer') { try { return

{infoLabelForFooter} {format(new Date(date), formatType)} by {userLabel}

; } catch (err) { if (err instanceof RangeError) { return

{nullinfoLabelForFooter} {userLabel}

; } return; } } const renderParsedDate = () => { try { return format(new Date(date), formatType); } catch (err) { return ''; } }; return (
{infoLabelForSubNav} {userLabel}
{renderParsedDate()}
); }; AuthorInfo.propTypes = { date: PropTypes.instanceOf(Date), user: PropTypes.object, mode: PropTypes.oneOf(['create', 'update']), locate: PropTypes.oneOf(['subnav', 'footer']), }; AuthorInfo.defaultProps = { mode: 'create', locate: 'subnav', }; export default AuthorInfo;