Fix sync statuses on the fe (#7117)

Follows #6685
This commit is contained in:
Raphaël Bosi
2024-09-18 18:46:39 +02:00
committed by GitHub
parent 02618b3e6a
commit 1d56ace2af
12 changed files with 245 additions and 47 deletions

View File

@ -0,0 +1,87 @@
import { CalendarChannelSyncStatus } from '@/accounts/types/CalendarChannel';
import { MessageChannelSyncStatus } from '@/accounts/types/MessageChannel';
import { SyncStatus } from '@/settings/accounts/constants/SyncStatus';
import { computeSyncStatus } from '../computeSyncStatus';
describe('computeSyncStatus', () => {
test('should return FAILED when both sync statuses are FAILED', () => {
expect(
computeSyncStatus(
MessageChannelSyncStatus.FAILED_UNKNOWN,
CalendarChannelSyncStatus.FAILED_UNKNOWN,
),
).toEqual(SyncStatus.FAILED);
});
test('should return FAILED when message channel sync status is FAILED_UNKNOWN', () => {
expect(
computeSyncStatus(
MessageChannelSyncStatus.FAILED_UNKNOWN,
CalendarChannelSyncStatus.ACTIVE,
),
).toEqual(SyncStatus.FAILED);
});
test('should return FAILED when message channel sync status is FAILED_INSUFFICIENT_PERMISSIONS', () => {
expect(
computeSyncStatus(
MessageChannelSyncStatus.FAILED_INSUFFICIENT_PERMISSIONS,
CalendarChannelSyncStatus.ACTIVE,
),
).toEqual(SyncStatus.FAILED);
});
test('should return FAILED when calendar channel sync status is FAILED_UNKNOWN', () => {
expect(
computeSyncStatus(
MessageChannelSyncStatus.ACTIVE,
CalendarChannelSyncStatus.FAILED_UNKNOWN,
),
).toEqual(SyncStatus.FAILED);
});
test('should return FAILED when calendar channel sync status is FAILED_INSUFFICIENT_PERMISSIONS', () => {
expect(
computeSyncStatus(
MessageChannelSyncStatus.ACTIVE,
CalendarChannelSyncStatus.FAILED_INSUFFICIENT_PERMISSIONS,
),
).toEqual(SyncStatus.FAILED);
});
test('should return IMPORTING when message channel sync status is ONGOING', () => {
expect(
computeSyncStatus(
MessageChannelSyncStatus.ONGOING,
CalendarChannelSyncStatus.ACTIVE,
),
).toEqual(SyncStatus.IMPORTING);
});
test('should return IMPORTING when calendar channel sync status is ONGOING', () => {
expect(
computeSyncStatus(
MessageChannelSyncStatus.ACTIVE,
CalendarChannelSyncStatus.ONGOING,
),
).toEqual(SyncStatus.IMPORTING);
});
test('should return SYNCED when one channel is ACTIVE and the other is NOT_SYNCED', () => {
expect(
computeSyncStatus(
MessageChannelSyncStatus.NOT_SYNCED,
CalendarChannelSyncStatus.ACTIVE,
),
).toEqual(SyncStatus.SYNCED);
});
test('should return SYNCED when one channel is ACTIVE and the other is NOT_SYNCED', () => {
expect(
computeSyncStatus(
MessageChannelSyncStatus.ACTIVE,
CalendarChannelSyncStatus.NOT_SYNCED,
),
).toEqual(SyncStatus.SYNCED);
});
});

View File

@ -0,0 +1,42 @@
import { CalendarChannelSyncStatus } from '@/accounts/types/CalendarChannel';
import { MessageChannelSyncStatus } from '@/accounts/types/MessageChannel';
import { SyncStatus } from '@/settings/accounts/constants/SyncStatus';
export const computeSyncStatus = (
messageChannelSyncStatus: MessageChannelSyncStatus,
calendarChannelSyncStatus: CalendarChannelSyncStatus,
) => {
if (
messageChannelSyncStatus === MessageChannelSyncStatus.FAILED_UNKNOWN ||
messageChannelSyncStatus ===
MessageChannelSyncStatus.FAILED_INSUFFICIENT_PERMISSIONS ||
calendarChannelSyncStatus === CalendarChannelSyncStatus.FAILED_UNKNOWN ||
calendarChannelSyncStatus ===
CalendarChannelSyncStatus.FAILED_INSUFFICIENT_PERMISSIONS
) {
return SyncStatus.FAILED;
}
if (
messageChannelSyncStatus === MessageChannelSyncStatus.ONGOING ||
calendarChannelSyncStatus === CalendarChannelSyncStatus.ONGOING
) {
return SyncStatus.IMPORTING;
}
if (
messageChannelSyncStatus === MessageChannelSyncStatus.NOT_SYNCED &&
calendarChannelSyncStatus === CalendarChannelSyncStatus.NOT_SYNCED
) {
return SyncStatus.NOT_SYNCED;
}
if (
messageChannelSyncStatus === MessageChannelSyncStatus.ACTIVE ||
calendarChannelSyncStatus === CalendarChannelSyncStatus.ACTIVE
) {
return SyncStatus.SYNCED;
}
return SyncStatus.NOT_SYNCED;
};