import { styled } from '@linaria/react'; import { ActivityList } from '@/activities/components/ActivityList'; import { CustomResolverFetchMoreLoader } from '@/activities/components/CustomResolverFetchMoreLoader'; import { SkeletonLoader } from '@/activities/components/SkeletonLoader'; import { ComposeEmailButton } from '@/activities/emails/components/ComposeEmailButton'; import { EmailThreadPreview } from '@/activities/emails/components/EmailThreadPreview'; import { EmptyInboxPlaceholder } from '@/activities/emails/components/EmptyInboxPlaceholder'; import { TIMELINE_THREADS_DEFAULT_PAGE_SIZE } from '@/activities/emails/constants/Messaging'; import { getTimelineThreadsFromObjectRecord } from '@/activities/emails/graphql/queries/getTimelineThreadsFromObjectRecord'; import { useCustomResolver } from '@/activities/hooks/useCustomResolver'; import { useTargetRecord } from '@/ui/layout/contexts/useTargetRecord'; import { Trans } from '@lingui/react/macro'; import { H1Title, H1TitleFontColor } from 'twenty-ui/typography'; import { Section } from 'twenty-ui/layout'; import { themeCssVariables } from 'twenty-ui/theme-constants'; import { type TimelineThread, type TimelineThreadsWithTotal, } from '~/generated/graphql'; const StyledContainer = styled.div` display: flex; flex-direction: column; gap: ${themeCssVariables.spacing[6]}; height: 100%; overflow: auto; padding: ${themeCssVariables.spacing[6]} ${themeCssVariables.spacing[6]} ${themeCssVariables.spacing[2]}; `; const StyledHeaderRow = styled.div` align-items: center; display: flex; justify-content: space-between; margin-bottom: ${themeCssVariables.spacing[4]}; `; const StyledH1Title = styled(H1Title)` display: flex; gap: ${themeCssVariables.spacing[2]}; margin-bottom: 0; `; const StyledEmailCount = styled.span` color: ${themeCssVariables.font.color.light}; `; export const EmailsCard = () => { const targetRecord = useTargetRecord(); const { data, firstQueryLoading, isFetchingMore, fetchMoreRecords } = useCustomResolver( getTimelineThreadsFromObjectRecord, 'getTimelineThreadsFromObjectRecord', 'timelineThreads', targetRecord, TIMELINE_THREADS_DEFAULT_PAGE_SIZE, ); const { totalNumberOfThreads, timelineThreads } = data?.getTimelineThreadsFromObjectRecord ?? {}; const hasMoreTimelineThreads = timelineThreads && totalNumberOfThreads ? timelineThreads?.length < totalNumberOfThreads : false; const handleLastRowVisible = async () => { if (hasMoreTimelineThreads) { await fetchMoreRecords(); } }; if (firstQueryLoading) { return ; } if (!firstQueryLoading && !timelineThreads?.length) { return ( ); } return (
Inbox{' '} {totalNumberOfThreads} } fontColor={H1TitleFontColor.Primary} /> {!firstQueryLoading && ( {timelineThreads?.map((thread: TimelineThread) => ( ))} )}
); };