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.
- package/DeviceInfo/index.js.flow +177 -0
- package/DeviceInfo/index.ts +1034 -0
- package/DeviceInfo/internal/asyncHookWrappers.ts +59 -0
- package/DeviceInfo/internal/devicesWithDynamicIsland.ts +30 -0
- package/DeviceInfo/internal/devicesWithNotch.ts +374 -0
- package/DeviceInfo/internal/nativeInterface.ts +28 -0
- package/DeviceInfo/internal/privateTypes.ts +231 -0
- package/DeviceInfo/internal/supported-platform-info.ts +97 -0
- package/DeviceInfo/internal/types.ts +19 -0
- package/DeviceInfo/web/index.js +223 -0
- package/GetLocals/src/NativeRNLocalize.ts +18 -0
- package/GetLocals/src/constants.ts +269 -0
- package/GetLocals/src/index.ts +56 -0
- package/GetLocals/src/module.ts +51 -0
- package/GetLocals/src/module.web.ts +148 -0
- package/GetLocals/src/types.ts +31 -0
- package/GetLocation/LocationError.ts +20 -0
- package/GetLocation/index.ts +46 -0
- package/GetLocation/utils.ts +89 -0
- package/ImageOrVedioPicker/src/index.ts +28 -0
- package/ImageOrVedioPicker/src/platforms/NativeImagePicker.ts +10 -0
- package/ImageOrVedioPicker/src/platforms/native.ts +61 -0
- package/ImageOrVedioPicker/src/platforms/web.ts +159 -0
- package/ImageOrVedioPicker/src/types.ts +74 -0
- package/NetInfo/src/__tests__/eventListenerCallbacks.spec.ts +332 -0
- package/NetInfo/src/__tests__/fetch.spec.ts +479 -0
- package/NetInfo/src/index.ts +186 -0
- package/NetInfo/src/internal/__mocks__/nativeModule.ts +13 -0
- package/NetInfo/src/internal/defaultConfiguration.ts +17 -0
- package/NetInfo/src/internal/defaultConfiguration.web.ts +17 -0
- package/NetInfo/src/internal/internetReachability.ts +180 -0
- package/NetInfo/src/internal/nativeInterface.ts +43 -0
- package/NetInfo/src/internal/nativeInterface.web.ts +27 -0
- package/NetInfo/src/internal/nativeModule.ts +15 -0
- package/NetInfo/src/internal/nativeModule.web.ts +306 -0
- package/NetInfo/src/internal/privateTypes.ts +41 -0
- package/NetInfo/src/internal/state.ts +137 -0
- package/NetInfo/src/internal/types.ts +128 -0
- package/README.md +246 -0
- package/RecordScreen/src/index.tsx +75 -0
- package/ScreenShot/src/RNViewShot.js +3 -0
- package/ScreenShot/src/RNViewShot.web.js +42 -0
- package/ScreenShot/src/index.js +308 -0
- package/Sensor/src/index.js +14 -0
- package/Sensor/src/rnsensors.js +57 -0
- package/Sensor/src/sensors.js +97 -0
- package/VideoPlayer/PlayVideo.tsx +51 -0
- package/VideoPlayer/index.js +69 -0
- package/android/README.md +14 -0
- package/android/build/generated/source/buildConfig/debug/com/shakebug/BuildConfig.java +10 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/AndroidManifest.xml +42 -0
- package/android/build/intermediates/aapt_friendly_merged_manifests/debug/aapt/output-metadata.json +18 -0
- package/android/build/intermediates/aar_metadata/debug/aar-metadata.properties +6 -0
- package/android/build/intermediates/annotation_processor_list/debug/annotationProcessors.json +1 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/classes.jar +0 -0
- package/android/build/intermediates/compile_r_class_jar/debug/R.jar +0 -0
- package/android/build/intermediates/compile_symbol_list/debug/R.txt +47 -0
- package/android/build/intermediates/compiled_local_resources/debug/out/xml_imagepicker_provider_paths.xml.flat +0 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/compile-file-map.properties +12 -0
- package/android/build/intermediates/incremental/debug/packageDebugResources/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugJniLibFolders/merger.xml +2 -0
- package/android/build/intermediates/incremental/mergeDebugShaders/merger.xml +2 -0
- package/android/build/intermediates/incremental/packageDebugAssets/merger.xml +2 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/BuildConfig.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/CustomMediaMetadataRetriever.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ImageMetadata.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ImagePickerProvider.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Metadata.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Options.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/RecordScreenModule$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/RecordScreenModule.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Shakebug.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ShakebugPackage.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Utility.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/Utils.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/VideoMetadata.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$1.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$2.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$Formats.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$Results.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot$ReusableByteArrayOutputStream.class +0 -0
- package/android/build/intermediates/javac/debug/classes/com/shakebug/ViewShot.class +0 -0
- package/android/build/intermediates/local_only_symbol_list/debug/R-def.txt +49 -0
- package/android/build/intermediates/manifest_merge_blame_file/debug/manifest-merger-blame-debug-report.txt +82 -0
- package/android/build/intermediates/merged_manifest/debug/AndroidManifest.xml +42 -0
- package/android/build/intermediates/navigation_json/debug/navigation.json +1 -0
- package/android/build/intermediates/packaged_res/debug/values/values.xml +25 -0
- package/android/build/intermediates/packaged_res/debug/xml/imagepicker_provider_paths.xml +4 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/BuildConfig.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/CustomMediaMetadataRetriever.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ImageMetadata.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ImagePickerProvider.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Metadata.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Options.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/RecordScreenModule$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/RecordScreenModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Shakebug.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ShakebugPackage.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Utility.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/Utils.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/VideoMetadata.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$1.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$2.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$Formats.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$Results.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot$ReusableByteArrayOutputStream.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/com/shakebug/ViewShot.class +0 -0
- package/android/build/intermediates/symbol_list_with_package_name/debug/package-aware-r.txt +48 -0
- package/android/build/outputs/logs/manifest-merger-debug-report.txt +97 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build.gradle +235 -0
- package/android/src/main/AndroidManifest.xml +40 -0
- package/android/src/main/java/com/shakebug/AmazonFireDeviceConnectivityPoller.java +170 -0
- package/android/src/main/java/com/shakebug/BaseUtils.java +33 -0
- package/android/src/main/java/com/shakebug/BroadcastReceiverConnectivityReceiver.java +131 -0
- package/android/src/main/java/com/shakebug/ConnectivityReceiver.java +318 -0
- package/android/src/main/java/com/shakebug/CrashLoggerModule.java +48 -0
- package/android/src/main/java/com/shakebug/DateUtil.java +64 -0
- package/android/src/main/java/com/shakebug/DeviceType.java +18 -0
- package/android/src/main/java/com/shakebug/DeviceUtil.java +46 -0
- package/android/src/main/java/com/shakebug/DrawingView.java +90 -0
- package/android/src/main/java/com/shakebug/DrawingViewManager.java +38 -0
- package/android/src/main/java/com/shakebug/GetLocation.java +147 -0
- package/android/src/main/java/com/shakebug/ImageMetadata.java +42 -0
- package/android/src/main/java/com/shakebug/ImagePickerProvider.java +8 -0
- package/android/src/main/java/com/shakebug/Metadata.java +46 -0
- package/android/src/main/java/com/shakebug/NetInfoModule.java +79 -0
- package/android/src/main/java/com/shakebug/NetInfoUtils.java +50 -0
- package/android/src/main/java/com/shakebug/NetworkCallbackConnectivityReceiver.java +209 -0
- package/android/src/main/java/com/shakebug/Options.java +42 -0
- package/android/src/main/java/com/shakebug/RNDeviceModule.java +1036 -0
- package/android/src/main/java/com/shakebug/RNInstallReferrerClient.java +124 -0
- package/android/src/main/java/com/shakebug/RNLocalizeModule.java +79 -0
- package/android/src/main/java/com/shakebug/RNLocalizeModuleImpl.java +258 -0
- package/android/src/main/java/com/shakebug/ReactNativeGetLocationModule.java +95 -0
- package/android/src/main/java/com/shakebug/RecordScreenModule.java +202 -0
- package/android/src/main/java/com/shakebug/ScreenshotDetectorModule.java +63 -0
- package/android/src/main/java/com/shakebug/SettingsUtil.java +44 -0
- package/android/src/main/java/com/shakebug/Shakebug.java +181 -0
- package/android/src/main/java/com/shakebug/ShakebugPackage.java +75 -0
- package/android/src/main/java/com/shakebug/ShakebugSDKImagePickerModule.java +56 -0
- package/android/src/main/java/com/shakebug/ShakebugSDKImagePickerModuleImpl.java +230 -0
- package/android/src/main/java/com/shakebug/ShakebugSDKScreenShotModule.java +196 -0
- package/android/src/main/java/com/shakebug/SharedPreferencesModule.java +39 -0
- package/android/src/main/java/com/shakebug/UnitConverter.java +48 -0
- package/android/src/main/java/com/shakebug/Utility.java +29 -0
- package/android/src/main/java/com/shakebug/Utils.java +593 -0
- package/android/src/main/java/com/shakebug/VideoMetadata.java +91 -0
- package/android/src/main/java/com/shakebug/VideoPlayerModule.java +199 -0
- package/android/src/main/java/com/shakebug/VideoThumbnailModule.java +215 -0
- package/android/src/main/java/com/shakebug/VideoTrimModule.java +372 -0
- package/android/src/main/java/com/shakebug/ViewShot.java +627 -0
- package/android/src/main/java/com/shakebug/adapters/VideoTrimmerAdapter.java +54 -0
- package/android/src/main/java/com/shakebug/callback/SingleCallback.java +11 -0
- package/android/src/main/java/com/shakebug/interfaces/IVideoTrimmerView.java +5 -0
- package/android/src/main/java/com/shakebug/interfaces/VideoPlayerListner.java +5 -0
- package/android/src/main/java/com/shakebug/interfaces/VideoTrimListener.java +10 -0
- package/android/src/main/java/com/shakebug/resolver/DeviceIdResolver.java +87 -0
- package/android/src/main/java/com/shakebug/resolver/DeviceTypeResolver.java +94 -0
- package/android/src/main/java/com/shakebug/thread/BackgroundExecutor.java +246 -0
- package/android/src/main/java/com/shakebug/thread/UiThreadExecutor.java +120 -0
- package/android/src/main/java/com/shakebug/types/CellularGeneration.java +60 -0
- package/android/src/main/java/com/shakebug/types/ConnectionType.java +26 -0
- package/android/src/main/java/com/shakebug/utils/StorageUtil.java +139 -0
- package/android/src/main/java/com/shakebug/utils/VideoTrimmerUtil.java +89 -0
- package/android/src/main/java/com/shakebug/widgets/RangeSeekBarView.java +534 -0
- package/android/src/main/java/com/shakebug/widgets/SpacesItemDecoration2.java +32 -0
- package/android/src/main/java/com/shakebug/widgets/VideoPlayerView.java +429 -0
- package/android/src/main/java/com/shakebug/widgets/VideoTrimmerView.java +477 -0
- package/android/src/main/java/com/shakebug/widgets/ZVideoView.java +48 -0
- package/android/src/main/res/drawable/custom_progress.xml +16 -0
- package/android/src/main/res/drawable/custom_thumb.xml +4 -0
- package/android/src/main/res/drawable/ic_close_button.xml +10 -0
- package/android/src/main/res/drawable/ic_video_pause_black.png +0 -0
- package/android/src/main/res/drawable/ic_video_play_black.png +0 -0
- package/android/src/main/res/drawable/ic_video_thumb_handle.png +0 -0
- package/android/src/main/res/drawable/icon_seek_bar.png +0 -0
- package/android/src/main/res/layout/video_player_view.xml +121 -0
- package/android/src/main/res/layout/video_thumb_item_layout.xml +16 -0
- package/android/src/main/res/layout/video_trimmer_view.xml +148 -0
- package/android/src/main/res/values/colors.xml +17 -0
- package/android/src/main/res/values/strings.xml +14 -0
- package/android/src/main/res/xml/imagepicker_provider_paths.xml +4 -0
- package/ios/CammeraPermission/RNCameraPermission.h +16 -0
- package/ios/CammeraPermission/RNCameraPermission.m +46 -0
- package/ios/DeviceInfo/DeviceUID.h +14 -0
- package/ios/DeviceInfo/DeviceUID.m +202 -0
- package/ios/DeviceInfo/EnvironmentUtil.h +41 -0
- package/ios/DeviceInfo/EnvironmentUtil.m +56 -0
- package/ios/DeviceInfo/RNDeviceInfo.h +22 -0
- package/ios/DeviceInfo/RNDeviceInfo.m +918 -0
- package/ios/GetLocals/ShakebugSDKRNLocalize.h +21 -0
- package/ios/GetLocals/ShakebugSDKRNLocalize.m +296 -0
- package/ios/GetLocation/SettingsUtil.h +16 -0
- package/ios/GetLocation/SettingsUtil.m +21 -0
- package/ios/GetLocation/ShakebugSDKLocationModule.h +17 -0
- package/ios/GetLocation/ShakebugSDKLocationModule.m +218 -0
- package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerManager.h +40 -0
- package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerManager.m +588 -0
- package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerUtils.h +26 -0
- package/ios/ImageOrVideoPicker/ShakebugSDKImagePickerUtils.m +194 -0
- package/ios/MicrophonePermissionManager.h +14 -0
- package/ios/MicrophonePermissionManager.m +35 -0
- package/ios/NetInfo/RNCConnectionState.h +42 -0
- package/ios/NetInfo/RNCConnectionState.m +119 -0
- package/ios/NetInfo/RNCConnectionStateWatcher.h +31 -0
- package/ios/NetInfo/RNCConnectionStateWatcher.m +136 -0
- package/ios/NetInfo/RNCNetInfo.h +13 -0
- package/ios/NetInfo/RNCNetInfo.m +269 -0
- package/ios/RecordScreen/ShakebugSDKRecordScreen.h +31 -0
- package/ios/RecordScreen/ShakebugSDKRecordScreen.m +309 -0
- package/ios/ScreenShot/ShakebugSDKRNViewShot.h +6 -0
- package/ios/ScreenShot/ShakebugSDKRNViewShot.m +186 -0
- package/ios/ScreenshotDetector/ScreenShotDetector.h +12 -0
- package/ios/ScreenshotDetector/ScreenShotDetector.m +37 -0
- package/ios/Senors/RNSensorsAccelerometer.h +22 -0
- package/ios/Senors/RNSensorsAccelerometer.m +162 -0
- package/ios/Senors/RNSensorsBarometer.h +22 -0
- package/ios/Senors/RNSensorsBarometer.m +141 -0
- package/ios/Senors/RNSensorsGravity.h +22 -0
- package/ios/Senors/RNSensorsGravity.m +165 -0
- package/ios/Senors/RNSensorsGyroscope.h +22 -0
- package/ios/Senors/RNSensorsGyroscope.m +160 -0
- package/ios/Senors/RNSensorsMagnetometer.h +22 -0
- package/ios/Senors/RNSensorsMagnetometer.m +163 -0
- package/ios/Senors/RNSensorsOrientation.h +22 -0
- package/ios/Senors/RNSensorsOrientation.m +189 -0
- package/ios/Senors/RNSensorsUtils.h +7 -0
- package/ios/Senors/RNSensorsUtils.m +9 -0
- package/ios/Shakebug.h +7 -0
- package/ios/Shakebug.m +16 -0
- package/ios/Shakebug.xcodeproj/project.pbxproj +872 -0
- package/ios/Shakebug.xcodeproj/xcshareddata/xcschemes/Shakebug.xcscheme +66 -0
- package/ios/Shakebug.xcworkspace/contents.xcworkspacedata +10 -0
- package/ios/Shakebug.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/SketchCanvas/DrawingView.h +18 -0
- package/ios/SketchCanvas/DrawingView.m +96 -0
- package/ios/SketchCanvas/DrawingViewManager.h +12 -0
- package/ios/SketchCanvas/DrawingViewManager.m +35 -0
- package/ios/Storage/SharedPreferencesModule.h +13 -0
- package/ios/Storage/SharedPreferencesModule.m +35 -0
- package/ios/Thumbnaill/VideoThumbnailManager.h +12 -0
- package/ios/Thumbnaill/VideoThumbnailManager.m +73 -0
- package/ios/TrimVideo/ShakebugSDKVideoTrim.swift +372 -0
- package/ios/TrimVideo/VideoTrim-Bridging-Header.h +10 -0
- package/ios/TrimVideo/VideoTrim.m +23 -0
- package/ios/TrimVideo/VideoTrimmer.swift +810 -0
- package/ios/TrimVideo/VideoTrimmerThumb.swift +119 -0
- package/ios/TrimVideo/VideoTrimmerViewController.swift +301 -0
- package/ios/VideoPlayer/VideoPlayerModule.h +14 -0
- package/ios/VideoPlayer/VideoPlayerModule.m +29 -0
- package/ios/VideoPlayer/VideoPlayerViewController.h +18 -0
- package/ios/VideoPlayer/VideoPlayerViewController.m +29 -0
- package/package.json +45 -0
- package/shakebug-react-native.podspec +50 -0
- package/src/APIs/AddIssue.js +70 -0
- package/src/APIs/EndSession.js +32 -0
- package/src/APIs/Event.js +39 -0
- package/src/APIs/MatchKey.js +40 -0
- package/src/APIs/StartSession.js +84 -0
- package/src/Assets/images/OpenSketch.png +0 -0
- package/src/Assets/images/Push.png +0 -0
- package/src/Assets/images/RemoveTextView.png +0 -0
- package/src/Assets/images/black.png +0 -0
- package/src/Assets/images/blue.png +0 -0
- package/src/Assets/images/borderdBlack.png +0 -0
- package/src/Assets/images/borderdBlue.png +0 -0
- package/src/Assets/images/borderdGreen.png +0 -0
- package/src/Assets/images/borderdRed.png +0 -0
- package/src/Assets/images/borderdYellow.png +0 -0
- package/src/Assets/images/clear.png +0 -0
- package/src/Assets/images/close.png +0 -0
- package/src/Assets/images/green.png +0 -0
- package/src/Assets/images/next.png +0 -0
- package/src/Assets/images/play.png +0 -0
- package/src/Assets/images/red.png +0 -0
- package/src/Assets/images/shake.png +0 -0
- package/src/Assets/images/shakebugLogo.png +0 -0
- package/src/Assets/images/stopButton.png +0 -0
- package/src/Assets/images/text_icon.png +0 -0
- package/src/Assets/images/yellow.png +0 -0
- package/src/Componanats/CustomAlert.js +80 -0
- package/src/Componanats/ErrorHandler.js +80 -0
- package/src/Componanats/GlobalStateContext.js +22 -0
- package/src/Componanats/KeyboardAvoidingWrapper.js +43 -0
- package/src/Componanats/NavigationContext.js +42 -0
- package/src/Componanats/ShakeFunction.js +562 -0
- package/src/Componanats/localization.js +482 -0
- package/src/Screens/AddDetailsScreen.js +462 -0
- package/src/Screens/FirstScreen.js +629 -0
- package/src/Screens/Shakebug.js +487 -0
- package/src/Screens/StrockView.js +20 -0
- package/src/Screens/TrimVideoScreen.js +81 -0
- package/src/Screens/TutorialScreen.js +36 -0
- package/src/index.tsx +117 -0
- package/trimVideo/src/index.tsx +141 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<LinearLayout
|
|
3
|
+
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
4
|
+
xmlns:tools="http://schemas.android.com/tools"
|
|
5
|
+
android:layout_width="wrap_content"
|
|
6
|
+
android:layout_height="60dp"
|
|
7
|
+
android:orientation="vertical"
|
|
8
|
+
>
|
|
9
|
+
|
|
10
|
+
<ImageView
|
|
11
|
+
android:id="@+id/thumb"
|
|
12
|
+
android:layout_width="39dp"
|
|
13
|
+
android:layout_height="match_parent"
|
|
14
|
+
android:scaleType="centerCrop"
|
|
15
|
+
tools:src="@color/red"/>
|
|
16
|
+
</LinearLayout>
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<RelativeLayout
|
|
3
|
+
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
4
|
+
xmlns:tools="http://schemas.android.com/tools"
|
|
5
|
+
android:layout_width="match_parent"
|
|
6
|
+
android:layout_height="match_parent"
|
|
7
|
+
android:orientation="vertical"
|
|
8
|
+
>
|
|
9
|
+
|
|
10
|
+
<RelativeLayout
|
|
11
|
+
android:id="@+id/layout_surface_view"
|
|
12
|
+
android:layout_width="match_parent"
|
|
13
|
+
android:layout_height="match_parent"
|
|
14
|
+
android:layout_above="@+id/layout"
|
|
15
|
+
android:background="@android:color/black"
|
|
16
|
+
android:gravity="center"
|
|
17
|
+
>
|
|
18
|
+
|
|
19
|
+
<com.shakebug.widgets.ZVideoView
|
|
20
|
+
android:id="@+id/video_loader"
|
|
21
|
+
android:layout_width="match_parent"
|
|
22
|
+
android:layout_height="match_parent"
|
|
23
|
+
android:layout_centerInParent="true" />
|
|
24
|
+
|
|
25
|
+
</RelativeLayout>
|
|
26
|
+
|
|
27
|
+
<RelativeLayout
|
|
28
|
+
android:id="@+id/layout"
|
|
29
|
+
android:layout_width="match_parent"
|
|
30
|
+
android:layout_height="wrap_content"
|
|
31
|
+
android:layout_alignParentBottom="true"
|
|
32
|
+
android:background="@android:color/black"
|
|
33
|
+
>
|
|
34
|
+
|
|
35
|
+
<!-- <TextView-->
|
|
36
|
+
<!-- android:id="@+id/video_shoot_tip"-->
|
|
37
|
+
<!-- android:layout_width="match_parent"-->
|
|
38
|
+
<!-- android:layout_height="30dp"-->
|
|
39
|
+
<!-- android:layout_alignParentLeft="true"-->
|
|
40
|
+
<!-- android:layout_alignParentStart="true"-->
|
|
41
|
+
<!-- android:layout_alignParentTop="true"-->
|
|
42
|
+
<!-- android:gravity="center"-->
|
|
43
|
+
<!-- android:textColor="@android:color/white"-->
|
|
44
|
+
<!-- android:textSize="12dp"-->
|
|
45
|
+
<!-- tools:text="拖动选择你要发表的10秒以内片段"-->
|
|
46
|
+
<!-- />-->
|
|
47
|
+
<FrameLayout
|
|
48
|
+
android:id="@+id/video_frames_layout"
|
|
49
|
+
android:layout_width="match_parent"
|
|
50
|
+
android:layout_height="60dp"
|
|
51
|
+
>
|
|
52
|
+
|
|
53
|
+
<androidx.recyclerview.widget.RecyclerView
|
|
54
|
+
android:id="@+id/video_frames_recyclerView"
|
|
55
|
+
android:layout_width="match_parent"
|
|
56
|
+
android:layout_height="50dp"
|
|
57
|
+
android:layout_gravity="bottom"
|
|
58
|
+
tools:background="@android:color/holo_green_light"
|
|
59
|
+
/>
|
|
60
|
+
|
|
61
|
+
<ImageView
|
|
62
|
+
android:id="@+id/positionIcon"
|
|
63
|
+
android:layout_width="wrap_content"
|
|
64
|
+
android:layout_height="50dp"
|
|
65
|
+
android:layout_gravity="bottom"
|
|
66
|
+
android:layout_marginLeft="35dp"
|
|
67
|
+
android:contentDescription="@null"
|
|
68
|
+
android:src="@drawable/icon_seek_bar"
|
|
69
|
+
/>
|
|
70
|
+
|
|
71
|
+
<LinearLayout
|
|
72
|
+
android:layout_width="match_parent"
|
|
73
|
+
android:layout_height="wrap_content"
|
|
74
|
+
android:layout_gravity="bottom"
|
|
75
|
+
android:orientation="horizontal"
|
|
76
|
+
>
|
|
77
|
+
|
|
78
|
+
<View
|
|
79
|
+
android:layout_width="35dp"
|
|
80
|
+
android:layout_height="50dp"
|
|
81
|
+
android:layout_gravity="bottom"
|
|
82
|
+
android:background="@color/shadow_color"
|
|
83
|
+
/>
|
|
84
|
+
|
|
85
|
+
<LinearLayout
|
|
86
|
+
android:id="@+id/seekBarLayout"
|
|
87
|
+
android:layout_width="0dp"
|
|
88
|
+
android:layout_height="60dp"
|
|
89
|
+
android:layout_gravity="bottom"
|
|
90
|
+
android:layout_weight="1"
|
|
91
|
+
android:gravity="bottom"
|
|
92
|
+
android:orientation="vertical"
|
|
93
|
+
/>
|
|
94
|
+
|
|
95
|
+
<View
|
|
96
|
+
android:layout_width="35dp"
|
|
97
|
+
android:layout_height="match_parent"
|
|
98
|
+
android:layout_gravity="bottom"
|
|
99
|
+
android:background="@color/shadow_color"
|
|
100
|
+
/>
|
|
101
|
+
</LinearLayout>
|
|
102
|
+
</FrameLayout>
|
|
103
|
+
|
|
104
|
+
<FrameLayout
|
|
105
|
+
android:layout_width="match_parent"
|
|
106
|
+
android:layout_height="50dp"
|
|
107
|
+
android:layout_below="@+id/video_frames_layout"
|
|
108
|
+
android:layout_marginLeft="10dp"
|
|
109
|
+
android:layout_marginRight="10dp"
|
|
110
|
+
android:orientation="horizontal"
|
|
111
|
+
android:visibility="visible"
|
|
112
|
+
>
|
|
113
|
+
|
|
114
|
+
<TextView
|
|
115
|
+
android:id="@+id/cancelBtn"
|
|
116
|
+
android:layout_width="wrap_content"
|
|
117
|
+
android:layout_height="match_parent"
|
|
118
|
+
android:layout_gravity="left"
|
|
119
|
+
android:gravity="center"
|
|
120
|
+
android:padding="10dp"
|
|
121
|
+
android:text="@string/cancel"
|
|
122
|
+
android:textColor="@android:color/white"
|
|
123
|
+
android:textSize="16dp" />
|
|
124
|
+
|
|
125
|
+
<ImageView
|
|
126
|
+
android:id="@+id/icon_video_play"
|
|
127
|
+
android:layout_width="wrap_content"
|
|
128
|
+
android:layout_height="match_parent"
|
|
129
|
+
android:layout_gravity="center"
|
|
130
|
+
android:padding="12dp"
|
|
131
|
+
android:src="@drawable/ic_video_play_black"
|
|
132
|
+
/>
|
|
133
|
+
|
|
134
|
+
<TextView
|
|
135
|
+
android:id="@+id/saveBtn"
|
|
136
|
+
android:layout_width="wrap_content"
|
|
137
|
+
android:layout_height="match_parent"
|
|
138
|
+
android:layout_gravity="right"
|
|
139
|
+
android:gravity="center"
|
|
140
|
+
android:padding="10dp"
|
|
141
|
+
android:text="@string/save"
|
|
142
|
+
android:textColor="#2196F3"
|
|
143
|
+
android:textSize="16dp" />
|
|
144
|
+
|
|
145
|
+
</FrameLayout>
|
|
146
|
+
|
|
147
|
+
</RelativeLayout>
|
|
148
|
+
</RelativeLayout>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<resources>
|
|
3
|
+
<color name="colorPrimary">#3F51B5</color>
|
|
4
|
+
<color name="colorPrimaryDark">#303F9F</color>
|
|
5
|
+
<color name="colorAccent">#FF4081</color>
|
|
6
|
+
|
|
7
|
+
<color name="white">#ffffffff</color>
|
|
8
|
+
<color name="red">#aacc0000</color>
|
|
9
|
+
<color name="background_video_color">#2f3031</color>
|
|
10
|
+
<color name="background_progress_color">#6C6D6D</color>
|
|
11
|
+
<color name="progress_color">#aacc0000</color>
|
|
12
|
+
<color name="line_color">#FF15FF00</color>
|
|
13
|
+
<color name="shadow_color">#7F000000</color>
|
|
14
|
+
<color name="line_button">#565758</color>
|
|
15
|
+
<color name="black_translucent">#50000000</color>
|
|
16
|
+
<color name="top_bottom">#42BAF8</color>
|
|
17
|
+
</resources>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<resources xmlns:tools="http://schemas.android.com/tools"
|
|
3
|
+
tools:ignore="MissingTranslation">
|
|
4
|
+
<string name="app_name">Video Trim</string>
|
|
5
|
+
<string name="trimmed_done">video trim completed!</string>
|
|
6
|
+
<!-- <string name="trimming">Trimming video...</string>-->
|
|
7
|
+
<string name="compressing">Compressing video...</string>
|
|
8
|
+
<string name="compressed_done">video compression completed!</string>
|
|
9
|
+
<string name="open_permission">Open permission</string>
|
|
10
|
+
<string name="video_record_des">To record a video, you need to give the camera and microphone access.</string>
|
|
11
|
+
<string name="recording">RECORD</string>
|
|
12
|
+
<string name="cancel">Cancel</string>
|
|
13
|
+
<string name="save">Save</string>
|
|
14
|
+
</resources>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNCameraPermission.h
|
|
3
|
+
// Shakebug
|
|
4
|
+
//
|
|
5
|
+
// Created by ideveloper2 on 14/03/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(RNCameraPermission, NSObject)
|
|
13
|
+
|
|
14
|
+
// RCT_EXTERN_METHOD(checkCameraPermissionStatus:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
15
|
+
|
|
16
|
+
@end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNCameraPermission.m
|
|
3
|
+
// Shakebug
|
|
4
|
+
//
|
|
5
|
+
// Created by ideveloper2 on 14/03/24.
|
|
6
|
+
// Copyright © 2024 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import "RNCameraPermission.h"
|
|
10
|
+
|
|
11
|
+
@implementation RNCameraPermission
|
|
12
|
+
|
|
13
|
+
// RCT_EXPORT_MODULE();
|
|
14
|
+
|
|
15
|
+
RCT_EXPORT_METHOD(checkCameraPermissionStatus:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
|
|
16
|
+
{
|
|
17
|
+
__block NSString *status; // Add __block specifier here
|
|
18
|
+
|
|
19
|
+
// Check camera permission status
|
|
20
|
+
AVAuthorizationStatus authorizationStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
|
|
21
|
+
|
|
22
|
+
switch (authorizationStatus) {
|
|
23
|
+
case AVAuthorizationStatusAuthorized:
|
|
24
|
+
status = @"granted";
|
|
25
|
+
resolve(status);
|
|
26
|
+
break;
|
|
27
|
+
case AVAuthorizationStatusDenied:
|
|
28
|
+
case AVAuthorizationStatusRestricted:
|
|
29
|
+
status = @"denied";
|
|
30
|
+
resolve(status);
|
|
31
|
+
break;
|
|
32
|
+
case AVAuthorizationStatusNotDetermined:
|
|
33
|
+
// Request camera permission
|
|
34
|
+
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
|
|
35
|
+
if (granted) {
|
|
36
|
+
status = @"granted";
|
|
37
|
+
} else {
|
|
38
|
+
status = @"denied";
|
|
39
|
+
}
|
|
40
|
+
resolve(status);
|
|
41
|
+
}];
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
@end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
//
|
|
2
|
+
// DeviceUID.h
|
|
3
|
+
// Shakebug
|
|
4
|
+
//
|
|
5
|
+
// Created by ideveloper2 on 29/02/24.
|
|
6
|
+
// Copyright © 2024 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import <Foundation/Foundation.h>
|
|
10
|
+
|
|
11
|
+
@interface ShakebugSDKDeviceUID : NSObject
|
|
12
|
+
+ (NSString *)syncUid;
|
|
13
|
+
+ (NSString *)uid;
|
|
14
|
+
@end
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
//
|
|
2
|
+
// DeviceUID.m
|
|
3
|
+
// Shakebug
|
|
4
|
+
//
|
|
5
|
+
// Created by ideveloper2 on 29/02/24.
|
|
6
|
+
// Copyright © 2024 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#import "DeviceUID.h"
|
|
10
|
+
|
|
11
|
+
@import UIKit;
|
|
12
|
+
|
|
13
|
+
@interface ShakebugSDKDeviceUID ()
|
|
14
|
+
|
|
15
|
+
@property(nonatomic, strong, readonly) NSString *uid;
|
|
16
|
+
|
|
17
|
+
@end
|
|
18
|
+
|
|
19
|
+
NSString * const ShakebugSDKUIDKey = @"deviceUID";
|
|
20
|
+
|
|
21
|
+
@implementation ShakebugSDKDeviceUID
|
|
22
|
+
|
|
23
|
+
@synthesize uid = _uid;
|
|
24
|
+
|
|
25
|
+
#pragma mark - Public methods
|
|
26
|
+
|
|
27
|
+
+ (NSString *)uid {
|
|
28
|
+
return [[[ShakebugSDKDeviceUID alloc] init] uid];
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
+ (NSString *)syncUid {
|
|
32
|
+
return [[[ShakebugSDKDeviceUID alloc] init] syncUid];
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
#pragma mark - Instance methods
|
|
36
|
+
|
|
37
|
+
- (id)init:(NSString *)key {
|
|
38
|
+
self = [super init];
|
|
39
|
+
if (self) {
|
|
40
|
+
_uid = nil;
|
|
41
|
+
}
|
|
42
|
+
return self;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/*! Returns the Device UID.
|
|
46
|
+
The UID is obtained in a chain of fallbacks:
|
|
47
|
+
- Keychain
|
|
48
|
+
- NSUserDefaults
|
|
49
|
+
- Apple IFV (Identifier for Vendor)
|
|
50
|
+
- Generate a random UUID if everything else is unavailable
|
|
51
|
+
At last, the UID is persisted if needed to.
|
|
52
|
+
*/
|
|
53
|
+
- (NSString *)uid {
|
|
54
|
+
if (!_uid) _uid = [[self class] valueForKeychainKey:ShakebugSDKUIDKey service:ShakebugSDKUIDKey];
|
|
55
|
+
if (!_uid) _uid = [[self class] valueForUserDefaultsKey:ShakebugSDKUIDKey];
|
|
56
|
+
if (!_uid) _uid = [[self class] appleIFV];
|
|
57
|
+
if (!_uid) _uid = [[self class] randomUUID];
|
|
58
|
+
[self saveIfNeed];
|
|
59
|
+
return _uid;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/*! Persist Apple IFV (Identifier for Vendor) or random UUID as Device UID.
|
|
63
|
+
*/
|
|
64
|
+
- (NSString *)syncUid {
|
|
65
|
+
_uid = [[self class] appleIFV];
|
|
66
|
+
if (!_uid) _uid = [[self class] randomUUID];
|
|
67
|
+
[self save];
|
|
68
|
+
return _uid;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/*! Persist UID to NSUserDefaults and Keychain
|
|
72
|
+
*/
|
|
73
|
+
- (void)save {
|
|
74
|
+
[ShakebugSDKDeviceUID setValue:_uid forUserDefaultsKey:ShakebugSDKUIDKey];
|
|
75
|
+
[ShakebugSDKDeviceUID updateValue:_uid forKeychainKey:ShakebugSDKUIDKey inService:ShakebugSDKUIDKey];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/*! Persist UID to NSUserDefaults and Keychain, if not yet saved
|
|
79
|
+
*/
|
|
80
|
+
- (void)saveIfNeed {
|
|
81
|
+
if (![ShakebugSDKDeviceUID valueForUserDefaultsKey:ShakebugSDKUIDKey]) {
|
|
82
|
+
[ShakebugSDKDeviceUID setValue:_uid forUserDefaultsKey:ShakebugSDKUIDKey];
|
|
83
|
+
}
|
|
84
|
+
if (![ShakebugSDKDeviceUID valueForKeychainKey:ShakebugSDKUIDKey service:ShakebugSDKUIDKey]) {
|
|
85
|
+
[ShakebugSDKDeviceUID setValue:_uid forKeychainKey:ShakebugSDKUIDKey inService:ShakebugSDKUIDKey];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
#pragma mark - Keychain methods
|
|
90
|
+
|
|
91
|
+
/*! Create as generic NSDictionary to be used to query and update Keychain items.
|
|
92
|
+
* param1
|
|
93
|
+
* param2
|
|
94
|
+
*/
|
|
95
|
+
+ (NSMutableDictionary *)keychainItemForKey:(NSString *)key service:(NSString *)service {
|
|
96
|
+
NSMutableDictionary *keychainItem = [[NSMutableDictionary alloc] init];
|
|
97
|
+
keychainItem[(__bridge id)kSecClass] = (__bridge id)kSecClassGenericPassword;
|
|
98
|
+
keychainItem[(__bridge id)kSecAttrAccessible] = (__bridge id)kSecAttrAccessibleAfterFirstUnlock;
|
|
99
|
+
keychainItem[(__bridge id)kSecAttrAccount] = key;
|
|
100
|
+
keychainItem[(__bridge id)kSecAttrService] = service;
|
|
101
|
+
return keychainItem;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/*! Sets
|
|
105
|
+
* param1
|
|
106
|
+
* param2
|
|
107
|
+
*/
|
|
108
|
+
+ (OSStatus)setValue:(NSString *)value forKeychainKey:(NSString *)key inService:(NSString *)service {
|
|
109
|
+
NSMutableDictionary *keychainItem = [[self class] keychainItemForKey:key service:service];
|
|
110
|
+
keychainItem[(__bridge id)kSecValueData] = [value dataUsingEncoding:NSUTF8StringEncoding];
|
|
111
|
+
OSStatus status = SecItemAdd((__bridge CFDictionaryRef)keychainItem, NULL);
|
|
112
|
+
|
|
113
|
+
if (status == errSecDuplicateItem) {
|
|
114
|
+
[ShakebugSDKDeviceUID deleteValue:key inService:service];
|
|
115
|
+
status = SecItemAdd((__bridge CFDictionaryRef)keychainItem, NULL);
|
|
116
|
+
}
|
|
117
|
+
return status;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/*! Updates
|
|
121
|
+
* param1
|
|
122
|
+
* param2
|
|
123
|
+
*/
|
|
124
|
+
+ (OSStatus)updateValue:(NSString *)value forKeychainKey:(NSString *)key inService:(NSString *)service {
|
|
125
|
+
NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:
|
|
126
|
+
(__bridge id)kSecClassGenericPassword, kSecClass,
|
|
127
|
+
key, kSecAttrAccount,
|
|
128
|
+
service, kSecAttrService,
|
|
129
|
+
nil];
|
|
130
|
+
|
|
131
|
+
NSDictionary *attributesToUpdate = [NSDictionary dictionaryWithObjectsAndKeys:
|
|
132
|
+
[value dataUsingEncoding:NSUTF8StringEncoding], kSecValueData,
|
|
133
|
+
nil];
|
|
134
|
+
|
|
135
|
+
return SecItemUpdate((__bridge CFDictionaryRef)query, (__bridge CFDictionaryRef)attributesToUpdate);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
+ (OSStatus)deleteValue:(NSString *)key inService:(NSString *)service {
|
|
139
|
+
NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:
|
|
140
|
+
(__bridge id)kSecClassGenericPassword, kSecClass,
|
|
141
|
+
key, kSecAttrAccount,
|
|
142
|
+
service, kSecAttrService,
|
|
143
|
+
nil];
|
|
144
|
+
|
|
145
|
+
OSStatus status= SecItemDelete((__bridge CFDictionaryRef)query);
|
|
146
|
+
return status;
|
|
147
|
+
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
+ (NSString *)valueForKeychainKey:(NSString *)key service:(NSString *)service {
|
|
152
|
+
OSStatus status;
|
|
153
|
+
NSMutableDictionary *keychainItem = [[self class] keychainItemForKey:key service:service];
|
|
154
|
+
keychainItem[(__bridge id)kSecReturnData] = (__bridge id)kCFBooleanTrue;
|
|
155
|
+
keychainItem[(__bridge id)kSecReturnAttributes] = (__bridge id)kCFBooleanTrue;
|
|
156
|
+
CFDictionaryRef result = nil;
|
|
157
|
+
status = SecItemCopyMatching((__bridge CFDictionaryRef)keychainItem, (CFTypeRef *)&result);
|
|
158
|
+
if (status != noErr) {
|
|
159
|
+
return nil;
|
|
160
|
+
}
|
|
161
|
+
NSDictionary *resultDict = (__bridge_transfer NSDictionary *)result;
|
|
162
|
+
NSData *data = resultDict[(__bridge id)kSecValueData];
|
|
163
|
+
if (!data) {
|
|
164
|
+
return nil;
|
|
165
|
+
}
|
|
166
|
+
return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
#pragma mark - NSUserDefaults methods
|
|
170
|
+
|
|
171
|
+
+ (BOOL)setValue:(NSString *)value forUserDefaultsKey:(NSString *)key {
|
|
172
|
+
[[NSUserDefaults standardUserDefaults] setObject:value forKey:key];
|
|
173
|
+
return [[NSUserDefaults standardUserDefaults] synchronize];
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
+ (NSString *)valueForUserDefaultsKey:(NSString *)key {
|
|
177
|
+
return [[NSUserDefaults standardUserDefaults] objectForKey:key];
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
#pragma mark - UID Generation methods
|
|
181
|
+
|
|
182
|
+
+ (NSString *)appleIFV {
|
|
183
|
+
if(NSClassFromString(@"UIDevice") && [UIDevice instancesRespondToSelector:@selector(identifierForVendor)]) {
|
|
184
|
+
// only available in iOS >= 6.0
|
|
185
|
+
return [[UIDevice currentDevice].identifierForVendor UUIDString];
|
|
186
|
+
}
|
|
187
|
+
return nil;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
+ (NSString *)randomUUID {
|
|
191
|
+
if(NSClassFromString(@"NSUUID")) {
|
|
192
|
+
return [[NSUUID UUID] UUIDString];
|
|
193
|
+
}
|
|
194
|
+
CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
|
|
195
|
+
CFStringRef cfuuid = CFUUIDCreateString(kCFAllocatorDefault, uuidRef);
|
|
196
|
+
CFRelease(uuidRef);
|
|
197
|
+
NSString *uuid = [((__bridge NSString *) cfuuid) copy];
|
|
198
|
+
CFRelease(cfuuid);
|
|
199
|
+
return uuid;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
@end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
//
|
|
2
|
+
// EnvironmentUtil.h
|
|
3
|
+
// Shakebug
|
|
4
|
+
//
|
|
5
|
+
// Created by ideveloper2 on 29/02/24.
|
|
6
|
+
// Copyright © 2024 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
#import <Foundation/Foundation.h>
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* App environment
|
|
15
|
+
*/
|
|
16
|
+
typedef NS_ENUM(NSInteger, MSACEnvironment) {
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* App has been downloaded from the AppStore.
|
|
20
|
+
*/
|
|
21
|
+
MSACEnvironmentAppStore = 0,
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* App has been downloaded from TestFlight.
|
|
25
|
+
*/
|
|
26
|
+
MSACEnvironmentTestFlight = 1,
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* App has been installed by some other mechanism.
|
|
30
|
+
* This could be Ad-Hoc, Enterprise, etc.
|
|
31
|
+
*/
|
|
32
|
+
MSACEnvironmentOther = 2
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
#define ShakebugSDKEnvironmentValues [NSArray arrayWithObjects: @"AppStore", @"TestFlight", @"Other", nil]
|
|
36
|
+
|
|
37
|
+
@interface ShakebugSDKEnvironmentUtil : NSObject
|
|
38
|
+
|
|
39
|
+
+ (MSACEnvironment)currentAppEnvironment;
|
|
40
|
+
|
|
41
|
+
@end
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
//
|
|
2
|
+
// EnvironmentUtil.m
|
|
3
|
+
// Shakebug
|
|
4
|
+
//
|
|
5
|
+
// Created by ideveloper2 on 29/02/24.
|
|
6
|
+
// Copyright © 2024 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
#import "EnvironmentUtil.h"
|
|
11
|
+
|
|
12
|
+
@implementation ShakebugSDKEnvironmentUtil
|
|
13
|
+
|
|
14
|
+
+ (MSACEnvironment)currentAppEnvironment {
|
|
15
|
+
#if TARGET_OS_SIMULATOR || TARGET_OS_OSX || TARGET_OS_MACCATALYST
|
|
16
|
+
return MSACEnvironmentOther;
|
|
17
|
+
#else
|
|
18
|
+
|
|
19
|
+
// MobilePovision profiles are a clear indicator for Ad-Hoc distribution.
|
|
20
|
+
if ([self hasEmbeddedMobileProvision]) {
|
|
21
|
+
return MSACEnvironmentOther;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* TestFlight is only supported from iOS 8 onwards and as our deployment target is iOS 8, we don't have to do any checks for
|
|
26
|
+
* floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1).
|
|
27
|
+
*/
|
|
28
|
+
if ([self isAppStoreReceiptSandbox]) {
|
|
29
|
+
return MSACEnvironmentTestFlight;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return MSACEnvironmentAppStore;
|
|
33
|
+
#endif
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
+ (BOOL)hasEmbeddedMobileProvision {
|
|
37
|
+
BOOL hasEmbeddedMobileProvision = !![[NSBundle mainBundle] pathForResource:@"embedded" ofType:@"mobileprovision"];
|
|
38
|
+
return hasEmbeddedMobileProvision;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
+ (BOOL)isAppStoreReceiptSandbox {
|
|
42
|
+
#if TARGET_OS_SIMULATOR
|
|
43
|
+
return NO;
|
|
44
|
+
#else
|
|
45
|
+
if (![NSBundle.mainBundle respondsToSelector:@selector(appStoreReceiptURL)]) {
|
|
46
|
+
return NO;
|
|
47
|
+
}
|
|
48
|
+
NSURL *appStoreReceiptURL = NSBundle.mainBundle.appStoreReceiptURL;
|
|
49
|
+
NSString *appStoreReceiptLastComponent = appStoreReceiptURL.lastPathComponent;
|
|
50
|
+
|
|
51
|
+
BOOL isSandboxReceipt = [appStoreReceiptLastComponent isEqualToString:@"sandboxReceipt"];
|
|
52
|
+
return isSandboxReceipt;
|
|
53
|
+
#endif
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
@end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RNDeviceInfo.h
|
|
3
|
+
// Shakebug
|
|
4
|
+
//
|
|
5
|
+
// Created by ideveloper2 on 29/02/24.
|
|
6
|
+
// Copyright © 2024 Facebook. All rights reserved.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
#import <UIKit/UIKit.h>
|
|
11
|
+
#import <AVFoundation/AVFoundation.h>
|
|
12
|
+
#import <sys/utsname.h>
|
|
13
|
+
#import <React/RCTBridgeModule.h>
|
|
14
|
+
#import <React/RCTEventEmitter.h>
|
|
15
|
+
#import <React/RCTLog.h>
|
|
16
|
+
|
|
17
|
+
@interface ShakebugSDKRNDeviceInfo : RCTEventEmitter <RCTBridgeModule>
|
|
18
|
+
|
|
19
|
+
@property (nonatomic) float lowBatteryThreshold;
|
|
20
|
+
|
|
21
|
+
@end
|
|
22
|
+
|