import React, { useEffect, useState } from 'react'; import { ScrollView, View, Text, InteractionManager } from 'react-native'; import { getStyles } from './dashboard.styles'; import { useTheme } from '../../theme'; import { LeadDistribution, ProjectActivityFeed } from '@components'; import { useAppDispatch, useAppSelector, RootState } from '@store'; import { getDashboardLeadCount, getDashboardProjectActivity } from './thunk'; import { NotificationService } from '@services'; export const DashboardScreen = () => { const dispatch = useAppDispatch(); const { theme: colors } = useTheme(); const styles = getStyles(colors); const [selectedAction, setSelectedAction] = useState('all'); const user_data = useAppSelector((state: RootState) => state.auth.user_data); const { leadCountData, loading, error, projectActivityData, activityLoading, activityError } = useAppSelector( (state: RootState) => state.dashboard, ); useEffect(() => { const task = InteractionManager.runAfterInteractions(() => { NotificationService.requestPermission(); }); return () => task.cancel(); }, []); useEffect(() => { if (user_data?.staffid) { dispatch( getDashboardLeadCount({ action: selectedAction, staffid: user_data.staffid, }), ); } }, [dispatch, selectedAction, user_data]); useEffect(() => { if (user_data?.staffid) { dispatch( getDashboardProjectActivity({ staff_id: user_data.staffid, }), ); } }, [dispatch, user_data]); return ( {error && ( {error} )} {/* Lead Distribution Chart Card */} {activityError && ( {activityError} )} {/* Project Activity Feed */} ); };