SufficientlySecure / calendar-import-export

Import/export your Android calendars as ics files without using the Google cloud
https://www.schuermann.eu/android/
GNU General Public License v3.0
86 stars 27 forks source link

Import problems in V 2.5: 1. import stops with error message, 2. full-day events > 1 day are shrunk to a 1 full-day event #66

Closed Floyd2000 closed 7 years ago

Floyd2000 commented 7 years ago

Dear developers,

I've successfully used this excellent app in the past and also recommended it to a number of people.

Unfortunately, I recently stumbled upon a strange problem in the latest version: I had exported an Offline Calendar with "Calendar Import-Export V2.5" on an Android 6.0.1 (CM13) phone. The export ran fine without any errors.

Then I tried to import that exported file on an Android 7.1 (LineageOS 14.1) phone with the same "Calendar Import-Export V2.5".

The file contains 720 entries in total and after 557 entries the import process stops and an error message pops up:

    ERROR
    Error:
    For input string: "T0"

When I downgrade to V2.4 on the target phone, the error does not occur and the import finishes smoothly.

I tried various parameters in the settings to no avail.

However, I noticed another critical issue with both versions: Full day events that spread across 2 or more days are only shown as a 1-day event after import. That is critical in my opinion. Was that actually meant to be fixed in V2.5 (that's how I understood the changelog on Github)? The issue was reported closed in #50

Thanks for a short feedback & maybe a fix :-)

Floyd

dschuermann commented 7 years ago

@tasn Since I don't have time to work on this, if you have some spare time @tasn could you look into this?

tasn commented 7 years ago

@Floyd2000, is the full days events issue caused when using v2.5 on both ends, or v2.4 on the target? I'm asking this, because my fix for #50 requires both to have v2.5.

Could you provide the problematic calendar entry that doesn't work with v2.5? (feel free to redact personal information as you need, as long as it still fails).

Thanks.

Floyd2000 commented 7 years ago

Hi tasn, sorry for the late reply. Took me a while to get back on the issue. I managed to narrow down the problem and find a workaround. Please see my findings below. It shows one of the VEVENT that triggers the error message when exported from V2.5 and being reimported with V2.5

  1. Export from Version 2.4

    BEGIN:VEVENT DTSTAMP:20170418T180517Z UID:1474750840957fa3a480d5dd240daa0a0b2319fc4c765@sufficientlysecure.org SUMMARY:Birthday Paul DESCRIPTION:2007 LOCATION: STATUS:CONFIRMED DTSTART;VALUE=DATE:20070909 DTEND;VALUE=DATE:20070910 TRANSP:OPAQUE RRULE:FREQ=YEARLY END:VEVENT

  2. Export from Version 2.5

    BEGIN:VEVENT DTSTAMP:20170513T053936Z UID:1474750840957fa3a480d5dd240daa0a0b2319fc4c765@sufficientlysecure.org SUMMARY:Birthday Paul DESCRIPTION:2007 LOCATION: STATUS:CONFIRMED DTSTART;VALUE=DATE:20070909 TRANSP:OPAQUE RRULE:FREQ=YEARLY END:VEVENT

The export from V2.4 can be imported by V2.5 without errors. Everything's fine The export from V2.5 cannot be imported with any version, because DTEND is missing. An error message pops up Error: Invalid int: "T0"

However, the V2.4 export has the problem that all-day events spreading across several days are truncated to 1 day. This was fixed in 2.5.

Workaround:

  1. export the calendar with V2.4
  2. export the calendar with V2.5
  3. Compare the two exported files with Meld, for instance
  4. Synchronize the critical VEVENTs from the V2.4 file to the V2.5 file
  5. Import the corrected V2.5 file. Works without errors then

Hope this helps to track down the bug.

Thanks Floyd

tasn commented 7 years ago

Hey there,

This should be fairly easy to fix. I'm on vacation at the moment, so mostly AFK, but I'll try to get to it as soon as possible.

tasn commented 7 years ago

I opened a pull request (#68) with a potential fix. I wasn't able to trigger the issue, so can't verify it's indeed the problem and the solution, but I'm pretty sure it is. Please test and if it works, we can merge the PR.