shakebug-react-native 1.0.14

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 (296) hide show
  1. package/DeviceInfo/index.js.flow +177 -0
  2. package/DeviceInfo/index.ts +1034 -0
  3. package/DeviceInfo/internal/asyncHookWrappers.ts +59 -0
  4. package/DeviceInfo/internal/devicesWithDynamicIsland.ts +30 -0
  5. package/DeviceInfo/internal/devicesWithNotch.ts +374 -0
  6. package/DeviceInfo/internal/nativeInterface.ts +28 -0
  7. package/DeviceInfo/internal/privateTypes.ts +231 -0
  8. package/DeviceInfo/internal/supported-platform-info.ts +97 -0
  9. package/DeviceInfo/internal/types.ts +19 -0
  10. package/DeviceInfo/web/index.js +223 -0
  11. package/GetLocals/src/NativeRNLocalize.ts +18 -0
  12. package/GetLocals/src/constants.ts +269 -0
  13. package/GetLocals/src/index.ts +56 -0
  14. package/GetLocals/src/module.ts +51 -0
  15. package/GetLocals/src/module.web.ts +148 -0
  16. package/GetLocals/src/types.ts +31 -0
  17. package/GetLocation/LocationError.ts +20 -0
  18. package/GetLocation/index.ts +46 -0
  19. package/GetLocation/utils.ts +89 -0
  20. package/ImageOrVedioPicker/src/index.ts +28 -0
  21. package/ImageOrVedioPicker/src/platforms/NativeImagePicker.ts +10 -0
  22. package/ImageOrVedioPicker/src/platforms/native.ts +61 -0
  23. package/ImageOrVedioPicker/src/platforms/web.ts +159 -0
  24. package/ImageOrVedioPicker/src/types.ts +74 -0
  25. package/NetInfo/src/__tests__/eventListenerCallbacks.spec.ts +332 -0
  26. package/NetInfo/src/__tests__/fetch.spec.ts +479 -0
  27. package/NetInfo/src/index.ts +186 -0
  28. package/NetInfo/src/internal/__mocks__/nativeModule.ts +13 -0
  29. package/NetInfo/src/internal/defaultConfiguration.ts +17 -0
  30. package/NetInfo/src/internal/defaultConfiguration.web.ts +17 -0
  31. package/NetInfo/src/internal/internetReachability.ts +180 -0
  32. package/NetInfo/src/internal/nativeInterface.ts +43 -0
  33. package/NetInfo/src/internal/nativeInterface.web.ts +27 -0
  34. package/NetInfo/src/internal/nativeModule.ts +15 -0
  35. package/NetInfo/src/internal/nativeModule.web.ts +306 -0
  36. package/NetInfo/src/internal/privateTypes.ts +41 -0
  37. package/NetInfo/src/internal/state.ts +137 -0
  38. package/NetInfo/src/internal/types.ts +128 -0
  39. package/README.md +246 -0
  40. package/RecordScreen/src/index.tsx +75 -0
  41. package/ScreenShot/src/RNViewShot.js +3 -0
  42. package/ScreenShot/src/RNViewShot.web.js +42 -0
  43. package/ScreenShot/src/index.js +308 -0
  44. package/Sensor/src/index.js +14 -0
  45. package/Sensor/src/rnsensors.js +57 -0
  46. package/Sensor/src/sensors.js +97 -0
  47. package/VideoPlayer/PlayVideo.tsx +51 -0
  48. package/VideoPlayer/index.js +69 -0
  49. package/android/README.md +14 -0
  50. package/android/build/generated/source/buildConfig/debug/com/shakebug/BuildConfig.java +10 -0
  51. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +42 -0
  52. package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +18 -0
  53. package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +6 -0
  54. package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +1 -0
  55. package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
  56. package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
  57. package/android/build/intermediates/compile_symbol_list/debug/R.txt +47 -0
  58. package/android/build/intermediates/compiled_local_resources/debug/out/xml_imagepicker_provider_paths.xml.flat +0 -0
  59. package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +12 -0
  60. package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
  61. package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
  62. package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
  63. package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
  64. package/android/build/intermediates/javac/debug/classes/com/shakebug/BuildConfig.class +0 -0
  65. package/android/build/intermediates/javac/debug/classes/com/shakebug/CustomMediaMetadataRetriever.class +0 -0
  66. package/android/build/intermediates/javac/debug/classes/com/shakebug/ImageMetadata.class +0 -0
  67. package/android/build/intermediates/javac/debug/classes/com/shakebug/ImagePickerProvider.class +0 -0
  68. package/android/build/intermediates/javac/debug/classes/com/shakebug/Metadata.class +0 -0
  69. package/android/build/intermediates/javac/debug/classes/com/shakebug/Options.class +0 -0
  70. package/android/build/intermediates/javac/debug/classes/com/shakebug/RecordScreenModule$1.class +0 -0
  71. package/android/build/intermediates/javac/debug/classes/com/shakebug/RecordScreenModule.class +0 -0
  72. package/android/build/intermediates/javac/debug/classes/com/shakebug/Shakebug.class +0 -0
  73. package/android/build/intermediates/javac/debug/classes/com/shakebug/ShakebugPackage.class +0 -0
  74. package/android/build/intermediates/javac/debug/classes/com/shakebug/Utility.class +0 -0
  75. package/android/build/intermediates/javac/debug/classes/com/shakebug/Utils.class +0 -0
  76. package/android/build/intermediates/javac/debug/classes/com/shakebug/VideoMetadata.class +0 -0
  77. package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$1.class +0 -0
  78. package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$2.class +0 -0
  79. package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$Formats.class +0 -0
  80. package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$Results.class +0 -0
  81. package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$ReusableByteArrayOutputStream.class +0 -0
  82. package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot.class +0 -0
  83. package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +49 -0
  84. package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +82 -0
  85. package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +42 -0
  86. package/android/build/intermediates/navigation_json/debug/navigation.json +1 -0
  87. package/android/build/intermediates/packaged_res/debug/values/values.xml +25 -0
  88. package/android/build/intermediates/packaged_res/debug/xml/imagepicker_provider_paths.xml +4 -0
  89. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/BuildConfig.class +0 -0
  90. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/CustomMediaMetadataRetriever.class +0 -0
  91. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ImageMetadata.class +0 -0
  92. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ImagePickerProvider.class +0 -0
  93. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Metadata.class +0 -0
  94. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Options.class +0 -0
  95. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/RecordScreenModule$1.class +0 -0
  96. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/RecordScreenModule.class +0 -0
  97. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Shakebug.class +0 -0
  98. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ShakebugPackage.class +0 -0
  99. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Utility.class +0 -0
  100. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Utils.class +0 -0
  101. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/VideoMetadata.class +0 -0
  102. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$1.class +0 -0
  103. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$2.class +0 -0
  104. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$Formats.class +0 -0
  105. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$Results.class +0 -0
  106. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$ReusableByteArrayOutputStream.class +0 -0
  107. package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot.class +0 -0
  108. package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +48 -0
  109. package/android/build/outputs/logs/manifest-merger-debug-report.txt +97 -0
  110. package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
  111. package/android/build.gradle +235 -0
  112. package/android/src/main/AndroidManifest.xml +40 -0
  113. package/android/src/main/java/com/shakebug/AmazonFireDeviceConnectivityPoller.java +170 -0
  114. package/android/src/main/java/com/shakebug/BaseUtils.java +33 -0
  115. package/android/src/main/java/com/shakebug/BroadcastReceiverConnectivityReceiver.java +131 -0
  116. package/android/src/main/java/com/shakebug/ConnectivityReceiver.java +318 -0
  117. package/android/src/main/java/com/shakebug/CrashLoggerModule.java +48 -0
  118. package/android/src/main/java/com/shakebug/DateUtil.java +64 -0
  119. package/android/src/main/java/com/shakebug/DeviceType.java +18 -0
  120. package/android/src/main/java/com/shakebug/DeviceUtil.java +46 -0
  121. package/android/src/main/java/com/shakebug/DrawingView.java +90 -0
  122. package/android/src/main/java/com/shakebug/DrawingViewManager.java +38 -0
  123. package/android/src/main/java/com/shakebug/GetLocation.java +147 -0
  124. package/android/src/main/java/com/shakebug/ImageMetadata.java +42 -0
  125. package/android/src/main/java/com/shakebug/ImagePickerProvider.java +8 -0
  126. package/android/src/main/java/com/shakebug/Metadata.java +46 -0
  127. package/android/src/main/java/com/shakebug/NetInfoModule.java +79 -0
  128. package/android/src/main/java/com/shakebug/NetInfoUtils.java +50 -0
  129. package/android/src/main/java/com/shakebug/NetworkCallbackConnectivityReceiver.java +209 -0
  130. package/android/src/main/java/com/shakebug/Options.java +42 -0
  131. package/android/src/main/java/com/shakebug/RNDeviceModule.java +1036 -0
  132. package/android/src/main/java/com/shakebug/RNInstallReferrerClient.java +124 -0
  133. package/android/src/main/java/com/shakebug/RNLocalizeModule.java +79 -0
  134. package/android/src/main/java/com/shakebug/RNLocalizeModuleImpl.java +258 -0
  135. package/android/src/main/java/com/shakebug/ReactNativeGetLocationModule.java +95 -0
  136. package/android/src/main/java/com/shakebug/RecordScreenModule.java +202 -0
  137. package/android/src/main/java/com/shakebug/ScreenshotDetectorModule.java +63 -0
  138. package/android/src/main/java/com/shakebug/SettingsUtil.java +44 -0
  139. package/android/src/main/java/com/shakebug/Shakebug.java +181 -0
  140. package/android/src/main/java/com/shakebug/ShakebugPackage.java +75 -0
  141. package/android/src/main/java/com/shakebug/ShakebugSDKImagePickerModule.java +56 -0
  142. package/android/src/main/java/com/shakebug/ShakebugSDKImagePickerModuleImpl.java +230 -0
  143. package/android/src/main/java/com/shakebug/ShakebugSDKScreenShotModule.java +196 -0
  144. package/android/src/main/java/com/shakebug/SharedPreferencesModule.java +39 -0
  145. package/android/src/main/java/com/shakebug/UnitConverter.java +48 -0
  146. package/android/src/main/java/com/shakebug/Utility.java +29 -0
  147. package/android/src/main/java/com/shakebug/Utils.java +593 -0
  148. package/android/src/main/java/com/shakebug/VideoMetadata.java +91 -0
  149. package/android/src/main/java/com/shakebug/VideoPlayerModule.java +199 -0
  150. package/android/src/main/java/com/shakebug/VideoThumbnailModule.java +215 -0
  151. package/android/src/main/java/com/shakebug/VideoTrimModule.java +372 -0
  152. package/android/src/main/java/com/shakebug/ViewShot.java +627 -0
  153. package/android/src/main/java/com/shakebug/adapters/VideoTrimmerAdapter.java +54 -0
  154. package/android/src/main/java/com/shakebug/callback/SingleCallback.java +11 -0
  155. package/android/src/main/java/com/shakebug/interfaces/IVideoTrimmerView.java +5 -0
  156. package/android/src/main/java/com/shakebug/interfaces/VideoPlayerListner.java +5 -0
  157. package/android/src/main/java/com/shakebug/interfaces/VideoTrimListener.java +10 -0
  158. package/android/src/main/java/com/shakebug/resolver/DeviceIdResolver.java +87 -0
  159. package/android/src/main/java/com/shakebug/resolver/DeviceTypeResolver.java +94 -0
  160. package/android/src/main/java/com/shakebug/thread/BackgroundExecutor.java +246 -0
  161. package/android/src/main/java/com/shakebug/thread/UiThreadExecutor.java +120 -0
  162. package/android/src/main/java/com/shakebug/types/CellularGeneration.java +60 -0
  163. package/android/src/main/java/com/shakebug/types/ConnectionType.java +26 -0
  164. package/android/src/main/java/com/shakebug/utils/StorageUtil.java +139 -0
  165. package/android/src/main/java/com/shakebug/utils/VideoTrimmerUtil.java +89 -0
  166. package/android/src/main/java/com/shakebug/widgets/RangeSeekBarView.java +534 -0
  167. package/android/src/main/java/com/shakebug/widgets/SpacesItemDecoration2.java +32 -0
  168. package/android/src/main/java/com/shakebug/widgets/VideoPlayerView.java +429 -0
  169. package/android/src/main/java/com/shakebug/widgets/VideoTrimmerView.java +477 -0
  170. package/android/src/main/java/com/shakebug/widgets/ZVideoView.java +48 -0
  171. package/android/src/main/res/drawable/custom_progress.xml +16 -0
  172. package/android/src/main/res/drawable/custom_thumb.xml +4 -0
  173. package/android/src/main/res/drawable/ic_close_button.xml +10 -0
  174. package/android/src/main/res/drawable/ic_video_pause_black.png +0 -0
  175. package/android/src/main/res/drawable/ic_video_play_black.png +0 -0
  176. package/android/src/main/res/drawable/ic_video_thumb_handle.png +0 -0
  177. package/android/src/main/res/drawable/icon_seek_bar.png +0 -0
  178. package/android/src/main/res/layout/video_player_view.xml +121 -0
  179. package/android/src/main/res/layout/video_thumb_item_layout.xml +16 -0
  180. package/android/src/main/res/layout/video_trimmer_view.xml +148 -0
  181. package/android/src/main/res/values/colors.xml +17 -0
  182. package/android/src/main/res/values/strings.xml +14 -0
  183. package/android/src/main/res/xml/imagepicker_provider_paths.xml +4 -0
  184. package/ios/CammeraPermission/RNCameraPermission.h +16 -0
  185. package/ios/CammeraPermission/RNCameraPermission.m +46 -0
  186. package/ios/DeviceInfo/DeviceUID.h +14 -0
  187. package/ios/DeviceInfo/DeviceUID.m +202 -0
  188. package/ios/DeviceInfo/EnvironmentUtil.h +41 -0
  189. package/ios/DeviceInfo/EnvironmentUtil.m +56 -0
  190. package/ios/DeviceInfo/RNDeviceInfo.h +22 -0
  191. package/ios/DeviceInfo/RNDeviceInfo.m +918 -0
  192. package/ios/GetLocals/ShakebugSDKRNLocalize.h +21 -0
  193. package/ios/GetLocals/ShakebugSDKRNLocalize.m +296 -0
  194. package/ios/GetLocation/SettingsUtil.h +16 -0
  195. package/ios/GetLocation/SettingsUtil.m +21 -0
  196. package/ios/GetLocation/ShakebugSDKLocationModule.h +17 -0
  197. package/ios/GetLocation/ShakebugSDKLocationModule.m +218 -0
  198. package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerManager.h +40 -0
  199. package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerManager.m +588 -0
  200. package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerUtils.h +26 -0
  201. package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerUtils.m +194 -0
  202. package/ios/MicrophonePermissionManager.h +14 -0
  203. package/ios/MicrophonePermissionManager.m +35 -0
  204. package/ios/NetInfo/RNCConnectionState.h +42 -0
  205. package/ios/NetInfo/RNCConnectionState.m +119 -0
  206. package/ios/NetInfo/RNCConnectionStateWatcher.h +31 -0
  207. package/ios/NetInfo/RNCConnectionStateWatcher.m +136 -0
  208. package/ios/NetInfo/RNCNetInfo.h +13 -0
  209. package/ios/NetInfo/RNCNetInfo.m +269 -0
  210. package/ios/RecordScreen/ShakebugSDKRecordScreen.h +31 -0
  211. package/ios/RecordScreen/ShakebugSDKRecordScreen.m +309 -0
  212. package/ios/ScreenShot/ShakebugSDKRNViewShot.h +6 -0
  213. package/ios/ScreenShot/ShakebugSDKRNViewShot.m +186 -0
  214. package/ios/ScreenshotDetector/ScreenShotDetector.h +12 -0
  215. package/ios/ScreenshotDetector/ScreenShotDetector.m +37 -0
  216. package/ios/Senors/RNSensorsAccelerometer.h +22 -0
  217. package/ios/Senors/RNSensorsAccelerometer.m +162 -0
  218. package/ios/Senors/RNSensorsBarometer.h +22 -0
  219. package/ios/Senors/RNSensorsBarometer.m +141 -0
  220. package/ios/Senors/RNSensorsGravity.h +22 -0
  221. package/ios/Senors/RNSensorsGravity.m +165 -0
  222. package/ios/Senors/RNSensorsGyroscope.h +22 -0
  223. package/ios/Senors/RNSensorsGyroscope.m +160 -0
  224. package/ios/Senors/RNSensorsMagnetometer.h +22 -0
  225. package/ios/Senors/RNSensorsMagnetometer.m +163 -0
  226. package/ios/Senors/RNSensorsOrientation.h +22 -0
  227. package/ios/Senors/RNSensorsOrientation.m +189 -0
  228. package/ios/Senors/RNSensorsUtils.h +7 -0
  229. package/ios/Senors/RNSensorsUtils.m +9 -0
  230. package/ios/Shakebug.h +7 -0
  231. package/ios/Shakebug.m +16 -0
  232. package/ios/Shakebug.xcodeproj/project.pbxproj +872 -0
  233. package/ios/Shakebug.xcodeproj/xcshareddata/xcschemes/Shakebug.xcscheme +66 -0
  234. package/ios/Shakebug.xcworkspace/contents.xcworkspacedata +10 -0
  235. package/ios/Shakebug.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  236. package/ios/SketchCanvas/DrawingView.h +18 -0
  237. package/ios/SketchCanvas/DrawingView.m +96 -0
  238. package/ios/SketchCanvas/DrawingViewManager.h +12 -0
  239. package/ios/SketchCanvas/DrawingViewManager.m +35 -0
  240. package/ios/Storage/SharedPreferencesModule.h +13 -0
  241. package/ios/Storage/SharedPreferencesModule.m +35 -0
  242. package/ios/Thumbnaill/VideoThumbnailManager.h +12 -0
  243. package/ios/Thumbnaill/VideoThumbnailManager.m +73 -0
  244. package/ios/TrimVideo/ShakebugSDKVideoTrim.swift +372 -0
  245. package/ios/TrimVideo/VideoTrim-Bridging-Header.h +10 -0
  246. package/ios/TrimVideo/VideoTrim.m +23 -0
  247. package/ios/TrimVideo/VideoTrimmer.swift +810 -0
  248. package/ios/TrimVideo/VideoTrimmerThumb.swift +119 -0
  249. package/ios/TrimVideo/VideoTrimmerViewController.swift +301 -0
  250. package/ios/VideoPlayer/VideoPlayerModule.h +14 -0
  251. package/ios/VideoPlayer/VideoPlayerModule.m +29 -0
  252. package/ios/VideoPlayer/VideoPlayerViewController.h +18 -0
  253. package/ios/VideoPlayer/VideoPlayerViewController.m +29 -0
  254. package/package.json +45 -0
  255. package/shakebug-react-native.podspec +50 -0
  256. package/src/APIs/AddIssue.js +70 -0
  257. package/src/APIs/EndSession.js +32 -0
  258. package/src/APIs/Event.js +39 -0
  259. package/src/APIs/MatchKey.js +40 -0
  260. package/src/APIs/StartSession.js +84 -0
  261. package/src/Assets/images/OpenSketch.png +0 -0
  262. package/src/Assets/images/Push.png +0 -0
  263. package/src/Assets/images/RemoveTextView.png +0 -0
  264. package/src/Assets/images/black.png +0 -0
  265. package/src/Assets/images/blue.png +0 -0
  266. package/src/Assets/images/borderdBlack.png +0 -0
  267. package/src/Assets/images/borderdBlue.png +0 -0
  268. package/src/Assets/images/borderdGreen.png +0 -0
  269. package/src/Assets/images/borderdRed.png +0 -0
  270. package/src/Assets/images/borderdYellow.png +0 -0
  271. package/src/Assets/images/clear.png +0 -0
  272. package/src/Assets/images/close.png +0 -0
  273. package/src/Assets/images/green.png +0 -0
  274. package/src/Assets/images/next.png +0 -0
  275. package/src/Assets/images/play.png +0 -0
  276. package/src/Assets/images/red.png +0 -0
  277. package/src/Assets/images/shake.png +0 -0
  278. package/src/Assets/images/shakebugLogo.png +0 -0
  279. package/src/Assets/images/stopButton.png +0 -0
  280. package/src/Assets/images/text_icon.png +0 -0
  281. package/src/Assets/images/yellow.png +0 -0
  282. package/src/Componanats/CustomAlert.js +80 -0
  283. package/src/Componanats/ErrorHandler.js +80 -0
  284. package/src/Componanats/GlobalStateContext.js +22 -0
  285. package/src/Componanats/KeyboardAvoidingWrapper.js +43 -0
  286. package/src/Componanats/NavigationContext.js +42 -0
  287. package/src/Componanats/ShakeFunction.js +562 -0
  288. package/src/Componanats/localization.js +482 -0
  289. package/src/Screens/AddDetailsScreen.js +462 -0
  290. package/src/Screens/FirstScreen.js +629 -0
  291. package/src/Screens/Shakebug.js +487 -0
  292. package/src/Screens/StrockView.js +20 -0
  293. package/src/Screens/TrimVideoScreen.js +81 -0
  294. package/src/Screens/TutorialScreen.js +36 -0
  295. package/src/index.tsx +117 -0
  296. package/trimVideo/src/index.tsx +141 -0
