Implements offline-first calendar sync infrastructure
Adds IndexedDB and operation queue for robust offline synchronization Introduces SyncManager to handle background data synchronization Supports local event operations with automatic remote sync queuing Enhances application reliability and user experience in low/no connectivity scenarios
This commit is contained in:
parent
9c765b35ab
commit
e7011526e3
20 changed files with 3822 additions and 57 deletions
132
test/integrationtesting/test-events.json
Normal file
132
test/integrationtesting/test-events.json
Normal file
|
|
@ -0,0 +1,132 @@
|
|||
[
|
||||
{
|
||||
"id": "test-1",
|
||||
"title": "Morning Standup",
|
||||
"start": "2025-11-04T08:00:00Z",
|
||||
"end": "2025-11-04T08:30:00Z",
|
||||
"type": "meeting",
|
||||
"allDay": false,
|
||||
"syncStatus": "synced",
|
||||
"metadata": {
|
||||
"duration": 30,
|
||||
"color": "#ff5722"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "test-2",
|
||||
"title": "Development Sprint",
|
||||
"start": "2025-11-04T09:00:00Z",
|
||||
"end": "2025-11-04T12:00:00Z",
|
||||
"type": "work",
|
||||
"allDay": false,
|
||||
"syncStatus": "synced",
|
||||
"metadata": {
|
||||
"duration": 180,
|
||||
"color": "#2196f3"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "test-3",
|
||||
"title": "Lunch Break",
|
||||
"start": "2025-11-04T12:00:00Z",
|
||||
"end": "2025-11-04T13:00:00Z",
|
||||
"type": "break",
|
||||
"allDay": false,
|
||||
"syncStatus": "synced",
|
||||
"metadata": {
|
||||
"duration": 60,
|
||||
"color": "#4caf50"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "test-4",
|
||||
"title": "Client Meeting",
|
||||
"start": "2025-11-04T14:00:00Z",
|
||||
"end": "2025-11-04T15:30:00Z",
|
||||
"type": "meeting",
|
||||
"allDay": false,
|
||||
"syncStatus": "synced",
|
||||
"metadata": {
|
||||
"duration": 90,
|
||||
"color": "#673ab7"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "test-5",
|
||||
"title": "Code Review Session",
|
||||
"start": "2025-11-04T16:00:00Z",
|
||||
"end": "2025-11-04T17:00:00Z",
|
||||
"type": "meeting",
|
||||
"allDay": false,
|
||||
"syncStatus": "synced",
|
||||
"metadata": {
|
||||
"duration": 60,
|
||||
"color": "#ff9800"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "test-6",
|
||||
"title": "Public Holiday",
|
||||
"start": "2025-11-05T00:00:00Z",
|
||||
"end": "2025-11-05T23:59:59Z",
|
||||
"type": "holiday",
|
||||
"allDay": true,
|
||||
"syncStatus": "synced",
|
||||
"metadata": {
|
||||
"duration": 1440,
|
||||
"color": "#f44336"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "test-7",
|
||||
"title": "Team Workshop",
|
||||
"start": "2025-11-06T09:00:00Z",
|
||||
"end": "2025-11-06T11:30:00Z",
|
||||
"type": "meeting",
|
||||
"allDay": false,
|
||||
"syncStatus": "synced",
|
||||
"metadata": {
|
||||
"duration": 150,
|
||||
"color": "#9c27b0"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "test-8",
|
||||
"title": "Birthday Celebration",
|
||||
"start": "2025-11-07T00:00:00Z",
|
||||
"end": "2025-11-07T23:59:59Z",
|
||||
"type": "personal",
|
||||
"allDay": true,
|
||||
"syncStatus": "synced",
|
||||
"metadata": {
|
||||
"duration": 1440,
|
||||
"color": "#e91e63"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "test-9",
|
||||
"title": "Sprint Retrospective",
|
||||
"start": "2025-11-07T13:00:00Z",
|
||||
"end": "2025-11-07T14:30:00Z",
|
||||
"type": "meeting",
|
||||
"allDay": false,
|
||||
"syncStatus": "pending",
|
||||
"metadata": {
|
||||
"duration": 90,
|
||||
"color": "#3f51b5"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "test-10",
|
||||
"title": "Documentation Update",
|
||||
"start": "2025-11-08T10:00:00Z",
|
||||
"end": "2025-11-08T12:00:00Z",
|
||||
"type": "work",
|
||||
"allDay": false,
|
||||
"syncStatus": "pending",
|
||||
"metadata": {
|
||||
"duration": 120,
|
||||
"color": "#009688"
|
||||
}
|
||||
}
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue