A user hit an issue on an iPhone 5s. Device transfer would fail because
their app group was missing the ProfileAvatars directory.
This directory is lazily created as a post-launch job at background QoS.
It's not too big of a deal and it'll be created on demand if necessary.
The 5s was probably CPU constrained enough to never have a chance to run
any background jobs.
The fix is to just have our recursive filesystem traversal ignore any
unknown directory errors. This is only used in a couple places and the
behavior makes sense in each place.
OWSLinkPreviewManager's network fetches have a size cap. Any requests
that go over this cap are cancelled. By default, PromiseKit will not
catch/recover any cancellation errors. This would leave our link preview
promises in a sort of dangling state, not a success but not a failure.
Introduces a convenience wrapper around catching and rethrowing a
cancellation error. This is adopted in OWSLinkPreviewManager to rethrow
any cancelled requests. This makes sense, because anything up the chain
shouldn't really care whether or not the underlying request was cancelled.
Some android devices will set the date field in the proto to zero, even
if a date is available. Currently, iOS devices will display a date if
there's ever one set.
The fix is to just ignore date values of zero.
Updates the proto definition to add a preview description and date
field. Date and description metadata from fetched content will be sent
over the wire. We can't render it locally yet, but at least this will
allow supporting recipients to display the content.
Also, made some minor changes to HTMLMetadata to better handle article
publish/modified date tags.