[calendar] Fix calendar sync status (#5272)
## Context There is no calendarChannel syncStatus column compared to the messageChannel table. In the meantime, we are trying to infer its status based on the fact that the connection hasn't failed and the sync is enabled
This commit is contained in:
@ -6,7 +6,9 @@ import { IconChevronRight, IconGoogleCalendar } from 'twenty-ui';
|
|||||||
import { CalendarChannel } from '@/accounts/types/CalendarChannel';
|
import { CalendarChannel } from '@/accounts/types/CalendarChannel';
|
||||||
import { ConnectedAccount } from '@/accounts/types/ConnectedAccount';
|
import { ConnectedAccount } from '@/accounts/types/ConnectedAccount';
|
||||||
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
import { currentWorkspaceMemberState } from '@/auth/states/currentWorkspaceMemberState';
|
||||||
|
import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
|
||||||
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
|
||||||
|
import { generateDepthOneRecordGqlFields } from '@/object-record/graphql/utils/generateDepthOneRecordGqlFields';
|
||||||
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
|
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
|
||||||
import { SettingsAccountsListEmptyStateCard } from '@/settings/accounts/components/SettingsAccountsListEmptyStateCard';
|
import { SettingsAccountsListEmptyStateCard } from '@/settings/accounts/components/SettingsAccountsListEmptyStateCard';
|
||||||
import {
|
import {
|
||||||
@ -25,6 +27,9 @@ const StyledRowRightContainer = styled.div`
|
|||||||
export const SettingsAccountsCalendarChannelsListCard = () => {
|
export const SettingsAccountsCalendarChannelsListCard = () => {
|
||||||
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState);
|
const currentWorkspaceMember = useRecoilValue(currentWorkspaceMemberState);
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
const { objectMetadataItem } = useObjectMetadataItem({
|
||||||
|
objectNameSingular: CoreObjectNameSingular.CalendarChannel,
|
||||||
|
});
|
||||||
|
|
||||||
const { records: accounts, loading: accountsLoading } =
|
const { records: accounts, loading: accountsLoading } =
|
||||||
useFindManyRecords<ConnectedAccount>({
|
useFindManyRecords<ConnectedAccount>({
|
||||||
@ -49,6 +54,7 @@ export const SettingsAccountsCalendarChannelsListCard = () => {
|
|||||||
in: accounts.map((account) => account.id),
|
in: accounts.map((account) => account.id),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
recordGqlFields: generateDepthOneRecordGqlFields({ objectMetadataItem }),
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!calendarChannels.length) {
|
if (!calendarChannels.length) {
|
||||||
@ -61,10 +67,8 @@ export const SettingsAccountsCalendarChannelsListCard = () => {
|
|||||||
(calendarChannel) => ({
|
(calendarChannel) => ({
|
||||||
...calendarChannel,
|
...calendarChannel,
|
||||||
syncStatus: calendarChannel.connectedAccount?.authFailedAt
|
syncStatus: calendarChannel.connectedAccount?.authFailedAt
|
||||||
? 'failed'
|
? 'FAILED'
|
||||||
: calendarChannel.isSyncEnabled
|
: 'SUCCEEDED',
|
||||||
? 'synced'
|
|
||||||
: 'notSynced',
|
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -81,6 +85,7 @@ export const SettingsAccountsCalendarChannelsListCard = () => {
|
|||||||
<StyledRowRightContainer>
|
<StyledRowRightContainer>
|
||||||
<SettingsAccountsSynchronizationStatus
|
<SettingsAccountsSynchronizationStatus
|
||||||
syncStatus={calendarChannel.syncStatus}
|
syncStatus={calendarChannel.syncStatus}
|
||||||
|
isSyncEnabled={calendarChannel.isSyncEnabled}
|
||||||
/>
|
/>
|
||||||
<LightIconButton Icon={IconChevronRight} accent="tertiary" />
|
<LightIconButton Icon={IconChevronRight} accent="tertiary" />
|
||||||
</StyledRowRightContainer>
|
</StyledRowRightContainer>
|
||||||
|
|||||||
@ -76,6 +76,7 @@ export const SettingsAccountsMessageChannelsListCard = () => {
|
|||||||
<StyledRowRightContainer>
|
<StyledRowRightContainer>
|
||||||
<SettingsAccountsSynchronizationStatus
|
<SettingsAccountsSynchronizationStatus
|
||||||
syncStatus={messageChannel.syncStatus}
|
syncStatus={messageChannel.syncStatus}
|
||||||
|
isSyncEnabled={messageChannel.isSyncEnabled}
|
||||||
/>
|
/>
|
||||||
<LightIconButton Icon={IconChevronRight} accent="tertiary" />
|
<LightIconButton Icon={IconChevronRight} accent="tertiary" />
|
||||||
</StyledRowRightContainer>
|
</StyledRowRightContainer>
|
||||||
|
|||||||
@ -3,10 +3,12 @@ import { Status } from '@/ui/display/status/components/Status';
|
|||||||
|
|
||||||
export type SettingsAccountsSynchronizationStatusProps = {
|
export type SettingsAccountsSynchronizationStatusProps = {
|
||||||
syncStatus: string;
|
syncStatus: string;
|
||||||
|
isSyncEnabled?: boolean;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SettingsAccountsSynchronizationStatus = ({
|
export const SettingsAccountsSynchronizationStatus = ({
|
||||||
syncStatus,
|
syncStatus,
|
||||||
|
isSyncEnabled,
|
||||||
}: SettingsAccountsSynchronizationStatusProps) => {
|
}: SettingsAccountsSynchronizationStatusProps) => {
|
||||||
const syncStatusOptions = useGetSyncStatusOptions();
|
const syncStatusOptions = useGetSyncStatusOptions();
|
||||||
|
|
||||||
@ -14,6 +16,10 @@ export const SettingsAccountsSynchronizationStatus = ({
|
|||||||
(option) => option.value === syncStatus,
|
(option) => option.value === syncStatus,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (!isSyncEnabled) {
|
||||||
|
return <Status color="gray" text="Not synced" weight="medium" />;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Status
|
<Status
|
||||||
color={syncStatusOption?.color ?? 'gray'}
|
color={syncStatusOption?.color ?? 'gray'}
|
||||||
|
|||||||
Reference in New Issue
Block a user