Fixes a bug where a nil MessageBody was passed to a Swift initializer
expecting non-nil. To fix, OutgoingMessagePreparer.init will now accept
a nil MessageBody and process it correctly.
- Adjust how clients provide QoS information to ContactDiscoveryTask
- Fix an issue where legacy CDS was reporting a generic server failure
as a result of network failures.
- ContactDiscoveryTask will no longer error on an empty set
- Remove CDSFeedback operation
UUIDBackfillTask and OWSMessageSender were initializing
ContactDiscoveryOperations themselves and rolling their own database
update logic. Instead, they should be leveraging ContactDiscoveryTask.
ContactDiscoveryOperations now return Promises and is no longer a
subclass of OWSOperation.
LegacyContactDiscoveryOperation needed some small changes, but was not
relying on dependent operations, so there wasn't anything too
significant.
ModernContactDiscoveryOperation was already using Promises in its
implementation. It required surfacing that promise. Dependent operations
are now represented in an array of sub-promises that are all joined
before completing. CDSBatchOperation was removed.
This change also makes everything that's not ContactDiscoveryTask
non-objc and non-public. Callers should really be using
ContactDiscoveryTask anyway.
- Removes ContactsUpdater singleton. It wasn't really tracking much
state anyway
- Introduces ContactDiscoveryTask. This creates a
ContactDiscoveryOperation (modern or legacy) and updates the
SignalRecipients database on completion. Returns a promise.
- Begin migrating away from operation queues
PromiseKit is weird about priority propogation, so this shouldn't be
used yet. Since all then closures are asynced, priorities don't
propogate down to underlying queues. This means the a
ContactDiscoveryTask on the main queue will not boost the priority on
the ModernContactDiscoverOperation's owned operation queue