Example: ics provider.
- local ics calendar
- remote (ics) calendar
- UI frontend
The front-end applies all the changes to the local calendar. This can be done while offline, no problem.
The observer gets a note of all those changes, and stores them in a changelog.
Every few minutes, the observer tries to apply the changes to the remote calendar. (This might fail due to being offline. No problem, just try later.) Now that all local changes are uploaded, the remote file can be downloaded. With this new file, the local calendar can be re-filled. This way, the user will see the remote changes.