Some servers (e.g. Dovecot) use placeholder strings instead of the empty
string (e.g. "MISSING_DOMAIN") in FETCH Envelope responses when a
required address part (e.g. local part, domain) are empty.
This adds a quirk that can be enabled for such servers to check for the
placeholders and if found, replace them with empty strings.
Add a quirks object as a property so code that parses the response has
access to it. Simplify constructing server responses slightly and pass
the IMAP connection's quirks when doing so.
We want to ensure there is a non-null, send date, but mail merge wants
to set the date to be when it was actually sent, so allow it to be
updated after construction.
Add new ctor to `Actionable` to allow specifying an icon name but
keeping the class immutable. Add support for displaying icon in
`Plugin.InfoBar` buttons by implementing support for it
`Components.InfoBar`. Also support updating the primary button when
the plugin's primary button changes.
Adds new processor class, moves merge field code into that, ensure that
both when checking email for merge fields and handing email off to the
merge folder that the email is loaded with fields required by the
processor.
Use new support for registering local folders with the engine to do
just that for the merge folder, allowing the conversation monitor to
successfully load and display email in the folder.
Rename append method to concatenate_list since that's what it actually does. Add new method
for cat'ing a single mailbox, add methods for merging both a single mailbox and mailbox
list into a new list.
Support API clients registering their own local folder implementations.
Use this (and the last commit) to generalise handling of the outbox by
GenericAccount by registering it when the outbox postie is started, and
when creating a map of folders that contain specific ids.
This also ensures API clients are informed of the outbox becoming
available, allowing some special case code to be removed from the app
controller.
Add new public method that allows API clients to query whether a folder
contains a specific set of email ids. Add implementation to all
derived classes.
Publicly, get objects for a variant rather than from it since we're
not actually getting the objects from the variant, just looking them
up using the variant as an id.
Internally, use `to_` rather than `get_` when converting between plugin
and engine objects, since its typically just a cast or a lookup to do
so.
Since GLib.Menu instances require fully qualified action names for menu
item actions, plugins need to be able to access the group name their
actions have been added to.
This lets plugins activate arbitrary actions, but that's perhaps not a
big risk?