/
SOFG1
/
generic
Обзор
Документация
Войти
/
SOFG1
/
generic
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/components/common/UserActivityWatcher/UserActivityWatcher.tsx
51 строка
2 KB
Eddy
reafactoring, dispose useUserStateHook
24 июл 2024, 15:22
24 июл 2024, 15:22
c1a396e
Код
Авторство
О чём код?
import React, { useCallback, useEffect } from "react"; import { User, UserActivityType } from "../../../api/user"; import { useLocation } from "react-router"; import { createActivity } from "../../../utils/createActivity"; import { activityList } from "../../../config/userActivityList"; import { useSelector } from "react-redux"; import { userTokenSelector } from "../../../store/user/selectors"; const UserActivityWatcher = React.memo(() => { const token = useSelector(userTokenSelector); const { pathname } = useLocation(); const handleSendActivity = useCallback( async (activity: UserActivityType) => { if (token) { User.sendActivity(token, activity) } }, [token] ); const handleDocumentClick = useCallback( (e: any) => { const button = e.composedPath().find((e:any) => { return e?.hasAttribute && e?.hasAttribute("data-action") }) if ( !button) return; const action = button?.getAttribute("data-action") const activity = createActivity(pathname === "/" ? "stats" : pathname, action) handleSendActivity(activity); }, [handleSendActivity, pathname] ); useEffect(() => { const activity = createActivity(pathname === "/" ? "stats" : pathname, activityList["open-app"]) handleSendActivity(activity); }, [handleSendActivity]); useEffect(() => { document.addEventListener("click", handleDocumentClick) return () => { document.removeEventListener("click", handleDocumentClick) } }, [handleDocumentClick]) return <></>; }); export default UserActivityWatcher;