import React, { useMemo, useCallback } from 'react'; import { Card, Segmented, Skeleton, Empty, Typography, Alert } from 'antd'; import { ClockCircleOutlined, UnorderedListOutlined } from '@ant-design/icons'; import { useTranslation } from 'react-i18next'; import { useAppSelector } from '@/hooks/useAppSelector'; import { useAppDispatch } from '@/hooks/useAppDispatch'; import { ActivityFeedType } from '@/types/home/user-activity.types'; import { setActiveTab } from '@/features/home-page/user-activity.slice'; import { useGetUserRecentTasksQuery, useGetUserTimeLoggedTasksQuery, } from '@/api/home-page/user-activity.api.service'; import TaskActivityList from './task-activity-list'; import TimeLoggedTaskList from './time-logged-task-list'; const { Title } = Typography; const UserActivityFeed: React.FC = () => { const { t } = useTranslation('home'); const dispatch = useAppDispatch(); const { activeTab } = useAppSelector(state => state.userActivityReducer); const { data: recentTasksData, isLoading: loadingRecentTasks, error: recentTasksError, } = useGetUserRecentTasksQuery( { limit: 10 }, { skip: activeTab !== ActivityFeedType.RECENT_TASKS } ); const { data: timeLoggedTasksData, isLoading: loadingTimeLoggedTasks, error: timeLoggedTasksError, } = useGetUserTimeLoggedTasksQuery( { limit: 10 }, { skip: activeTab !== ActivityFeedType.TIME_LOGGED_TASKS } ); const recentTasks = useMemo(() => { if (!recentTasksData) return []; return Array.isArray(recentTasksData) ? recentTasksData : []; }, [recentTasksData]); const timeLoggedTasks = useMemo(() => { if (!timeLoggedTasksData) return []; return Array.isArray(timeLoggedTasksData) ? timeLoggedTasksData : []; }, [timeLoggedTasksData]); const segmentOptions = useMemo( () => [ { value: ActivityFeedType.RECENT_TASKS, label: (
{t('Recent Tasks')}
), }, { value: ActivityFeedType.TIME_LOGGED_TASKS, label: (
{t('Time Logged Tasks')}
), }, ], [t] ); const handleTabChange = useCallback( (value: ActivityFeedType) => { dispatch(setActiveTab(value)); }, [dispatch] ); const renderContent = () => { if (activeTab === ActivityFeedType.RECENT_TASKS) { if (recentTasksError) { return ; } if (loadingRecentTasks) { return ; } if (recentTasks.length === 0) { return ; } return ; } else { if (timeLoggedTasksError) { return ; } if (loadingTimeLoggedTasks) { return ; } if (timeLoggedTasks.length === 0) { return ; } return ; } }; return (
{t('Recent Activity')}
{renderContent()}
); }; export default React.memo(UserActivityFeed);