import { useCallback, useEffect, useState } from "react"; import * as utils from "../helpers/utils"; import userService from "../services/userService"; import { locationService } from "../services"; import { useAppSelector } from "../store"; import toastHelper from "./Toast"; import MenuBtnsPopup from "./MenuBtnsPopup"; import "../less/user-banner.less"; interface Props {} const UserBanner: React.FC = () => { const user = useAppSelector((state) => state.user.user); const { memos, tags } = useAppSelector((state) => state.memo); const [shouldShowPopupBtns, setShouldShowPopupBtns] = useState(false); const [username, setUsername] = useState("Memos"); const [createdDays, setCreatedDays] = useState(0); const isVisitorMode = userService.isVisitorMode(); useEffect(() => { const currentUserId = userService.getUserIdFromPath(); if (isVisitorMode && currentUserId) { userService .getUserById(currentUserId) .then((user) => { if (user) { setUsername(user.name); setCreatedDays(user ? Math.ceil((Date.now() - utils.getTimeStampByDate(user.createdTs)) / 1000 / 3600 / 24) : 0); } else { toastHelper.error("User not found"); } }) .catch(() => { // do nth }); } else if (user) { setUsername(user.name); setCreatedDays(user ? Math.ceil((Date.now() - utils.getTimeStampByDate(user.createdTs)) / 1000 / 3600 / 24) : 0); } }, []); const handleUsernameClick = useCallback(() => { locationService.clearQuery(); }, []); const handlePopupBtnClick = () => { setShouldShowPopupBtns(true); }; return ( <>
{username} {!isVisitorMode && user?.role === "HOST" ? MOD : null}
{memos.length} MEMO
{tags.length} TAG
{createdDays} DAY
); }; export default UserBanner;