@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.
Files changed (256) hide show
  1. package/Callingx.podspec +23 -0
  2. package/LICENSE +219 -0
  3. package/README.md +392 -0
  4. package/android/bin/build/generated/source/buildConfig/debug/io/getstream/rn/callingx/BuildConfig.class +0 -0
  5. package/android/bin/build/generated/source/codegen/java/io/getstream/rn/callingx/NativeCallingxSpec.class +0 -0
  6. package/android/bin/build/generated/source/codegen/jni/CMakeLists.txt +28 -0
  7. package/android/bin/build/generated/source/codegen/jni/CallingxSpec-generated.cpp +167 -0
  8. package/android/bin/build/generated/source/codegen/jni/CallingxSpec.h +31 -0
  9. package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/CallingxSpecJSI-generated.cpp +196 -0
  10. package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/CallingxSpecJSI.h +283 -0
  11. package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/ComponentDescriptors.cpp +22 -0
  12. package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/ComponentDescriptors.h +24 -0
  13. package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/EventEmitters.cpp +16 -0
  14. package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/EventEmitters.h +17 -0
  15. package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/Props.cpp +19 -0
  16. package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/Props.h +18 -0
  17. package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/ShadowNodes.cpp +17 -0
  18. package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/ShadowNodes.h +23 -0
  19. package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/States.cpp +16 -0
  20. package/android/bin/build/generated/source/codegen/jni/react/renderer/components/CallingxSpec/States.h +20 -0
  21. package/android/bin/build/generated/source/codegen/schema.json +1 -0
  22. package/android/bin/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/AndroidManifest.xml +33 -0
  23. package/android/bin/build/intermediates/aapt_friendly_merged_manifests/debug/processDebugManifest/aapt/output-metadata.json +18 -0
  24. package/android/bin/build/intermediates/aar_metadata/debug/writeDebugAarMetadata/aar-metadata.properties +6 -0
  25. package/android/bin/build/intermediates/annotation_processor_list/debug/javaPreCompileDebug/annotationProcessors.json +1 -0
  26. package/android/bin/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
  27. package/android/bin/build/intermediates/compile_r_class_jar/debug/generateDebugRFile/R.jar +0 -0
  28. package/android/bin/build/intermediates/compile_symbol_list/debug/generateDebugRFile/R.txt +3 -0
  29. package/android/bin/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/drawable_ic_phone_paused_24.xml.flat +0 -0
  30. package/android/bin/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/drawable_ic_round_call_24.xml.flat +0 -0
  31. package/android/bin/build/intermediates/compiled_local_resources/debug/compileDebugLibraryResources/out/drawable_ic_user.xml.flat +0 -0
  32. package/android/bin/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +4 -0
  33. package/android/bin/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  34. package/android/bin/build/intermediates/incremental/mergeDebugAssets/merger.xml +2 -0
  35. package/android/bin/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  36. package/android/bin/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  37. package/android/bin/build/intermediates/java_res/debug/processDebugJavaRes/out/META-INF/stream-io_react-native-callingx_debug.kotlin_module +0 -0
  38. package/android/bin/build/intermediates/local_only_symbol_list/debug/parseDebugLocalResources/R-def.txt +5 -0
  39. package/android/bin/build/intermediates/manifest_merge_blame_file/debug/processDebugManifest/manifest-merger-blame-debug-report.txt +60 -0
  40. package/android/bin/build/intermediates/merged_manifest/debug/processDebugManifest/AndroidManifest.xml +33 -0
  41. package/android/bin/build/intermediates/navigation_json/debug/extractDeepLinksDebug/navigation.json +1 -0
  42. package/android/bin/build/intermediates/nested_resources_validation_report/debug/generateDebugResources/nestedResourcesValidationReport.txt +1 -0
  43. package/android/bin/build/intermediates/packaged_res/debug/packageDebugResources/drawable/ic_phone_paused_24.xml +11 -0
  44. package/android/bin/build/intermediates/packaged_res/debug/packageDebugResources/drawable/ic_round_call_24.xml +11 -0
  45. package/android/bin/build/intermediates/packaged_res/debug/packageDebugResources/drawable/ic_user.xml +27 -0
  46. package/android/bin/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/META-INF/stream-io_react-native-callingx_debug.kotlin_module +0 -0
  47. package/android/bin/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
  48. package/android/bin/build/intermediates/symbol_list_with_package_name/debug/generateDebugRFile/package-aware-r.txt +4 -0
  49. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
  50. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream +0 -0
  51. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.keystream.len +0 -0
  52. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.len +0 -0
  53. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
  54. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i +0 -0
  55. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab_i.len +0 -0
  56. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
  57. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream +0 -0
  58. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.keystream.len +0 -0
  59. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.len +0 -0
  60. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
  61. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i +0 -0
  62. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab_i.len +0 -0
  63. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
  64. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream +0 -0
  65. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.keystream.len +0 -0
  66. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.len +0 -0
  67. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
  68. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i +0 -0
  69. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab_i.len +0 -0
  70. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
  71. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
  72. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
  73. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
  74. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
  75. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
  76. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i.len +0 -0
  77. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
  78. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
  79. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
  80. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.len +0 -0
  81. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
  82. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
  83. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i.len +0 -0
  84. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab +0 -0
  85. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream +0 -0
  86. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.keystream.len +0 -0
  87. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.len +0 -0
  88. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab.values.at +0 -0
  89. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i +0 -0
  90. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/package-parts.tab_i.len +0 -0
  91. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
  92. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream +0 -0
  93. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.keystream.len +0 -0
  94. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.len +0 -0
  95. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values +0 -0
  96. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
  97. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.s +1 -0
  98. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i +0 -0
  99. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab_i.len +0 -0
  100. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
  101. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream +0 -0
  102. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.keystream.len +0 -0
  103. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.len +0 -0
  104. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
  105. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i +0 -0
  106. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab_i.len +0 -0
  107. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
  108. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
  109. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
  110. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.len +0 -0
  111. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.values.at +0 -0
  112. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
  113. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i.len +0 -0
  114. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
  115. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream +0 -0
  116. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.keystream.len +0 -0
  117. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.len +0 -0
  118. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
  119. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i +0 -0
  120. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab_i.len +0 -0
  121. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +2 -0
  122. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
  123. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream +0 -0
  124. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.keystream.len +0 -0
  125. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.len +0 -0
  126. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
  127. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i +0 -0
  128. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab_i.len +0 -0
  129. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
  130. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
  131. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
  132. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
  133. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
  134. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
  135. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i.len +0 -0
  136. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
  137. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
  138. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
  139. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
  140. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
  141. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
  142. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i.len +0 -0
  143. package/android/bin/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
  144. package/android/bin/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
  145. package/android/bin/build/kotlin/compileDebugKotlin/local-state/build-history.bin +0 -0
  146. package/android/bin/build/outputs/logs/manifest-merger-debug-report.txt +70 -0
  147. package/android/bin/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  148. package/android/bin/build/tmp/kotlin-classes/debug/META-INF/stream-io_react-native-callingx_debug.kotlin_module +0 -0
  149. package/android/bin/build.gradle +81 -0
  150. package/android/bin/gradle.properties +5 -0
  151. package/android/bin/local.properties +8 -0
  152. package/android/bin/src/main/AndroidManifest.xml +30 -0
  153. package/android/bin/src/main/java/io/getstream/rn/callingx/CallService.kt +396 -0
  154. package/android/bin/src/main/java/io/getstream/rn/callingx/CallingxModule.kt +639 -0
  155. package/android/bin/src/main/java/io/getstream/rn/callingx/CallingxPackage.kt +16 -0
  156. package/android/bin/src/main/java/io/getstream/rn/callingx/HeadlessTaskManager.kt +164 -0
  157. package/android/bin/src/main/java/io/getstream/rn/callingx/ResourceUtils.kt +60 -0
  158. package/android/bin/src/main/java/io/getstream/rn/callingx/Utils.kt +23 -0
  159. package/android/bin/src/main/java/io/getstream/rn/callingx/model/Call.kt +57 -0
  160. package/android/bin/src/main/java/io/getstream/rn/callingx/model/CallAction.kt +36 -0
  161. package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/CallNotificationManager.kt +215 -0
  162. package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/NotificationChannelsManager.kt +113 -0
  163. package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/NotificationIntentFactory.kt +105 -0
  164. package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/NotificationReceiverActivity.kt +42 -0
  165. package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/NotificationReceiverService.kt +56 -0
  166. package/android/bin/src/main/java/io/getstream/rn/callingx/notifications/NotificationsConfig.kt +116 -0
  167. package/android/bin/src/main/java/io/getstream/rn/callingx/repo/CallRepository.kt +163 -0
  168. package/android/bin/src/main/java/io/getstream/rn/callingx/repo/LegacyCallRepository.kt +134 -0
  169. package/android/bin/src/main/java/io/getstream/rn/callingx/repo/TelecomCallRepository.kt +438 -0
  170. package/android/bin/src/main/res/drawable/ic_phone_paused_24.xml +11 -0
  171. package/android/bin/src/main/res/drawable/ic_round_call_24.xml +11 -0
  172. package/android/bin/src/main/res/drawable/ic_user.xml +27 -0
  173. package/android/build.gradle +81 -0
  174. package/android/gradle.properties +5 -0
  175. package/android/src/main/AndroidManifest.xml +30 -0
  176. package/android/src/main/java/io/getstream/rn/callingx/CallService.kt +396 -0
  177. package/android/src/main/java/io/getstream/rn/callingx/CallingxModule.kt +639 -0
  178. package/android/src/main/java/io/getstream/rn/callingx/CallingxPackage.kt +16 -0
  179. package/android/src/main/java/io/getstream/rn/callingx/HeadlessTaskManager.kt +164 -0
  180. package/android/src/main/java/io/getstream/rn/callingx/ResourceUtils.kt +60 -0
  181. package/android/src/main/java/io/getstream/rn/callingx/Utils.kt +23 -0
  182. package/android/src/main/java/io/getstream/rn/callingx/model/Call.kt +57 -0
  183. package/android/src/main/java/io/getstream/rn/callingx/model/CallAction.kt +36 -0
  184. package/android/src/main/java/io/getstream/rn/callingx/notifications/CallNotificationManager.kt +215 -0
  185. package/android/src/main/java/io/getstream/rn/callingx/notifications/NotificationChannelsManager.kt +113 -0
  186. package/android/src/main/java/io/getstream/rn/callingx/notifications/NotificationIntentFactory.kt +105 -0
  187. package/android/src/main/java/io/getstream/rn/callingx/notifications/NotificationReceiverActivity.kt +42 -0
  188. package/android/src/main/java/io/getstream/rn/callingx/notifications/NotificationReceiverService.kt +56 -0
  189. package/android/src/main/java/io/getstream/rn/callingx/notifications/NotificationsConfig.kt +116 -0
  190. package/android/src/main/java/io/getstream/rn/callingx/repo/CallRepository.kt +163 -0
  191. package/android/src/main/java/io/getstream/rn/callingx/repo/LegacyCallRepository.kt +134 -0
  192. package/android/src/main/java/io/getstream/rn/callingx/repo/TelecomCallRepository.kt +438 -0
  193. package/android/src/main/res/drawable/ic_phone_paused_24.xml +11 -0
  194. package/android/src/main/res/drawable/ic_round_call_24.xml +11 -0
  195. package/android/src/main/res/drawable/ic_user.xml +27 -0
  196. package/dist/module/CallingxModule.js +191 -0
  197. package/dist/module/CallingxModule.js.map +1 -0
  198. package/dist/module/EventManager.js +40 -0
  199. package/dist/module/EventManager.js.map +1 -0
  200. package/dist/module/index.js +5 -0
  201. package/dist/module/index.js.map +1 -0
  202. package/dist/module/package.json +1 -0
  203. package/dist/module/spec/NativeCallingx.js +8 -0
  204. package/dist/module/spec/NativeCallingx.js.map +1 -0
  205. package/dist/module/types.js +4 -0
  206. package/dist/module/types.js.map +1 -0
  207. package/dist/module/utils/constants.js +48 -0
  208. package/dist/module/utils/constants.js.map +1 -0
  209. package/dist/module/utils/headlessTask.js +37 -0
  210. package/dist/module/utils/headlessTask.js.map +1 -0
  211. package/dist/module/utils/permissions.js +86 -0
  212. package/dist/module/utils/permissions.js.map +1 -0
  213. package/dist/module/utils/types.js +2 -0
  214. package/dist/module/utils/types.js.map +1 -0
  215. package/dist/module/utils/utils.js +6 -0
  216. package/dist/module/utils/utils.js.map +1 -0
  217. package/dist/typescript/package.json +1 -0
  218. package/dist/typescript/src/CallingxModule.d.ts +44 -0
  219. package/dist/typescript/src/CallingxModule.d.ts.map +1 -0
  220. package/dist/typescript/src/EventManager.d.ts +11 -0
  221. package/dist/typescript/src/EventManager.d.ts.map +1 -0
  222. package/dist/typescript/src/index.d.ts +3 -0
  223. package/dist/typescript/src/index.d.ts.map +1 -0
  224. package/dist/typescript/src/spec/NativeCallingx.d.ts +132 -0
  225. package/dist/typescript/src/spec/NativeCallingx.d.ts.map +1 -0
  226. package/dist/typescript/src/types.d.ts +249 -0
  227. package/dist/typescript/src/types.d.ts.map +1 -0
  228. package/dist/typescript/src/utils/constants.d.ts +8 -0
  229. package/dist/typescript/src/utils/constants.d.ts.map +1 -0
  230. package/dist/typescript/src/utils/headlessTask.d.ts +8 -0
  231. package/dist/typescript/src/utils/headlessTask.d.ts.map +1 -0
  232. package/dist/typescript/src/utils/permissions.d.ts +8 -0
  233. package/dist/typescript/src/utils/permissions.d.ts.map +1 -0
  234. package/dist/typescript/src/utils/types.d.ts +4 -0
  235. package/dist/typescript/src/utils/types.d.ts.map +1 -0
  236. package/dist/typescript/src/utils/utils.d.ts +2 -0
  237. package/dist/typescript/src/utils/utils.d.ts.map +1 -0
  238. package/ios/AudioSessionManager.swift +46 -0
  239. package/ios/Callingx.mm +280 -0
  240. package/ios/CallingxImpl.swift +744 -0
  241. package/ios/CallingxPublic.h +79 -0
  242. package/ios/Settings.swift +108 -0
  243. package/ios/UUIDStorage.swift +124 -0
  244. package/ios/VoipNotificationsManager.swift +180 -0
  245. package/package.json +112 -0
  246. package/react-native.config.js +8 -0
  247. package/src/CallingxModule.ts +321 -0
  248. package/src/EventManager.ts +61 -0
  249. package/src/index.ts +2 -0
  250. package/src/spec/NativeCallingx.ts +176 -0
  251. package/src/types.ts +323 -0
  252. package/src/utils/constants.ts +55 -0
  253. package/src/utils/headlessTask.ts +52 -0
  254. package/src/utils/permissions.ts +111 -0
  255. package/src/utils/types.ts +5 -0
  256. 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":"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"}
@@ -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,4 @@
1
+ export type DeepRequired<T> = {
2
+ [K in keyof T]-?: NonNullable<T[K]> extends object ? DeepRequired<NonNullable<T[K]>> : NonNullable<T[K]>;
3
+ };
4
+ //# sourceMappingURL=types.d.ts.map
@@ -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,2 @@
1
+ export declare const isVoipEvent: (eventName: string) => eventName is "voipNotificationsRegistered" | "voipNotificationReceived";
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -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
+ }
@@ -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