@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,321 @@
1
+ import { Platform } from 'react-native';
2
+ import NativeCallingModule from './spec/NativeCallingx';
3
+ import {
4
+ checkCallPermissions,
5
+ requestCallPermissions,
6
+ } from './utils/permissions';
7
+ import type { PermissionsResult } from './utils/permissions';
8
+ import {
9
+ HEADLESS_TASK_NAME,
10
+ registerHeadlessTask,
11
+ setHeadlessTask,
12
+ } from './utils/headlessTask';
13
+ import type { ManagableTask } from './utils/headlessTask';
14
+ import { EventManager } from './EventManager';
15
+ import type { EventListener } from './EventManager';
16
+ import {
17
+ type ICallingxModule,
18
+ type InfoDisplayOptions,
19
+ type TextTransformer,
20
+ type EndCallReason,
21
+ type EventData,
22
+ type EventName,
23
+ type EventParams,
24
+ type CallingExpOptions,
25
+ type VoipEventName,
26
+ type VoipEventParams,
27
+ type VoipEventData,
28
+ } from './types';
29
+ import {
30
+ androidEndCallReasonMap,
31
+ defaultAndroidOptions,
32
+ defaultiOSOptions,
33
+ defaultTextTransformer,
34
+ iosEndCallReasonMap,
35
+ } from './utils/constants';
36
+ import { isVoipEvent } from './utils/utils';
37
+
38
+ class CallingxModule implements ICallingxModule {
39
+ private _isNotificationsAllowed = false;
40
+ private _isSetup = false;
41
+ private _isOngoingCallsEnabled = false;
42
+ private _isHeadlessTaskRegistered = false;
43
+
44
+ private titleTransformer: TextTransformer = (text: string) => text;
45
+ private subtitleTransformer: TextTransformer | undefined = undefined;
46
+
47
+ private eventManager: EventManager<EventName, EventParams> =
48
+ new EventManager();
49
+ private voipEventManager: EventManager<VoipEventName, VoipEventParams> =
50
+ new EventManager();
51
+
52
+ get isNotificationsAllowed(): boolean {
53
+ if (Platform.OS !== 'android') {
54
+ return true;
55
+ }
56
+
57
+ return (
58
+ this._isNotificationsAllowed && NativeCallingModule.canPostNotifications()
59
+ );
60
+ }
61
+
62
+ get isOngoingCallsEnabled(): boolean {
63
+ return this._isOngoingCallsEnabled;
64
+ }
65
+
66
+ get isSetup(): boolean {
67
+ return this._isSetup;
68
+ }
69
+
70
+ setup(options: CallingExpOptions): void {
71
+ if (this._isSetup) {
72
+ return;
73
+ }
74
+
75
+ this._isOngoingCallsEnabled = options.enableOngoingCalls ?? false;
76
+ this.setShouldRejectCallWhenBusy(options.shouldRejectCallWhenBusy ?? false);
77
+
78
+ if (Platform.OS === 'ios') {
79
+ NativeCallingModule.setupiOS({ ...defaultiOSOptions, ...options.ios });
80
+ }
81
+
82
+ if (Platform.OS === 'android') {
83
+ const {
84
+ titleTransformer,
85
+ subtitleTransformer,
86
+ incomingChannel,
87
+ ongoingChannel,
88
+ } = options.android ?? {};
89
+
90
+ this.titleTransformer = titleTransformer ?? defaultTextTransformer;
91
+ this.subtitleTransformer = subtitleTransformer;
92
+
93
+ const notificationsConfig = {
94
+ incomingChannel: {
95
+ ...defaultAndroidOptions.incomingChannel,
96
+ ...(incomingChannel ?? {}),
97
+ },
98
+ ongoingChannel: {
99
+ ...defaultAndroidOptions.ongoingChannel,
100
+ ...(ongoingChannel ?? {}),
101
+ },
102
+ };
103
+
104
+ if (
105
+ notificationsConfig.incomingChannel.id ===
106
+ notificationsConfig.ongoingChannel.id
107
+ ) {
108
+ throw new Error('Incoming and outgoing channel IDs cannot be the same');
109
+ }
110
+
111
+ NativeCallingModule.setupAndroid(notificationsConfig);
112
+
113
+ registerHeadlessTask();
114
+ }
115
+
116
+ this._isSetup = true;
117
+ }
118
+
119
+ setShouldRejectCallWhenBusy(shouldReject: boolean): void {
120
+ NativeCallingModule.setShouldRejectCallWhenBusy(shouldReject);
121
+ }
122
+
123
+ async requestPermissions(): Promise<PermissionsResult> {
124
+ const result: {
125
+ recordAudio: boolean;
126
+ postNotifications: boolean;
127
+ } = await requestCallPermissions();
128
+
129
+ this._isNotificationsAllowed = result.postNotifications;
130
+ return result;
131
+ }
132
+
133
+ async checkPermissions(): Promise<PermissionsResult> {
134
+ const result: {
135
+ recordAudio: boolean;
136
+ postNotifications: boolean;
137
+ } = await checkCallPermissions();
138
+
139
+ this._isNotificationsAllowed = result.postNotifications;
140
+ return result;
141
+ }
142
+
143
+ getInitialEvents(): EventData[] {
144
+ return NativeCallingModule.getInitialEvents() as EventData[];
145
+ }
146
+
147
+ getInitialVoipEvents(): VoipEventData[] {
148
+ return NativeCallingModule.getInitialVoipEvents() as VoipEventData[];
149
+ }
150
+
151
+ //activates call that was registered with the telecom stack
152
+ setCurrentCallActive(callId: string): Promise<void> {
153
+ return NativeCallingModule.setCurrentCallActive(callId);
154
+ }
155
+
156
+ displayIncomingCall(
157
+ callId: string,
158
+ phoneNumber: string,
159
+ callerName: string,
160
+ hasVideo: boolean,
161
+ ): Promise<void> {
162
+ const displayOptions: InfoDisplayOptions = {
163
+ displayTitle: this.titleTransformer(callerName, true),
164
+ displaySubtitle: this.subtitleTransformer?.(phoneNumber, true),
165
+ };
166
+ return NativeCallingModule.displayIncomingCall(
167
+ callId,
168
+ phoneNumber,
169
+ callerName,
170
+ hasVideo,
171
+ displayOptions,
172
+ );
173
+ }
174
+
175
+ answerIncomingCall(callId: string): Promise<void> {
176
+ return NativeCallingModule.answerIncomingCall(callId);
177
+ }
178
+
179
+ //registers call with the telecom stack
180
+ startCall(
181
+ callId: string,
182
+ phoneNumber: string,
183
+ callerName: string,
184
+ hasVideo: boolean,
185
+ ): Promise<void> {
186
+ const displayOptions: InfoDisplayOptions = {
187
+ displayTitle: this.titleTransformer(callerName, false),
188
+ displaySubtitle: this.subtitleTransformer?.(phoneNumber, false),
189
+ };
190
+ return NativeCallingModule.startCall(
191
+ callId,
192
+ phoneNumber,
193
+ callerName,
194
+ hasVideo,
195
+ displayOptions,
196
+ );
197
+ }
198
+
199
+ updateDisplay(
200
+ callId: string,
201
+ phoneNumber: string,
202
+ callerName: string,
203
+ ): Promise<void> {
204
+ const displayOptions: InfoDisplayOptions = {
205
+ displayTitle: this.titleTransformer(callerName, false), //adjust incoming or outgoing call
206
+ displaySubtitle: this.subtitleTransformer?.(phoneNumber, false), //adjust incoming or outgoing call
207
+ };
208
+ return NativeCallingModule.updateDisplay(
209
+ callId,
210
+ phoneNumber,
211
+ callerName,
212
+ displayOptions,
213
+ );
214
+ }
215
+
216
+ endCallWithReason(callId: string, reason: EndCallReason): Promise<void> {
217
+ const reasons =
218
+ Platform.OS === 'ios' ? iosEndCallReasonMap : androidEndCallReasonMap;
219
+
220
+ if (Platform.OS === 'ios' && reason === 'local') {
221
+ return NativeCallingModule.endCall(callId);
222
+ }
223
+
224
+ return NativeCallingModule.endCallWithReason(callId, reasons[reason]);
225
+ }
226
+
227
+ isCallRegistered(callId: string): boolean {
228
+ return NativeCallingModule.isCallRegistered(callId);
229
+ }
230
+
231
+ hasRegisteredCall(): boolean {
232
+ return NativeCallingModule.hasRegisteredCall();
233
+ }
234
+
235
+ setMutedCall(callId: string, isMuted: boolean): Promise<void> {
236
+ return NativeCallingModule.setMutedCall(callId, isMuted);
237
+ }
238
+
239
+ setOnHoldCall(callId: string, isOnHold: boolean): Promise<void> {
240
+ return NativeCallingModule.setOnHoldCall(callId, isOnHold);
241
+ }
242
+
243
+ registerBackgroundTask(taskProvider: ManagableTask): void {
244
+ const stopTask = () => {
245
+ this._isHeadlessTaskRegistered = false;
246
+ NativeCallingModule.stopBackgroundTask(HEADLESS_TASK_NAME);
247
+ };
248
+
249
+ setHeadlessTask((taskData: any) => taskProvider(taskData, stopTask));
250
+
251
+ this._isHeadlessTaskRegistered = true;
252
+ NativeCallingModule.registerBackgroundTaskAvailable();
253
+ }
254
+
255
+ async startBackgroundTask(taskProvider?: ManagableTask): Promise<void> {
256
+ // If taskProvider is provided, register it first
257
+ if (taskProvider) {
258
+ this.registerBackgroundTask(taskProvider);
259
+ }
260
+
261
+ // Check if task is registered
262
+ if (!this._isHeadlessTaskRegistered) {
263
+ throw new Error(
264
+ 'Background task not registered. Call registerBackgroundTask first.',
265
+ );
266
+ }
267
+
268
+ // Check if service is started (Android only)
269
+ if (Platform.OS === 'android') {
270
+ const isServiceStarted = await NativeCallingModule.isServiceStarted();
271
+ if (!isServiceStarted) {
272
+ throw new Error(
273
+ 'Service is not started. Call displayIncomingCall or startCall first.',
274
+ );
275
+ }
276
+ }
277
+
278
+ return NativeCallingModule.startBackgroundTask(HEADLESS_TASK_NAME, 0);
279
+ }
280
+
281
+ stopBackgroundTask(): Promise<void> {
282
+ this._isHeadlessTaskRegistered = false;
283
+ return NativeCallingModule.stopBackgroundTask(HEADLESS_TASK_NAME);
284
+ }
285
+
286
+ registerVoipToken(): void {
287
+ NativeCallingModule.registerVoipToken();
288
+ }
289
+
290
+ addEventListener<T extends EventName | VoipEventName>(
291
+ eventName: T,
292
+ callback: EventListener<
293
+ T extends EventName
294
+ ? EventParams[T]
295
+ : T extends VoipEventName
296
+ ? VoipEventParams[T]
297
+ : never
298
+ >,
299
+ ): { remove: () => void } {
300
+ type ManagerType = EventManager<EventName | VoipEventName, any>;
301
+
302
+ const manager: ManagerType = (
303
+ isVoipEvent(eventName) ? this.voipEventManager : this.eventManager
304
+ ) as ManagerType;
305
+
306
+ manager.addListener(eventName, callback as any);
307
+
308
+ return {
309
+ remove: () => {
310
+ manager.removeListener(eventName, callback as any);
311
+ },
312
+ };
313
+ }
314
+
315
+ log(message: string, level: 'debug' | 'info' | 'warn' | 'error'): void {
316
+ NativeCallingModule.log(message, level);
317
+ }
318
+ }
319
+
320
+ const module = new CallingxModule();
321
+ export default module;
@@ -0,0 +1,61 @@
1
+ import type { EventSubscription } from 'react-native';
2
+ import NativeCallingModule from './spec/NativeCallingx';
3
+ import type {
4
+ EventData,
5
+ EventName,
6
+ VoipEventData,
7
+ VoipEventName,
8
+ } from './types';
9
+ import { isVoipEvent } from './utils/utils';
10
+
11
+ type EventListener<T> = (params: T) => void;
12
+
13
+ class EventManager<Name extends EventName | VoipEventName, Params> {
14
+ private listenersCount: number = 0;
15
+ private eventListeners: Map<Name, EventListener<Params>[]> = new Map();
16
+ private subscription: EventSubscription | null = null;
17
+
18
+ addListener<T extends Name>(
19
+ eventName: T,
20
+ callback: EventListener<Params>,
21
+ ): void {
22
+ const listeners = this.eventListeners.get(eventName) || [];
23
+ listeners.push(callback as EventListener<Params>);
24
+ this.eventListeners.set(eventName, listeners);
25
+ this.listenersCount++;
26
+
27
+ if (this.subscription === null) {
28
+ const eventHandler = (event: EventData | VoipEventData) => {
29
+ const eventListeners =
30
+ this.eventListeners.get(event.eventName as Name) || [];
31
+ eventListeners.forEach((listener) => listener(event.params as Params));
32
+ };
33
+
34
+ if (isVoipEvent(eventName)) {
35
+ this.subscription = NativeCallingModule.onNewVoipEvent(eventHandler);
36
+ } else {
37
+ this.subscription = NativeCallingModule.onNewEvent(eventHandler);
38
+ }
39
+ }
40
+ }
41
+
42
+ removeListener<T extends Name>(
43
+ eventName: T,
44
+ callback: EventListener<Params>,
45
+ ): void {
46
+ const listeners = this.eventListeners.get(eventName) || [];
47
+ const updatedListeners = listeners.filter((c) => c !== callback);
48
+ this.eventListeners.set(eventName, updatedListeners);
49
+
50
+ if (updatedListeners.length !== listeners.length) {
51
+ this.listenersCount--;
52
+ }
53
+
54
+ if (this.listenersCount === 0) {
55
+ this.subscription?.remove();
56
+ this.subscription = null;
57
+ }
58
+ }
59
+ }
60
+
61
+ export { EventManager, type EventListener };
package/src/index.ts ADDED
@@ -0,0 +1,2 @@
1
+ export { default as CallingxModule } from './CallingxModule';
2
+ export * from './types';
@@ -0,0 +1,176 @@
1
+ import { TurboModuleRegistry, type TurboModule } from 'react-native';
2
+
3
+ // @ts-expect-error - CodegenTypes is not properly typed
4
+ import type { EventEmitter } from 'react-native/Libraries/Types/CodegenTypes';
5
+
6
+ export interface Spec extends TurboModule {
7
+ setupiOS(options: {
8
+ supportsVideo: boolean;
9
+ maximumCallsPerCallGroup: number;
10
+ maximumCallGroups: number;
11
+ handleType: string;
12
+ sound: string | null;
13
+ imageName: string | null;
14
+ callsHistory: boolean;
15
+ displayCallTimeout: number;
16
+ }): void;
17
+
18
+ setupAndroid(options: {
19
+ incomingChannel: {
20
+ id: string;
21
+ name: string;
22
+ sound: string;
23
+ vibration: boolean;
24
+ };
25
+ ongoingChannel: {
26
+ id: string;
27
+ name: string;
28
+ };
29
+ }): void;
30
+
31
+ setShouldRejectCallWhenBusy(shouldReject: boolean): void;
32
+
33
+ canPostNotifications(): boolean;
34
+
35
+ getInitialEvents(): Array<{
36
+ eventName: string;
37
+ params: {
38
+ callId: string;
39
+ cause?: string;
40
+ muted?: boolean;
41
+ hold?: boolean;
42
+ source?: string;
43
+ };
44
+ }>;
45
+
46
+ getInitialVoipEvents(): Array<{
47
+ eventName: string;
48
+ params: {
49
+ token?: string;
50
+ aps?: {
51
+ 'thread-id': string;
52
+ 'mutable-content': number;
53
+ alert: {
54
+ title: string;
55
+ };
56
+ category: string;
57
+ sound: string;
58
+ };
59
+ stream?: {
60
+ sender: string;
61
+ created_by_id: string;
62
+ body: string;
63
+ title: string;
64
+ call_display_name: string;
65
+ created_by_display_name: string;
66
+ version: string;
67
+ type: string;
68
+ receiver_id: string;
69
+ call_cid: string;
70
+ video: string;
71
+ };
72
+ };
73
+ }>;
74
+
75
+ setCurrentCallActive(callId: string): Promise<void>;
76
+
77
+ displayIncomingCall(
78
+ callId: string,
79
+ phoneNumber: string,
80
+ callerName: string,
81
+ hasVideo: boolean,
82
+ displayOptions?: {
83
+ displayTitle?: string;
84
+ displaySubtitle?: string;
85
+ },
86
+ ): Promise<void>;
87
+
88
+ //use when need to answer an incoming call withing app UI
89
+ answerIncomingCall(callId: string): Promise<void>;
90
+
91
+ startCall(
92
+ callId: string,
93
+ phoneNumber: string,
94
+ callerName: string,
95
+ hasVideo: boolean,
96
+ displayOptions?: {
97
+ displayTitle?: string;
98
+ displaySubtitle?: string;
99
+ },
100
+ ): Promise<void>;
101
+
102
+ updateDisplay(
103
+ callId: string,
104
+ phoneNumber: string,
105
+ callerName: string,
106
+ displayOptions?: {
107
+ displayTitle?: string;
108
+ displaySubtitle?: string;
109
+ },
110
+ ): Promise<void>;
111
+
112
+ isCallRegistered(callId: string): boolean;
113
+
114
+ hasRegisteredCall(): boolean;
115
+
116
+ endCallWithReason(callId: string, reason: number): Promise<void>;
117
+
118
+ endCall(callId: string): Promise<void>;
119
+
120
+ setMutedCall(callId: string, isMuted: boolean): Promise<void>;
121
+
122
+ setOnHoldCall(callId: string, isOnHold: boolean): Promise<void>;
123
+
124
+ registerBackgroundTaskAvailable(): void;
125
+
126
+ isServiceStarted(): Promise<boolean>;
127
+
128
+ startBackgroundTask(taskName: string, timeout: number): Promise<void>;
129
+
130
+ stopBackgroundTask(taskName: string): Promise<void>;
131
+
132
+ registerVoipToken(): void;
133
+
134
+ readonly onNewEvent: EventEmitter<{
135
+ eventName: string;
136
+ params: {
137
+ callId: string;
138
+ cause?: string;
139
+ muted?: boolean;
140
+ hold?: boolean;
141
+ };
142
+ }>;
143
+
144
+ readonly onNewVoipEvent: EventEmitter<{
145
+ eventName: string;
146
+ params: {
147
+ token: string;
148
+ aps: {
149
+ 'thread-id': string;
150
+ 'mutable-content': number;
151
+ alert: {
152
+ title: string;
153
+ };
154
+ category: string;
155
+ sound: string;
156
+ };
157
+ stream: {
158
+ sender: string;
159
+ created_by_id: string;
160
+ body: string;
161
+ title: string;
162
+ call_display_name: string;
163
+ created_by_display_name: string;
164
+ version: string;
165
+ type: string;
166
+ receiver_id: string;
167
+ call_cid: string;
168
+ video: string;
169
+ };
170
+ };
171
+ }>;
172
+
173
+ log(message: string, level: 'debug' | 'info' | 'warn' | 'error'): void;
174
+ }
175
+
176
+ export default TurboModuleRegistry.getEnforcing<Spec>('Callingx');