From 33e455655f6f7ec07e6495c94bf126d42ae553a9 Mon Sep 17 00:00:00 2001 From: nitin <142569587+ehconitin@users.noreply.github.com> Date: Tue, 27 Aug 2024 14:41:24 +0530 Subject: [PATCH] Added sync status on the FE (#6730) Issue #6685 How do we make sure we get the latest syncStatus on the frontend? For now we dont get it unless refreshed. useInterval() on fetching account details? --- .../modules/accounts/types/CalendarChannel.ts | 1 + ...tingsAccountsConnectedAccountsListCard.tsx | 17 +----- ...untsConnectedAccountsRowRightContainer.tsx | 61 +++++++++++++++++++ 3 files changed, 64 insertions(+), 15 deletions(-) create mode 100644 packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsConnectedAccountsRowRightContainer.tsx diff --git a/packages/twenty-front/src/modules/accounts/types/CalendarChannel.ts b/packages/twenty-front/src/modules/accounts/types/CalendarChannel.ts index 08a2261a3..21915d2cd 100644 --- a/packages/twenty-front/src/modules/accounts/types/CalendarChannel.ts +++ b/packages/twenty-front/src/modules/accounts/types/CalendarChannel.ts @@ -6,5 +6,6 @@ export type CalendarChannel = { isContactAutoCreationEnabled?: boolean; isSyncEnabled?: boolean; visibility: CalendarChannelVisibility; + syncStatus: string; __typename: 'CalendarChannel'; }; diff --git a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsConnectedAccountsListCard.tsx b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsConnectedAccountsListCard.tsx index 5bb870d77..238371241 100644 --- a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsConnectedAccountsListCard.tsx +++ b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsConnectedAccountsListCard.tsx @@ -1,22 +1,14 @@ import { useNavigate } from 'react-router-dom'; -import styled from '@emotion/styled'; import { IconGoogle } from 'twenty-ui'; import { ConnectedAccount } from '@/accounts/types/ConnectedAccount'; import { SettingsAccountsListEmptyStateCard } from '@/settings/accounts/components/SettingsAccountsListEmptyStateCard'; -import { SettingsAccountsRowDropdownMenu } from '@/settings/accounts/components/SettingsAccountsRowDropdownMenu'; import { getSettingsPagePath } from '@/settings/utils/getSettingsPagePath'; import { SettingsPath } from '@/types/SettingsPath'; -import { Status } from '@/ui/display/status/components/Status'; +import { SettingsAccountsConnectedAccountsRowRightContainer } from '@/settings/accounts/components/SettingsAccountsConnectedAccountsRowRightContainer'; import { SettingsListCard } from '../../components/SettingsListCard'; -const StyledRowRightContainer = styled.div` - align-items: center; - display: flex; - gap: ${({ theme }) => theme.spacing(1)}; -`; - export const SettingsAccountsConnectedAccountsListCard = ({ accounts, loading, @@ -37,12 +29,7 @@ export const SettingsAccountsConnectedAccountsListCard = ({ isLoading={loading} RowIcon={IconGoogle} RowRightComponent={({ item: account }) => ( - - {account.authFailedAt && ( - - )} - - + )} hasFooter footerButtonLabel="Add account" diff --git a/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsConnectedAccountsRowRightContainer.tsx b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsConnectedAccountsRowRightContainer.tsx new file mode 100644 index 000000000..2d05e3752 --- /dev/null +++ b/packages/twenty-front/src/modules/settings/accounts/components/SettingsAccountsConnectedAccountsRowRightContainer.tsx @@ -0,0 +1,61 @@ +import { ConnectedAccount } from '@/accounts/types/ConnectedAccount'; +import { SettingsAccountsRowDropdownMenu } from '@/settings/accounts/components/SettingsAccountsRowDropdownMenu'; +import { Status } from '@/ui/display/status/components/Status'; +import styled from '@emotion/styled'; +import { useMemo } from 'react'; + +const StyledRowRightContainer = styled.div` + align-items: center; + display: flex; + gap: ${({ theme }) => theme.spacing(1)}; +`; + +export const SettingsAccountsConnectedAccountsRowRightContainer = ({ + account, +}: { + account: ConnectedAccount; +}) => { + const mCSyncStatus = account.messageChannels[0]?.syncStatus; + const cCSyncStatus = account.calendarChannels[0]?.syncStatus; + + const status = useMemo(() => { + if (mCSyncStatus === 'ACTIVE' && cCSyncStatus === 'ACTIVE') { + return 'Synced'; + } else if (mCSyncStatus === 'NOT_SYNCED' && cCSyncStatus === 'NOT_SYNCED') { + return 'Not synced'; + } else if (mCSyncStatus === 'ONGOING' || cCSyncStatus === 'ONGOING') { + return 'Importing'; + } else if ( + mCSyncStatus === 'FAILED' || + mCSyncStatus === 'FAILED_INSUFFICIENT_PERMISSIONS' || + cCSyncStatus === 'FAILED' || + cCSyncStatus === 'FAILED_INSUFFICIENT_PERMISSIONS' + ) { + return 'Failed'; + } + return ''; + }, [mCSyncStatus, cCSyncStatus]); + + return ( + + {status === 'Failed' && ( + + )} + {status === 'Synced' && ( + + )} + {status === 'Not synced' && ( + + )} + {status === 'Importing' && ( + + )} + + + ); +};