@telnyx/react-voice-commons-sdk 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -0
- package/TelnyxVoiceCommons.podspec +31 -31
- package/ios/CallKitBridge.m +43 -43
- package/ios/CallKitBridge.swift +874 -879
- package/ios/VoicePnBridge.m +30 -30
- package/ios/VoicePnBridge.swift +86 -86
- package/lib/callkit/callkit-coordinator.d.ts +110 -117
- package/lib/callkit/callkit-coordinator.js +664 -727
- package/lib/callkit/callkit.d.ts +41 -41
- package/lib/callkit/callkit.js +252 -242
- package/lib/callkit/index.js +15 -47
- package/lib/callkit/use-callkit.d.ts +19 -19
- package/lib/callkit/use-callkit.js +270 -310
- package/lib/context/TelnyxVoiceContext.d.ts +9 -9
- package/lib/context/TelnyxVoiceContext.js +10 -13
- package/lib/hooks/use-callkit-coordinator.d.ts +9 -17
- package/lib/hooks/use-callkit-coordinator.js +45 -50
- package/lib/hooks/useAppReadyNotifier.js +13 -15
- package/lib/hooks/useAppStateHandler.d.ts +6 -11
- package/lib/hooks/useAppStateHandler.js +95 -110
- package/lib/hooks/useNetworkStateHandler.d.ts +0 -0
- package/lib/hooks/useNetworkStateHandler.js +0 -0
- package/lib/index.d.ts +3 -21
- package/lib/index.js +50 -201
- package/lib/internal/CallKitHandler.d.ts +6 -6
- package/lib/internal/CallKitHandler.js +96 -104
- package/lib/internal/callkit-manager.d.ts +57 -57
- package/lib/internal/callkit-manager.js +299 -316
- package/lib/internal/calls/call-state-controller.d.ts +73 -86
- package/lib/internal/calls/call-state-controller.js +263 -307
- package/lib/internal/session/session-manager.d.ts +71 -75
- package/lib/internal/session/session-manager.js +360 -424
- package/lib/internal/user-defaults-helpers.js +49 -39
- package/lib/internal/voice-pn-bridge.d.ts +114 -12
- package/lib/internal/voice-pn-bridge.js +212 -5
- package/lib/models/call-state.d.ts +46 -44
- package/lib/models/call-state.js +70 -68
- package/lib/models/call.d.ts +161 -133
- package/lib/models/call.js +454 -382
- package/lib/models/config.d.ts +11 -18
- package/lib/models/config.js +37 -35
- package/lib/models/connection-state.d.ts +10 -10
- package/lib/models/connection-state.js +16 -16
- package/lib/telnyx-voice-app.d.ts +28 -28
- package/lib/telnyx-voice-app.js +463 -481
- package/lib/telnyx-voip-client.d.ts +167 -167
- package/lib/telnyx-voip-client.js +385 -390
- package/package.json +11 -4
- package/src/callkit/callkit-coordinator.ts +18 -34
- package/src/hooks/useNetworkStateHandler.ts +0 -0
- package/src/internal/calls/call-state-controller.ts +81 -58
- package/src/internal/session/session-manager.ts +42 -26
- package/src/internal/voice-pn-bridge.ts +250 -2
- package/src/models/call-state.ts +8 -1
- package/src/models/call.ts +119 -5
- package/src/telnyx-voice-app.tsx +87 -40
- package/src/telnyx-voip-client.ts +15 -3
- package/src/types/telnyx-sdk.d.ts +16 -2
package/ios/VoicePnBridge.m
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
#import <React/RCTBridgeModule.h>
|
|
2
|
-
|
|
3
|
-
@interface RCT_EXTERN_MODULE(VoicePnBridge, NSObject)
|
|
4
|
-
|
|
5
|
-
RCT_EXTERN_METHOD(getPendingPushAction:(RCTPromiseResolveBlock)resolve
|
|
6
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
7
|
-
|
|
8
|
-
RCT_EXTERN_METHOD(setPendingPushAction:(NSString *)action
|
|
9
|
-
metadata:(NSString *)metadata
|
|
10
|
-
resolver:(RCTPromiseResolveBlock)resolve
|
|
11
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
12
|
-
|
|
13
|
-
RCT_EXTERN_METHOD(clearPendingPushAction:(RCTPromiseResolveBlock)resolve
|
|
14
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
15
|
-
|
|
16
|
-
RCT_EXTERN_METHOD(getVoipToken:(RCTPromiseResolveBlock)resolve
|
|
17
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
18
|
-
|
|
19
|
-
RCT_EXTERN_METHOD(getPendingVoipPush:(RCTPromiseResolveBlock)resolve
|
|
20
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
21
|
-
|
|
22
|
-
RCT_EXTERN_METHOD(clearPendingVoipPush:(RCTPromiseResolveBlock)resolve
|
|
23
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
24
|
-
|
|
25
|
-
RCT_EXTERN_METHOD(getPendingVoipAction:(RCTPromiseResolveBlock)resolve
|
|
26
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
27
|
-
|
|
28
|
-
RCT_EXTERN_METHOD(clearPendingVoipAction:(RCTPromiseResolveBlock)resolve
|
|
29
|
-
rejecter:(RCTPromiseRejectBlock)reject)
|
|
30
|
-
|
|
1
|
+
#import <React/RCTBridgeModule.h>
|
|
2
|
+
|
|
3
|
+
@interface RCT_EXTERN_MODULE(VoicePnBridge, NSObject)
|
|
4
|
+
|
|
5
|
+
RCT_EXTERN_METHOD(getPendingPushAction:(RCTPromiseResolveBlock)resolve
|
|
6
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
7
|
+
|
|
8
|
+
RCT_EXTERN_METHOD(setPendingPushAction:(NSString *)action
|
|
9
|
+
metadata:(NSString *)metadata
|
|
10
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
11
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
12
|
+
|
|
13
|
+
RCT_EXTERN_METHOD(clearPendingPushAction:(RCTPromiseResolveBlock)resolve
|
|
14
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
15
|
+
|
|
16
|
+
RCT_EXTERN_METHOD(getVoipToken:(RCTPromiseResolveBlock)resolve
|
|
17
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
18
|
+
|
|
19
|
+
RCT_EXTERN_METHOD(getPendingVoipPush:(RCTPromiseResolveBlock)resolve
|
|
20
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
21
|
+
|
|
22
|
+
RCT_EXTERN_METHOD(clearPendingVoipPush:(RCTPromiseResolveBlock)resolve
|
|
23
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
24
|
+
|
|
25
|
+
RCT_EXTERN_METHOD(getPendingVoipAction:(RCTPromiseResolveBlock)resolve
|
|
26
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
27
|
+
|
|
28
|
+
RCT_EXTERN_METHOD(clearPendingVoipAction:(RCTPromiseResolveBlock)resolve
|
|
29
|
+
rejecter:(RCTPromiseRejectBlock)reject)
|
|
30
|
+
|
|
31
31
|
@end
|
package/ios/VoicePnBridge.swift
CHANGED
|
@@ -1,87 +1,87 @@
|
|
|
1
|
-
import Foundation
|
|
2
|
-
import React
|
|
3
|
-
|
|
4
|
-
@objc(VoicePnBridge)
|
|
5
|
-
class VoicePnBridge: NSObject {
|
|
6
|
-
|
|
7
|
-
@objc
|
|
8
|
-
static func requiresMainQueueSetup() -> Bool {
|
|
9
|
-
return false
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
// MARK: - UserDefaults-based methods for VoIP push handling
|
|
13
|
-
|
|
14
|
-
@objc
|
|
15
|
-
func getPendingPushAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
16
|
-
let action = UserDefaults.standard.string(forKey: "pending_push_action")
|
|
17
|
-
let metadata = UserDefaults.standard.string(forKey: "pending_push_metadata")
|
|
18
|
-
|
|
19
|
-
NSLog("[VoicePnBridge] getPendingPushAction - action: \(action ?? "nil"), metadata: \(metadata ?? "nil")")
|
|
20
|
-
|
|
21
|
-
let result: [String: Any?] = [
|
|
22
|
-
"action": action,
|
|
23
|
-
"metadata": metadata
|
|
24
|
-
]
|
|
25
|
-
|
|
26
|
-
resolve(result)
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
@objc
|
|
30
|
-
func setPendingPushAction(_ action: String, metadata: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
31
|
-
UserDefaults.standard.set(action, forKey: "pending_push_action")
|
|
32
|
-
UserDefaults.standard.set(metadata, forKey: "pending_push_metadata")
|
|
33
|
-
UserDefaults.standard.synchronize()
|
|
34
|
-
|
|
35
|
-
NSLog("[VoicePnBridge] setPendingPushAction - action: \(action), metadata: \(metadata)")
|
|
36
|
-
resolve(true)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
@objc
|
|
40
|
-
func clearPendingPushAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
41
|
-
UserDefaults.standard.removeObject(forKey: "pending_push_action")
|
|
42
|
-
UserDefaults.standard.removeObject(forKey: "pending_push_metadata")
|
|
43
|
-
UserDefaults.standard.synchronize()
|
|
44
|
-
|
|
45
|
-
NSLog("[VoicePnBridge] clearPendingPushAction - cleared pending push data")
|
|
46
|
-
resolve(true)
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// MARK: - Additional UserDefaults methods from UserDefaultsModule
|
|
50
|
-
|
|
51
|
-
@objc
|
|
52
|
-
func getVoipToken(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
53
|
-
let token = UserDefaults.standard.string(forKey: "voip_push_token")
|
|
54
|
-
NSLog("[VoicePnBridge] getVoipToken called. token=\(token ?? "(nil)")")
|
|
55
|
-
resolve(token)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
@objc
|
|
59
|
-
func getPendingVoipPush(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
60
|
-
let pending = UserDefaults.standard.string(forKey: "pending_voip_push")
|
|
61
|
-
NSLog("[VoicePnBridge] getPendingVoipPush called. pending=\(pending ?? "(nil)")")
|
|
62
|
-
resolve(pending)
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
@objc
|
|
66
|
-
func clearPendingVoipPush(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
67
|
-
UserDefaults.standard.removeObject(forKey: "pending_voip_push")
|
|
68
|
-
UserDefaults.standard.synchronize()
|
|
69
|
-
NSLog("[VoicePnBridge] clearPendingVoipPush called. Cleared key pending_voip_push")
|
|
70
|
-
resolve(true)
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
@objc
|
|
74
|
-
func getPendingVoipAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
75
|
-
let pending = UserDefaults.standard.string(forKey: "pending_voip_action")
|
|
76
|
-
NSLog("[VoicePnBridge] getPendingVoipAction called. pending=\(pending ?? "(nil)")")
|
|
77
|
-
resolve(pending)
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
@objc
|
|
81
|
-
func clearPendingVoipAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
82
|
-
UserDefaults.standard.removeObject(forKey: "pending_voip_action")
|
|
83
|
-
UserDefaults.standard.synchronize()
|
|
84
|
-
NSLog("[VoicePnBridge] clearPendingVoipAction called. Cleared key pending_voip_action")
|
|
85
|
-
resolve(true)
|
|
86
|
-
}
|
|
1
|
+
import Foundation
|
|
2
|
+
import React
|
|
3
|
+
|
|
4
|
+
@objc(VoicePnBridge)
|
|
5
|
+
class VoicePnBridge: NSObject {
|
|
6
|
+
|
|
7
|
+
@objc
|
|
8
|
+
static func requiresMainQueueSetup() -> Bool {
|
|
9
|
+
return false
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// MARK: - UserDefaults-based methods for VoIP push handling
|
|
13
|
+
|
|
14
|
+
@objc
|
|
15
|
+
func getPendingPushAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
16
|
+
let action = UserDefaults.standard.string(forKey: "pending_push_action")
|
|
17
|
+
let metadata = UserDefaults.standard.string(forKey: "pending_push_metadata")
|
|
18
|
+
|
|
19
|
+
NSLog("[VoicePnBridge] getPendingPushAction - action: \(action ?? "nil"), metadata: \(metadata ?? "nil")")
|
|
20
|
+
|
|
21
|
+
let result: [String: Any?] = [
|
|
22
|
+
"action": action,
|
|
23
|
+
"metadata": metadata
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
resolve(result)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
@objc
|
|
30
|
+
func setPendingPushAction(_ action: String, metadata: String, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
31
|
+
UserDefaults.standard.set(action, forKey: "pending_push_action")
|
|
32
|
+
UserDefaults.standard.set(metadata, forKey: "pending_push_metadata")
|
|
33
|
+
UserDefaults.standard.synchronize()
|
|
34
|
+
|
|
35
|
+
NSLog("[VoicePnBridge] setPendingPushAction - action: \(action), metadata: \(metadata)")
|
|
36
|
+
resolve(true)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@objc
|
|
40
|
+
func clearPendingPushAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
41
|
+
UserDefaults.standard.removeObject(forKey: "pending_push_action")
|
|
42
|
+
UserDefaults.standard.removeObject(forKey: "pending_push_metadata")
|
|
43
|
+
UserDefaults.standard.synchronize()
|
|
44
|
+
|
|
45
|
+
NSLog("[VoicePnBridge] clearPendingPushAction - cleared pending push data")
|
|
46
|
+
resolve(true)
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// MARK: - Additional UserDefaults methods from UserDefaultsModule
|
|
50
|
+
|
|
51
|
+
@objc
|
|
52
|
+
func getVoipToken(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
53
|
+
let token = UserDefaults.standard.string(forKey: "voip_push_token")
|
|
54
|
+
NSLog("[VoicePnBridge] getVoipToken called. token=\(token ?? "(nil)")")
|
|
55
|
+
resolve(token)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@objc
|
|
59
|
+
func getPendingVoipPush(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
60
|
+
let pending = UserDefaults.standard.string(forKey: "pending_voip_push")
|
|
61
|
+
NSLog("[VoicePnBridge] getPendingVoipPush called. pending=\(pending ?? "(nil)")")
|
|
62
|
+
resolve(pending)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@objc
|
|
66
|
+
func clearPendingVoipPush(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
67
|
+
UserDefaults.standard.removeObject(forKey: "pending_voip_push")
|
|
68
|
+
UserDefaults.standard.synchronize()
|
|
69
|
+
NSLog("[VoicePnBridge] clearPendingVoipPush called. Cleared key pending_voip_push")
|
|
70
|
+
resolve(true)
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
@objc
|
|
74
|
+
func getPendingVoipAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
75
|
+
let pending = UserDefaults.standard.string(forKey: "pending_voip_action")
|
|
76
|
+
NSLog("[VoicePnBridge] getPendingVoipAction called. pending=\(pending ?? "(nil)")")
|
|
77
|
+
resolve(pending)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
@objc
|
|
81
|
+
func clearPendingVoipAction(_ resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
82
|
+
UserDefaults.standard.removeObject(forKey: "pending_voip_action")
|
|
83
|
+
UserDefaults.standard.synchronize()
|
|
84
|
+
NSLog("[VoicePnBridge] clearPendingVoipAction called. Cleared key pending_voip_action")
|
|
85
|
+
resolve(true)
|
|
86
|
+
}
|
|
87
87
|
}
|
|
@@ -8,123 +8,116 @@ import { TelnyxVoipClient } from '../telnyx-voip-client';
|
|
|
8
8
|
* guidelines for proper CallKit integration.
|
|
9
9
|
*/
|
|
10
10
|
declare class CallKitCoordinator {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
call: Call,
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
* This helps prevent disconnection during push call handling
|
|
122
|
-
*/
|
|
123
|
-
getIsCallFromPush(): boolean;
|
|
124
|
-
/**
|
|
125
|
-
* Check if CallKit is available and coordinator is active
|
|
126
|
-
*/
|
|
127
|
-
isAvailable(): boolean;
|
|
11
|
+
private static instance;
|
|
12
|
+
private callMap;
|
|
13
|
+
private processingCalls;
|
|
14
|
+
private endedCalls;
|
|
15
|
+
private connectedCalls;
|
|
16
|
+
private isCallFromPush;
|
|
17
|
+
private shouldAutoAnswerNextCall;
|
|
18
|
+
private voipClient;
|
|
19
|
+
static getInstance(): CallKitCoordinator;
|
|
20
|
+
private constructor();
|
|
21
|
+
private setupCallKitListeners;
|
|
22
|
+
/**
|
|
23
|
+
* Report an incoming call to CallKit (from push notification or socket)
|
|
24
|
+
* For push notifications, the call is already reported - we just need to map it
|
|
25
|
+
*/
|
|
26
|
+
reportIncomingCall(call: Call, callerName: string, callerNumber: string): Promise<string | null>;
|
|
27
|
+
/**
|
|
28
|
+
* Start an outgoing call through CallKit
|
|
29
|
+
*/
|
|
30
|
+
startOutgoingCall(call: Call, destinationNumber: string, displayName?: string): Promise<string | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Answer a call from the app UI (CallKit-first approach)
|
|
33
|
+
*/
|
|
34
|
+
answerCallFromUI(call: Call): Promise<boolean>;
|
|
35
|
+
/**
|
|
36
|
+
* End a call from the app UI (CallKit-first approach)
|
|
37
|
+
*/
|
|
38
|
+
endCallFromUI(call: Call): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Handle CallKit answer action (triggered by CallKit)
|
|
41
|
+
*/
|
|
42
|
+
handleCallKitAnswer(callKitUUID: string, event?: any): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Handle CallKit end action (triggered by CallKit)
|
|
45
|
+
*/
|
|
46
|
+
private handleCallKitEnd;
|
|
47
|
+
/**
|
|
48
|
+
* Handle CallKit start action (triggered by CallKit for outgoing calls)
|
|
49
|
+
*/
|
|
50
|
+
private handleCallKitStart;
|
|
51
|
+
/**
|
|
52
|
+
* Handle CallKit push received event
|
|
53
|
+
* This allows us to coordinate between the push notification and any subsequent WebRTC calls
|
|
54
|
+
*/
|
|
55
|
+
handleCallKitPushReceived(callKitUUID: string, event?: any): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Handle push notification answer - when user answers from CallKit but we don't have a WebRTC call yet
|
|
58
|
+
* This is the iOS equivalent of the Android FCM handler
|
|
59
|
+
*/
|
|
60
|
+
private handlePushNotificationAnswer;
|
|
61
|
+
/**
|
|
62
|
+
* Handle push notification reject - when user rejects from CallKit but we don't have a WebRTC call yet
|
|
63
|
+
* This is the iOS equivalent of the Android FCM handler reject
|
|
64
|
+
*/
|
|
65
|
+
private handlePushNotificationReject;
|
|
66
|
+
/**
|
|
67
|
+
* Set up listeners for WebRTC call state changes
|
|
68
|
+
*/
|
|
69
|
+
private setupWebRTCCallListeners;
|
|
70
|
+
/**
|
|
71
|
+
* Clean up call mappings and listeners
|
|
72
|
+
*/
|
|
73
|
+
private cleanupCall;
|
|
74
|
+
/**
|
|
75
|
+
* Get CallKit UUID for a WebRTC call
|
|
76
|
+
*/
|
|
77
|
+
getCallKitUUID(call: Call): string | null;
|
|
78
|
+
/**
|
|
79
|
+
* Get WebRTC call for a CallKit UUID
|
|
80
|
+
*/
|
|
81
|
+
getWebRTCCall(callKitUUID: string): Call | null;
|
|
82
|
+
/**
|
|
83
|
+
* Link an existing CallKit call (from push notification) with a WebRTC call
|
|
84
|
+
* This should be called when a WebRTC call arrives that corresponds to an existing CallKit call
|
|
85
|
+
*/
|
|
86
|
+
linkExistingCallKitCall(call: Call, callKitUUID: string): void;
|
|
87
|
+
/**
|
|
88
|
+
* Set the VoIP client reference for triggering reconnection
|
|
89
|
+
*/
|
|
90
|
+
setVoipClient(voipClient: TelnyxVoipClient): void;
|
|
91
|
+
/**
|
|
92
|
+
* Helper method to clean up push notification state
|
|
93
|
+
*/
|
|
94
|
+
private cleanupPushNotificationState;
|
|
95
|
+
/**
|
|
96
|
+
* Get reference to the SDK client (for queuing actions when call doesn't exist yet)
|
|
97
|
+
*/
|
|
98
|
+
private getSDKClient;
|
|
99
|
+
/**
|
|
100
|
+
* Check if app is in background and disconnect client if no active calls
|
|
101
|
+
*/
|
|
102
|
+
private checkBackgroundDisconnection;
|
|
103
|
+
/**
|
|
104
|
+
* Reset only flags (keeping active call mappings intact)
|
|
105
|
+
*/
|
|
106
|
+
resetFlags(): void;
|
|
107
|
+
/**
|
|
108
|
+
* Check if there are any calls currently being processed by CallKit
|
|
109
|
+
* This helps prevent premature flag resets during CallKit operations
|
|
110
|
+
*/
|
|
111
|
+
hasProcessingCalls(): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Check if there's currently a call from push notification being processed
|
|
114
|
+
* This helps prevent disconnection during push call handling
|
|
115
|
+
*/
|
|
116
|
+
getIsCallFromPush(): boolean;
|
|
117
|
+
/**
|
|
118
|
+
* Check if CallKit is available and coordinator is active
|
|
119
|
+
*/
|
|
120
|
+
isAvailable(): boolean;
|
|
128
121
|
}
|
|
129
122
|
export declare const callKitCoordinator: CallKitCoordinator;
|
|
130
123
|
export default callKitCoordinator;
|