@@ -0,0 +1,194 @@
1
+ #import "ShakebugSDKImagePickerUtils.h"
2
+ #import <CoreServices/CoreServices.h>
3
+ #import <PhotosUI/PhotosUI.h>
4
+
5
+ @implementation ShakebugSDKImagePickerUtils
6
+
7
+ + (void) setupPickerFromOptions:(UIImagePickerController *)picker options:(NSDictionary *)options target:(RNImagePickerTarget)target
8
+ {
9
+ if ([[options objectForKey:@"mediaType"] isEqualToString:@"video"]) {
10
+
11
+ if ([[options objectForKey:@"videoQuality"] isEqualToString:@"high"]) {
12
+ picker.videoQuality = UIImagePickerControllerQualityTypeHigh;
13
+ }
14
+ else if ([[options objectForKey:@"videoQuality"] isEqualToString:@"low"]) {
15
+ picker.videoQuality = UIImagePickerControllerQualityTypeLow;
16
+ }
17
+ else {
18
+ picker.videoQuality = UIImagePickerControllerQualityTypeMedium;
19
+ }
20
+ }
21
+
22
+ if (target == camera) {
23
+ picker.sourceType = UIImagePickerControllerSourceTypeCamera;
24
+
25
+ if ([options[@"durationLimit"] doubleValue] > 0) {
26
+ picker.videoMaximumDuration = [options[@"durationLimit"] doubleValue];
27
+ }
28
+
29
+ if ([options[@"cameraType"] isEqualToString:@"front"]) {
30
+ picker.cameraDevice = UIImagePickerControllerCameraDeviceFront;
31
+ } else {
32
+ picker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
33
+ }
34
+ } else {
35
+ picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
36
+ }
37
+
38
+ if ([options[@"mediaType"] isEqualToString:@"video"]) {
39
+ picker.mediaTypes = @[(NSString *)kUTTypeMovie];
40
+ } else if ([options[@"mediaType"] isEqualToString:@"photo"]) {
41
+ picker.mediaTypes = @[(NSString *)kUTTypeImage];
42
+ } else if ([options[@"mediaType"] isEqualToString:@"mixed"]) {
43
+ picker.mediaTypes = @[(NSString *)kUTTypeImage, (NSString *)kUTTypeMovie];
44
+ }
45
+
46
+ picker.modalPresentationStyle = [RCTConvert UIModalPresentationStyle:options[@"presentationStyle"]];
47
+ }
48
+
49
+ + (PHPickerConfiguration *)makeConfigurationFromOptions:(NSDictionary *)options target:(RNImagePickerTarget)target API_AVAILABLE(ios(14))
50
+ {
51
+ #if __has_include(<PhotosUI/PHPicker.h>)
52
+ PHPickerConfiguration *configuration;
53
+
54
+ if(options[@"includeExtra"]) {
55
+ PHPhotoLibrary *photoLibrary = [PHPhotoLibrary sharedPhotoLibrary];
56
+ configuration = [[PHPickerConfiguration alloc] initWithPhotoLibrary:photoLibrary];
57
+ } else {
58
+ configuration = [[PHPickerConfiguration alloc] init];
59
+ }
60
+
61
+ if ([[options objectForKey:@"assetRepresentationMode"] isEqualToString:@"current"]) {
62
+ configuration.preferredAssetRepresentationMode = PHPickerConfigurationAssetRepresentationModeCurrent;
63
+ }
64
+ else if ([[options objectForKey:@"assetRepresentationMode"] isEqualToString:@"compatible"]) {
65
+ configuration.preferredAssetRepresentationMode = PHPickerConfigurationAssetRepresentationModeCompatible;
66
+ }
67
+ else {
68
+ configuration.preferredAssetRepresentationMode = PHPickerConfigurationAssetRepresentationModeAutomatic;
69
+ }
70
+
71
+ configuration.selectionLimit = [options[@"selectionLimit"] integerValue];
72
+
73
+ if ([options[@"mediaType"] isEqualToString:@"video"]) {
74
+ configuration.filter = [PHPickerFilter videosFilter];
75
+ } else if ([options[@"mediaType"] isEqualToString:@"photo"]) {
76
+ configuration.filter = [PHPickerFilter imagesFilter];
77
+ } else if ((target == library) && ([options[@"mediaType"] isEqualToString:@"mixed"])) {
78
+ configuration.filter = [PHPickerFilter anyFilterMatchingSubfilters: @[PHPickerFilter.imagesFilter, PHPickerFilter.videosFilter]];
79
+ }
80
+ return configuration;
81
+ #else
82
+ return nil;
83
+ #endif
84
+ }
85
+
86
+
87
+ + (BOOL) isSimulator
88
+ {
89
+ #if TARGET_OS_SIMULATOR
90
+ return YES;
91
+ #endif
92
+ return NO;
93
+ }
94
+
95
+ + (NSString*) getFileType:(NSData *)imageData
96
+ {
97
+ const uint8_t firstByteJpg = 0xFF;
98
+ const uint8_t firstBytePng = 0x89;
99
+ const uint8_t firstByteGif = 0x47;
100
+
101
+ uint8_t firstByte;
102
+ [imageData getBytes:&firstByte length:1];
103
+ switch (firstByte) {
104
+ case firstByteJpg:
105
+ return @"jpg";
106
+ case firstBytePng:
107
+ return @"png";
108
+ case firstByteGif:
109
+ return @"gif";
110
+ default:
111
+ return @"jpg";
112
+ }
113
+ }
114
+
115
+ + (NSString *) getFileTypeFromUrl:(NSURL *)url {
116
+ CFStringRef fileExtension = (__bridge CFStringRef)[url pathExtension];
117
+ CFStringRef UTI = UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, fileExtension, NULL);
118
+ CFStringRef MIMEType = UTTypeCopyPreferredTagWithClass(UTI, kUTTagClassMIMEType);
119
+ CFRelease(UTI);
120
+ return (__bridge_transfer NSString *)MIMEType;
121
+ }
122
+
123
+ + (NSNumber *) getFileSizeFromUrl:(NSURL *)url {
124
+ NSError *attributesError;
125
+ NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[url path] error:&attributesError];
126
+ NSNumber *fileSizeNumber = [fileAttributes objectForKey:NSFileSize];
127
+ long fileSize = [fileSizeNumber longLongValue];
128
+
129
+ if (attributesError) {
130
+ return nil;
131
+ }
132
+
133
+ return [NSNumber numberWithLong:fileSize];
134
+ }
135
+
136
+ + (CGSize)getVideoDimensionsFromUrl:(NSURL *)url {
137
+ AVURLAsset *asset = [AVURLAsset URLAssetWithURL:url options:nil];
138
+ NSArray *tracks = [asset tracksWithMediaType:AVMediaTypeVideo];
139
+
140
+ if ([tracks count] > 0) {
141
+ AVAssetTrack *track = [tracks objectAtIndex:0];
142
+ return track.naturalSize;
143
+ }
144
+
145
+ return CGSizeMake(0, 0);
146
+ }
147
+
148
+ + (UIImage*)resizeImage:(UIImage*)image maxWidth:(float)maxWidth maxHeight:(float)maxHeight
149
+ {
150
+ if ((maxWidth == 0) || (maxHeight == 0)) {
151
+ return image;
152
+ }
153
+
154
+ if (image.size.width <= maxWidth && image.size.height <= maxHeight) {
155
+ return image;
156
+ }
157
+
158
+ CGSize newSize = CGSizeMake(image.size.width, image.size.height);
159
+ if (maxWidth < newSize.width) {
160
+ newSize = CGSizeMake(maxWidth, (maxWidth / newSize.width) * newSize.height);
161
+ }
162
+ if (maxHeight < newSize.height) {
163
+ newSize = CGSizeMake((maxHeight / newSize.height) * newSize.width, maxHeight);
164
+ }
165
+
166
+ newSize.width = (int)newSize.width;
167
+ newSize.height = (int)newSize.height;
168
+
169
+ UIGraphicsBeginImageContext(newSize);
170
+ [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
171
+ UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
172
+ if (newImage == nil) {
173
+ NSLog(@"could not scale image");
174
+ }
175
+ UIGraphicsEndImageContext();
176
+
177
+ return newImage;
178
+ }
179
+
180
+ + (PHAsset *)fetchPHAssetOnIOS13:(NSDictionary<NSString *,id> *)info
181
+ {
182
+ NSURL *referenceURL = [info objectForKey:UIImagePickerControllerReferenceURL];
183
+
184
+ if(!referenceURL) {
185
+ return nil;
186
+ }
187
+
188
+ // We fetch the asset like this to support iOS 10 and lower
189
+ // see: https://stackoverflow.com/a/52529904/4177049
190
+ PHFetchResult* fetchResult = [PHAsset fetchAssetsWithALAssetURLs:@[referenceURL] options:nil];
191
+ return fetchResult.firstObject;
192
+ }
193
+
194
+ @end
@@ -0,0 +1,14 @@
1
+ //
2
+ // MicrophonePermissionManager.h
3
+ // Shakebug
4
+ //
5
+ // Created by ideveloper2 on 28/02/24.
6
+ // Copyright © 2024 Facebook. All rights reserved.
7
+ //
8
+
9
+ #import <React/RCTBridgeModule.h>
10
+ #import <AVFoundation/AVFoundation.h>
11
+
12
+ @interface RCT_EXTERN_MODULE(MicrophonePermissionManager, NSObject)
13
+ RCT_EXTERN_METHOD(requestMicrophonePermission:(RCTResponseSenderBlock)callback)
14
+ @end
@@ -0,0 +1,35 @@
1
+ // MicrophonePermissionManager.m
2
+
3
+ #import <React/RCTBridgeModule.h>
4
+ #import <AVFoundation/AVFoundation.h>
5
+
6
+ @interface MicrophonePermissionManager : NSObject <RCTBridgeModule>
7
+ @end
8
+
9
+ @implementation MicrophonePermissionManager
10
+
11
+ RCT_EXPORT_MODULE();
12
+
13
+ RCT_EXPORT_METHOD(requestMicrophonePermission:(RCTResponseSenderBlock)callback) {
14
+ AVAudioSession *audioSession = [AVAudioSession sharedInstance];
15
+
16
+ if (!audioSession) {
17
+ callback(@[@"AVAudioSession is not available", @(NO)]);
18
+ return;
19
+ }
20
+
21
+ NSError *error = nil;
22
+ [audioSession requestRecordPermission:^(BOOL granted) {
23
+ if (granted) {
24
+ callback(@[[NSNull null], @(YES)]);
25
+ } else {
26
+ callback(@[[NSNull null], @(NO)]);
27
+ }
28
+ }];
29
+
30
+ if (error) {
31
+ callback(@[error.localizedDescription, @(NO)]);
32
+ }
33
+ }
34
+
35
+ @end
@@ -0,0 +1,42 @@
1
+ //
2
+ // RNCConnectionState.h
3
+ // Shakebug
4
+ //
5
+ // Created by ideveloper2 on 06/03/24.
6
+ // Copyright © 2024 Facebook. All rights reserved.
7
+ //
8
+
9
+ #import <Foundation/Foundation.h>
10
+ #import <SystemConfiguration/SystemConfiguration.h>
11
+
12
+ NS_ASSUME_NONNULL_BEGIN
13
+
14
+ // Based on the ConnectionType enum described in the W3C Network Information API spec
15
+ // (https://wicg.github.io/netinfo/).
16
+ static NSString *const RNCConnectionTypeUnknown = @"unknown";
17
+ static NSString *const RNCConnectionTypeNone = @"none";
18
+ static NSString *const RNCConnectionTypeWifi = @"wifi";
19
+ static NSString *const RNCConnectionTypeCellular = @"cellular";
20
+ static NSString *const RNCConnectionTypeEthernet = @"ethernet";
21
+
22
+ // Based on the EffectiveConnectionType enum described in the W3C Network Information API spec
23
+ // (https://wicg.github.io/netinfo/).
24
+ static NSString *const RNCCellularGeneration2g = @"2g";
25
+ static NSString *const RNCCellularGeneration3g = @"3g";
26
+ static NSString *const RNCCellularGeneration4g = @"4g";
27
+ static NSString *const RNCCellularGeneration5g = @"5g";
28
+
29
+ @interface ShakebugSDKRNCConnectionState : NSObject
30
+
31
+ - (instancetype)init;
32
+ - (instancetype)initWithReachabilityFlags:(SCNetworkReachabilityFlags)flags;
33
+ - (BOOL)isEqualToConnectionState:(ShakebugSDKRNCConnectionState *)otherState;
34
+
35
+ @property (nonatomic, strong, readonly) NSString *type;
36
+ @property (nullable, nonatomic, strong, readonly) NSString *cellularGeneration;
37
+ @property (nonatomic, readonly) BOOL connected;
38
+ @property (nonatomic, readonly) BOOL expensive;
39
+
40
+ @end
41
+
42
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,119 @@
1
+ //
2
+ // RNCConnectionState.m
3
+ // Shakebug
4
+ //
5
+ // Created by ideveloper2 on 06/03/24.
6
+ // Copyright © 2024 Facebook. All rights reserved.
7
+ //
8
+
9
+
10
+ #import "RNCConnectionState.h"
11
+ #if !TARGET_OS_TV && !TARGET_OS_MACCATALYST && !TARGET_OS_VISION
12
+ #import <CoreTelephony/CTTelephonyNetworkInfo.h>
13
+ #endif
14
+
15
+ #if TARGET_OS_TV || TARGET_OS_OSX || TARGET_OS_MACCATALYST || TARGET_OS_VISION
16
+ #include <ifaddrs.h>
17
+ #endif
18
+
19
+ @implementation ShakebugSDKRNCConnectionState
20
+
21
+ // Creates a new "blank" state
22
+ - (instancetype)init
23
+ {
24
+ self = [super init];
25
+ if (self) {
26
+ _type = RNCConnectionTypeUnknown;
27
+ _cellularGeneration = nil;
28
+ _expensive = false;
29
+ }
30
+ return self;
31
+ }
32
+
33
+ // Creates the state from the given reachability references
34
+ - (instancetype)initWithReachabilityFlags:(SCNetworkReachabilityFlags)flags
35
+ {
36
+ self = [self init];
37
+ if (self) {
38
+ _type = RNCConnectionTypeUnknown;
39
+ _cellularGeneration = nil;
40
+ _expensive = false;
41
+
42
+ if ((flags & kSCNetworkReachabilityFlagsReachable) == 0 ||
43
+ (flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0) {
44
+ _type = RNCConnectionTypeNone;
45
+ }
46
+ #if !TARGET_OS_TV && !TARGET_OS_OSX && !TARGET_OS_MACCATALYST && !TARGET_OS_VISION
47
+ else if ((flags & kSCNetworkReachabilityFlagsIsWWAN) != 0) {
48
+ _type = RNCConnectionTypeCellular;
49
+ _expensive = true;
50
+
51
+ CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init];
52
+ if (netinfo) {
53
+ if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyGPRS] ||
54
+ [netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyEdge] ||
55
+ [netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMA1x]) {
56
+ _cellularGeneration = RNCCellularGeneration2g;
57
+ } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyWCDMA] ||
58
+ [netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSDPA] ||
59
+ [netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyHSUPA] ||
60
+ [netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORev0] ||
61
+ [netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevA] ||
62
+ [netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyCDMAEVDORevB] ||
63
+ [netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyeHRPD]) {
64
+ _cellularGeneration = RNCCellularGeneration3g;
65
+ } else if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyLTE]) {
66
+ _cellularGeneration = RNCCellularGeneration4g;
67
+ } else if (@available(iOS 14.1, *)) {
68
+ if ([netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyNRNSA] ||
69
+ [netinfo.currentRadioAccessTechnology isEqualToString:CTRadioAccessTechnologyNR]) {
70
+ _cellularGeneration = RNCCellularGeneration5g;
71
+ }
72
+ }
73
+ }
74
+ }
75
+ #endif
76
+ else {
77
+ _type = RNCConnectionTypeWifi;
78
+ #if TARGET_OS_TV || TARGET_OS_OSX || TARGET_OS_MACCATALYST || TARGET_OS_VISION
79
+ struct ifaddrs *interfaces = NULL;
80
+ struct ifaddrs *temp_addr = NULL;
81
+ int success = 0;
82
+ // retrieve the current interfaces - returns 0 on success
83
+ success = getifaddrs(&interfaces);
84
+ if (success == 0) {
85
+ // Loop through linked list of interfaces
86
+ temp_addr = interfaces;
87
+ while (temp_addr != NULL) {
88
+ if (temp_addr->ifa_addr->sa_family == AF_INET) {
89
+ // Check if interface is en0 which is the ethernet connection on the Apple TV
90
+ NSString* ifname = [NSString stringWithUTF8String:temp_addr->ifa_name];
91
+ if ([ifname isEqualToString:@"en0"]) {
92
+ _type = RNCConnectionTypeEthernet;
93
+ }
94
+ }
95
+ temp_addr = temp_addr->ifa_next;
96
+ }
97
+ }
98
+ // Free memory
99
+ freeifaddrs(interfaces);
100
+ #endif
101
+ }
102
+ }
103
+ return self;
104
+ }
105
+
106
+ // Checks if two states are equal
107
+ - (BOOL)isEqualToConnectionState:(ShakebugSDKRNCConnectionState *)otherState
108
+ {
109
+ return [self.type isEqualToString:otherState.type]
110
+ && [self.cellularGeneration isEqualToString:otherState.cellularGeneration]
111
+ && self.expensive == otherState.expensive;
112
+ }
113
+
114
+ - (BOOL)connected
115
+ {
116
+ return ![self.type isEqualToString:RNCConnectionTypeNone] && ![self.type isEqualToString:RNCConnectionTypeUnknown];
117
+ }
118
+
119
+ @end
@@ -0,0 +1,31 @@
1
+ //
2
+ // RNCConnectionStateWatcher.h
3
+ // Shakebug
4
+ //
5
+ // Created by ideveloper2 on 06/03/24.
6
+ // Copyright © 2024 Facebook. All rights reserved.
7
+ //
8
+
9
+
10
+ #import <Foundation/Foundation.h>
11
+ #import "RNCConnectionState.h"
12
+
13
+ NS_ASSUME_NONNULL_BEGIN
14
+
15
+ @class ShakebugSDKRNCConnectionStateWatcher;
16
+
17
+
18
+ @protocol RNCConnectionStateWatcherDelegate
19
+
20
+ - (void)connectionStateWatcher:(ShakebugSDKRNCConnectionStateWatcher *)connectionStateWatcher didUpdateState:(ShakebugSDKRNCConnectionState *)state;
21
+
22
+ @end
23
+
24
+ @interface ShakebugSDKRNCConnectionStateWatcher : NSObject
25
+
26
+ - (instancetype)initWithDelegate:(id<RNCConnectionStateWatcherDelegate>)delegate;
27
+ - (ShakebugSDKRNCConnectionState *)currentState;
28
+
29
+ @end
30
+
31
+ NS_ASSUME_NONNULL_END
@@ -0,0 +1,136 @@
1
+ //
2
+ // RNCConnectionStateWatcher.m
3
+ // Shakebug
4
+ //
5
+ // Created by ideveloper2 on 06/03/24.
6
+ // Copyright © 2024 Facebook. All rights reserved.
7
+ //
8
+
9
+ #import "RNCConnectionStateWatcher.h"
10
+ #import <SystemConfiguration/SystemConfiguration.h>
11
+ #import <netinet/in.h>
12
+
13
+ @interface ShakebugSDKRNCConnectionStateWatcher () <NSURLSessionDataDelegate>
14
+
15
+ @property (nonatomic) SCNetworkReachabilityRef reachabilityRef;
16
+ @property (nullable, weak, nonatomic) id<RNCConnectionStateWatcherDelegate> delegate;
17
+ @property (nonatomic) SCNetworkReachabilityFlags lastFlags;
18
+ @property (nonnull, strong, nonatomic) ShakebugSDKRNCConnectionState *state;
19
+
20
+ @end
21
+
22
+ @implementation ShakebugSDKRNCConnectionStateWatcher
23
+
24
+ #pragma mark - Lifecycle
25
+
26
+ - (instancetype)initWithDelegate:(id<RNCConnectionStateWatcherDelegate>)delegate
27
+ {
28
+ self = [self init];
29
+ if (self) {
30
+ _delegate = delegate;
31
+ _state = [[ShakebugSDKRNCConnectionState alloc] init];
32
+ _reachabilityRef = [self createReachabilityRef];
33
+ }
34
+ return self;
35
+ }
36
+
37
+ - (void)dealloc
38
+ {
39
+ self.delegate = nil;
40
+
41
+ if (self.reachabilityRef != nil) {
42
+ SCNetworkReachabilityUnscheduleFromRunLoop(self.reachabilityRef, CFRunLoopGetMain(), kCFRunLoopCommonModes);
43
+ CFRelease(self.reachabilityRef);
44
+ self.reachabilityRef = nil;
45
+ }
46
+ }
47
+
48
+ #pragma mark - Public methods
49
+
50
+ - (ShakebugSDKRNCConnectionState *)currentState
51
+ {
52
+ return self.state;
53
+ }
54
+
55
+ #pragma mark - Callback
56
+
57
+ typedef void (^RNCConnectionStateUpdater)(SCNetworkReachabilityFlags);
58
+
59
+ static void RNCReachabilityCallback(__unused SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void *info)
60
+ {
61
+ RNCConnectionStateUpdater block = (__bridge id)info;
62
+ if (block != nil) {
63
+ block(flags);
64
+ }
65
+ }
66
+
67
+ static void RNCReachabilityContextRelease(const void *info)
68
+ {
69
+ Block_release(info);
70
+ }
71
+
72
+ static const void *RNCReachabilityContextRetain(const void *info)
73
+ {
74
+ return Block_copy(info);
75
+ }
76
+
77
+ - (void)update:(SCNetworkReachabilityFlags)flags
78
+ {
79
+ self.lastFlags = flags;
80
+ self.state = [[ShakebugSDKRNCConnectionState alloc] initWithReachabilityFlags:flags];
81
+ }
82
+
83
+ #pragma mark - Setters
84
+
85
+ - (void)setState:(ShakebugSDKRNCConnectionState *)state
86
+ {
87
+ if (![state isEqualToConnectionState:_state]) {
88
+ _state = state;
89
+
90
+ [self updateDelegate];
91
+ }
92
+ }
93
+
94
+ #pragma mark - Utilities
95
+
96
+ - (void)updateDelegate
97
+ {
98
+ [self.delegate connectionStateWatcher:self didUpdateState:self.state];
99
+ }
100
+
101
+ - (SCNetworkReachabilityRef)createReachabilityRef
102
+ {
103
+ struct sockaddr_in zeroAddress;
104
+ bzero(&zeroAddress, sizeof(zeroAddress));
105
+ zeroAddress.sin_len = sizeof(zeroAddress);
106
+ zeroAddress.sin_family = AF_INET;
107
+
108
+ SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *) &zeroAddress);
109
+
110
+ __weak typeof(self) weakSelf = self;
111
+ RNCConnectionStateUpdater callback = ^(SCNetworkReachabilityFlags flags) {
112
+ __strong __typeof(weakSelf) strongSelf = weakSelf;
113
+ if (strongSelf != nil) {
114
+ [strongSelf update:flags];
115
+ }
116
+ };
117
+
118
+ SCNetworkReachabilityContext context = {
119
+ 0,
120
+ (__bridge void *)callback,
121
+ RNCReachabilityContextRetain,
122
+ RNCReachabilityContextRelease,
123
+ NULL
124
+ };
125
+ SCNetworkReachabilitySetCallback(reachability, RNCReachabilityCallback, &context);
126
+ SCNetworkReachabilityScheduleWithRunLoop(reachability, CFRunLoopGetMain(), kCFRunLoopCommonModes);
127
+
128
+ // Set the state the first time
129
+ SCNetworkReachabilityFlags flags;
130
+ SCNetworkReachabilityGetFlags(reachability, &flags);
131
+ [self update:flags];
132
+
133
+ return reachability;
134
+ }
135
+
136
+ @end
@@ -0,0 +1,13 @@
1
+ //
2
+ // RNCNetInfo.h
3
+ // Shakebug
4
+ //
5
+ // Created by ideveloper2 on 06/03/24.
6
+ // Copyright © 2024 Facebook. All rights reserved.
7
+ //
8
+
9
+ #import <React/RCTEventEmitter.h>
10
+
11
+ @interface ShakebugSDKRNCNetInfo : RCTEventEmitter
12
+
13
+ @end