Commit Graph

52 Commits (0cd1cb80cc059ae199d4ce27965432a0a61cce41)

Author SHA1 Message Date
Michael Kirk 0cd1cb80cc Compiling, but video sending not working. 7 years ago
Michael Kirk 064035f3f4 WIP M67 - plumb through AVCaptureSession
TODO:

-[x] plumb through AVCaptureSession
-[] get AVCaptureSession from PeerConnectionClient
-[] RTCDataChannel not unwrapped
-[] no member avFoundationSource
-[] no member "back camera"
7 years ago
Matthew Chen ed19949d60 Respond to CR. 7 years ago
Matthew Chen e949d81568 Fix more call state edge cases. 7 years ago
Matthew Chen b2b62880c0 Migrate to Swift 4. 7 years ago
Matthew Chen 77b72b6b06 Migrate to Swift 4. 7 years ago
Matthew Chen 91d54360ba Add contact view. 7 years ago
Michael Kirk e5b535ccf1 Implement camera direction toggle
// FREEBIE
7 years ago
Matthew Chen 7345ab2e4e Add window manager. Move call view to a separate window. 7 years ago
Matthew Chen 6caa5b87b6 Add more asserts around thread in SAE. 7 years ago
Michael Kirk 658b8c3223 CR: typos and doc changes
// FREEBIE
7 years ago
Michael Kirk 5959cdf070 Simplify call privacy settings
We've long allowed users to configure what shows up in message
notifications:

- name: content (by default)
- just name (no content)
- generic notification (no name nor content)

Now we're dual purposing that setting to apply to calls. If someone
doesn't want to show names in the message notifications, presumably also
don't want that name showing up in the call log.

Also, since the earlier CallKit/iCloud issues had been addressed before
iOS11, we upgrade all iOS11 users to the more intuitive CallKit
interface.

Also: introduce "use system call logs" toggle when available. It will be
enabled by default, but we disable it for legacy users who'd explicitly
opted *out* of CallKit.

// FREEBIE
7 years ago
Michael Kirk 4dd1c7813a Instrument calls to ensure audio session is maintained
// FREEBIE
7 years ago
Matthew Chen 7a1e47cd26 Add asserts around Swift singletons. 7 years ago
Matthew Chen b4e8df79da Migrate environment to SignalMessaging. 7 years ago
Matthew Chen 8cc33b3de1 Refine loading view of share extension. 8 years ago
Michael Kirk a11d83187b WIP: Framework-friendly - compiles but crashes on launch
// FREEBIE
8 years ago
Matthew Chen 3367292ba0 Merge branch 'hotfix/2.16.1' 8 years ago
Matthew Chen b6d782046a Normalize conversation presentation logic.
// FREEBIE
8 years ago
Michael Kirk c4139b0f3e Callkit ringer uses profile name
Also presents formatted number instead of e164

// FREEBIE
8 years ago
Michael Kirk 81d7f28253 Timer to ensure call screen shown
// FREEBIE
8 years ago
Matthew Chen a9ce1cde2f Simplify CallViewController.
// FREEBIE
8 years ago
Michael Kirk 03f1bbca62 Move state from CallViewController -> Call
I think whenever reasonable we prefer to consodlidate state on the call

// FREEBIE
8 years ago
Michael Kirk 9bd68ed490 WIP: bluetooth shows audio route button instead of speakerphone
// FREEBIE

TODO

NEED
-[ ] icon in route picker
-[ ] commit cleanup

NICE
-[ ] present action sheet automatically when making outgoing bluetooth call
-[ ] left align icons
-[ ] audio is paused when switching between video mode (maybe existing behavior, not sure)
-[ ] Copy: iPhone/iPad/iPod instead of "iPhone Microphone"

DONE
-[x] remove "receiver" from options while in video mode
-[x] show available audio routes
-[x] select available audio routes
-[x] notification if availabe inputs change so we can update call screen
     mid call with available BT route
-[x] include speakerphone in choices
-[x] Enabled button shows active speakerphone. Should still show
     bluetooth picker.
-[x] toggle back and forth between audio devices
-[x] hide audio route button in video mode if no BT available
-[x] Fixed: When on speakerphone - switching to video mode goes back to bluetooth.
-[x] Fixed: When switching to video w/ bluetooth device connected there is no
     audio picker.
-[x] respect speakerphone/BT selection when in or toggling to/from video
-[x] do not hide audio route button when in video mode and bluetooth
     connected
-[x] Show which is currently selected audio route
-[x] switching to speakerphone no longer works
-[x] switching *back* to bluetooth no longer works
-[x] add proper bluetooth button for audio calls
-[x] add proper bluetooth button for video calls
8 years ago
Matthew Chen d639d6557e Add owsFail free function for swift.
// FREEBIE
8 years ago
Michael Kirk 8abde1dff8 Non-Callkit adapter plays audio from notification when app is in
background

