UIDatabaseObserver orchestrates notifying views when a transaction commits.
We back UIDatabaseObserver with a DatabaseRegionObserver
DatabaseRegionObservers are not notified if the transaction contains no changes:
https://github.com/groue/GRDB.swift/blob/af0ac15/GRDB/Core/DatabaseRegionObservation.swift#L119
However the more general TransactionObservers *are* notified even if the
transaction contains no changes. Nicely, GRDB does some work to ensure this is
true even in the event of a deferred transaction. See this comment on `databaseDidCommitEmptyDeferredTransaction`
da459386a0/GRDB/Core/TransactionObserver.swift (L444)
ContactAvatarBuilder works with SignalServiceAddress
Currently this only functions with the GRDB adapter. There are other asserts
triggered in yap extensions.
Tests from `receivedEnvelopeData`, which is called by e.g. the websocket or the
messageFetcherJob through the message processing pipeline until the UIDatabase
is notified with the new message and thread.
Includes some test helpers to initialize sessions and encrypt/decrypt messages.