- 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
This change enables support for modern CDS in ContactsUpdater. It
accomplishes this by making the two CDS operation conform to a single
protocol, and then interacting with a generic interface.
This also makes some minor organizational changes to the contact
discovery operations. There's more that I want to do here but this
should work for now. This also fixes a bug where cancelled operations
might cause us to unregister all of our SignalRecipients. There's a
stopgap in place for now, but a more robust fix will come later.
Also updates the staging CDS enclave ID.