// FREEBIE
8 years ago
Michael Kirk 39563ab8c2 present from signalsViewController so users don't get confused by being
dropped into a different thread when the call is over.

e.g. chatting with Alice, but Bob calls. When I end the call with Bob It
would be too easy to fire off a message assuming it's going to Bob.

// FREEBIE
8 years ago
Michael Kirk 36c09aeb84 cleanup ahead of PR
// FREEBIE
8 years ago
Michael Kirk ff93732ed7 WIP: fix call from contacts when signal hasn't been launched yet 8 years ago
Matthew Chen 0f85284b82 Fix speakerphone vs. WebRTC AND Fix CallService edge cases.
// FREEBIE
8 years ago
Matthew Chen 17fe3f66c0 Ensure audio service observation of call is always correctly wired up.
// FREEBIE
8 years ago
Matthew Chen 581ba937f4 Respond to CR.
// FREEBIE
8 years ago
Matthew Chen 52ba5c1325 Don’t assert when two devices call each other simultaneously.
// FREEBIE
8 years ago
Michael Kirk 2a9aa4c852 users can opt out of CallKit
// FREEBIE
8 years ago
Matthew Chen 0893930485 Handle “busy signal” appropriately.
// FREEBIE
8 years ago
Michael Kirk cd36123bf1 rename method to better reflect how its used
// FREEBIE
8 years ago
Matthew Chen d4ba4c446b Respond to CR.
// FREEBIE
8 years ago
Matthew Chen af289145b5 Rework concurrency in the signaling logic.
// FREEBIE
8 years ago
Matthew Chen 2ef80e569d Improve thread safety in call ui adapter and adatapees.
// FREEBIE
8 years ago
Matthew Chen d560aa022a Reworked call view’s remote video mode. 8 years ago
Michael Kirk 814aec6cdd Recover CallKit state when remote client fails to hangup
Distinguish between localHangup, remoteHangup, and call failure.

This allows us to put CallKit in the proper state, ready to receive new
calls without having a backlog of phantom calls which haven't been
properly removed.

Note the "call error" occurs at the point ICE fails, which takes a
while. Anecdotally, like 10 seconds, which feels like a long to be
talking into the ether.

I briefly considered failing at 'disconnected', which happens much
sooner, but that's actually a recoverable state. E.g. if you toggle
airplane mode you can see that you bounce into `disconnected` and then
back to `connected`, so I don't think we'd want to fail the call as long
as WebRTC considers it "recoverable".

// FREEBIE
8 years ago
Michael Kirk 6c14f2f500 Fix "Answer" from iOS9 notification doesn't init audio
The removed code was from an older eon. CallService shouldn't be touched
except via the CallUIAdapter since only there is the omnipresent
distinction between CallKit vs. NonCallKit made.

i.e. when the RTCAudioSession get's started depends on the
CallUIAdaptee.

// FREEBIE
8 years ago
Michael Kirk 87ed662116 Persist AudioService if CallViewController is dismissed
...in response to CR, move the AudioService off of the CallViewController

Adopt multiple observer pattern vs. a singular delegate. Doing so
required implementing some machinery to address the ARC (see:
Weak.swift)

// FREEBIE
8 years ago
Michael Kirk 3ee94d57d9 Only NonCallKit adaptee uses manual ringing
- stop executing ringer code on CallKit which manages ringing for us.
- Organize ringing code more clearly.

// FREEBIE
8 years ago
Matthew Chen 9e739433c5 Start work on video.
// FREEBIE
8 years ago
Michael Kirk dbb29d7d7e Don't require recording permissions until call is ringing.
We do this by manually managing the RTCAudioSession.
Unfortunately to do this we have to include a couple of RTC headers not
exported by the default build of WebRTC.framework (see: Libraries/WebRTC)

// FREEBIE
8 years ago
Michael Kirk 1ed39976ee make public protocol method implementations public
responding to CR

// FREEBIE
8 years ago
Michael Kirk 947a637669 Sync "mute" controls between CallKit
In the process, extracted the CallDelegate to allow the
CAllViewController to observe useful call state properties (call.state
and call.isMuted)

// FREEBIE
8 years ago
Michael Kirk c7449db289 remove stubbed audio manager implementation until it's clear what to do
with it.

// FREEBIE
8 years ago
Michael Kirk 9e248168b9 merge CallKitProviderDelegate into CallKitCallUIAdaptee
There was not a clear distinction in responsibilities and mostly the
Adaptee was just delegating to the CKProviderDelegate
8 years ago