@stream-io/react-native-callingx 0.1.0-beta.0
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/Callingx.podspec +23 -0
- package/LICENSE +219 -0
- package/README.md +392 -0
- package/android/bin/build/generated/source/buildConfig/debug/io/getstream/rn/callingx/BuildConfig.class +0 -0
- package/android/bin/build/generated/source/codegen/java/io/getstream/rn/callingx/NativeCallingxSpec.class +0 -0
- package/android/bin/build/generated/source/codegen/jni/CMakeLists.txt +28 -0
- package/android/bin/build/generated/source/codegen/jni/CallingxSpec-generated.cpp +167 -0
- package/android/bin/build/generated/source/codegen/jni/CallingxSpec.h +31 -0
- package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/CallingxSpecJSI-generated.cpp +196 -0
- package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/CallingxSpecJSI.h +283 -0
- package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/ComponentDescriptors.cpp +22 -0
- package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/ComponentDescriptors.h +24 -0
- package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/EventEmitters.cpp +16 -0
- package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/EventEmitters.h +17 -0
- package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/Props.cpp +19 -0
- package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/Props.h +18 -0
- package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/ShadowNodes.cpp +17 -0
- package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/ShadowNodes.h +23 -0
- package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/States.cpp +16 -0
- package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/States.h +20 -0
- package/android/bin/build/generated/source/codegen/schema.json +1 -0
- package/android/bin/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +33 -0
- package/android/bin/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
- package/android/bin/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
- package/android/bin/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
- package/android/bin/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/bin/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
- package/android/bin/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +3 -0
- package/android/bin/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/drawable_ic_phone_paused_24.xml.flat +0 -0
- package/android/bin/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/drawable_ic_round_call_24.xml.flat +0 -0
- package/android/bin/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/drawable_ic_user.xml.flat +0 -0
- package/android/bin/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +4 -0
- package/android/bin/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
- package/android/bin/build/intermediates/incremental/mergeDebugAssets/merger.xml +2 -0
- package/android/bin/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/bin/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/bin/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/stream-io_react-native-callingx_debug.kotlin_module +0 -0
- package/android/bin/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +5 -0
- package/android/bin/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +60 -0
- package/android/bin/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +33 -0
- package/android/bin/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
- package/android/bin/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
- package/android/bin/build/intermediates/packaged_res/debug/packageDebugResources/drawable/ic_phone_paused_24.xml +11 -0
- package/android/bin/build/intermediates/packaged_res/debug/packageDebugResources/drawable/ic_round_call_24.xml +11 -0
- package/android/bin/build/intermediates/packaged_res/debug/packageDebugResources/drawable/ic_user.xml +27 -0
- package/android/bin/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/stream-io_react-native-callingx_debug.kotlin_module +0 -0
- package/android/bin/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/bin/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +4 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s +1 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
- package/android/bin/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
- package/android/bin/build/outputs/logs/manifest-merger-debug-report.txt +70 -0
- package/android/bin/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/bin/build/tmp/kotlin-classes/debug/META-INF/stream-io_react-native-callingx_debug.kotlin_module +0 -0
- package/android/bin/build.gradle +81 -0
- package/android/bin/gradle.properties +5 -0
- package/android/bin/local.properties +8 -0
- package/android/bin/src/main/AndroidManifest.xml +30 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/CallService.kt +396 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/CallingxModule.kt +639 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/CallingxPackage.kt +16 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/HeadlessTaskManager.kt +164 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/ResourceUtils.kt +60 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/Utils.kt +23 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/model/Call.kt +57 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/model/CallAction.kt +36 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/CallNotificationManager.kt +215 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/NotificationChannelsManager.kt +113 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/NotificationIntentFactory.kt +105 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/NotificationReceiverActivity.kt +42 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/NotificationReceiverService.kt +56 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/NotificationsConfig.kt +116 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/repo/CallRepository.kt +163 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/repo/LegacyCallRepository.kt +134 -0
- package/android/bin/src/main/java/io/getstream/rn/callingx/repo/TelecomCallRepository.kt +438 -0
- package/android/bin/src/main/res/drawable/ic_phone_paused_24.xml +11 -0
- package/android/bin/src/main/res/drawable/ic_round_call_24.xml +11 -0
- package/android/bin/src/main/res/drawable/ic_user.xml +27 -0
- package/android/build.gradle +81 -0
- package/android/gradle.properties +5 -0
- package/android/src/main/AndroidManifest.xml +30 -0
- package/android/src/main/java/io/getstream/rn/callingx/CallService.kt +396 -0
- package/android/src/main/java/io/getstream/rn/callingx/CallingxModule.kt +639 -0
- package/android/src/main/java/io/getstream/rn/callingx/CallingxPackage.kt +16 -0
- package/android/src/main/java/io/getstream/rn/callingx/HeadlessTaskManager.kt +164 -0
- package/android/src/main/java/io/getstream/rn/callingx/ResourceUtils.kt +60 -0
- package/android/src/main/java/io/getstream/rn/callingx/Utils.kt +23 -0
- package/android/src/main/java/io/getstream/rn/callingx/model/Call.kt +57 -0
- package/android/src/main/java/io/getstream/rn/callingx/model/CallAction.kt +36 -0
- package/android/src/main/java/io/getstream/rn/callingx/notifications/CallNotificationManager.kt +215 -0
- package/android/src/main/java/io/getstream/rn/callingx/notifications/NotificationChannelsManager.kt +113 -0
- package/android/src/main/java/io/getstream/rn/callingx/notifications/NotificationIntentFactory.kt +105 -0
- package/android/src/main/java/io/getstream/rn/callingx/notifications/NotificationReceiverActivity.kt +42 -0
- package/android/src/main/java/io/getstream/rn/callingx/notifications/NotificationReceiverService.kt +56 -0
- package/android/src/main/java/io/getstream/rn/callingx/notifications/NotificationsConfig.kt +116 -0
- package/android/src/main/java/io/getstream/rn/callingx/repo/CallRepository.kt +163 -0
- package/android/src/main/java/io/getstream/rn/callingx/repo/LegacyCallRepository.kt +134 -0
- package/android/src/main/java/io/getstream/rn/callingx/repo/TelecomCallRepository.kt +438 -0
- package/android/src/main/res/drawable/ic_phone_paused_24.xml +11 -0
- package/android/src/main/res/drawable/ic_round_call_24.xml +11 -0
- package/android/src/main/res/drawable/ic_user.xml +27 -0
- package/dist/module/CallingxModule.js +191 -0
- package/dist/module/CallingxModule.js.map +1 -0
- package/dist/module/EventManager.js +40 -0
- package/dist/module/EventManager.js.map +1 -0
- package/dist/module/index.js +5 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/package.json +1 -0
- package/dist/module/spec/NativeCallingx.js +8 -0
- package/dist/module/spec/NativeCallingx.js.map +1 -0
- package/dist/module/types.js +4 -0
- package/dist/module/types.js.map +1 -0
- package/dist/module/utils/constants.js +48 -0
- package/dist/module/utils/constants.js.map +1 -0
- package/dist/module/utils/headlessTask.js +37 -0
- package/dist/module/utils/headlessTask.js.map +1 -0
- package/dist/module/utils/permissions.js +86 -0
- package/dist/module/utils/permissions.js.map +1 -0
- package/dist/module/utils/types.js +2 -0
- package/dist/module/utils/types.js.map +1 -0
- package/dist/module/utils/utils.js +6 -0
- package/dist/module/utils/utils.js.map +1 -0
- package/dist/typescript/package.json +1 -0
- package/dist/typescript/src/CallingxModule.d.ts +44 -0
- package/dist/typescript/src/CallingxModule.d.ts.map +1 -0
- package/dist/typescript/src/EventManager.d.ts +11 -0
- package/dist/typescript/src/EventManager.d.ts.map +1 -0
- package/dist/typescript/src/index.d.ts +3 -0
- package/dist/typescript/src/index.d.ts.map +1 -0
- package/dist/typescript/src/spec/NativeCallingx.d.ts +132 -0
- package/dist/typescript/src/spec/NativeCallingx.d.ts.map +1 -0
- package/dist/typescript/src/types.d.ts +249 -0
- package/dist/typescript/src/types.d.ts.map +1 -0
- package/dist/typescript/src/utils/constants.d.ts +8 -0
- package/dist/typescript/src/utils/constants.d.ts.map +1 -0
- package/dist/typescript/src/utils/headlessTask.d.ts +8 -0
- package/dist/typescript/src/utils/headlessTask.d.ts.map +1 -0
- package/dist/typescript/src/utils/permissions.d.ts +8 -0
- package/dist/typescript/src/utils/permissions.d.ts.map +1 -0
- package/dist/typescript/src/utils/types.d.ts +4 -0
- package/dist/typescript/src/utils/types.d.ts.map +1 -0
- package/dist/typescript/src/utils/utils.d.ts +2 -0
- package/dist/typescript/src/utils/utils.d.ts.map +1 -0
- package/ios/AudioSessionManager.swift +46 -0
- package/ios/Callingx.mm +280 -0
- package/ios/CallingxImpl.swift +744 -0
- package/ios/CallingxPublic.h +79 -0
- package/ios/Settings.swift +108 -0
- package/ios/UUIDStorage.swift +124 -0
- package/ios/VoipNotificationsManager.swift +180 -0
- package/package.json +112 -0
- package/react-native.config.js +8 -0
- package/src/CallingxModule.ts +321 -0
- package/src/EventManager.ts +61 -0
- package/src/index.ts +2 -0
- package/src/spec/NativeCallingx.ts +176 -0
- package/src/types.ts +323 -0
- package/src/utils/constants.ts +55 -0
- package/src/utils/headlessTask.ts +52 -0
- package/src/utils/permissions.ts +111 -0
- package/src/utils/types.ts +5 -0
- package/src/utils/utils.ts +6 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import type { EventListener } from './EventManager';
|
|
2
|
+
import type { ManagableTask } from './utils/headlessTask';
|
|
3
|
+
import type { PermissionsResult } from './utils/permissions';
|
|
4
|
+
export interface ICallingxModule {
|
|
5
|
+
get isNotificationsAllowed(): boolean;
|
|
6
|
+
get isOngoingCallsEnabled(): boolean;
|
|
7
|
+
get isSetup(): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Setup the module. This method must be called before any other method.
|
|
10
|
+
* For iOS, the module will setup CallKit parameters.
|
|
11
|
+
* See: {@link InternalIOSOptions}
|
|
12
|
+
* For Android, the module will create notification channels.
|
|
13
|
+
* See: {@link InternalAndroidOptions}
|
|
14
|
+
* @param options - The options to setup the callingx module. See {@link CallingExpOptions}
|
|
15
|
+
*/
|
|
16
|
+
setup(options: CallingExpOptions): void;
|
|
17
|
+
/**
|
|
18
|
+
* Set whether to reject calls when the user is busy.
|
|
19
|
+
* The value is used in iOS native module to prevent calls registration in CallKit when the user is busy.
|
|
20
|
+
* @param shouldReject - Whether to reject calls when the user is busy.
|
|
21
|
+
*/
|
|
22
|
+
setShouldRejectCallWhenBusy(shouldReject: boolean): void;
|
|
23
|
+
/**
|
|
24
|
+
* Check the permissions.
|
|
25
|
+
* @returns The permissions result.
|
|
26
|
+
*/
|
|
27
|
+
checkPermissions(): Promise<PermissionsResult>;
|
|
28
|
+
requestPermissions(): Promise<PermissionsResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Get the initial events. This method is used to get the initial events from the app launch.
|
|
31
|
+
* The events are queued and can be retrieved after the module is setup.
|
|
32
|
+
* IMPORTANT: After the events are retrieved, new events will be sent to the event listeners.
|
|
33
|
+
* @returns The initial events.
|
|
34
|
+
*/
|
|
35
|
+
getInitialEvents(): EventData[];
|
|
36
|
+
/**
|
|
37
|
+
* Get the initial voip events. This method is used to get the initial voip events from the app launch.
|
|
38
|
+
* The events are queued and can be retrieved after the module is setup.
|
|
39
|
+
* IMPORTANT: After the events are retrieved, new events will be sent to the event listeners.
|
|
40
|
+
* @returns The initial voip events.
|
|
41
|
+
*/
|
|
42
|
+
getInitialVoipEvents(): VoipEventData[];
|
|
43
|
+
displayIncomingCall(callId: string, phoneNumber: string, callerName: string, hasVideo: boolean): Promise<void>;
|
|
44
|
+
answerIncomingCall(callId: string): Promise<void>;
|
|
45
|
+
startCall(callId: string, phoneNumber: string, callerName: string, hasVideo: boolean): Promise<void>;
|
|
46
|
+
/**
|
|
47
|
+
* Set the current call active. This method is used to set the current call active.
|
|
48
|
+
* This method is used to activate the call that was registered with {@link startCall}.
|
|
49
|
+
* @param callId - The call id.
|
|
50
|
+
* @returns The promise.
|
|
51
|
+
*/
|
|
52
|
+
setCurrentCallActive(callId: string): Promise<void>;
|
|
53
|
+
updateDisplay(callId: string, phoneNumber: string, callerName: string): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Check if the call is registered in CallKit/Telecom.
|
|
56
|
+
* @param callId - The call id.
|
|
57
|
+
* @returns The boolean value.
|
|
58
|
+
*/
|
|
59
|
+
isCallRegistered(callId: string): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Check if there is a registered call.
|
|
62
|
+
* @returns The boolean value.
|
|
63
|
+
*/
|
|
64
|
+
hasRegisteredCall(): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* End the call with a reason. This method is used to end the call with a reason.
|
|
67
|
+
* Note: In general invoking this method will trigger the call end event.
|
|
68
|
+
* But, in case of iOS, when the call is ended with the reason 'local', the call end event will not be triggered.
|
|
69
|
+
* @param callId - The call id.
|
|
70
|
+
* @param reason - The reason.
|
|
71
|
+
* @returns The promise.
|
|
72
|
+
*/
|
|
73
|
+
endCallWithReason(callId: string, reason: EndCallReason): Promise<void>;
|
|
74
|
+
setMutedCall(callId: string, isMuted: boolean): Promise<void>;
|
|
75
|
+
setOnHoldCall(callId: string, isOnHold: boolean): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Register a background task provider. This method only registers the task and does not start it.
|
|
78
|
+
* The task will be automatically started when the service starts (via displayIncomingCall or startCall)
|
|
79
|
+
* if it has been registered.
|
|
80
|
+
* @param taskProvider - The task provider function that will be executed when the background task starts.
|
|
81
|
+
*/
|
|
82
|
+
registerBackgroundTask(taskProvider: ManagableTask): void;
|
|
83
|
+
/**
|
|
84
|
+
* Start the background task. This method will only start the task if:
|
|
85
|
+
* 1. A background task has been registered via registerBackgroundTask
|
|
86
|
+
* 2. The service is currently started
|
|
87
|
+
* @param taskProvider - The task provider function. If not provided, uses the previously registered task.
|
|
88
|
+
* @returns Promise that resolves when the task is started, or rejects if conditions are not met.
|
|
89
|
+
*/
|
|
90
|
+
startBackgroundTask(taskProvider?: ManagableTask): Promise<void>;
|
|
91
|
+
stopBackgroundTask(taskName: string): Promise<void>;
|
|
92
|
+
registerVoipToken(): void;
|
|
93
|
+
/**
|
|
94
|
+
* Single entry point for adding event listeners.
|
|
95
|
+
* Automatically routes to the appropriate manager based on event type.
|
|
96
|
+
*
|
|
97
|
+
* @param eventName - The event name (EventName or VoipEventName)
|
|
98
|
+
* @param callback - The callback function that receives the event parameters
|
|
99
|
+
* @returns An object with a remove method to unsubscribe from the event
|
|
100
|
+
*/
|
|
101
|
+
addEventListener<T extends EventName | VoipEventName>(eventName: T, callback: EventListener<T extends EventName ? EventParams[T] : T extends VoipEventName ? VoipEventParams[T] : never>): {
|
|
102
|
+
remove: () => void;
|
|
103
|
+
};
|
|
104
|
+
log(message: string, level: 'debug' | 'info' | 'warn' | 'error'): void;
|
|
105
|
+
}
|
|
106
|
+
export type InternalIOSOptions = {
|
|
107
|
+
supportsVideo?: boolean;
|
|
108
|
+
maximumCallsPerCallGroup?: number;
|
|
109
|
+
maximumCallGroups?: number;
|
|
110
|
+
handleType?: 'generic' | 'number' | 'phone' | 'email';
|
|
111
|
+
/**
|
|
112
|
+
* Sound to play when an incoming call is received. Must be a valid sound resource name in the project.
|
|
113
|
+
* @default '' (no sound)
|
|
114
|
+
*/
|
|
115
|
+
sound?: string;
|
|
116
|
+
/**
|
|
117
|
+
* Image to display when an incoming call is received. Must be a valid image resource name in the project.
|
|
118
|
+
* @default '' (no image)
|
|
119
|
+
*/
|
|
120
|
+
imageName?: string;
|
|
121
|
+
/**
|
|
122
|
+
* Enable calls history. When enabled, the call will be added to the calls history.
|
|
123
|
+
* @default false
|
|
124
|
+
*/
|
|
125
|
+
callsHistory?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* Timeout to display an incoming call. When the call is displayed for more than the timeout, the call will be rejected.
|
|
128
|
+
* @default 60000 (1 minute)
|
|
129
|
+
*/
|
|
130
|
+
displayCallTimeout?: number;
|
|
131
|
+
};
|
|
132
|
+
type iOSOptions = Omit<InternalIOSOptions, 'maximumCallsPerCallGroup' | 'maximumCallGroups' | 'handleType' | 'setupAudioSession'>;
|
|
133
|
+
export type InternalAndroidOptions = {
|
|
134
|
+
/**
|
|
135
|
+
* Incoming channel configuration.
|
|
136
|
+
* @default { id: 'incoming_calls_channel', name: 'Incoming calls', sound: '', vibration: false }
|
|
137
|
+
*/
|
|
138
|
+
incomingChannel?: {
|
|
139
|
+
id?: string;
|
|
140
|
+
name?: string;
|
|
141
|
+
sound?: string;
|
|
142
|
+
vibration?: boolean;
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* Ongoing channel configuration.
|
|
146
|
+
* @default { id: 'ongoing_calls_channel', name: 'Ongoing calls' }
|
|
147
|
+
*/
|
|
148
|
+
ongoingChannel?: {
|
|
149
|
+
id?: string;
|
|
150
|
+
name?: string;
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
type AndroidOptions = InternalAndroidOptions & NotificationTransformers;
|
|
154
|
+
export type TextTransformer = (text: string, incoming: boolean) => string;
|
|
155
|
+
export type NotificationTransformers = {
|
|
156
|
+
titleTransformer?: TextTransformer;
|
|
157
|
+
subtitleTransformer?: TextTransformer;
|
|
158
|
+
};
|
|
159
|
+
export type CallingExpOptions = {
|
|
160
|
+
ios?: iOSOptions;
|
|
161
|
+
android?: AndroidOptions;
|
|
162
|
+
/**
|
|
163
|
+
* Whether to enable ongoing calls.
|
|
164
|
+
* @default false
|
|
165
|
+
*/
|
|
166
|
+
enableOngoingCalls?: boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Whether to reject calls when the user is busy.
|
|
169
|
+
* @default false
|
|
170
|
+
*/
|
|
171
|
+
shouldRejectCallWhenBusy?: boolean;
|
|
172
|
+
};
|
|
173
|
+
export type InfoDisplayOptions = {
|
|
174
|
+
displayTitle?: string;
|
|
175
|
+
displaySubtitle?: string;
|
|
176
|
+
};
|
|
177
|
+
export type EventData = {
|
|
178
|
+
eventName: EventName;
|
|
179
|
+
params: EventParams[EventName];
|
|
180
|
+
};
|
|
181
|
+
export type VoipEventData = {
|
|
182
|
+
eventName: VoipEventName;
|
|
183
|
+
params: VoipEventParams[VoipEventName];
|
|
184
|
+
};
|
|
185
|
+
export type EventName = 'answerCall' | 'endCall' | 'didDisplayIncomingCall' | 'didToggleHoldCallAction' | 'didChangeAudioRoute' | 'didReceiveStartCallAction' | 'didPerformSetMutedCallAction' | 'didActivateAudioSession' | 'didDeactivateAudioSession';
|
|
186
|
+
export type EventParams = {
|
|
187
|
+
answerCall: {
|
|
188
|
+
callId: string;
|
|
189
|
+
source: 'app' | 'sys';
|
|
190
|
+
};
|
|
191
|
+
endCall: {
|
|
192
|
+
callId: string;
|
|
193
|
+
cause: string;
|
|
194
|
+
source: 'app' | 'sys';
|
|
195
|
+
};
|
|
196
|
+
didDisplayIncomingCall: {
|
|
197
|
+
callId: string;
|
|
198
|
+
};
|
|
199
|
+
didToggleHoldCallAction: {
|
|
200
|
+
callId: string;
|
|
201
|
+
hold: boolean;
|
|
202
|
+
};
|
|
203
|
+
didPerformSetMutedCallAction: {
|
|
204
|
+
callId: string;
|
|
205
|
+
muted: boolean;
|
|
206
|
+
};
|
|
207
|
+
didChangeAudioRoute: {
|
|
208
|
+
callId: string;
|
|
209
|
+
output: string;
|
|
210
|
+
};
|
|
211
|
+
didReceiveStartCallAction: {
|
|
212
|
+
callId: string;
|
|
213
|
+
};
|
|
214
|
+
didActivateAudioSession: undefined;
|
|
215
|
+
didDeactivateAudioSession: undefined;
|
|
216
|
+
};
|
|
217
|
+
export type VoipEventName = 'voipNotificationsRegistered' | 'voipNotificationReceived';
|
|
218
|
+
export type VoipEventParams = {
|
|
219
|
+
voipNotificationsRegistered: {
|
|
220
|
+
token: string;
|
|
221
|
+
};
|
|
222
|
+
voipNotificationReceived: {
|
|
223
|
+
aps: {
|
|
224
|
+
'thread-id': string;
|
|
225
|
+
'mutable-content': number;
|
|
226
|
+
alert: {
|
|
227
|
+
title: string;
|
|
228
|
+
};
|
|
229
|
+
category: string;
|
|
230
|
+
sound: string;
|
|
231
|
+
};
|
|
232
|
+
stream: {
|
|
233
|
+
sender: string;
|
|
234
|
+
created_by_id: string;
|
|
235
|
+
body: string;
|
|
236
|
+
title: string;
|
|
237
|
+
call_display_name: string;
|
|
238
|
+
created_by_display_name: string;
|
|
239
|
+
version: string;
|
|
240
|
+
type: string;
|
|
241
|
+
receiver_id: string;
|
|
242
|
+
call_cid: string;
|
|
243
|
+
video: string;
|
|
244
|
+
};
|
|
245
|
+
};
|
|
246
|
+
};
|
|
247
|
+
export type EndCallReason = 'local' | 'remote' | 'rejected' | 'busy' | 'answeredElsewhere' | 'missed' | 'error';
|
|
248
|
+
export {};
|
|
249
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +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;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC9B,IAAI,sBAAsB,IAAI,OAAO,CAAC;IACtC,IAAI,qBAAqB,IAAI,OAAO,CAAC;IACrC,IAAI,OAAO,IAAI,OAAO,CAAC;IAEvB;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACxC;;;;OAIG;IACH,2BAA2B,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI,CAAC;IACzD;;;OAGG;IACH,gBAAgB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE/C,kBAAkB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjD;;;;;OAKG;IACH,gBAAgB,IAAI,SAAS,EAAE,CAAC;IAEhC;;;;;OAKG;IACH,oBAAoB,IAAI,aAAa,EAAE,CAAC;IAExC,mBAAmB,CACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAElD,SAAS,CACP,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD,aAAa,CACX,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;OAIG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAE1C;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC;IAE7B;;;;;;;OAOG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhE;;;;;OAKG;IACH,sBAAsB,CAAC,YAAY,EAAE,aAAa,GAAG,IAAI,CAAC;IAE1D;;;;;;OAMG;IACH,mBAAmB,CAAC,YAAY,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEpD,iBAAiB,IAAI,IAAI,CAAC;IAE1B;;;;;;;OAOG;IACH,gBAAgB,CAAC,CAAC,SAAS,SAAS,GAAG,aAAa,EAClD,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,aAAa,CACrB,CAAC,SAAS,SAAS,GACf,WAAW,CAAC,CAAC,CAAC,GACd,CAAC,SAAS,aAAa,GACrB,eAAe,CAAC,CAAC,CAAC,GAClB,KAAK,CACZ,GACA;QAAE,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IAE1B,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;CACxE;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACtD;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AACF,KAAK,UAAU,GAAG,IAAI,CACpB,kBAAkB,EAChB,0BAA0B,GAC1B,mBAAmB,GACnB,YAAY,GACZ,mBAAmB,CACtB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,eAAe,CAAC,EAAE;QAChB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,CAAC;IACF;;;OAGG;IACH,cAAc,CAAC,EAAE;QACf,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AACF,KAAK,cAAc,GAAG,sBAAsB,GAAG,wBAAwB,CAAC;AAExE,MAAM,MAAM,eAAe,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,MAAM,CAAC;AAC1E,MAAM,MAAM,wBAAwB,GAAG;IACrC,gBAAgB,CAAC,EAAE,eAAe,CAAC;IACnC,mBAAmB,CAAC,EAAE,eAAe,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,CAAC,EAAE,UAAU,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,SAAS,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,aAAa,CAAC;IACzB,MAAM,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,SAAS,GACjB,YAAY,GACZ,SAAS,GACT,wBAAwB,GACxB,yBAAyB,GACzB,qBAAqB,GACrB,2BAA2B,GAC3B,8BAA8B,GAC9B,yBAAyB,GACzB,2BAA2B,CAAC;AAEhC,MAAM,MAAM,WAAW,GAAG;IACxB,UAAU,EAAE;QACV,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;KACvB,CAAC;IACF,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,KAAK,GAAG,KAAK,CAAC;KACvB,CAAC;IACF,sBAAsB,EAAE;QACtB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,uBAAuB,EAAE;QACvB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,OAAO,CAAC;KACf,CAAC;IACF,4BAA4B,EAAE;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;KAChB,CAAC;IACF,mBAAmB,EAAE;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,yBAAyB,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,uBAAuB,EAAE,SAAS,CAAC;IACnC,yBAAyB,EAAE,SAAS,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB,6BAA6B,GAC7B,0BAA0B,CAAC;AAE/B,MAAM,MAAM,eAAe,GAAG;IAC5B,2BAA2B,EAAE;QAC3B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,wBAAwB,EAAE;QACxB,GAAG,EAAE;YACH,WAAW,EAAE,MAAM,CAAC;YACpB,iBAAiB,EAAE,MAAM,CAAC;YAC1B,KAAK,EAAE;gBACL,KAAK,EAAE,MAAM,CAAC;aACf,CAAC;YACF,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,MAAM,EAAE;YACN,MAAM,EAAE,MAAM,CAAC;YACf,aAAa,EAAE,MAAM,CAAC;YACtB,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;YACd,iBAAiB,EAAE,MAAM,CAAC;YAC1B,uBAAuB,EAAE,MAAM,CAAC;YAChC,OAAO,EAAE,MAAM,CAAC;YAChB,IAAI,EAAE,MAAM,CAAC;YACb,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,QAAQ,GACR,UAAU,GACV,MAAM,GACN,mBAAmB,GACnB,QAAQ,GACR,OAAO,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { InternalAndroidOptions, InternalIOSOptions, EndCallReason, TextTransformer } from '../types';
|
|
2
|
+
import type { DeepRequired } from './types';
|
|
3
|
+
export declare const defaultTextTransformer: TextTransformer;
|
|
4
|
+
export declare const defaultiOSOptions: Required<InternalIOSOptions>;
|
|
5
|
+
export declare const defaultAndroidOptions: DeepRequired<InternalAndroidOptions>;
|
|
6
|
+
export declare const iosEndCallReasonMap: Record<EndCallReason, number>;
|
|
7
|
+
export declare const androidEndCallReasonMap: Record<EndCallReason, number>;
|
|
8
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +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;AAGF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAQ7D,CAAC;AAGF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAQjE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const HEADLESS_TASK_NAME = "HandleCallBackgroundState";
|
|
2
|
+
export type ManagableTask = (taskData: any, stopTask: () => void) => Promise<void>;
|
|
3
|
+
type HeadlessTask = (taskData: any) => Promise<void>;
|
|
4
|
+
export declare const defaultBackgroundTask: ManagableTask;
|
|
5
|
+
export declare const setHeadlessTask: (task: HeadlessTask) => void;
|
|
6
|
+
export declare const registerHeadlessTask: () => void;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=headlessTask.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headlessTask.d.ts","sourceRoot":"","sources":["../../../../src/utils/headlessTask.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAE9D,MAAM,MAAM,aAAa,GAAG,CAC1B,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,MAAM,IAAI,KACjB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,KAAK,YAAY,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAErD,eAAO,MAAM,qBAAqB,EAAE,aAyBnC,CAAC;AAOF,eAAO,MAAM,eAAe,GAAI,MAAM,YAAY,SAEjD,CAAC;AAEF,eAAO,MAAM,oBAAoB,YAIhC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface PermissionsResult {
|
|
2
|
+
recordAudio: boolean;
|
|
3
|
+
postNotifications: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare const requestCallPermissions: () => Promise<PermissionsResult>;
|
|
6
|
+
export declare const checkCallPermissions: () => Promise<PermissionsResult>;
|
|
7
|
+
export declare const requestPostNotificationPermissions: () => Promise<boolean>;
|
|
8
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../../src/utils/permissions.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAKD,eAAO,MAAM,sBAAsB,QAAa,OAAO,CAAC,iBAAiB,CA8CxE,CAAC;AAEF,eAAO,MAAM,oBAAoB,QAAa,OAAO,CAAC,iBAAiB,CAqCtE,CAAC;AAEF,eAAO,MAAM,kCAAkC,QACnC,OAAO,CAAC,OAAO,CAWxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/utils/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;KAC3B,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAC9C,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC/B,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,GAAI,WAAW,MAAM,4EAK5C,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import Foundation
|
|
2
|
+
import AVFoundation
|
|
3
|
+
import stream_react_native_webrtc
|
|
4
|
+
|
|
5
|
+
@objcMembers public class AudioSessionManager: NSObject {
|
|
6
|
+
|
|
7
|
+
public static func createAudioSessionIfNeeded() {
|
|
8
|
+
#if DEBUG
|
|
9
|
+
print("[Callingx][createAudioSessionIfNeeded] Creating audio session")
|
|
10
|
+
#endif
|
|
11
|
+
|
|
12
|
+
let categoryOptions: AVAudioSession.CategoryOptions
|
|
13
|
+
#if compiler(>=6.2) // For Xcode 26.0+
|
|
14
|
+
categoryOptions = [.allowBluetoothHFP, .defaultToSpeaker]
|
|
15
|
+
#else
|
|
16
|
+
categoryOptions = [.allowBluetooth, .defaultToSpeaker]
|
|
17
|
+
#endif
|
|
18
|
+
let mode: AVAudioSession.Mode = .videoChat
|
|
19
|
+
|
|
20
|
+
// Configure RTCAudioSessionConfiguration to match our intended settings
|
|
21
|
+
// This ensures WebRTC's internal state stays consistent during interruptions/route changes
|
|
22
|
+
let rtcConfig = RTCAudioSessionConfiguration.webRTC()
|
|
23
|
+
rtcConfig.category = AVAudioSession.Category.playAndRecord.rawValue
|
|
24
|
+
rtcConfig.mode = mode.rawValue
|
|
25
|
+
rtcConfig.categoryOptions = categoryOptions
|
|
26
|
+
RTCAudioSessionConfiguration.setWebRTC(rtcConfig)
|
|
27
|
+
|
|
28
|
+
// Apply settings via RTCAudioSession (with lock) to keep WebRTC internal state consistent
|
|
29
|
+
let rtcSession = RTCAudioSession.sharedInstance()
|
|
30
|
+
rtcSession.lockForConfiguration()
|
|
31
|
+
defer { rtcSession.unlockForConfiguration() }
|
|
32
|
+
|
|
33
|
+
do {
|
|
34
|
+
try rtcSession.setCategory(.playAndRecord, mode: mode, options: categoryOptions)
|
|
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)
|
|
40
|
+
} catch {
|
|
41
|
+
#if DEBUG
|
|
42
|
+
print("[Callingx][createAudioSessionIfNeeded] Error configuring audio session: \(error)")
|
|
43
|
+
#endif
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
package/ios/Callingx.mm
ADDED
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
#import <CallingxSpec/CallingxSpec.h>
|
|
2
|
+
#import <React/RCTBridge+Private.h>
|
|
3
|
+
|
|
4
|
+
#import <AVFoundation/AVAudioSession.h>
|
|
5
|
+
#import <CallKit/CallKit.h>
|
|
6
|
+
|
|
7
|
+
// Import Swift generated header
|
|
8
|
+
#if __has_include("Callingx-Swift.h")
|
|
9
|
+
#import "Callingx-Swift.h"
|
|
10
|
+
#else
|
|
11
|
+
#import <Callingx/Callingx-Swift.h>
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
// MARK: - Callingx Turbo Module Interface
|
|
15
|
+
|
|
16
|
+
@interface Callingx : NativeCallingxSpecBase<NativeCallingxSpec, CallingxEventEmitter, VoipNotificationsEventEmitter>
|
|
17
|
+
|
|
18
|
+
@property (nonatomic, strong) CXCallController *callKeepCallController;
|
|
19
|
+
@property (nonatomic, strong) CXProvider *callKeepProvider;
|
|
20
|
+
|
|
21
|
+
@end
|
|
22
|
+
|
|
23
|
+
@implementation Callingx {
|
|
24
|
+
CallingxImpl *_moduleImpl;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
#pragma mark - Singleton
|
|
28
|
+
|
|
29
|
+
+ (id)allocWithZone:(NSZone *)zone {
|
|
30
|
+
static Callingx *sharedInstance = nil;
|
|
31
|
+
static dispatch_once_t onceToken;
|
|
32
|
+
dispatch_once(&onceToken, ^{
|
|
33
|
+
sharedInstance = [super allocWithZone:zone];
|
|
34
|
+
});
|
|
35
|
+
return sharedInstance;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
#pragma mark - Class Methods (Public API)
|
|
39
|
+
|
|
40
|
+
+ (BOOL)requiresMainQueueSetup {
|
|
41
|
+
return YES;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
+ (NSString *)moduleName {
|
|
45
|
+
return @"Callingx";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
+ (void)reportNewIncomingCall:(NSString *)callId
|
|
49
|
+
handle:(NSString *)handle
|
|
50
|
+
handleType:(NSString *)handleType
|
|
51
|
+
hasVideo:(BOOL)hasVideo
|
|
52
|
+
localizedCallerName:(NSString *_Nullable)localizedCallerName
|
|
53
|
+
supportsHolding:(BOOL)supportsHolding
|
|
54
|
+
supportsDTMF:(BOOL)supportsDTMF
|
|
55
|
+
supportsGrouping:(BOOL)supportsGrouping
|
|
56
|
+
supportsUngrouping:(BOOL)supportsUngrouping
|
|
57
|
+
fromPushKit:(BOOL)fromPushKit
|
|
58
|
+
payload:(NSDictionary *_Nullable)payload
|
|
59
|
+
withCompletionHandler:(void (^_Nullable)(void))completion {
|
|
60
|
+
|
|
61
|
+
[CallingxImpl reportNewIncomingCallWithCallId:callId
|
|
62
|
+
handle:handle
|
|
63
|
+
handleType:handleType
|
|
64
|
+
hasVideo:hasVideo
|
|
65
|
+
localizedCallerName:localizedCallerName
|
|
66
|
+
supportsHolding:supportsHolding
|
|
67
|
+
supportsDTMF:supportsDTMF
|
|
68
|
+
supportsGrouping:supportsGrouping
|
|
69
|
+
supportsUngrouping:supportsUngrouping
|
|
70
|
+
fromPushKit:fromPushKit
|
|
71
|
+
payload:payload
|
|
72
|
+
completion:completion];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
+ (BOOL)canRegisterCall {
|
|
76
|
+
return [CallingxImpl canRegisterCall];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
+ (void)endCall:(NSString *)callId reason:(int)reason {
|
|
80
|
+
[CallingxImpl endCall:callId reason:reason];
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
#pragma mark - Instance Lifecycle
|
|
84
|
+
|
|
85
|
+
- (instancetype)init {
|
|
86
|
+
if (self = [super init]) {
|
|
87
|
+
_moduleImpl = [[CallingxImpl alloc] init];
|
|
88
|
+
_moduleImpl.eventEmitter = self;
|
|
89
|
+
|
|
90
|
+
[VoipNotificationsManager shared].eventEmitter = self;
|
|
91
|
+
}
|
|
92
|
+
return self;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
- (void)dealloc {
|
|
96
|
+
_moduleImpl = nil;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
- (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
|
|
100
|
+
(const facebook::react::ObjCTurboModule::InitParams &)params {
|
|
101
|
+
return std::make_shared<facebook::react::NativeCallingxSpecJSI>(params);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
#pragma mark - CallingxEventEmitter Protocol
|
|
105
|
+
|
|
106
|
+
- (void)emitEvent:(NSDictionary *)dictionary {
|
|
107
|
+
[self emitOnNewEvent:dictionary];
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
- (void)emitVoipEvent:(NSDictionary *)dictionary {
|
|
111
|
+
[self emitOnNewVoipEvent:dictionary];
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
#pragma mark - Turbo Module Methods
|
|
115
|
+
|
|
116
|
+
- (void)setupiOS:(JS::NativeCallingx::SpecSetupiOSOptions &)options {
|
|
117
|
+
NSDictionary *optionsDict = @{
|
|
118
|
+
@"supportsVideo" : @(options.supportsVideo()),
|
|
119
|
+
@"maximumCallsPerCallGroup" : @(options.maximumCallsPerCallGroup()),
|
|
120
|
+
@"maximumCallGroups" : @(options.maximumCallGroups()),
|
|
121
|
+
@"handleType" : options.handleType(),
|
|
122
|
+
@"ringtoneSound" : options.sound(),
|
|
123
|
+
@"imageName" : options.imageName(),
|
|
124
|
+
@"includesCallsInRecents" : @(options.callsHistory()),
|
|
125
|
+
@"displayCallTimeout" : @(options.displayCallTimeout())
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
[_moduleImpl setupWithOptions:optionsDict];
|
|
129
|
+
|
|
130
|
+
self.callKeepCallController = _moduleImpl.callKeepCallController;
|
|
131
|
+
self.callKeepProvider = _moduleImpl.callKeepProvider;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
- (void)setShouldRejectCallWhenBusy:(BOOL)shouldReject {
|
|
135
|
+
[Settings setShouldRejectCallWhenBusy:shouldReject];
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
- (NSArray<NSDictionary *> *)getInitialEvents {
|
|
139
|
+
return [_moduleImpl getInitialEvents];
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
- (NSArray<NSDictionary *> *)getInitialVoipEvents {
|
|
143
|
+
return [[VoipNotificationsManager shared] getInitialEvents];
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
- (void)registerVoipToken {
|
|
147
|
+
[[VoipNotificationsManager shared] registerVoipToken];
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
- (void)answerIncomingCall:(nonnull NSString *)callId
|
|
151
|
+
resolve:(nonnull RCTPromiseResolveBlock)resolve
|
|
152
|
+
reject:(nonnull RCTPromiseRejectBlock)reject {
|
|
153
|
+
BOOL result = [_moduleImpl answerIncomingCall:callId];
|
|
154
|
+
resolve(@(result));
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
- (void)displayIncomingCall:(nonnull NSString *)callId
|
|
158
|
+
phoneNumber:(nonnull NSString *)phoneNumber
|
|
159
|
+
callerName:(nonnull NSString *)callerName
|
|
160
|
+
hasVideo:(BOOL)hasVideo
|
|
161
|
+
displayOptions:(JS::NativeCallingx::SpecDisplayIncomingCallDisplayOptions &)displayOptions
|
|
162
|
+
resolve:(nonnull RCTPromiseResolveBlock)resolve
|
|
163
|
+
reject:(nonnull RCTPromiseRejectBlock)reject {
|
|
164
|
+
BOOL result = [_moduleImpl displayIncomingCallWithCallId:callId
|
|
165
|
+
phoneNumber:phoneNumber
|
|
166
|
+
callerName:callerName
|
|
167
|
+
hasVideo:hasVideo];
|
|
168
|
+
resolve(@(result));
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
- (void)endCallWithReason:(nonnull NSString *)callId
|
|
172
|
+
reason:(double)reason
|
|
173
|
+
resolve:(nonnull RCTPromiseResolveBlock)resolve
|
|
174
|
+
reject:(nonnull RCTPromiseRejectBlock)reject {
|
|
175
|
+
[CallingxImpl endCall:callId reason:(int)reason];
|
|
176
|
+
resolve(@YES);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
- (void)endCall:(nonnull NSString *)callId
|
|
180
|
+
resolve:(nonnull RCTPromiseResolveBlock)resolve
|
|
181
|
+
reject:(nonnull RCTPromiseRejectBlock)reject {
|
|
182
|
+
BOOL result = [_moduleImpl endCall:callId];
|
|
183
|
+
resolve(@(result));
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
- (NSNumber *)isCallRegistered:(nonnull NSString *)callId {
|
|
187
|
+
return @([_moduleImpl isCallRegistered:callId]);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
- (NSNumber *)hasRegisteredCall {
|
|
191
|
+
return @([CallingxImpl hasRegisteredCall]);
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
- (void)setCurrentCallActive:(nonnull NSString *)callId
|
|
195
|
+
resolve:(nonnull RCTPromiseResolveBlock)resolve
|
|
196
|
+
reject:(nonnull RCTPromiseRejectBlock)reject {
|
|
197
|
+
BOOL result = [_moduleImpl setCurrentCallActive:callId];
|
|
198
|
+
resolve(@(result));
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
- (void)setMutedCall:(nonnull NSString *)callId
|
|
202
|
+
isMuted:(BOOL)isMuted
|
|
203
|
+
resolve:(nonnull RCTPromiseResolveBlock)resolve
|
|
204
|
+
reject:(nonnull RCTPromiseRejectBlock)reject {
|
|
205
|
+
BOOL result = [_moduleImpl setMutedCall:callId isMuted:isMuted];
|
|
206
|
+
resolve(@(result));
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
- (void)setOnHoldCall:(nonnull NSString *)callId
|
|
210
|
+
isOnHold:(BOOL)isOnHold
|
|
211
|
+
resolve:(nonnull RCTPromiseResolveBlock)resolve
|
|
212
|
+
reject:(nonnull RCTPromiseRejectBlock)reject {
|
|
213
|
+
BOOL result = [_moduleImpl setOnHoldCall:callId isOnHold:isOnHold];
|
|
214
|
+
resolve(@(result));
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
- (void)startCall:(nonnull NSString *)callId
|
|
218
|
+
phoneNumber:(nonnull NSString *)phoneNumber
|
|
219
|
+
callerName:(nonnull NSString *)callerName
|
|
220
|
+
hasVideo:(BOOL)hasVideo
|
|
221
|
+
displayOptions:(JS::NativeCallingx::SpecStartCallDisplayOptions &)displayOptions
|
|
222
|
+
resolve:(nonnull RCTPromiseResolveBlock)resolve
|
|
223
|
+
reject:(nonnull RCTPromiseRejectBlock)reject {
|
|
224
|
+
[_moduleImpl startCallWithCallId:callId
|
|
225
|
+
phoneNumber:phoneNumber
|
|
226
|
+
callerName:callerName
|
|
227
|
+
hasVideo:hasVideo];
|
|
228
|
+
resolve(@YES);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
- (void)updateDisplay:(nonnull NSString *)callId
|
|
232
|
+
phoneNumber:(nonnull NSString *)phoneNumber
|
|
233
|
+
callerName:(nonnull NSString *)callerName
|
|
234
|
+
displayOptions:(JS::NativeCallingx::SpecUpdateDisplayDisplayOptions &)displayOptions
|
|
235
|
+
resolve:(nonnull RCTPromiseResolveBlock)resolve
|
|
236
|
+
reject:(nonnull RCTPromiseRejectBlock)reject {
|
|
237
|
+
BOOL result = [_moduleImpl updateDisplayWithCallId:callId
|
|
238
|
+
phoneNumber:phoneNumber
|
|
239
|
+
callerName:callerName];
|
|
240
|
+
resolve(@(result));
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
- (void)log:(NSString *)message level:(NSString *)level {
|
|
244
|
+
NSLog(@"[Callingx][log] %@, %@", message, level);
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
- (void)setupAndroid:(JS::NativeCallingx::SpecSetupAndroidOptions &)options {
|
|
248
|
+
// iOS only - leave empty
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
- (void)startBackgroundTask:(NSString *)taskName
|
|
252
|
+
timeout:(double)timeout
|
|
253
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
254
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
255
|
+
// Not implemented on iOS
|
|
256
|
+
resolve(@YES);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
- (void)stopBackgroundTask:(NSString *)taskName
|
|
260
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
261
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
262
|
+
// Not implemented on iOS
|
|
263
|
+
resolve(@YES);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
- (void)registerBackgroundTaskAvailable {
|
|
267
|
+
// Not implemented on iOS - background tasks work differently on iOS
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
- (void)isServiceStarted:(RCTPromiseResolveBlock)resolve
|
|
271
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
272
|
+
// iOS doesn't use a service like Android, always return true
|
|
273
|
+
resolve(@YES);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
- (nonnull NSNumber *)canPostNotifications {
|
|
277
|
+
return @YES;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
@end
|