1. 04 Mar, 2020 1 commit
  2. 29 Jan, 2020 9 commits
    • chriadam's avatar
      Bump version · eaf7901e
      chriadam authored
      eaf7901e
    • chriadam's avatar
      Merge branch 'jb47783' into 'master' · 1b0b1e27
      chriadam authored
      [buteo-sync-plugins-social] Fix Google calendar event duplication. Contributes to JB#47783
      
      See merge request !54
      1b0b1e27
    • chriadam's avatar
      Handle 410 errors by early-exiting sync · fb592ddc
      chriadam authored
      This commit ensures that if the sync token or timeMin value for a
      notebook is invalid, we immediately abort sync, and then clear the
      sync token stored in the notebook's custom property as well as
      update the syncDate to an appropriate value.
      fb592ddc
    • chriadam's avatar
      [buteo-sync-plugins-social] Fix bugs in local delta calculation. Contributes to JB#47783 · 039257d4
      chriadam authored
      Store created/updated timestamps appropriate to ensure that filtering
      events for change or deletion since the last sync anchor works.
      
      Fix bugs in codepaths related to partial upsync artifacts, by ensuring
      that the event gcalId is calculated appropriately.
      039257d4
    • chriadam's avatar
      [buteo-sync-plugins-social] Discard spurious local addition due to downsync.... · 747fe3f4
      chriadam authored
      [buteo-sync-plugins-social] Discard spurious local addition due to downsync. Contributes to JB#47783
      
      Previously, we would determine that local additions caused by a
      downsync during the previous sync cycle should be treated as
      local modifications, and upsynced.
      
      This commit checks whether a local modification has indeed occurred
      by checking the lastModified date stamp, and if no modification has
      occurred, discarding the change to prevent spurious upsync.
      
      It also fixes a bug where the wrong "since" date time would be used
      when determining the local changeset, as it may be using one from
      a different notebook by mistake.  This commit updates the code so
      that the appropriate previous sync date for the specific notebook
      is used.
      747fe3f4
    • chriadam's avatar
      [buteo-sync-plugins-social] Discard spurious local modification due to remote... · 9426b482
      chriadam authored
      [buteo-sync-plugins-social] Discard spurious local modification due to remote organizer change. Contributes to JB#47783
      
      If a local modification is reported as a change since the last sync,
      but the data in the event is identical to the data reported by the
      server for that event except for the organizer email address,
      then it is probably a spurious change (since Google will add the
      organizer email automatically).
      
      This commit detects that case and doesn't attempt to upsync the
      modification.
      9426b482
    • chriadam's avatar
      Ignore 403 ContentOperationNotPermitted errors due to shared calendars · 6940f22c
      chriadam authored
      Some changes (e.g. changing the organizer of an event in a shared
      calendar) are not allowed, even if the user has Owner access to the
      shared calendar (since the organizer field is managed specially
      by Google in the shared-calendar case, allowing only the organizer
      or the creator of the event to write changes there).
      
      If we hit such a failure, ignore it and allow sync to succeed.
      6940f22c
    • chriadam's avatar
      [buteo-sync-plugins-social] Properly store the mapping between gcalId and... · b8563fb3
      chriadam authored
      [buteo-sync-plugins-social] Properly store the mapping between gcalId and local UID. Contributes to JB#47783
      
      Previously, we always stored an empty gcalId in the mapping.
      This could result in "known" partial upsync artifacts being
      ignored and re-upsynced, causing server-side event duplication.
      b8563fb3
    • chriadam's avatar
      [buteo-sync-plugins-social] Fix Google calendar event duplication. Contributes to JB#47783 · f058f4bb
      chriadam authored
      This commit fixes several issues which together could lead to errors
      which result in event duplication in some cases.
      
      - sync anchor timestamp is now stored exclusively in the notebook
        as the syncDate property, to avoid atomicity issues
      
      - sync anchor token is now stored exclusively in the notebook
        as a custom property (instead of account setting) to avoid
        atomicity issues
      
      - detection of server-side sync token invalidation has been
        improved, allowing the sync envelope to be tweaked appropriately
      
      - detection of events copied between calendars via Google web UI
        has been added, to ensure we don't attempt to store multiple
        events with the same UID (which could trigger a clean-sync cycle).
      
      It also bumps the plugin version to ensure that a clean sync will
      be triggered on the first run, to clean up any duplications which
      may have previously occurred.
      
      Contributes to JB#47783
      f058f4bb
  3. 16 Jan, 2020 1 commit
  4. 14 Jan, 2020 1 commit
  5. 13 Dec, 2019 2 commits
  6. 28 Oct, 2019 1 commit
  7. 23 Oct, 2019 1 commit
  8. 08 Oct, 2019 2 commits
  9. 04 Oct, 2019 3 commits
    • chriadam's avatar
      Bump version · c513113a
      chriadam authored
      c513113a
    • chriadam's avatar
      Merge branch 'jb44316' into 'master' · bc694ef1
      chriadam authored
      [buteo-sync-plugins-social] Use SyncToken for Google Calendar delta sync. Contributes to JB#44316
      
      See merge request !47
      bc694ef1
    • chriadam's avatar
      [buteo-sync-plugins-social] Use SyncToken for Google Calendar delta sync. Contributes to JB#44316 · 126af928
      chriadam authored
      Previously, we used updatedMin timestamp "since" anchor to fetch
      changes since last sync.  This commit updates the plugin so that
      it uses the "sync token" which Google provides, so that we can
      more accurately fetch changes since the last sync, and avoid
      the "updatedMin too far in the past" problem which can be hit in
      certain circumstances.
      
      We store the sync tokens as account settings, as mkcal doesn't
      allow arbitrary metadata to be stored for notebooks.
      126af928
  10. 03 Oct, 2019 1 commit
  11. 20 Sep, 2019 1 commit
  12. 17 Sep, 2019 1 commit
  13. 13 Aug, 2019 1 commit
  14. 11 Jul, 2019 2 commits
  15. 09 Jul, 2019 1 commit
  16. 14 Jun, 2019 3 commits
  17. 13 Jun, 2019 1 commit
  18. 12 Jun, 2019 1 commit
  19. 11 Jun, 2019 1 commit
  20. 24 May, 2019 2 commits
  21. 21 May, 2019 3 commits
  22. 02 Apr, 2019 1 commit