Files
Kazier/mobile/services/db/transitions.ts
T
2026-09-09 23:12:15 +02:00

48 lines
1.1 KiB
TypeScript

import type { SyncStatus } from './types';
export type SyncEvent =
| 'created_local'
| 'uploaded'
| 'downloaded'
| 'deleted_cloud';
export type SyncTransitionResult = SyncStatus | 'gone';
export function transitionSyncStatus(
from: SyncStatus,
event: SyncEvent,
): SyncTransitionResult {
switch (from) {
case 'local':
switch (event) {
case 'created_local':
return 'local';
case 'uploaded':
return 'cloud';
case 'downloaded':
return 'local-cloud';
case 'deleted_cloud':
return 'gone';
}
case 'cloud':
switch (event) {
case 'created_local':
return 'local-cloud';
case 'uploaded':
return 'cloud';
case 'downloaded':
return 'local-cloud';
case 'deleted_cloud':
return 'gone';
}
case 'local-cloud':
switch (event) {
case 'created_local':
case 'uploaded':
case 'downloaded':
return 'local-cloud';
case 'deleted_cloud':
return 'local';
}
}
}