This moves methods more in line with PureLayout conventions.
- Methods always specify if they pin to an edge vs margin
- `margin` is a reserved word which should only refer to layout margins.
i.e. do not use it to refer to "inset" and "offset".
// FREEBIE
First pass at a swipe-through media view for conversations.
Future work could include
- title label per item
- sender name
- date/time
- photo rail
- include caption
// FREEBIE
This no longer made sense now that we're using this in a
PageViewController we won't always be zooming from a particular frame.
TODO:
- why is background image all wonky?
- why aren't views created by the time it's presented? Is that a
regression? (how is self.view a MenuView if loadView hasn't been called)
// FREEBIE
Showing the share UI conflicts with the conversation views
inputAccessory toolbar.
Specifically:
- the long press menu acquires first responder
- tapping share presents the activity view
- at this point, the input toolbar is hidden
- launching a share extension hides the activity view, presents the
share extension (could be the Signal share extension or another app's
share extension)
- the conversation view (which is rendered behind the share extension)
regains first responder, causing the input toolbar to appear above the
share extension
One fix would be to re-implement an interface similar UIMenuController,
which does not require mucking with the responder chain, but that's
going to be more involved.
// FREEBIE
This affects iOS 8, 9, and to a lesser degree iOS10.
On iOS11, presenting an alert causes the keyboard/inputAccessoryView to
temporarily dismiss.
// FREEBIE
- sync speakerphone state manipulated from system call screen
- Revert audio session after call failure, ensures media plays out of
speaker after placing a failing call.
- Replace notification with delegate pattern since we're already using
delegate pattern here.
- Fixes voiceover accessibility after voice memo
- Avoid audio blip after pressing hangup
- Rename CallAudioSession -> OWSAudioSession
Going to start using it for other non-call things since we want to
gather all our audio session concerns.
- Resume background audio when done playing video
- Extract OWSVideoPlayer which ensures audio is in proper state before
playback
- Move recording session logic to shared OWSAudioSession
- Deactivate audio session when complete
// FREEBIE