1. 24 Apr, 2019 2 commits
  2. 16 Apr, 2019 4 commits
  3. 11 Apr, 2019 1 commit
  4. 04 Apr, 2019 1 commit
    • Michael Gratton's avatar
      Fix ConversationMonitor sometimes not loading more from remote · 3a44628d
      Michael Gratton authored
      If a FillWindowOperation didn't load a full amount of messages, it just
      assumed that there were no more to load. This is not true however when
      loading locally, the folder's vector isn't fully expanded, and it gets
      to the end of the vector.
      
      This patch fixes the operation to also queue another fill if the
      monitor's folder message window is smaller than the folder's total
      message count.
      
      Fixes #289
      3a44628d
  5. 02 Apr, 2019 1 commit
  6. 23 Mar, 2019 1 commit
    • Michael Gratton's avatar
      Clean up protocol date handling substantially · 9c115bec
      Michael Gratton authored
      In RFC822.Date, don't use duplicate time_t and GLib.DateTime properties
      -- just use the latter, fix formatting of half-hour time zones, fix
      where the that class refers to ISO 8601 instead of RFC822 strings since
      that is just plain wrong, and finally when parsing an RFC 822 string,
      take note of the timezone offset and store that in the DateTime object,
      so it is round-tripped correctly.
      
      Stop passing time_t around everywhere else, just use the UNIX time from
      the DateTimes we store for protocol objects anyway, so the time zone is
      obvious.
      
      Add unit tests.
      9c115bec
  7. 02 Mar, 2019 2 commits
  8. 28 Feb, 2019 1 commit
    • Kristian Klausen's avatar
      Remove trailing whitespace · 48c93655
      Kristian Klausen authored
      find . -name '*.vala' -type f -exec sed -i 's/ *$//g' {} +
      The following files was ignored:
      test/client/composer/composer-web-view-test.vala
      test/engine/util-html-test.vala
      
      Fix #271
      48c93655
  9. 27 Feb, 2019 1 commit
  10. 24 Feb, 2019 1 commit
  11. 22 Feb, 2019 2 commits
  12. 20 Feb, 2019 2 commits
  13. 19 Feb, 2019 1 commit
  14. 18 Feb, 2019 1 commit
    • Michael Gratton's avatar
      Prevent circular refs using idle and timeout manager when running · f48170ae
      Michael Gratton authored
      If an IdleManager or TimeoutManager had been scheduled, it would not get
      destroyed until it was executed by the main loop, causing criticals
      if the objects enclosed by its callback had been destroyed.
      
      This adds a weak reference to the manager object itself when scheduling
      on the main loop, so it can get safely dropped.
      f48170ae
  15. 16 Feb, 2019 3 commits
    • Michael Gratton's avatar
      Ensure conversations that have no email in the base folder are dropped · 9619d18e
      Michael Gratton authored
      If a least one email in a conversation that is in the base folder but
      also in another is removed from the base folder, the conversation may
      not be removed from the monitor despite possibly not having any email
      in the base folder, since the email may not have been completely removed
      from the conversation.
      
      This was particulary being seen with GMail accounts where even single
      message conversations were not disappering when trashed because the
      converation's email was still in All Mail.
      
      This fix does a few things: Avoids hitting the database when checking
      a conversation still has email in the base folder, when it does check
      only ensures that email are in the base folder, not *any* folder, and
      updates ConversationSet::remove_all_emails_by_identifier to do this
      check iternally, clean up its API and implementation and avoids having
      to use out args calling it.
      9619d18e
    • Michael Gratton's avatar
      Add base_folder property back to ConversationSet · 67bf1183
      Michael Gratton authored
      Athough it was removed a while back, add it back since it is not only
      needed when adding conversations, but also when removing email from
      conversations to be able to detect when a conversation should be
      dropped.
      67bf1183
    • Michael Gratton's avatar
      Prevent circular refs using idle and timeout manager when running · 3cda1b5c
      Michael Gratton authored
      If an IdleManager or TimeoutManager had been scheduled, it would not get
      destroyed until it was executed by the main loop, causing criticals
      if the objects enclosed by its callback had been destroyed.
      
      This adds a weak reference to the manager object itself when scheduling
      on the main loop, so it can get safely dropped.
      3cda1b5c
  16. 15 Feb, 2019 1 commit
    • Michael Gratton's avatar
      Don't update a folder's unread email count during normalisation · 744cde0c
      Michael Gratton authored
      Updating the unread count after opening a folder and finding email that
      has an unexpected unread status messes up the count obtained from the
      server, which has already taken these messages into account.
      
      Here, both the main normalisation process and the email flag updater are
      prevented from adjusting the unread count for a folder when they
      encounter email that are new and unread, or have an unread status
      different from what was last seen by the engine.
      
      See #213
      744cde0c
  17. 13 Feb, 2019 1 commit
  18. 08 Feb, 2019 1 commit
  19. 21 Jan, 2019 3 commits
  20. 14 Jan, 2019 5 commits
  21. 09 Jan, 2019 1 commit
  22. 01 Jan, 2019 2 commits
    • Michael Gratton's avatar
      Provide common account and service status tracking via Account · 20447c81
      Michael Gratton authored
      Similarly to ClientService, add a `current_status` property that denotes
      the account's operational state, so that clients can just set a notify
      on that to be informed of all account status changes. Keep the property
      updated by watching for changes to the client service's status property.
      20447c81
    • Michael Gratton's avatar
      Provide common service status tracking via ClientService · 827db39f
      Michael Gratton authored
      This adds a `current_status` property to ClientService to track the
      service's operational state, wich can be monitored by both the engine
      and clients for changes. Hook up subclasses to keep that update, and
      move connectivity management in to ClientService to provide a common
      implementation.
      827db39f
  23. 27 Dec, 2018 1 commit
  24. 26 Dec, 2018 1 commit
    • Michael Gratton's avatar
      Tidy up ClientService API a bit · 95ebdd65
      Michael Gratton authored
      Require endpoint to always be present so it is never null, and hence
      passed in through account creation. Rename props to be a bit more
      descriptive.
      95ebdd65