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,230 @@
1
+ package com.shakebug;
2
+
3
+ import android.app.Activity;
4
+ import android.content.ActivityNotFoundException;
5
+ import android.content.Intent;
6
+ import android.net.Uri;
7
+ import android.os.Build;
8
+ import android.provider.MediaStore;
9
+
10
+ import com.facebook.react.bridge.ActivityEventListener;
11
+ import com.facebook.react.bridge.Callback;
12
+ import com.facebook.react.bridge.ReactApplicationContext;
13
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
14
+ import com.facebook.react.bridge.ReactMethod;
15
+ import com.facebook.react.bridge.ReadableMap;
16
+ import com.facebook.react.module.annotations.ReactModule;
17
+
18
+ import java.io.File;
19
+ import java.util.Collections;
20
+ import java.util.List;
21
+ import java.util.concurrent.ExecutorService;
22
+ import java.util.concurrent.Executors;
23
+
24
+ import static com.shakebug.Utils.*;
25
+
26
+ public class ShakebugSDKImagePickerModuleImpl implements ActivityEventListener {
27
+ static final String NAME = "ShakebugSDKImagePicker";
28
+
29
+ // Public to let consuming apps hook into the image picker response
30
+ public static final int REQUEST_LAUNCH_IMAGE_CAPTURE = 13001;
31
+ public static final int REQUEST_LAUNCH_VIDEO_CAPTURE = 13002;
32
+ public static final int REQUEST_LAUNCH_LIBRARY = 13003;
33
+
34
+ private Uri fileUri;
35
+
36
+ private ReactApplicationContext reactContext;
37
+
38
+ Callback callback;
39
+
40
+ Options options;
41
+ Uri cameraCaptureURI;
42
+
43
+ public ShakebugSDKImagePickerModuleImpl(ReactApplicationContext reactContext) {
44
+ this.reactContext = reactContext;
45
+ this.reactContext.addActivityEventListener(this);
46
+ }
47
+
48
+ public void launchCamera(final ReadableMap options, final Callback callback) {
49
+ if (!isCameraAvailable(reactContext)) {
50
+ callback.invoke(getErrorMap(errCameraUnavailable, null));
51
+ return;
52
+ }
53
+
54
+ final Activity currentActivity = this.reactContext.getCurrentActivity();
55
+ if (currentActivity == null) {
56
+ callback.invoke(getErrorMap(errOthers, "Activity error"));
57
+ return;
58
+ }
59
+
60
+ if (!isCameraPermissionFulfilled(reactContext, currentActivity)) {
61
+ callback.invoke(getErrorMap(errOthers, cameraPermissionDescription));
62
+ return;
63
+ }
64
+
65
+ this.callback = callback;
66
+ this.options = new Options(options);
67
+
68
+ if (this.options.saveToPhotos && Build.VERSION.SDK_INT <= Build.VERSION_CODES.P && !hasPermission(currentActivity)) {
69
+ callback.invoke(getErrorMap(errPermission, null));
70
+ return;
71
+ }
72
+
73
+ int requestCode;
74
+ File file;
75
+ Intent cameraIntent;
76
+
77
+ if (this.options.mediaType.equals(mediaTypeVideo)) {
78
+ requestCode = REQUEST_LAUNCH_VIDEO_CAPTURE;
79
+ cameraIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
80
+ cameraIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, this.options.videoQuality);
81
+ if (this.options.durationLimit > 0) {
82
+ cameraIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, this.options.durationLimit);
83
+ }
84
+ file = createFile(reactContext, "mp4");
85
+ cameraCaptureURI = createUri(file, reactContext);
86
+ } else {
87
+ requestCode = REQUEST_LAUNCH_IMAGE_CAPTURE;
88
+ cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
89
+ file = createFile(reactContext, "jpg");
90
+ cameraCaptureURI = createUri(file, reactContext);
91
+ }
92
+
93
+ if (this.options.useFrontCamera) {
94
+ setFrontCamera(cameraIntent);
95
+ }
96
+
97
+ fileUri = Uri.fromFile(file);
98
+ cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, cameraCaptureURI);
99
+ cameraIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
100
+
101
+ try {
102
+ currentActivity.startActivityForResult(cameraIntent, requestCode);
103
+ } catch (ActivityNotFoundException e) {
104
+ callback.invoke(getErrorMap(errOthers, e.getMessage()));
105
+ this.callback = null;
106
+ }
107
+ }
108
+
109
+ public void launchImageLibrary(final ReadableMap options, final Callback callback) {
110
+ final Activity currentActivity = this.reactContext.getCurrentActivity();
111
+ if (currentActivity == null) {
112
+ callback.invoke(getErrorMap(errOthers, "Activity error"));
113
+ return;
114
+ }
115
+
116
+ this.callback = callback;
117
+ this.options = new Options(options);
118
+
119
+ int requestCode;
120
+ Intent libraryIntent;
121
+ requestCode = REQUEST_LAUNCH_LIBRARY;
122
+
123
+ int selectionLimit = this.options.selectionLimit;
124
+ boolean isSingleSelect = selectionLimit == 1;
125
+ boolean isPhoto = this.options.mediaType.equals(mediaTypePhoto);
126
+ boolean isVideo = this.options.mediaType.equals(mediaTypeVideo);
127
+
128
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
129
+ if (isSingleSelect && (isPhoto || isVideo)) {
130
+ libraryIntent = new Intent(Intent.ACTION_PICK);
131
+ } else {
132
+ libraryIntent = new Intent(Intent.ACTION_GET_CONTENT);
133
+ libraryIntent.addCategory(Intent.CATEGORY_OPENABLE);
134
+ }
135
+ } else {
136
+ libraryIntent = new Intent(MediaStore.ACTION_PICK_IMAGES);
137
+ }
138
+
139
+ if (!isSingleSelect) {
140
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
141
+ libraryIntent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
142
+ } else {
143
+ if (selectionLimit != 1) {
144
+ int maxNum = selectionLimit;
145
+ if (selectionLimit == 0) maxNum = MediaStore.getPickImagesMaxLimit();
146
+ libraryIntent.putExtra(MediaStore.EXTRA_PICK_IMAGES_MAX, maxNum);
147
+ }
148
+ }
149
+ }
150
+
151
+ if (isPhoto) {
152
+ libraryIntent.setType("image/*");
153
+ } else if (isVideo) {
154
+ libraryIntent.setType("video/*");
155
+ } else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) {
156
+ libraryIntent.setType("*/*");
157
+ libraryIntent.putExtra(Intent.EXTRA_MIME_TYPES, new String[]{"image/*", "video/*"});
158
+ }
159
+
160
+ try {
161
+ currentActivity.startActivityForResult(libraryIntent, requestCode);
162
+ } catch (ActivityNotFoundException e) {
163
+ callback.invoke(getErrorMap(errOthers, e.getMessage()));
164
+ this.callback = null;
165
+ }
166
+ }
167
+
168
+ void onAssetsObtained(List<Uri> fileUris) {
169
+ ExecutorService executor = Executors.newSingleThreadExecutor();
170
+
171
+ executor.submit(() -> {
172
+ try {
173
+ callback.invoke(getResponseMap(fileUris, options, reactContext));
174
+ } catch (RuntimeException exception) {
175
+ callback.invoke(getErrorMap(errOthers, exception.getMessage()));
176
+ } finally {
177
+ callback = null;
178
+ }
179
+ });
180
+ }
181
+
182
+ @Override
183
+ public void onActivityResult(Activity activity, int requestCode, int resultCode, Intent data) {
184
+
185
+ // onActivityResult is called even when ActivityNotFoundException occurs
186
+ if (!isValidRequestCode(requestCode) || (this.callback == null)) {
187
+ return;
188
+ }
189
+
190
+ if (resultCode != Activity.RESULT_OK) {
191
+ if (requestCode == REQUEST_LAUNCH_IMAGE_CAPTURE) {
192
+ deleteFile(fileUri);
193
+ }
194
+ try {
195
+ callback.invoke(getCancelMap());
196
+ return;
197
+ } catch (RuntimeException exception) {
198
+ callback.invoke(getErrorMap(errOthers, exception.getMessage()));
199
+ } finally {
200
+ callback = null;
201
+ }
202
+ }
203
+
204
+ switch (requestCode) {
205
+ case REQUEST_LAUNCH_IMAGE_CAPTURE:
206
+ if (options.saveToPhotos) {
207
+ saveToPublicDirectory(cameraCaptureURI, reactContext, "photo");
208
+ }
209
+
210
+ onAssetsObtained(Collections.singletonList(fileUri));
211
+ break;
212
+
213
+ case REQUEST_LAUNCH_LIBRARY:
214
+ onAssetsObtained(collectUrisFromData(data));
215
+ break;
216
+
217
+ case REQUEST_LAUNCH_VIDEO_CAPTURE:
218
+ if (options.saveToPhotos) {
219
+ saveToPublicDirectory(cameraCaptureURI, reactContext, "video");
220
+ }
221
+
222
+ onAssetsObtained(Collections.singletonList(fileUri));
223
+ break;
224
+ }
225
+ }
226
+
227
+ @Override
228
+ public void onNewIntent(Intent intent) {
229
+ }
230
+ }
@@ -0,0 +1,196 @@
1
+
2
+ package com.shakebug;
3
+
4
+ import android.app.Activity;
5
+ import android.content.Context;
6
+ import android.net.Uri;
7
+ import android.os.AsyncTask;
8
+ import androidx.annotation.NonNull;
9
+ import android.util.DisplayMetrics;
10
+ import android.util.Log;
11
+
12
+ import com.facebook.react.bridge.GuardedAsyncTask;
13
+ import com.facebook.react.bridge.Promise;
14
+ import com.facebook.react.bridge.ReactApplicationContext;
15
+ import com.facebook.react.bridge.ReactContext;
16
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
17
+ import com.facebook.react.bridge.ReactMethod;
18
+ import com.facebook.react.bridge.ReadableMap;
19
+ import com.facebook.react.uimanager.UIManagerModule;
20
+
21
+ import java.io.File;
22
+ import java.io.FilenameFilter;
23
+ import java.io.IOException;
24
+ import java.util.Collections;
25
+ import java.util.Map;
26
+ import java.util.concurrent.Executor;
27
+ import java.util.concurrent.Executors;
28
+
29
+ import com.shakebug.ViewShot.Formats;
30
+ import com.shakebug.ViewShot.Results;
31
+
32
+ public class ShakebugSDKScreenShotModule extends ReactContextBaseJavaModule {
33
+
34
+ public static final String RNVIEW_SHOT = "ShakebugSDKRNViewShot";
35
+
36
+ private final ReactApplicationContext reactContext;
37
+
38
+ private final Executor executor = Executors.newCachedThreadPool();
39
+
40
+ public ShakebugSDKScreenShotModule(ReactApplicationContext reactContext) {
41
+ super(reactContext);
42
+ this.reactContext = reactContext;
43
+ }
44
+
45
+ @Override
46
+ public String getName() {
47
+ return RNVIEW_SHOT;
48
+ }
49
+
50
+ @Override
51
+ public Map<String, Object> getConstants() {
52
+ return Collections.emptyMap();
53
+ }
54
+
55
+ @Override
56
+ public void onCatalystInstanceDestroy() {
57
+ super.onCatalystInstanceDestroy();
58
+ new CleanTask(getReactApplicationContext()).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
59
+ }
60
+
61
+ @ReactMethod
62
+ public void releaseCapture(String uri) {
63
+ final String path = Uri.parse(uri).getPath();
64
+ if (path == null) return;
65
+ File file = new File(path);
66
+ if (!file.exists()) return;
67
+ File parent = file.getParentFile();
68
+ if (parent.equals(reactContext.getExternalCacheDir()) || parent.equals(reactContext.getCacheDir())) {
69
+ file.delete();
70
+ }
71
+ }
72
+
73
+ @ReactMethod
74
+ public void captureRef(int tag, ReadableMap options, Promise promise) {
75
+ final ReactApplicationContext context = getReactApplicationContext();
76
+ final DisplayMetrics dm = context.getResources().getDisplayMetrics();
77
+
78
+ final String extension = options.getString("format");
79
+ final int imageFormat = "jpg".equals(extension)
80
+ ? Formats.JPEG
81
+ : "webm".equals(extension)
82
+ ? Formats.WEBP
83
+ : "raw".equals(extension)
84
+ ? Formats.RAW
85
+ : Formats.PNG;
86
+
87
+ final double quality = options.getDouble("quality");
88
+ final Integer scaleWidth = options.hasKey("width") ? options.getInt("width") : null;
89
+ final Integer scaleHeight = options.hasKey("height") ? options.getInt("height") : null;
90
+ final String resultStreamFormat = options.getString("result");
91
+ final String fileName = options.hasKey("fileName") ? options.getString("fileName") : null;
92
+ final Boolean snapshotContentContainer = options.getBoolean("snapshotContentContainer");
93
+ final boolean handleGLSurfaceView = options.hasKey("handleGLSurfaceViewOnAndroid") && options.getBoolean("handleGLSurfaceViewOnAndroid");
94
+
95
+ try {
96
+ File outputFile = null;
97
+ if (Results.TEMP_FILE.equals(resultStreamFormat)) {
98
+ outputFile = createTempFile(getReactApplicationContext(), extension, fileName);
99
+ }
100
+
101
+ final Activity activity = getCurrentActivity();
102
+ final UIManagerModule uiManager = this.reactContext.getNativeModule(UIManagerModule.class);
103
+
104
+ uiManager.addUIBlock(new ViewShot(
105
+ tag, extension, imageFormat, quality,
106
+ scaleWidth, scaleHeight, outputFile, resultStreamFormat,
107
+ snapshotContentContainer, reactContext, activity, handleGLSurfaceView, promise, executor)
108
+ );
109
+ } catch (final Throwable ex) {
110
+ Log.e(RNVIEW_SHOT, "Failed to snapshot view tag " + tag, ex);
111
+ promise.reject(ViewShot.ERROR_UNABLE_TO_SNAPSHOT, "Failed to snapshot view tag " + tag);
112
+ }
113
+ }
114
+
115
+ @ReactMethod
116
+ public void captureScreen(ReadableMap options, Promise promise) {
117
+ captureRef(-1, options, promise);
118
+ }
119
+
120
+ private static final String TEMP_FILE_PREFIX = "ReactNative-snapshot-image";
121
+
122
+ /**
123
+ * Asynchronous task that cleans up cache dirs (internal and, if available, external) of cropped
124
+ * image files. This is run when the catalyst instance is being destroyed (i.e. app is shutting
125
+ * down) and when the module is instantiated, to handle the case where the app crashed.
126
+ */
127
+ private static class CleanTask extends GuardedAsyncTask<Void, Void> implements FilenameFilter {
128
+ private final File cacheDir;
129
+ private final File externalCacheDir;
130
+
131
+ private CleanTask(ReactContext context) {
132
+ super(context);
133
+
134
+ cacheDir = context.getCacheDir();
135
+ externalCacheDir = context.getExternalCacheDir();
136
+ }
137
+
138
+ @Override
139
+ protected void doInBackgroundGuarded(Void... params) {
140
+ if (null != cacheDir) {
141
+ cleanDirectory(cacheDir);
142
+ }
143
+
144
+ if (externalCacheDir != null) {
145
+ cleanDirectory(externalCacheDir);
146
+ }
147
+ }
148
+
149
+ @Override
150
+ public final boolean accept(File dir, String filename) {
151
+ return filename.startsWith(TEMP_FILE_PREFIX);
152
+ }
153
+
154
+ private void cleanDirectory(@NonNull final File directory) {
155
+ final File[] toDelete = directory.listFiles(this);
156
+
157
+ if (toDelete != null) {
158
+ for (File file : toDelete) {
159
+ if (file.delete()) {
160
+ Log.d(RNVIEW_SHOT, "deleted file: " + file.getAbsolutePath());
161
+ }
162
+ }
163
+ }
164
+ }
165
+ }
166
+
167
+ /**
168
+ * Create a temporary file in the cache directory on either internal or external storage,
169
+ * whichever is available and has more free space.
170
+ */
171
+ @NonNull
172
+ private File createTempFile(@NonNull final Context context, @NonNull final String ext, String fileName) throws IOException {
173
+ final File externalCacheDir = context.getExternalCacheDir();
174
+ final File internalCacheDir = context.getCacheDir();
175
+ final File cacheDir;
176
+
177
+ if (externalCacheDir == null && internalCacheDir == null) {
178
+ throw new IOException("No cache directory available");
179
+ }
180
+
181
+ if (externalCacheDir == null) {
182
+ cacheDir = internalCacheDir;
183
+ } else if (internalCacheDir == null) {
184
+ cacheDir = externalCacheDir;
185
+ } else {
186
+ cacheDir = externalCacheDir.getFreeSpace() > internalCacheDir.getFreeSpace() ?
187
+ externalCacheDir : internalCacheDir;
188
+ }
189
+
190
+ final String suffix = "." + ext;
191
+ if (fileName != null) {
192
+ return File.createTempFile(fileName, suffix, cacheDir);
193
+ }
194
+ return File.createTempFile(TEMP_FILE_PREFIX, suffix, cacheDir);
195
+ }
196
+ }
@@ -0,0 +1,39 @@
1
+ // SharedPreferencesModule.java
2
+
3
+ package com.shakebug;
4
+
5
+ import android.content.Context;
6
+ import android.content.SharedPreferences;
7
+ import com.facebook.react.bridge.ReactApplicationContext;
8
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
9
+ import com.facebook.react.bridge.ReactMethod;
10
+ import com.facebook.react.bridge.Promise;
11
+
12
+ public class SharedPreferencesModule extends ReactContextBaseJavaModule {
13
+ private static final String PREFS_NAME = "MyPrefsFile";
14
+ private SharedPreferences sharedPreferences;
15
+
16
+ public SharedPreferencesModule(ReactApplicationContext reactContext) {
17
+ super(reactContext);
18
+ sharedPreferences = reactContext.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
19
+ }
20
+
21
+ @Override
22
+ public String getName() {
23
+ return "ShakebugSDKSharedPreferencesModule";
24
+ }
25
+
26
+ @ReactMethod
27
+ public void getString(String key, Promise promise) {
28
+ String value = sharedPreferences.getString(key, "");
29
+ promise.resolve(value);
30
+ }
31
+
32
+ @ReactMethod
33
+ public void setString(String key, String value, Promise promise) {
34
+ SharedPreferences.Editor editor = sharedPreferences.edit();
35
+ editor.putString(key, value);
36
+ editor.apply();
37
+ promise.resolve(null);
38
+ }
39
+ }
@@ -0,0 +1,48 @@
1
+ package com.shakebug;
2
+
3
+ import android.util.DisplayMetrics;
4
+
5
+ /**
6
+ * Created by choujason on 7/31/16.
7
+ */
8
+
9
+ public class UnitConverter {
10
+
11
+
12
+ public static DisplayMetrics getDisplayMetrics(){
13
+
14
+ return BaseUtils.getContext().getResources().getDisplayMetrics();
15
+ }
16
+
17
+ public static float dpToPx(float dp) {
18
+ return dp * getDisplayMetrics().density;
19
+ }
20
+
21
+ public static int dpToPx(int dp) {
22
+ return (int) (dp * getDisplayMetrics().density + 0.5f);
23
+ }
24
+
25
+ public static float pxToDp(float px) {
26
+ return px / getDisplayMetrics().density;
27
+ }
28
+
29
+ public static int pxToDp(int px) {
30
+ return (int) (px / getDisplayMetrics().density + 0.5f);
31
+ }
32
+
33
+ public static float spToPx(float sp) {
34
+ return sp * getDisplayMetrics().scaledDensity;
35
+ }
36
+
37
+ public static int spToPx(int sp) {
38
+ return (int) (sp * getDisplayMetrics().scaledDensity + 0.5f);
39
+ }
40
+
41
+ public static float pxToSp(float px) {
42
+ return px / getDisplayMetrics().scaledDensity;
43
+ }
44
+
45
+ public static int pxToSp(int px) {
46
+ return (int) (px / getDisplayMetrics().scaledDensity + 0.5f);
47
+ }
48
+ }
@@ -0,0 +1,29 @@
1
+ package com.shakebug;
2
+
3
+ import android.util.Log;
4
+ import android.graphics.RectF;
5
+
6
+ public final class Utility {
7
+ public static RectF fillImage(float imgWidth, float imgHeight, float targetWidth, float targetHeight, String mode) {
8
+ float imageAspectRatio = imgWidth / imgHeight;
9
+ float targetAspectRatio = targetWidth / targetHeight;
10
+ switch (mode) {
11
+ case "AspectFill": {
12
+ float scaleFactor = targetAspectRatio < imageAspectRatio ? targetHeight / imgHeight : targetWidth / imgWidth;
13
+ float w = imgWidth * scaleFactor, h = imgHeight * scaleFactor;
14
+ return new RectF((targetWidth - w) / 2, (targetHeight - h) / 2,
15
+ w + (targetWidth - w) / 2, h + (targetHeight - h) / 2);
16
+ }
17
+ case "AspectFit":
18
+ default: {
19
+ float scaleFactor = targetAspectRatio > imageAspectRatio ? targetHeight / imgHeight : targetWidth / imgWidth;
20
+ float w = imgWidth * scaleFactor, h = imgHeight * scaleFactor;
21
+ return new RectF((targetWidth - w) / 2, (targetHeight - h) / 2,
22
+ w + (targetWidth - w) / 2, h + (targetHeight - h) / 2);
23
+ }
24
+ case "ScaleToFill": {
25
+ return new RectF(0, 0, targetWidth, targetHeight);
26
+ }
27
+ }
28
+ }
29
+ }