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,186 @@
1
+ #import "ShakebugSDKRNViewShot.h"
2
+ #import <AVFoundation/AVFoundation.h>
3
+ #import <React/RCTLog.h>
4
+ #import <React/UIView+React.h>
5
+ #import <React/RCTUtils.h>
6
+ #import <React/RCTConvert.h>
7
+ #import <React/RCTScrollView.h>
8
+ #import <React/RCTUIManager.h>
9
+ #if __has_include(<React/RCTUIManagerUtils.h>)
10
+ #import <React/RCTUIManagerUtils.h>
11
+ #endif
12
+ #import <React/RCTBridge.h>
13
+
14
+ @implementation ShakebugSDKRNViewShot
15
+
16
+ RCT_EXPORT_MODULE()
17
+
18
+ @synthesize bridge = _bridge;
19
+
20
+ - (dispatch_queue_t)methodQueue
21
+ {
22
+ return RCTGetUIManagerQueue();
23
+ }
24
+
25
+ RCT_EXPORT_METHOD(captureScreen: (NSDictionary *)options
26
+ resolve:(RCTPromiseResolveBlock)resolve
27
+ reject:(RCTPromiseRejectBlock)reject)
28
+ {
29
+ [self captureRef: [NSNumber numberWithInt:-1] withOptions:options resolve:resolve reject:reject];
30
+ }
31
+
32
+ RCT_EXPORT_METHOD(releaseCapture:(nonnull NSString *)uri)
33
+ {
34
+ NSString *directory = [NSTemporaryDirectory() stringByAppendingPathComponent:@"ReactNative"];
35
+ // Ensure it's a valid file in the tmp directory
36
+ if ([uri hasPrefix:directory] && ![uri isEqualToString:directory]) {
37
+ NSFileManager *fileManager = [NSFileManager new];
38
+ if ([fileManager fileExistsAtPath:uri]) {
39
+ [fileManager removeItemAtPath:uri error:NULL];
40
+ }
41
+ }
42
+ }
43
+
44
+ RCT_EXPORT_METHOD(captureRef:(nonnull NSNumber *)target
45
+ withOptions:(NSDictionary *)options
46
+ resolve:(RCTPromiseResolveBlock)resolve
47
+ reject:(RCTPromiseRejectBlock)reject)
48
+ {
49
+ [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, UIView *> *viewRegistry) {
50
+
51
+ // Get view
52
+ UIView *view;
53
+
54
+ if ([target intValue] == -1) {
55
+ UIWindow *window = [[UIApplication sharedApplication] keyWindow];
56
+ view = window;
57
+ } else {
58
+ view = viewRegistry[target];
59
+ }
60
+
61
+ if (!view) {
62
+ reject(RCTErrorUnspecified, [NSString stringWithFormat:@"No view found with reactTag: %@", target], nil);
63
+ return;
64
+ }
65
+
66
+ // Get options
67
+ CGSize size = [RCTConvert CGSize:options];
68
+ NSString *format = [RCTConvert NSString:options[@"format"]];
69
+ NSString *result = [RCTConvert NSString:options[@"result"]];
70
+ BOOL renderInContext = [RCTConvert BOOL:options[@"useRenderInContext"]];
71
+ BOOL snapshotContentContainer = [RCTConvert BOOL:options[@"snapshotContentContainer"]];
72
+
73
+ // Capture image
74
+ BOOL success;
75
+
76
+ UIView* rendered;
77
+ UIScrollView* scrollView;
78
+ if (snapshotContentContainer) {
79
+ if (![view isKindOfClass:[RCTScrollView class]]) {
80
+ reject(RCTErrorUnspecified, [NSString stringWithFormat:@"snapshotContentContainer can only be used on a RCTScrollView. instead got: %@", view], nil);
81
+ return;
82
+ }
83
+ RCTScrollView* rctScrollView = view;
84
+ scrollView = rctScrollView.scrollView;
85
+ rendered = scrollView;
86
+ }
87
+ else {
88
+ rendered = view;
89
+ }
90
+
91
+ if (size.width < 0.1 || size.height < 0.1) {
92
+ size = snapshotContentContainer ? scrollView.contentSize : view.bounds.size;
93
+ }
94
+ if (size.width < 0.1 || size.height < 0.1) {
95
+ reject(RCTErrorUnspecified, [NSString stringWithFormat:@"The content size must not be zero or negative. Got: (%g, %g)", size.width, size.height], nil);
96
+ return;
97
+ }
98
+
99
+ CGPoint savedContentOffset;
100
+ CGRect savedFrame;
101
+ if (snapshotContentContainer) {
102
+ // Save scroll & frame and set it temporarily to the full content size
103
+ savedContentOffset = scrollView.contentOffset;
104
+ savedFrame = scrollView.frame;
105
+ scrollView.contentOffset = CGPointZero;
106
+ scrollView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height);
107
+ }
108
+
109
+ UIGraphicsBeginImageContextWithOptions(size, NO, 0);
110
+
111
+ if (renderInContext) {
112
+ // this comes with some trade-offs such as inability to capture gradients or scrollview's content in full but it works for large views
113
+ [rendered.layer renderInContext: UIGraphicsGetCurrentContext()];
114
+ success = YES;
115
+ }
116
+ else {
117
+ // this doesn't work for large views and reports incorrect success even though the image is blank
118
+ success = [rendered drawViewHierarchyInRect:(CGRect){CGPointZero, size} afterScreenUpdates:YES];
119
+ }
120
+ UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
121
+ UIGraphicsEndImageContext();
122
+
123
+ if (snapshotContentContainer) {
124
+ // Restore scroll & frame
125
+ scrollView.contentOffset = savedContentOffset;
126
+ scrollView.frame = savedFrame;
127
+ }
128
+
129
+ if (!success) {
130
+ reject(RCTErrorUnspecified, @"The view cannot be captured. drawViewHierarchyInRect was not successful. This is a potential technical or security limitation.", nil);
131
+ return;
132
+ }
133
+
134
+ if (!image) {
135
+ reject(RCTErrorUnspecified, @"Failed to capture view snapshot. UIGraphicsGetImageFromCurrentImageContext() returned nil!", nil);
136
+ return;
137
+ }
138
+
139
+ // Convert image to data (on a background thread)
140
+ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
141
+
142
+ NSData *data;
143
+ if ([format isEqualToString:@"jpg"]) {
144
+ CGFloat quality = [RCTConvert CGFloat:options[@"quality"]];
145
+ data = UIImageJPEGRepresentation(image, quality);
146
+ }
147
+ else {
148
+ data = UIImagePNGRepresentation(image);
149
+ }
150
+
151
+ NSError *error = nil;
152
+ NSString *res = nil;
153
+ if ([result isEqualToString:@"base64"]) {
154
+ // Return as a base64 raw string
155
+ res = [data base64EncodedStringWithOptions: NSDataBase64Encoding64CharacterLineLength];
156
+ }
157
+ else if ([result isEqualToString:@"data-uri"]) {
158
+ // Return as a base64 data uri string
159
+ NSString *base64 = [data base64EncodedStringWithOptions: NSDataBase64Encoding64CharacterLineLength];
160
+ NSString *imageFormat = ([format isEqualToString:@"jpg"]) ? @"jpeg" : format;
161
+ res = [NSString stringWithFormat:@"data:image/%@;base64,%@", imageFormat, base64];
162
+ }
163
+ else {
164
+ // Save to a temp file
165
+ NSString *path = RCTTempFilePath(format, &error);
166
+ if (path && !error) {
167
+ if ([data writeToFile:path options:(NSDataWritingOptions)0 error:&error]) {
168
+ res = path;
169
+ }
170
+ }
171
+ }
172
+
173
+ if (res && !error) {
174
+ resolve(res);
175
+ return;
176
+ }
177
+
178
+ // If we reached here, something went wrong
179
+ if (error) reject(RCTErrorUnspecified, error.localizedDescription, error);
180
+ else reject(RCTErrorUnspecified, @"viewshot unknown error", nil);
181
+ });
182
+ }];
183
+ }
184
+
185
+
186
+ @end
@@ -0,0 +1,12 @@
1
+ //
2
+ // ScreenShotDetector.h
3
+ // TestApp
4
+ //
5
+ // Created by ideveloper2 on 17/05/24.
6
+ //
7
+
8
+ #import <React/RCTEventEmitter.h>
9
+
10
+ @interface ShakebugSDKScreenShotDetector : RCTEventEmitter <RCTBridgeModule>
11
+ - (void)sendScreenShotEvent:(NSDictionary *)eventData;
12
+ @end
@@ -0,0 +1,37 @@
1
+ //
2
+ // ScreenShotDetector.m
3
+ // TestApp
4
+ //
5
+ // Created by ideveloper2 on 17/05/24.
6
+ //
7
+
8
+ #import "ScreenShotDetector.h"
9
+
10
+ @implementation ShakebugSDKScreenShotDetector
11
+
12
+ RCT_EXPORT_MODULE();
13
+
14
+ - (void)startObserving {
15
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleScreenShot:) name:UIApplicationUserDidTakeScreenshotNotification object:nil];
16
+ }
17
+
18
+ - (void)stopObserving {
19
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
20
+ }
21
+
22
+ - (NSArray<NSString *> *)supportedEvents {
23
+ return @[@"ScreenshotTaken"];
24
+ }
25
+
26
+ - (void)handleScreenShot:(NSNotification *)notification {
27
+ NSDictionary *eventData = @{@"timestamp": @([[NSDate date] timeIntervalSince1970])};
28
+ [self sendScreenShotEvent:eventData];
29
+ }
30
+
31
+ - (void)sendScreenShotEvent:(NSDictionary *)eventData {
32
+ [self sendEventWithName:@"ScreenshotTaken" body:eventData];
33
+ }
34
+
35
+ @end
36
+
37
+
@@ -0,0 +1,22 @@
1
+ // Inspired by https://github.com/pwmckenna/react-native-motion-manager
2
+
3
+ #import <React/RCTBridgeModule.h>
4
+ #import <CoreMotion/CoreMotion.h>
5
+ #import <React/RCTEventEmitter.h>
6
+
7
+ @interface ShakebugSDKRNSensorsAccelerometer : RCTEventEmitter <RCTBridgeModule> {
8
+ CMMotionManager *_motionManager;
9
+ int logLevel;
10
+ bool hasListeners;
11
+ }
12
+
13
+ - (void) isAvailableWithResolver:(RCTPromiseResolveBlock) resolve
14
+ rejecter:(RCTPromiseRejectBlock) reject;
15
+ - (void) setUpdateInterval:(double) interval;
16
+ - (void) getUpdateInterval:(RCTResponseSenderBlock) cb;
17
+ - (void) setLogLevel:(int) level;
18
+ - (void) getData:(RCTResponseSenderBlock) cb;
19
+ - (void) startUpdates;
20
+ - (void) stopUpdates;
21
+
22
+ @end
@@ -0,0 +1,162 @@
1
+ // Accelerometer.m
2
+
3
+
4
+ #import <React/RCTBridge.h>
5
+ #import <React/RCTEventDispatcher.h>
6
+ #import "RNSensorsAccelerometer.h"
7
+ #import "RNSensorsUtils.h"
8
+
9
+ @implementation ShakebugSDKRNSensorsAccelerometer
10
+
11
+ @synthesize bridge = _bridge;
12
+
13
+ RCT_EXPORT_MODULE();
14
+
15
+ - (id) init {
16
+ self = [super init];
17
+ NSLog(@"ShakebugSDKRNSensorsAccelerometer");
18
+
19
+ if (self) {
20
+ self->_motionManager = [[CMMotionManager alloc] init];
21
+ self->logLevel = 0;
22
+ }
23
+ return self;
24
+ }
25
+
26
+ + (BOOL)requiresMainQueueSetup
27
+ {
28
+ return NO;
29
+ }
30
+
31
+ - (NSArray<NSString *> *)supportedEvents
32
+ {
33
+ return @[@"ShakebugSDKRNSensorsAccelerometer"];
34
+ }
35
+
36
+ RCT_REMAP_METHOD(isAvailable,
37
+ resolver:(RCTPromiseResolveBlock)resolve
38
+ rejecter:(RCTPromiseRejectBlock)reject) {
39
+ return [self isAvailableWithResolver:resolve
40
+ rejecter:reject];
41
+ }
42
+
43
+ - (void) isAvailableWithResolver:(RCTPromiseResolveBlock) resolve
44
+ rejecter:(RCTPromiseRejectBlock) reject {
45
+ if([self->_motionManager isAccelerometerAvailable])
46
+ {
47
+ /* Start the accelerometer if it is not active already */
48
+ if([self->_motionManager isAccelerometerActive] == NO)
49
+ {
50
+ resolve(@YES);
51
+ } else {
52
+ reject(@"-1", @"Accelerometer is not active", nil);
53
+ }
54
+ }
55
+ else
56
+ {
57
+ reject(@"-1", @"Accelerometer is not available", nil);
58
+ }
59
+ }
60
+
61
+ RCT_EXPORT_METHOD(setUpdateInterval:(double) interval) {
62
+ if (self->logLevel > 0) {
63
+ NSLog(@"setUpdateInterval: %f", interval);
64
+ }
65
+
66
+ double intervalInSeconds = interval / 1000;
67
+
68
+ [self->_motionManager setAccelerometerUpdateInterval:intervalInSeconds];
69
+ }
70
+
71
+ RCT_EXPORT_METHOD(setLogLevel:(int) level) {
72
+ if (level > 0) {
73
+ NSLog(@"setLogLevel: %d", level);
74
+ }
75
+
76
+ self->logLevel = level;
77
+ }
78
+
79
+ RCT_EXPORT_METHOD(getUpdateInterval:(RCTResponseSenderBlock) cb) {
80
+ double interval = self->_motionManager.accelerometerUpdateInterval;
81
+
82
+ if (self->logLevel > 0) {
83
+ NSLog(@"getUpdateInterval: %f", interval);
84
+ }
85
+
86
+ cb(@[[NSNull null], [NSNumber numberWithDouble:interval]]);
87
+ }
88
+
89
+ RCT_EXPORT_METHOD(getData:(RCTResponseSenderBlock) cb) {
90
+ double x = self->_motionManager.accelerometerData.acceleration.x;
91
+ double y = self->_motionManager.accelerometerData.acceleration.y;
92
+ double z = self->_motionManager.accelerometerData.acceleration.z;
93
+ double timestamp = [ShakebugSDKRNSensorsUtils sensorTimestampToEpochMilliseconds:self->_motionManager.accelerometerData.timestamp];
94
+
95
+ if (self->logLevel > 0) {
96
+ NSLog(@"getData: %f, %f, %f, %f", x, y, z, timestamp);
97
+ }
98
+
99
+ cb(@[[NSNull null], @{
100
+ @"x" : [NSNumber numberWithDouble:x],
101
+ @"y" : [NSNumber numberWithDouble:y],
102
+ @"z" : [NSNumber numberWithDouble:z],
103
+ @"timestamp" : [NSNumber numberWithDouble:timestamp]
104
+ }]
105
+ );
106
+ }
107
+
108
+ RCT_EXPORT_METHOD(startUpdates) {
109
+ if (self->logLevel > 0) {
110
+ NSLog(@"startUpdates/startAccelerometerUpdates");
111
+ }
112
+
113
+ [self->_motionManager startAccelerometerUpdates];
114
+
115
+ /* Receive the accelerometer data on this block */
116
+ [self->_motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue mainQueue]
117
+ withHandler:^(CMAccelerometerData *accelerometerData, NSError *error)
118
+ {
119
+ double x = accelerometerData.acceleration.x;
120
+ double y = accelerometerData.acceleration.y;
121
+ double z = accelerometerData.acceleration.z;
122
+ double timestamp = [ShakebugSDKRNSensorsUtils sensorTimestampToEpochMilliseconds:accelerometerData.timestamp];
123
+
124
+ if (self->logLevel > 1) {
125
+ NSLog(@"Updated accelerometer values: %f, %f, %f, %f", x, y, z, timestamp);
126
+ }
127
+
128
+ [self sendEventWithName:@"ShakebugSDKRNSensorsAccelerometer" body:@{
129
+ @"x" : [NSNumber numberWithDouble:x],
130
+ @"y" : [NSNumber numberWithDouble:y],
131
+ @"z" : [NSNumber numberWithDouble:z],
132
+ @"timestamp" : [NSNumber numberWithDouble:timestamp]
133
+ }];
134
+ }];
135
+
136
+ }
137
+
138
+ RCT_EXPORT_METHOD(stopUpdates) {
139
+ if(self->logLevel > 0) {
140
+ NSLog(@"stopUpdates");
141
+ }
142
+
143
+ [self->_motionManager stopAccelerometerUpdates];
144
+ }
145
+
146
+ // Will be called when this module's first listener is added.
147
+ -(void)startObserving {
148
+ hasListeners = YES;
149
+ // Set up any upstream listeners or background tasks as necessary
150
+ }
151
+
152
+ // Will be called when this module's last listener is removed, or on dealloc.
153
+ -(void)stopObserving {
154
+ // Remove upstream listeners, stop unnecessary background tasks
155
+ hasListeners = NO;
156
+ // If we no longer have listeners registered we should also probably also stop the sensor since the sensor events are essentially being dropped.
157
+ if (self->_motionManager) {
158
+ [self stopUpdates];
159
+ }
160
+ }
161
+
162
+ @end
@@ -0,0 +1,22 @@
1
+ // Inspired by https://github.com/pwmckenna/react-native-motion-manager
2
+
3
+ #import <React/RCTBridgeModule.h>
4
+ #import <CoreMotion/CoreMotion.h>
5
+ #import <React/RCTEventEmitter.h>
6
+
7
+ @interface ShakebugSDKRNSensorsBarometer : RCTEventEmitter <RCTBridgeModule> {
8
+ CMAltimeter *_altimeter;
9
+ int logLevel;
10
+ bool hasListeners;
11
+ }
12
+
13
+ - (void) isAvailableWithResolver:(RCTPromiseResolveBlock) resolve
14
+ rejecter:(RCTPromiseRejectBlock) reject;
15
+ - (void) setUpdateInterval:(double) interval;
16
+ - (void) getUpdateInterval:(RCTResponseSenderBlock) cb;
17
+ - (void) setLogLevel:(int) level;
18
+ - (void) getData:(RCTResponseSenderBlock) cb;
19
+ - (void) startUpdates;
20
+ - (void) stopUpdates;
21
+
22
+ @end
@@ -0,0 +1,141 @@
1
+ // Barometer.m
2
+
3
+
4
+ #import "RNSensorsBarometer.h"
5
+ #import <React/RCTBridge.h>
6
+ #import <React/RCTEventDispatcher.h>
7
+ #import <CoreMotion/CoreMotion.h>
8
+ #import "RNSensorsUtils.h"
9
+
10
+ @implementation ShakebugSDKRNSensorsBarometer
11
+
12
+ @synthesize bridge = _bridge;
13
+
14
+ RCT_EXPORT_MODULE();
15
+
16
+ - (id) init {
17
+ self = [super init];
18
+ NSLog(@"ShakebugSDKRNSensorsBarometer");
19
+
20
+ if (self) {
21
+ self->_altimeter = [[CMAltimeter alloc] init];
22
+ self->logLevel = 0;
23
+ }
24
+ return self;
25
+ }
26
+
27
+ - (NSArray<NSString *> *)supportedEvents
28
+ {
29
+ return @[@"ShakebugSDKRNSensorsBarometer"];
30
+ }
31
+
32
+ + (BOOL)requiresMainQueueSetup
33
+ {
34
+ return NO;
35
+ }
36
+
37
+ RCT_REMAP_METHOD(isAvailable,
38
+ resolver:(RCTPromiseResolveBlock)resolve
39
+ rejecter:(RCTPromiseRejectBlock)reject) {
40
+ return [self isAvailableWithResolver:resolve
41
+ rejecter:reject];
42
+ }
43
+
44
+ - (void) isAvailableWithResolver:(RCTPromiseResolveBlock) resolve
45
+ rejecter:(RCTPromiseRejectBlock) reject {
46
+
47
+ if ([CMAltimeter isRelativeAltitudeAvailable])
48
+ {
49
+ resolve(@YES);
50
+ }
51
+ else
52
+ {
53
+ reject(@"-1", @"Barometer is not available", nil);
54
+ }
55
+ }
56
+
57
+ RCT_EXPORT_METHOD(setUpdateInterval:(double) interval) {
58
+ NSLog(@"Can not set update interval for barometer, doing nothing");
59
+ }
60
+
61
+ RCT_EXPORT_METHOD(setLogLevel:(int) level) {
62
+ if (level > 0) {
63
+ NSLog(@"setLogLevel: %f", level);
64
+ }
65
+
66
+ self->logLevel = level;
67
+ }
68
+
69
+ RCT_EXPORT_METHOD(getUpdateInterval:(RCTResponseSenderBlock) cb) {
70
+ NSLog(@"getUpdateInterval is not meaningul for a barometer sensor");
71
+ cb(@[[NSNull null], [NSNumber numberWithDouble:0.0]]);
72
+ }
73
+
74
+ RCT_EXPORT_METHOD(getData:(RCTResponseSenderBlock) cb) {
75
+ CMAltitudeData * _Nullable altitudeData = self->_altimeter;
76
+ if (altitudeData) {
77
+ if (self->logLevel > 0) {
78
+ NSLog(@"getData: %f, %f, %f", altitudeData.pressure.doubleValue, altitudeData.timestamp, [ShakebugSDKRNSensorsUtils sensorTimestampToEpochMilliseconds:altitudeData.timestamp]);
79
+ }
80
+
81
+ cb(@[[NSNull null], @{
82
+ @"pressure" : @(altitudeData.pressure.doubleValue * 10.0),
83
+ @"timestamp" : [NSNumber numberWithDouble:[ShakebugSDKRNSensorsUtils sensorTimestampToEpochMilliseconds:altitudeData.timestamp]]
84
+ }]
85
+ );
86
+ }
87
+ else {
88
+ cb(@[[NSNull null], @{}]);
89
+ }
90
+ }
91
+
92
+
93
+ RCT_EXPORT_METHOD(startUpdates) {
94
+ if (self->logLevel > 0) {
95
+ NSLog(@"startUpdates/startRelativeAltitudeUpdates");
96
+ }
97
+
98
+ [self->_altimeter startRelativeAltitudeUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMAltitudeData * _Nullable altitudeData, NSError * _Nullable error) {
99
+ if (error) {
100
+ NSLog(@"error while getting sensor data");
101
+ }
102
+
103
+ if (altitudeData) {
104
+ if (self->logLevel > 1) {
105
+ NSLog(@"Updated altitue value: %f, %f, %f", altitudeData.pressure.doubleValue, altitudeData.timestamp, [ShakebugSDKRNSensorsUtils sensorTimestampToEpochMilliseconds:altitudeData.timestamp]);
106
+ }
107
+
108
+ [self sendEventWithName:@"ShakebugSDKRNSensorsBarometer" body:@{
109
+ @"pressure" : @(altitudeData.pressure.doubleValue * 10.0),
110
+ @"timestamp" : [NSNumber numberWithDouble:[ShakebugSDKRNSensorsUtils sensorTimestampToEpochMilliseconds:altitudeData.timestamp]]
111
+ }];
112
+ }
113
+
114
+ }];
115
+ }
116
+
117
+ RCT_EXPORT_METHOD(stopUpdates) {
118
+ if(self->logLevel > 0) {
119
+ NSLog(@"stopUpdates");
120
+ }
121
+
122
+ [self->_altimeter stopRelativeAltitudeUpdates];
123
+ }
124
+
125
+ // Will be called when this module's first listener is added.
126
+ -(void)startObserving {
127
+ hasListeners = YES;
128
+ // Set up any upstream listeners or background tasks as necessary
129
+ }
130
+
131
+ // Will be called when this module's last listener is removed, or on dealloc.
132
+ -(void)stopObserving {
133
+ // Remove upstream listeners, stop unnecessary background tasks
134
+ hasListeners = NO;
135
+ // If we no longer have listeners registered we should also probably also stop the sensor since the sensor events are essentially being dropped.
136
+ if (self->_altimeter) {
137
+ [self stopUpdates];
138
+ }
139
+ }
140
+
141
+ @end
@@ -0,0 +1,22 @@
1
+ // Inspired by https://github.com/pwmckenna/react-native-motion-manager
2
+
3
+ #import <React/RCTBridgeModule.h>
4
+ #import <CoreMotion/CoreMotion.h>
5
+ #import <React/RCTEventEmitter.h>
6
+
7
+ @interface ShakebugSDKRNSensorsGravity : RCTEventEmitter <RCTBridgeModule> {
8
+ CMMotionManager *_motionManager;
9
+ int logLevel;
10
+ bool hasListeners;
11
+ }
12
+
13
+ - (void) isAvailableWithResolver:(RCTPromiseResolveBlock) resolve
14
+ rejecter:(RCTPromiseRejectBlock) reject;
15
+ - (void) setUpdateInterval:(double) interval;
16
+ - (void) getUpdateInterval:(RCTResponseSenderBlock) cb;
17
+ - (void) setLogLevel:(int) level;
18
+ - (void) getData:(RCTResponseSenderBlock) cb;
19
+ - (void) startUpdates;
20
+ - (void) stopUpdates;
21
+
22
+ @end