fix(import): don't lose Fossify's contact birthdays and anniversaries (#225)
Found the actual cause. Fossify mirrors Contacts birthdays and
anniversaries with startTS == endTS (MainActivity), so its exporter's
dayCode(endTS + 12h) rounds back to the starting day and writes
DTEND == DTSTART. We read that literally: a yearly series with
DURATION:P0D, which the provider expands into no instances at all. The
import reported success and the events were nowhere — matching the
report exactly ("birthdays, memorials, dates").
An all-day event may no longer end at or before it starts, and an all-day
DURATION is floored at P1D. Verified against the released parser, which
returns days=0.0 for all three fixture events.
Do not generalise this into sniffing PRODID: the same exporter is correct
for UI-created events (endTS anchors at noon of the last day) and for
CalDAV rows, and Fossify's bundled holiday files are conformant while
naming Fossify in their PRODID. Both are kept as fixtures.
Also: existingUids counted DELETED rows, so re-importing after deleting
events skipped everything as duplicates.
Closes #225
This commit is contained in:
@@ -16,8 +16,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
||||
- **Imported reminders fire at the hour you chose**, not at midnight UTC — the
|
||||
same rule the app already applied to all-day events you create yourself
|
||||
([#225]).
|
||||
- **An all-day event with no end date, or one ending the day it starts, imports
|
||||
as a one-day event** instead of a zero-length one that never appears ([#225]).
|
||||
- **Birthdays and anniversaries imported from Fossify Calendar now show up.**
|
||||
Fossify writes the ones it mirrors from your contacts as events that start and
|
||||
end on the same day, which the calendar read as lasting no time at all: they
|
||||
imported without complaint and then appeared nowhere. Any all-day event that
|
||||
ends where it starts, or carries no end at all, is now a one-day event
|
||||
([#225]).
|
||||
|
||||
### Added
|
||||
- **More of an imported `.ics` survives the trip**: tasks come across as events
|
||||
|
||||
Reference in New Issue
Block a user