- Capabilities should be enabled universally
- No remote feature flag to enable
- Two remote feature flags to disable SenderKey and MessageResend
respectively.
- Updates to the message send flow
- Presents basic captcha UI when needed
- Auto-resend when captcha is complete
What's left:
- Bits of UI to communicate the sending state to the user
- Some cleanup of how we talk to the server
- Localizations
Most of this is hidden behind a feature flag and untested. Still waiting
on server support to exercise these endpoints.
- Builds out skeleton for tracking arbitrary spam challenges
- Records a push challenge in response to a server push
- Records a captcha challenge in response to a server precondition
rejection when fetching prekeys or sending messages
Push challenges should be good to go (once tested). Captcha challenges
still require some work to pause sending and present the captcha to the
user. Server communication for captcha challenges is complete.
Also, a whole bunch of improvements to looping video perf:
- Schedule all sorts of AVKit loading off the main thread
- Avoid rebuilding GIF picker cells if it can be avoided
- Only play AVAssets once they're loaded and ready to go
- Fetch mp4s from Giphy for showing previews
- Fetch mp4s from Giphy for sending (behind featuree flag)
- A new flag on attachments to tag a video as "looping media"
- Videos tagged with this flag will be shown on repeat
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