We still need the AxolotlKit model classes to migrate old sessions,
but we don't need any of the actual protocol support. This also
means we can drop HKDFKit.
Additionally, we do still use some utilities from AxolotlKit:
- AxolotlExceptions.h: NSException names, should eventually be
replaced by NSErrors everywhere
- NSData+keyVersionByte.h: prepend/remove public key type byte,
should eventually be replaced by strong types (ECPublicKey)
- SPKProtocolContext.h: defines the SPKProtocol{Read,Write}Context
marker protocols, should be replaced by direct use of
SDSAny{Read,Write}Transaction
- Fixes up content alignment issues from parallel changes to table view
styling.
- Re-adds view controller presentation within a nav controller (stemming
from parallel changes to table view styling)
- Fixes a bug around overzealous collision detection
Also fixes an unrelated issue. Setting up cv banners performs layout, which
can cause the conversation view controller's trait collection to change.
This can lead to us reenterantly setting up banners and updating trait
collection.
The workaround is to just call -ensureBannerState asynchronously from
-traitCollectionDidChange to break the synchronous chain.
If you're scrolled to the end, you probably want to stay scrolled to
the end rather than keep the same top position. This applies both when
the footer bar shows up (in multi-select mode) and when the scroll
view is initially loaded, fixing a bug where the bottom row is cut
off. Unfortunately, the latter fix does not seem to work on older
iOSs, but it doesn't make things worse either.
...unless you clicked on an individual message to get into the
gallery. In the All Media case, we don't need to fetch later sections
because we started at the end.
The collection view loads earlier sections if you're scrolled near the
top and later sections if you're scrolled near the bottom. However, if
there's only a page of loaded content, you can be near the top /and/
the bottom. Therefore, we need to potentially load later sections even
if you're at the top, because you might be at the beginning.
Some calendars have year numbers change in the middle of months; some
calendars occasionally reset the year number. Switch to a
DateInterval-based representation in GalleryDate to avoid these
pitfalls.