* Auto-add new contact threads to profile whitelist when local user sends first message to that thread.
* Ensure dynamic interactions have a non-negative timestamp even if the conversation was empty.
* Only call updateMessageMappingRangeOptions _after_ beginLongLivedReadTransaction and updating messageMappings.
* Improve documentation around how to avoid corrupt mappings in conversation view.
* Fix edge cases around large initial range sizes.
* Always treat dynamic interactions as read.
* Rebuild the “unseen” database views to remove dynamic interactions (see above).
// FREEBIE
There's a problem with this approach - specifically we need to dismiss
the external file share view controller eventually.
But more generally, because SN can present a view controller, it's kind
success/retry handling is contextual to it's presenting view controller.
So, probably the thing to do is duplicate this logic at it's various
presentation contexts.
// FREEBIE