Skip to content

WIP: Invert folder class hierarchy

Michael Gratton requested to merge mjog/invert-folder-class-hierarchy into mainline

This aims to greatly simplify remote session handling for folders, simplify folder implementation in general (especially for local folders), and simplify use of folder objects by both the client and the engine by doing the following:

  1. Flip the folder hierarchy so Geary.Folder represents a generic (possibly local or remote) folder, and adding a new RemoteFolder class that explicitly represents a remote folder
  2. Cutting down the remote folder API to something minimal that abstracts away remote session management, allowing open_async and close_async methods to be removed

WIP TODO:

  • Seems to work fine when connected, completely untested when starting or transitioning to/from offline
  • Implement explicit vector expansion

Stretch goals:

  • Replace conversation monitor's implicit "load more" when vector is incomplete and conversation list is scrolled to the bottom with an explicit action?
  • Subsume email prefetcher and flag updater into sync method?
  • Remove all remote components from listing email in minimal folder's replay queue ops?
Edited by Michael Gratton

Merge request reports