1. 26 Mar, 2020 1 commit
    • Daniel Vrátil's avatar
      FakeAkonadiServer: fix flushing notifications before test ends · 89fe563b
      Daniel Vrátil authored
      The flush is asynchronous so just calling dispatchNotifications() and terminating
      the event loop is not good enough, we need to call it before the event loop is
      terminated and we must wait for the notifications to be delivered otherwise we
      just can't be sure that they also reached the test code.
  2. 25 Mar, 2020 1 commit
    • Daniel Vrátil's avatar
      Workaround broken Tag parentID in notifications · 8e7be806
      Daniel Vrátil authored
      Invalid Tag has ID -1, but we store invalid parent in the DB as NULL
      which gets auto-translated to 0 by our generated Entity code. To
      work around that limitation we explicitly convert parent 0 to -1
      when serializing Tag into response.
      In the long run we need some proper fix, likely on the level of the
      generated Entities.
  3. 04 Jan, 2020 3 commits
  4. 02 Jan, 2020 2 commits
  5. 05 Oct, 2019 2 commits
  6. 15 Apr, 2019 2 commits
  7. 26 Feb, 2019 1 commit
  8. 05 Dec, 2018 1 commit
  9. 04 Dec, 2018 1 commit
    • Daniel Vrátil's avatar
      Rename Handlers to match the entity, operation and command names · c37a236b
      Daniel Vrátil authored
      Historically, the protocol command handlers were called after the IMAP
      commands from old ASAP. Most of the names do not map to names of
      commands in the new protocol, some of them are even quite confusing
      (like Remove and Delete handlers). This change renames all handlers
      to match their purpose and map more nicely to names of the protocol
      commands as well as the client-side jobs.
  10. 01 Dec, 2018 1 commit
  11. 06 Oct, 2018 1 commit
  12. 25 Sep, 2018 1 commit
    • Daniel Vrátil's avatar
      Clean up TagFetchScope handling on client and server side · 9ea06c01
      Daniel Vrátil authored
      The fetch scope on the client side was using some hacks to list the
      parts (GID, RID, ...) that should be retrieved and on the Item
      retrieval part this was coupled with ItemFetchScope. This change
      adds standalone TagFetchScope to FetchItemsCommand as well as
      ItemFetchJob and similar APIs, allowing users to fully customize
      the retrieval.
  13. 27 Aug, 2018 2 commits
  14. 16 Aug, 2018 2 commits
    • David Faure's avatar
      Don't fetch missing parts from the resource. · 5a5d3ee2
      David Faure authored
      Dan wrote this line of code, not me ;)
      "Other resources are requesting ENVELOPE, but not every resource
      provides ENVELOPE" (only emails have that)
      Test Plan: Saving changes in FatCRM works again
      Reviewers: dvratil
      Reviewed By: dvratil
      Subscribers: winterz, kde-pim
      Tags: #kde_pim
      Differential Revision: https://phabricator.kde.org/D14853
    • Daniel Vrátil's avatar
      Monitor: rebuild Item from ntf if it's mustRetrieve but IFS is empty · f8fc30ba
      Daniel Vrátil authored
      When Monitor's IFS is empty and it receives an Item notification
      with mustRetrieve set to true, then the retrieval is bypassed, but
      the later on the code attempts to extract a result from cache which
      results crash as we try to access elements in an empty list.
      The fix is to send as much metadata as we can in the mustRetrieve
      notification, and the Monitor needs to rebuild the Item from the
      metadata instead of attempting retrieval.
      BUG: 397131
      FIXED-IN: 5.9.0
  15. 27 Jul, 2018 1 commit
  16. 20 Jul, 2018 1 commit
    • Daniel Vrátil's avatar
      Notifications: retrieve Item when RID is missing · 3ac48e10
      Daniel Vrátil authored
      When Akonadi server does not have a RID when it's trying to emit
      a notification, it sets a flag instead and sends a notification with
      only the Item ID. The client's Monitor will then fallback to the
      pre-notification-payload method of retrieving the Item on its own,
      ensuring that the updated version with RemoteID is retrieved as well.
      This fixes a bug when if a client created a new Item and immediately
      modified it, the Modify notification did not have a RID, because the
      Resource haven't processed the Add notification yet and haven't
      uploaded a RID back to the Akonadi. The Resource then wasn't able to
      act on the Modify notification.
  17. 15 Jul, 2018 1 commit
  18. 14 Jul, 2018 2 commits
  19. 21 Apr, 2018 4 commits
  20. 23 Apr, 2017 1 commit
    • Daniel Vrátil's avatar
      Generate Protocol from an XML specification (ABI break) · 5535d6e5
      Daniel Vrátil authored
      Instead of maintaining 12k lines of hand-written protocol code, we
      specify the protocol in an XML and use a custom-written generator
      that generates the code for us.
      It's not only much easier to modify the protocol - we only need to
      change a single thing in the XML instead of touching several places
      of the implementation - but it's also much safer, as there's less
      risk of accidentally introducing a bug in the code.
      The major difference between the original hand-written code and the
      generated code is that we no longer use QSharedDataPointer and virtual
      methods in the Private classes, but instead all members are directly
      in the command clas with most getters and setters inlined. This means
      that copying commands is quite costly, so we pass them around as
      QSharedPointers or const references. This should give us a tiny little
      bit more performance.
  21. 23 Feb, 2017 1 commit
  22. 16 Jan, 2017 1 commit
  23. 13 Jan, 2017 1 commit
  24. 06 Jan, 2017 1 commit
  25. 02 Jan, 2017 1 commit
  26. 01 Jan, 2017 1 commit
  27. 21 Dec, 2016 1 commit
  28. 13 Oct, 2016 1 commit
  29. 19 Sep, 2016 1 commit