From 07852df0dcdd41857cba36e619259f350e9ca55d Mon Sep 17 00:00:00 2001 From: Fedor Katurov Date: Tue, 5 Oct 2021 15:32:02 +0700 Subject: [PATCH] added user description for deactivated units --- src/components/node/NodeAuthorBlock/index.tsx | 11 +++++----- src/constants/user.ts | 1 + src/utils/hooks/user/useUserDescription.ts | 21 +++++++++++++++++++ 3 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 src/constants/user.ts create mode 100644 src/utils/hooks/user/useUserDescription.ts diff --git a/src/components/node/NodeAuthorBlock/index.tsx b/src/components/node/NodeAuthorBlock/index.tsx index 9e05d03e..9ea9b3d0 100644 --- a/src/components/node/NodeAuthorBlock/index.tsx +++ b/src/components/node/NodeAuthorBlock/index.tsx @@ -3,24 +3,24 @@ import { INode } from '~/redux/types'; import styles from './styles.module.scss'; import { Avatar } from '~/components/common/Avatar'; import { openUserProfile } from '~/utils/user'; -import { useRandomPhrase } from '~/constants/phrases'; +import { useUserDescription } from '~/utils/hooks/user/useUserDescription'; interface Props { node?: INode; } const NodeAuthorBlock: FC = ({ node }) => { - const randomPhrase = useRandomPhrase('USER_DESCRIPTION'); - const onOpenProfile = useCallback(() => openUserProfile(node?.user?.username), [ node?.user?.username, ]); + const description = useUserDescription(node?.user); + if (!node?.user) { return null; } - const { fullname, username, description, photo } = node.user; + const { fullname, username, photo } = node.user; return (
@@ -28,8 +28,7 @@ const NodeAuthorBlock: FC = ({ node }) => {
{fullname || username}
- -
{description || randomPhrase}
+
{description}
); diff --git a/src/constants/user.ts b/src/constants/user.ts new file mode 100644 index 00000000..acb60ee0 --- /dev/null +++ b/src/constants/user.ts @@ -0,0 +1 @@ +export const INACTIVE_ACCOUNT_DAYS = 40; diff --git a/src/utils/hooks/user/useUserDescription.ts b/src/utils/hooks/user/useUserDescription.ts new file mode 100644 index 00000000..6565a99d --- /dev/null +++ b/src/utils/hooks/user/useUserDescription.ts @@ -0,0 +1,21 @@ +import { IUser } from '~/redux/auth/types'; +import { useRandomPhrase } from '~/constants/phrases'; +import { differenceInDays, parseISO } from 'date-fns'; +import { INACTIVE_ACCOUNT_DAYS } from '~/constants/user'; + +const today = new Date(); + +export const useUserDescription = (user?: Partial) => { + const randomPhrase = useRandomPhrase('USER_DESCRIPTION'); + + if (!user) { + return ''; + } + + const lastSeen = user.last_seen ? parseISO(user.last_seen) : undefined; + if (!lastSeen || differenceInDays(today, lastSeen) > INACTIVE_ACCOUNT_DAYS) { + return 'Юнит деактивирован'; + } + + return randomPhrase; +};