@stream-io/react-native-callingx 0.1.0-beta.1 → 0.1.0-beta.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/README.md +12 -8
- package/android/bin/src/main/AndroidManifest.xml +29 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/NotificationChannelsManager.kt +104 -0
- package/android/src/main/AndroidManifest.xml +0 -1
- package/android/src/main/java/io/getstream/rn/callingx/CallingxModule.kt +3 -3
- package/android/src/main/java/io/getstream/rn/callingx/notifications/NotificationChannelsManager.kt +9 -18
- package/dist/module/CallingxModule.js +2 -14
- package/dist/module/CallingxModule.js.map +1 -1
- package/dist/module/utils/constants.js +36 -9
- package/dist/module/utils/constants.js.map +1 -1
- package/dist/typescript/src/CallingxModule.d.ts +1 -5
- package/dist/typescript/src/CallingxModule.d.ts.map +1 -1
- package/dist/typescript/src/types.d.ts +41 -10
- package/dist/typescript/src/types.d.ts.map +1 -1
- package/dist/typescript/src/utils/constants.d.ts.map +1 -1
- package/ios/AudioSessionManager.swift +2 -7
- package/ios/CallingxImpl.swift +32 -27
- package/package.json +3 -3
- package/src/CallingxModule.ts +2 -30
- package/src/types.ts +35 -15
- package/src/utils/constants.ts +25 -16
- package/android/bin/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +0 -33
- package/android/bin/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +0 -18
- package/android/bin/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +0 -6
- package/android/bin/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +0 -4
- package/android/bin/build/intermediates/incremental/debug/packageDebugResources/merger.xml +0 -2
- package/android/bin/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +0 -60
- package/android/bin/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +0 -33
- package/android/bin/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +0 -1
- package/android/bin/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +0 -1
- package/android/bin/build/intermediates/packaged_res/debug/packageDebugResources/drawable/ic_phone_paused_24.xml +0 -11
- package/android/bin/build/intermediates/packaged_res/debug/packageDebugResources/drawable/ic_round_call_24.xml +0 -11
- package/android/bin/build/intermediates/packaged_res/debug/packageDebugResources/drawable/ic_user.xml +0 -27
- package/android/bin/build/outputs/logs/manifest-merger-debug-report.txt +0 -70
- package/android/bin/src/main/java/io/getstream/rn/callingx/CallService.kt +0 -402
- package/android/bin/src/main/java/io/getstream/rn/callingx/CallingxModule.kt +0 -644
- package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/CallNotificationManager.kt +0 -245
- package/android/bin/src/main/java/io/getstream/rn/callingx/repo/CallRepository.kt +0 -163
- package/android/bin/src/main/java/io/getstream/rn/callingx/repo/LegacyCallRepository.kt +0 -139
- package/android/bin/src/main/java/io/getstream/rn/callingx/repo/TelecomCallRepository.kt +0 -432
- package/dist/module/utils/permissions.js +0 -86
- package/dist/module/utils/permissions.js.map +0 -1
- package/dist/typescript/src/utils/permissions.d.ts +0 -8
- package/dist/typescript/src/utils/permissions.d.ts.map +0 -1
- package/src/utils/permissions.ts +0 -111
package/README.md
CHANGED
|
@@ -171,8 +171,9 @@ End a call with a specific reason:
|
|
|
171
171
|
```typescript
|
|
172
172
|
import type { EndCallReason } from 'react-native-callingx';
|
|
173
173
|
|
|
174
|
-
// Available reasons:
|
|
175
|
-
//
|
|
174
|
+
// Available reasons:
|
|
175
|
+
// 'local' | 'remote' | 'rejected' | 'busy' | 'answeredElsewhere' |
|
|
176
|
+
// 'missed' | 'error' | 'canceled' | 'restricted' | 'unknown'
|
|
176
177
|
await CallingxModule.endCallWithReason('unique-call-id', 'remote');
|
|
177
178
|
```
|
|
178
179
|
|
|
@@ -329,13 +330,16 @@ await CallingxModule.stopBackgroundTask();
|
|
|
329
330
|
|
|
330
331
|
```typescript
|
|
331
332
|
type EndCallReason =
|
|
332
|
-
| 'local' // Call ended by local user
|
|
333
|
-
| 'remote' // Call ended by remote party
|
|
334
|
-
| 'rejected' // Call was rejected
|
|
335
|
-
| 'busy' // Remote party
|
|
333
|
+
| 'local' // Call ended by the local user (e.g., hanging up)
|
|
334
|
+
| 'remote' // Call ended by the remote party, or outgoing not answered
|
|
335
|
+
| 'rejected' // Call was rejected/declined
|
|
336
|
+
| 'busy' // Remote party was busy
|
|
336
337
|
| 'answeredElsewhere' // Answered on another device
|
|
337
|
-
| 'missed' //
|
|
338
|
-
| 'error'
|
|
338
|
+
| 'missed' // No response to an incoming call
|
|
339
|
+
| 'error' // Call failed due to an error (e.g., network issue)
|
|
340
|
+
| 'canceled' // Call canceled before the remote party could answer
|
|
341
|
+
| 'restricted' // Call restricted (e.g., airplane mode)
|
|
342
|
+
| 'unknown'; // Unknown or unspecified disconnect reason
|
|
339
343
|
|
|
340
344
|
type CallingExpiOSOptions = {
|
|
341
345
|
appName: string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
2
|
+
|
|
3
|
+
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
|
|
4
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
5
|
+
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" />
|
|
6
|
+
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
|
|
7
|
+
|
|
8
|
+
<application>
|
|
9
|
+
<activity
|
|
10
|
+
android:name="io.getstream.rn.callingx.notifications.NotificationReceiverActivity"
|
|
11
|
+
android:excludeFromRecents="true"
|
|
12
|
+
android:exported="false"
|
|
13
|
+
android:noHistory="true"
|
|
14
|
+
android:taskAffinity=""
|
|
15
|
+
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
|
|
16
|
+
|
|
17
|
+
<service
|
|
18
|
+
android:name="io.getstream.rn.callingx.notifications.NotificationReceiverService"
|
|
19
|
+
android:exported="false" />
|
|
20
|
+
|
|
21
|
+
<service
|
|
22
|
+
android:name="io.getstream.rn.callingx.CallService"
|
|
23
|
+
android:enabled="true"
|
|
24
|
+
android:exported="false"
|
|
25
|
+
android:foregroundServiceType="phoneCall"
|
|
26
|
+
android:stopWithTask="true" />
|
|
27
|
+
|
|
28
|
+
</application>
|
|
29
|
+
</manifest>
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
package io.getstream.rn.callingx.notifications
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import android.os.Build
|
|
5
|
+
import androidx.core.app.NotificationChannelCompat
|
|
6
|
+
import androidx.core.app.NotificationManagerCompat
|
|
7
|
+
import io.getstream.rn.callingx.debugLog
|
|
8
|
+
|
|
9
|
+
class NotificationChannelsManager(
|
|
10
|
+
private val context: Context,
|
|
11
|
+
private val notificationManager: NotificationManagerCompat =
|
|
12
|
+
NotificationManagerCompat.from(context)
|
|
13
|
+
) {
|
|
14
|
+
|
|
15
|
+
private var notificationsConfig: NotificationsConfig.Channels? = null
|
|
16
|
+
|
|
17
|
+
companion object {
|
|
18
|
+
private const val TAG = "[Callingx] NotificationChannelsManager"
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
data class NotificationStatus(
|
|
22
|
+
val canPost: Boolean,
|
|
23
|
+
val hasPermissions: Boolean,
|
|
24
|
+
val areNotificationsEnabled: Boolean,
|
|
25
|
+
val isIncomingChannelEnabled: Boolean,
|
|
26
|
+
val isOngoingChannelEnabled: Boolean,
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
fun setNotificationsConfig(notificationsConfig: NotificationsConfig.Channels) {
|
|
30
|
+
this.notificationsConfig = notificationsConfig
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
fun createNotificationChannels() {
|
|
34
|
+
notificationsConfig?.let {
|
|
35
|
+
val incomingChannel = createNotificationChannel(it.incomingChannel)
|
|
36
|
+
val ongoingChannel = createNotificationChannel(it.ongoingChannel)
|
|
37
|
+
|
|
38
|
+
notificationManager.createNotificationChannelsCompat(
|
|
39
|
+
listOf(
|
|
40
|
+
incomingChannel,
|
|
41
|
+
ongoingChannel,
|
|
42
|
+
),
|
|
43
|
+
)
|
|
44
|
+
debugLog(TAG, "createNotificationChannels: Notification channels registered")
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
fun getNotificationStatus(): NotificationStatus {
|
|
49
|
+
val areNotificationsEnabled = areNotificationsEnabled()
|
|
50
|
+
val hasPermissions = hasNotificationPermissions()
|
|
51
|
+
val isIncomingChannelEnabled = isChannelEnabled(notificationsConfig?.incomingChannel?.id)
|
|
52
|
+
val isOngoingChannelEnabled = isChannelEnabled(notificationsConfig?.ongoingChannel?.id)
|
|
53
|
+
|
|
54
|
+
val canPost =
|
|
55
|
+
areNotificationsEnabled &&
|
|
56
|
+
hasPermissions &&
|
|
57
|
+
isIncomingChannelEnabled &&
|
|
58
|
+
isOngoingChannelEnabled
|
|
59
|
+
|
|
60
|
+
return NotificationStatus(
|
|
61
|
+
canPost,
|
|
62
|
+
hasPermissions,
|
|
63
|
+
areNotificationsEnabled,
|
|
64
|
+
isIncomingChannelEnabled,
|
|
65
|
+
isOngoingChannelEnabled
|
|
66
|
+
)
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
private fun createNotificationChannel(
|
|
70
|
+
config: NotificationsConfig.ChannelParams
|
|
71
|
+
): NotificationChannelCompat {
|
|
72
|
+
return NotificationChannelCompat.Builder(config.id, config.importance)
|
|
73
|
+
.apply {
|
|
74
|
+
setName(config.name)
|
|
75
|
+
setVibrationEnabled(config.vibration)
|
|
76
|
+
setSound(null, null)
|
|
77
|
+
}
|
|
78
|
+
.build()
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
private fun areNotificationsEnabled(): Boolean {
|
|
82
|
+
return notificationManager.areNotificationsEnabled()
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
private fun hasNotificationPermissions(): Boolean {
|
|
86
|
+
// CallStyle notifications are exempt from POST_NOTIFICATIONS on Android 13+
|
|
87
|
+
// when the app self-manages phone calls (MANAGE_OWN_CALLS + ConnectionService).
|
|
88
|
+
// This package uses that path, so we always allow posting call notifications.
|
|
89
|
+
return true
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
private fun isChannelEnabled(channelId: String?): Boolean {
|
|
93
|
+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
|
|
94
|
+
return true
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (channelId == null) {
|
|
98
|
+
return false
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
val channel = notificationManager.getNotificationChannel(channelId)
|
|
102
|
+
return channel != null && channel.importance != NotificationManagerCompat.IMPORTANCE_NONE
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
2
2
|
|
|
3
3
|
<uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
|
|
4
|
-
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
|
5
4
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
6
5
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_PHONE_CALL" />
|
|
7
6
|
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT" />
|
|
@@ -178,7 +178,7 @@ class CallingxModule(reactContext: ReactApplicationContext) : NativeCallingxSpec
|
|
|
178
178
|
"[module] displayIncomingCall: Displaying incoming call: $callId, $phoneNumber, $callerName, $hasVideo"
|
|
179
179
|
)
|
|
180
180
|
if (!notificationChannelsManager.getNotificationStatus().canPost) {
|
|
181
|
-
promise.reject("ERROR", "
|
|
181
|
+
promise.reject("ERROR", "Cannot post notifications")
|
|
182
182
|
return
|
|
183
183
|
}
|
|
184
184
|
|
|
@@ -217,7 +217,7 @@ class CallingxModule(reactContext: ReactApplicationContext) : NativeCallingxSpec
|
|
|
217
217
|
"[module] startCall: Starting outgoing call: $callId, $phoneNumber, $callerName, $hasVideo, $displayOptions"
|
|
218
218
|
)
|
|
219
219
|
if (!notificationChannelsManager.getNotificationStatus().canPost) {
|
|
220
|
-
promise.reject("ERROR", "
|
|
220
|
+
promise.reject("ERROR", "Cannot post notifications")
|
|
221
221
|
return
|
|
222
222
|
}
|
|
223
223
|
|
|
@@ -242,7 +242,7 @@ class CallingxModule(reactContext: ReactApplicationContext) : NativeCallingxSpec
|
|
|
242
242
|
) {
|
|
243
243
|
debugLog(TAG, "[module] updateDisplay: Updating display: $callId, $phoneNumber, $callerName")
|
|
244
244
|
if (!notificationChannelsManager.getNotificationStatus().canPost) {
|
|
245
|
-
promise.reject("ERROR", "
|
|
245
|
+
promise.reject("ERROR", "Cannot post notifications")
|
|
246
246
|
return
|
|
247
247
|
}
|
|
248
248
|
|
package/android/src/main/java/io/getstream/rn/callingx/notifications/NotificationChannelsManager.kt
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
package io.getstream.rn.callingx.notifications
|
|
2
2
|
|
|
3
|
-
import android.Manifest
|
|
4
3
|
import android.content.Context
|
|
5
4
|
import android.os.Build
|
|
6
5
|
import androidx.core.app.NotificationChannelCompat
|
|
7
6
|
import androidx.core.app.NotificationManagerCompat
|
|
8
|
-
import androidx.core.content.PermissionChecker
|
|
9
7
|
import io.getstream.rn.callingx.debugLog
|
|
10
8
|
|
|
11
9
|
class NotificationChannelsManager(
|
|
@@ -53,14 +51,16 @@ class NotificationChannelsManager(
|
|
|
53
51
|
val isIncomingChannelEnabled = isChannelEnabled(notificationsConfig?.incomingChannel?.id)
|
|
54
52
|
val isOngoingChannelEnabled = isChannelEnabled(notificationsConfig?.ongoingChannel?.id)
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
// CallStyle is exempt from notification permission when self-managing calls (Android 13+).
|
|
55
|
+
// On older versions we require areNotificationsEnabled().
|
|
56
|
+
val canPostCallStyle =
|
|
57
|
+
hasPermissions &&
|
|
59
58
|
isIncomingChannelEnabled &&
|
|
60
|
-
isOngoingChannelEnabled
|
|
59
|
+
isOngoingChannelEnabled &&
|
|
60
|
+
(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU || areNotificationsEnabled())
|
|
61
61
|
|
|
62
62
|
return NotificationStatus(
|
|
63
|
-
|
|
63
|
+
canPostCallStyle,
|
|
64
64
|
hasPermissions,
|
|
65
65
|
areNotificationsEnabled,
|
|
66
66
|
isIncomingChannelEnabled,
|
|
@@ -85,17 +85,8 @@ class NotificationChannelsManager(
|
|
|
85
85
|
}
|
|
86
86
|
|
|
87
87
|
private fun hasNotificationPermissions(): Boolean {
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
return true
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
val permission =
|
|
94
|
-
PermissionChecker.checkSelfPermission(
|
|
95
|
-
context,
|
|
96
|
-
Manifest.permission.POST_NOTIFICATIONS,
|
|
97
|
-
)
|
|
98
|
-
return permission == PermissionChecker.PERMISSION_GRANTED
|
|
88
|
+
// CallStyle is exempt from notification permission when self-managing calls.
|
|
89
|
+
return true
|
|
99
90
|
}
|
|
100
91
|
|
|
101
92
|
private fun isChannelEnabled(channelId: String?): Boolean {
|
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import { Platform } from 'react-native';
|
|
4
4
|
import NativeCallingModule from "./spec/NativeCallingx.js";
|
|
5
|
-
import { checkCallPermissions, requestCallPermissions } from "./utils/permissions.js";
|
|
6
5
|
import { HEADLESS_TASK_NAME, registerHeadlessTask, setHeadlessTask } from "./utils/headlessTask.js";
|
|
7
6
|
import { EventManager } from "./EventManager.js";
|
|
8
7
|
import { androidEndCallReasonMap, defaultAndroidOptions, defaultiOSOptions, defaultTextTransformer, iosEndCallReasonMap } from "./utils/constants.js";
|
|
9
8
|
import { isVoipEvent } from "./utils/utils.js";
|
|
10
9
|
class CallingxModule {
|
|
11
|
-
_isNotificationsAllowed = false;
|
|
12
10
|
_isSetup = false;
|
|
13
11
|
_isOngoingCallsEnabled = false;
|
|
14
12
|
_isHeadlessTaskRegistered = false;
|
|
@@ -16,11 +14,11 @@ class CallingxModule {
|
|
|
16
14
|
subtitleTransformer = undefined;
|
|
17
15
|
eventManager = new EventManager();
|
|
18
16
|
voipEventManager = new EventManager();
|
|
19
|
-
get
|
|
17
|
+
get canPostNotifications() {
|
|
20
18
|
if (Platform.OS !== 'android') {
|
|
21
19
|
return true;
|
|
22
20
|
}
|
|
23
|
-
return
|
|
21
|
+
return NativeCallingModule.canPostNotifications();
|
|
24
22
|
}
|
|
25
23
|
get isOngoingCallsEnabled() {
|
|
26
24
|
return this._isOngoingCallsEnabled;
|
|
@@ -70,16 +68,6 @@ class CallingxModule {
|
|
|
70
68
|
setShouldRejectCallWhenBusy(shouldReject) {
|
|
71
69
|
NativeCallingModule.setShouldRejectCallWhenBusy(shouldReject);
|
|
72
70
|
}
|
|
73
|
-
async requestPermissions() {
|
|
74
|
-
const result = await requestCallPermissions();
|
|
75
|
-
this._isNotificationsAllowed = result.postNotifications;
|
|
76
|
-
return result;
|
|
77
|
-
}
|
|
78
|
-
async checkPermissions() {
|
|
79
|
-
const result = await checkCallPermissions();
|
|
80
|
-
this._isNotificationsAllowed = result.postNotifications;
|
|
81
|
-
return result;
|
|
82
|
-
}
|
|
83
71
|
getInitialEvents() {
|
|
84
72
|
return NativeCallingModule.getInitialEvents();
|
|
85
73
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Platform","NativeCallingModule","
|
|
1
|
+
{"version":3,"names":["Platform","NativeCallingModule","HEADLESS_TASK_NAME","registerHeadlessTask","setHeadlessTask","EventManager","androidEndCallReasonMap","defaultAndroidOptions","defaultiOSOptions","defaultTextTransformer","iosEndCallReasonMap","isVoipEvent","CallingxModule","_isSetup","_isOngoingCallsEnabled","_isHeadlessTaskRegistered","titleTransformer","text","subtitleTransformer","undefined","eventManager","voipEventManager","canPostNotifications","OS","isOngoingCallsEnabled","isSetup","setup","options","enableOngoingCalls","setShouldRejectCallWhenBusy","shouldRejectCallWhenBusy","setupiOS","ios","incomingChannel","ongoingChannel","android","notificationsConfig","id","Error","setupAndroid","shouldReject","getInitialEvents","getInitialVoipEvents","setCurrentCallActive","callId","displayIncomingCall","phoneNumber","callerName","hasVideo","displayOptions","displayTitle","displaySubtitle","answerIncomingCall","startCall","updateDisplay","endCallWithReason","reason","reasons","endCall","isCallRegistered","hasRegisteredCall","setMutedCall","isMuted","setOnHoldCall","isOnHold","registerBackgroundTask","taskProvider","stopTask","stopBackgroundTask","taskData","registerBackgroundTaskAvailable","startBackgroundTask","isServiceStarted","registerVoipToken","addEventListener","eventName","callback","manager","addListener","remove","removeListener","log","message","level","module"],"sourceRoot":"../../src","sources":["CallingxModule.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -24,25 +24,52 @@ export const defaultAndroidOptions = {
|
|
|
24
24
|
}
|
|
25
25
|
};
|
|
26
26
|
|
|
27
|
-
//
|
|
27
|
+
// iOS: maps to CXCallEndedReason raw values.
|
|
28
|
+
// See https://developer.apple.com/documentation/callkit/cxcallendedreason
|
|
29
|
+
// CXCallEndedReason: failed=1, remoteEnded=2, unanswered=3, answeredElsewhere=4, declinedElsewhere=5
|
|
28
30
|
export const iosEndCallReasonMap = {
|
|
29
31
|
local: -1,
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
// special: uses endCall() instead of endCallWithReason()
|
|
33
|
+
remote: 2,
|
|
34
|
+
// .remoteEnded
|
|
35
|
+
rejected: 5,
|
|
36
|
+
// .declinedElsewhere
|
|
37
|
+
busy: 3,
|
|
38
|
+
// .unanswered
|
|
39
|
+
answeredElsewhere: 4,
|
|
40
|
+
// .answeredElsewhere
|
|
41
|
+
missed: 3,
|
|
42
|
+
// .unanswered
|
|
43
|
+
error: 1,
|
|
44
|
+
// .failed
|
|
45
|
+
canceled: 2,
|
|
46
|
+
// .remoteEnded (caller canceled before answer)
|
|
47
|
+
restricted: 1,
|
|
48
|
+
// .failed (no iOS equivalent)
|
|
49
|
+
unknown: 1 // .failed (no iOS equivalent)
|
|
36
50
|
};
|
|
37
51
|
|
|
38
|
-
//
|
|
52
|
+
// Android: maps to android.telecom.DisconnectCause constants.
|
|
53
|
+
// See https://developer.android.com/reference/android/telecom/DisconnectCause
|
|
39
54
|
export const androidEndCallReasonMap = {
|
|
40
55
|
local: 2,
|
|
56
|
+
// LOCAL
|
|
41
57
|
remote: 3,
|
|
58
|
+
// REMOTE
|
|
42
59
|
rejected: 6,
|
|
60
|
+
// REJECTED
|
|
43
61
|
busy: 7,
|
|
62
|
+
// BUSY
|
|
44
63
|
answeredElsewhere: 11,
|
|
64
|
+
// ANSWERED_ELSEWHERE
|
|
45
65
|
missed: 5,
|
|
46
|
-
|
|
66
|
+
// MISSED
|
|
67
|
+
error: 1,
|
|
68
|
+
// ERROR
|
|
69
|
+
canceled: 4,
|
|
70
|
+
// CANCELED
|
|
71
|
+
restricted: 8,
|
|
72
|
+
// RESTRICTED
|
|
73
|
+
unknown: 0 // UNKNOWN
|
|
47
74
|
};
|
|
48
75
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["defaultTextTransformer","text","defaultiOSOptions","supportsVideo","maximumCallsPerCallGroup","maximumCallGroups","handleType","sound","imageName","callsHistory","displayCallTimeout","defaultAndroidOptions","incomingChannel","id","name","vibration","ongoingChannel","iosEndCallReasonMap","local","remote","rejected","busy","answeredElsewhere","missed","error","androidEndCallReasonMap"],"sourceRoot":"../../../src","sources":["utils/constants.ts"],"mappings":";;AAQA,OAAO,MAAMA,sBAAuC,GAAIC,IAAY,IAAKA,IAAI;AAE7E,OAAO,MAAMC,iBAA+C,GAAG;EAC7DC,aAAa,EAAE,IAAI;EACnBC,wBAAwB,EAAE,CAAC;EAC3BC,iBAAiB,EAAE,CAAC;EACpBC,UAAU,EAAE,SAAS;EACrBC,KAAK,EAAE,EAAE;EACTC,SAAS,EAAE,EAAE;EACbC,YAAY,EAAE,KAAK;EACnBC,kBAAkB,EAAE,KAAK,CAAE;AAC7B,CAAC;AAED,OAAO,MAAMC,qBAA2D,GAAG;EACzEC,eAAe,EAAE;IACfC,EAAE,EAAE,+BAA+B;IACnCC,IAAI,EAAE,gBAAgB;IACtBP,KAAK,EAAE,EAAE;IACTQ,SAAS,EAAE;EACb,CAAC;EACDC,cAAc,EAAE;IACdH,EAAE,EAAE,8BAA8B;IAClCC,IAAI,EAAE;EACR;AACF,CAAC;;AAED;AACA,OAAO,MAAMG,mBAAkD,GAAG;EAChEC,KAAK,EAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"names":["defaultTextTransformer","text","defaultiOSOptions","supportsVideo","maximumCallsPerCallGroup","maximumCallGroups","handleType","sound","imageName","callsHistory","displayCallTimeout","defaultAndroidOptions","incomingChannel","id","name","vibration","ongoingChannel","iosEndCallReasonMap","local","remote","rejected","busy","answeredElsewhere","missed","error","canceled","restricted","unknown","androidEndCallReasonMap"],"sourceRoot":"../../../src","sources":["utils/constants.ts"],"mappings":";;AAQA,OAAO,MAAMA,sBAAuC,GAAIC,IAAY,IAAKA,IAAI;AAE7E,OAAO,MAAMC,iBAA+C,GAAG;EAC7DC,aAAa,EAAE,IAAI;EACnBC,wBAAwB,EAAE,CAAC;EAC3BC,iBAAiB,EAAE,CAAC;EACpBC,UAAU,EAAE,SAAS;EACrBC,KAAK,EAAE,EAAE;EACTC,SAAS,EAAE,EAAE;EACbC,YAAY,EAAE,KAAK;EACnBC,kBAAkB,EAAE,KAAK,CAAE;AAC7B,CAAC;AAED,OAAO,MAAMC,qBAA2D,GAAG;EACzEC,eAAe,EAAE;IACfC,EAAE,EAAE,+BAA+B;IACnCC,IAAI,EAAE,gBAAgB;IACtBP,KAAK,EAAE,EAAE;IACTQ,SAAS,EAAE;EACb,CAAC;EACDC,cAAc,EAAE;IACdH,EAAE,EAAE,8BAA8B;IAClCC,IAAI,EAAE;EACR;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMG,mBAAkD,GAAG;EAChEC,KAAK,EAAE,CAAC,CAAC;EAAE;EACXC,MAAM,EAAE,CAAC;EAAE;EACXC,QAAQ,EAAE,CAAC;EAAE;EACbC,IAAI,EAAE,CAAC;EAAE;EACTC,iBAAiB,EAAE,CAAC;EAAE;EACtBC,MAAM,EAAE,CAAC;EAAE;EACXC,KAAK,EAAE,CAAC;EAAE;EACVC,QAAQ,EAAE,CAAC;EAAE;EACbC,UAAU,EAAE,CAAC;EAAE;EACfC,OAAO,EAAE,CAAC,CAAE;AACd,CAAC;;AAED;AACA;AACA,OAAO,MAAMC,uBAAsD,GAAG;EACpEV,KAAK,EAAE,CAAC;EAAE;EACVC,MAAM,EAAE,CAAC;EAAE;EACXC,QAAQ,EAAE,CAAC;EAAE;EACbC,IAAI,EAAE,CAAC;EAAE;EACTC,iBAAiB,EAAE,EAAE;EAAE;EACvBC,MAAM,EAAE,CAAC;EAAE;EACXC,KAAK,EAAE,CAAC;EAAE;EACVC,QAAQ,EAAE,CAAC;EAAE;EACbC,UAAU,EAAE,CAAC;EAAE;EACfC,OAAO,EAAE,CAAC,CAAE;AACd,CAAC","ignoreList":[]}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import type { PermissionsResult } from './utils/permissions';
|
|
2
1
|
import type { ManagableTask } from './utils/headlessTask';
|
|
3
2
|
import type { EventListener } from './EventManager';
|
|
4
3
|
import { type ICallingxModule, type EndCallReason, type EventData, type EventName, type EventParams, type CallingExpOptions, type VoipEventName, type VoipEventParams, type VoipEventData } from './types';
|
|
5
4
|
declare class CallingxModule implements ICallingxModule {
|
|
6
|
-
private _isNotificationsAllowed;
|
|
7
5
|
private _isSetup;
|
|
8
6
|
private _isOngoingCallsEnabled;
|
|
9
7
|
private _isHeadlessTaskRegistered;
|
|
@@ -11,13 +9,11 @@ declare class CallingxModule implements ICallingxModule {
|
|
|
11
9
|
private subtitleTransformer;
|
|
12
10
|
private eventManager;
|
|
13
11
|
private voipEventManager;
|
|
14
|
-
get
|
|
12
|
+
get canPostNotifications(): boolean;
|
|
15
13
|
get isOngoingCallsEnabled(): boolean;
|
|
16
14
|
get isSetup(): boolean;
|
|
17
15
|
setup(options: CallingExpOptions): void;
|
|
18
16
|
setShouldRejectCallWhenBusy(shouldReject: boolean): void;
|
|
19
|
-
requestPermissions(): Promise<PermissionsResult>;
|
|
20
|
-
checkPermissions(): Promise<PermissionsResult>;
|
|
21
17
|
getInitialEvents(): EventData[];
|
|
22
18
|
getInitialVoipEvents(): VoipEventData[];
|
|
23
19
|
setCurrentCallActive(callId: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallingxModule.d.ts","sourceRoot":"","sources":["../../../src/CallingxModule.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CallingxModule.d.ts","sourceRoot":"","sources":["../../../src/CallingxModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import type { EventListener } from './EventManager';
|
|
2
2
|
import type { ManagableTask } from './utils/headlessTask';
|
|
3
|
-
import type { PermissionsResult } from './utils/permissions';
|
|
4
3
|
export interface ICallingxModule {
|
|
5
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Whether the module can post call notifications. Android only. iOS always returns true.
|
|
6
|
+
* Returns true when:
|
|
7
|
+
* - The incoming notification channel is enabled,
|
|
8
|
+
* - The ongoing notification channel is enabled,
|
|
9
|
+
* - And on Android 12 and below: app notifications are enabled in system settings.
|
|
10
|
+
* CallStyle is exempt from the POST_NOTIFICATIONS permission on Android 13+ when self-managing calls.
|
|
11
|
+
* @returns The boolean value.
|
|
12
|
+
*/
|
|
13
|
+
get canPostNotifications(): boolean;
|
|
6
14
|
get isOngoingCallsEnabled(): boolean;
|
|
7
15
|
get isSetup(): boolean;
|
|
8
16
|
/**
|
|
@@ -20,12 +28,6 @@ export interface ICallingxModule {
|
|
|
20
28
|
* @param shouldReject - Whether to reject calls when the user is busy.
|
|
21
29
|
*/
|
|
22
30
|
setShouldRejectCallWhenBusy(shouldReject: boolean): void;
|
|
23
|
-
/**
|
|
24
|
-
* Check the permissions.
|
|
25
|
-
* @returns The permissions result.
|
|
26
|
-
*/
|
|
27
|
-
checkPermissions(): Promise<PermissionsResult>;
|
|
28
|
-
requestPermissions(): Promise<PermissionsResult>;
|
|
29
31
|
/**
|
|
30
32
|
* Get the initial events. This method is used to get the initial events from the app launch.
|
|
31
33
|
* The events are queued and can be retrieved after the module is setup.
|
|
@@ -129,7 +131,7 @@ export type InternalIOSOptions = {
|
|
|
129
131
|
*/
|
|
130
132
|
displayCallTimeout?: number;
|
|
131
133
|
};
|
|
132
|
-
type iOSOptions = Omit<InternalIOSOptions, 'maximumCallsPerCallGroup' | 'maximumCallGroups' | 'handleType'
|
|
134
|
+
type iOSOptions = Omit<InternalIOSOptions, 'maximumCallsPerCallGroup' | 'maximumCallGroups' | 'handleType'>;
|
|
133
135
|
export type InternalAndroidOptions = {
|
|
134
136
|
/**
|
|
135
137
|
* Incoming channel configuration.
|
|
@@ -244,6 +246,35 @@ export type VoipEventParams = {
|
|
|
244
246
|
};
|
|
245
247
|
};
|
|
246
248
|
};
|
|
247
|
-
|
|
249
|
+
/**
|
|
250
|
+
* The reason for ending a call. These values are mapped to platform-specific
|
|
251
|
+
* constants on each platform:
|
|
252
|
+
* - iOS: `CXCallEndedReason` (CallKit)
|
|
253
|
+
* - Android: `DisconnectCause` (Telecom)
|
|
254
|
+
*
|
|
255
|
+
* @see https://developer.apple.com/documentation/callkit/cxcallendedreason
|
|
256
|
+
* @see https://developer.android.com/reference/android/telecom/DisconnectCause
|
|
257
|
+
*/
|
|
258
|
+
export type EndCallReason =
|
|
259
|
+
/** Call ended by the local user (e.g., hanging up). */
|
|
260
|
+
'local'
|
|
261
|
+
/** Call ended by the remote party, or outgoing call was not answered. */
|
|
262
|
+
| 'remote'
|
|
263
|
+
/** Call was rejected/declined by the user. */
|
|
264
|
+
| 'rejected'
|
|
265
|
+
/** Remote party was busy. */
|
|
266
|
+
| 'busy'
|
|
267
|
+
/** Call was answered on another device. */
|
|
268
|
+
| 'answeredElsewhere'
|
|
269
|
+
/** No response to an incoming call. */
|
|
270
|
+
| 'missed'
|
|
271
|
+
/** Call failed due to an error (e.g., network issue). */
|
|
272
|
+
| 'error'
|
|
273
|
+
/** Call was canceled before the remote party could answer. */
|
|
274
|
+
| 'canceled'
|
|
275
|
+
/** Call restricted (e.g., airplane mode, dialing restrictions). */
|
|
276
|
+
| 'restricted'
|
|
277
|
+
/** Unknown or unspecified disconnect reason. */
|
|
278
|
+
| 'unknown';
|
|
248
279
|
export {};
|
|
249
280
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,eAAO,MAAM,sBAAsB,EAAE,eAAwC,CAAC;AAE9E,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB,CAS1D,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,YAAY,CAAC,sBAAsB,CAWtE,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,eAAe,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,eAAO,MAAM,sBAAsB,EAAE,eAAwC,CAAC;AAE9E,eAAO,MAAM,iBAAiB,EAAE,QAAQ,CAAC,kBAAkB,CAS1D,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,YAAY,CAAC,sBAAsB,CAWtE,CAAC;AAKF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAW7D,CAAC;AAIF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAWjE,CAAC"}
|
|
@@ -15,7 +15,7 @@ import stream_react_native_webrtc
|
|
|
15
15
|
#else
|
|
16
16
|
categoryOptions = [.allowBluetooth, .defaultToSpeaker]
|
|
17
17
|
#endif
|
|
18
|
-
let mode: AVAudioSession.Mode = .
|
|
18
|
+
let mode: AVAudioSession.Mode = .voiceChat
|
|
19
19
|
|
|
20
20
|
// Configure RTCAudioSessionConfiguration to match our intended settings
|
|
21
21
|
// This ensures WebRTC's internal state stays consistent during interruptions/route changes
|
|
@@ -31,12 +31,7 @@ import stream_react_native_webrtc
|
|
|
31
31
|
defer { rtcSession.unlockForConfiguration() }
|
|
32
32
|
|
|
33
33
|
do {
|
|
34
|
-
try rtcSession.
|
|
35
|
-
|
|
36
|
-
// Apply sample rate and IO buffer duration from WebRTC's config (source of truth)
|
|
37
|
-
// This keeps CallKit setup aligned with WebRTC's intended tuning (e.g. 48kHz and ~20ms by default)
|
|
38
|
-
try rtcSession.setPreferredSampleRate(rtcConfig.sampleRate)
|
|
39
|
-
try rtcSession.setPreferredIOBufferDuration(rtcConfig.ioBufferDuration)
|
|
34
|
+
try rtcSession.setConfiguration(rtcConfig)
|
|
40
35
|
} catch {
|
|
41
36
|
#if DEBUG
|
|
42
37
|
print("[Callingx][createAudioSessionIfNeeded] Error configuring audio session: \(error)")
|