Bug 298518

Summary: Unable to edit newly created events
Product: [Frameworks and Libraries] libkgapi Reporter: Blackpaw <lindsay.mathieson>
Component: calendarAssignee: Daniel Vrátil <dvratil>
Status: RESOLVED FIXED    
Severity: major CC: lindsay.mathieson
Priority: NOR    
Version: GIT   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In: 0.3.1
Sentry Crash Report:

Description Blackpaw 2012-04-21 01:39:45 UTC
After entering events I have a problem editing them - get a conflict resolution dialog. Take the right hand one loses all edits. Take the left hand one saves the edits locally but I get a "akonadi_googlecalendar_resource_19: Bad request." notification and the change is not saved to my google calendar.

Reproducible: Always

Steps to Reproduce:
1. Create Event & Save in Kontact Calendar
2. Verify it saved to Google Calendars (always does)
3. Edit the event in Kontact Calendar
4. Save edits
Actual Results:  
1. Confict Resolution Dialog Popus up displaying chnages on left, original on right
2. Take left one to save changes
3. KDE displays a "akonadi_googlecalendar_resource_19: Bad request" notification
4. The changes are not saved to google.

Expected Results:  
Changes would be saved locally and to google.

Built from latest trunk
Comment 1 Daniel Vrátil 2012-04-21 13:44:57 UTC
Could you please confirm, then when you restart Kontact/Korganizer between steps 2 and 3, the conflict dialog does not appear and everything works as expected?

Also, what KDE/Kontact version do you use? Thanks
Comment 2 Blackpaw 2012-04-21 14:27:44 UTC
Yes I can confirm that, it worked perfectly when I restarted kontact before doing the edit.

kde4-config --version
Qt: 4.8.1
KDE Development Platform: 4.8.2 (4.8.2)
kde4-config: 1.0

Kontact 4.8.2

Kubuntu 12.04 all updates.
Comment 3 Daniel Vrátil 2012-04-21 15:51:30 UTC
Thanks, the issue should now be fixed in the git.

Fixed in git master by commit 836690e16e7ed613f1139719649c441530ed3887.

http://commits.kde.org/akonadi-google/836690e16e7ed613f1139719649c441530ed3887
Comment 4 Blackpaw 2012-04-21 22:55:44 UTC
Updated trunk and reinstalled, but I'm afraid I'm still getting the problem - where you able to recreate it at your end?
Comment 5 Daniel Vrátil 2012-04-23 21:35:37 UTC
Git commit e4c96efe8208dd8740f5c8a9224ce2cce5406be6 by Dan Vrátil.
Committed on 23/04/2012 at 23:33.
Pushed by dvratil into branch 'master'.

Don't update event UID after it's created

Untill now we tried to update UID of a newly created event after we received
the UID from Google, but KOrganizer didn't cope well with this.

This patch removes the IteModifyJob which was updating the UID. We rather
keep the KOrganizer-generated UID and we only change it in the payload before
serializing it and sending it to Google (for instance when we want to modify
the event). This makes KOrganizer happy.
FIXED-IN: 0.3.1

M  +12   -0    calendar/calendarresource.cpp
M  +0    -4    calendar/resource_events.cpp
M  +0    -5    calendar/resource_tasks.cpp

http://commits.kde.org/akonadi-google/e4c96efe8208dd8740f5c8a9224ce2cce5406be6
Comment 6 Daniel Vrátil 2012-04-23 21:38:14 UTC
Try now please, it should be OK :)

I was able to reproduce it initially, but after the first commit it went away when i tried it. Now I was able to reproduce it again and I'm pretty much sure I found the right cause this time.

Please reopen if this issue is still there.
Comment 7 Blackpaw 2012-04-23 22:55:05 UTC
Definitely fixed now - brilliant!

Very much appreciated, now my desktop, web and phone stay in sync, its immensly useful. Thanks!
Comment 8 Daniel Vrátil 2012-05-26 18:17:09 UTC
Git commit 062f940c3082d059f1fb6f103cbcce319cff8e7c by Dan Vrátil.
Committed on 23/04/2012 at 23:33.
Pushed by dvratil into branch '0.3'.

Don't update event UID after it's created

Untill now we tried to update UID of a newly created event after we received
the UID from Google, but KOrganizer didn't cope well with this.

This patch removes the IteModifyJob which was updating the UID. We rather
keep the KOrganizer-generated UID and we only change it in the payload before
serializing it and sending it to Google (for instance when we want to modify
the event). This makes KOrganizer happy.
FIXED-IN: 0.3.1

M  +12   -0    calendar/calendarresource.cpp
M  +0    -4    calendar/resource_events.cpp
M  +0    -5    calendar/resource_tasks.cpp

http://commits.kde.org/akonadi-google/062f940c3082d059f1fb6f103cbcce319cff8e7c