diff --git a/android/build.gradle b/android/build.gradle index 7354d51e..f90f4ae2 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -4,7 +4,7 @@ buildscript { google() } dependencies { - classpath 'com.android.tools.build:gradle:2.3.0' + classpath 'com.android.tools.build:gradle:2.3.3' } } diff --git a/android/src/main/java/io/github/elyx0/reactnativedocumentpicker/DocumentPickerModule.java b/android/src/main/java/io/github/elyx0/reactnativedocumentpicker/DocumentPickerModule.java index aec7ab4b..5985bce1 100644 --- a/android/src/main/java/io/github/elyx0/reactnativedocumentpicker/DocumentPickerModule.java +++ b/android/src/main/java/io/github/elyx0/reactnativedocumentpicker/DocumentPickerModule.java @@ -1,6 +1,7 @@ package io.github.elyx0.reactnativedocumentpicker; import android.app.Activity; +import android.content.ActivityNotFoundException; import android.content.ClipData; import android.content.ContentResolver; import android.content.Intent; @@ -34,6 +35,7 @@ public class DocumentPickerModule extends ReactContextBaseJavaModule { private static final String E_ACTIVITY_DOES_NOT_EXIST = "ACTIVITY_DOES_NOT_EXIST"; private static final String E_FAILED_TO_SHOW_PICKER = "FAILED_TO_SHOW_PICKER"; private static final String E_DOCUMENT_PICKER_CANCELED = "DOCUMENT_PICKER_CANCELED"; + private static final String E_UNABLE_TO_OPEN_FILE_TYPE = "UNABLE_TO_OPEN_FILE_TYPE"; private static final String E_UNKNOWN_ACTIVITY_RESULT = "UNKNOWN_ACTIVITY_RESULT"; private static final String E_INVALID_DATA_RETURNED = "INVALID_DATA_RETURNED"; private static final String E_UNEXPECTED_EXCEPTION = "UNEXPECTED_EXCEPTION"; @@ -125,6 +127,9 @@ public void pick(ReadableMap args, Promise promise) { } currentActivity.startActivityForResult(intent, READ_REQUEST_CODE, Bundle.EMPTY); + } catch (ActivityNotFoundException e) { + this.promise.reject(E_UNABLE_TO_OPEN_FILE_TYPE, e.getLocalizedMessage()); + this.promise = null; } catch (Exception e) { e.printStackTrace(); this.promise.reject(E_FAILED_TO_SHOW_PICKER, e.getLocalizedMessage()); diff --git a/index.js b/index.js index 4628df0a..6538c5be 100644 --- a/index.js +++ b/index.js @@ -57,27 +57,29 @@ function pick(opts) { const Types = { mimeTypes: { 'allFiles': '*/*', + 'audio': 'audio/*', 'images': 'image/*', 'video': 'video/mp4,video/x-m4v,video/*', 'plainText': 'text/plain', - 'audio': 'audio/*', 'pdf': 'application/pdf', + 'video': 'video/*', }, utis: { 'allFiles': 'public.content', + 'audio': 'public.audio', 'images': 'public.image', 'video': 'public.video', 'plainText': 'public.plain-text', - 'audio': 'public.audio', 'pdf': 'com.adobe.pdf', + 'video': 'public.video', }, extensions: { 'allFiles': '*', + 'audio': '.3g2 .3gp .aac .adt .adts .aif .aifc .aiff .asf .au .m3u .m4a .m4b .mid .midi .mp2 .mp3 .mp4 .rmi .snd .wav .wax .wma', 'images': '.png .jpg .jpeg', - 'video': '.avi .mpeg .ogv .webm .3gp .3g2 .mp4', - 'plainText': '.txt', - 'audio': '.adts .adt .aac .aif .aifc .aiff .au .snd .mid .midi .rmi .mp3 .mp2 .m3u .m4a .wav .wma .wax .asf .3g2 .3gp .m4b .mp4', 'pdf': '.pdf', + 'plainText': '.txt', + 'video': '.avi .mpeg .ogv .webm .3gp .3g2 .mp4' } }; @@ -96,15 +98,21 @@ export default class DocumentPicker { static types = PlatformTypes[Platform.OS] || Types.mimeTypes static pick(opts) { - opts = opts || {}; - opts.multiple = false; - return pick(opts).then((results) => results[0]); + const options = { + ...opts, + multiple: false + } + + return pick(options).then((results) => results[0]); } static pickMultiple(opts) { - opts = opts || {}; - opts.multiple = true; - return pick(opts); + const options = { + ...opts, + multiple: true + } + + return pick(options); } static isCancel(err) { diff --git a/ios/RNDocumentPicker.xcodeproj/project.pbxproj b/ios/RNDocumentPicker.xcodeproj/project.pbxproj index 88409bc8..2b1f1db8 100644 --- a/ios/RNDocumentPicker.xcodeproj/project.pbxproj +++ b/ios/RNDocumentPicker.xcodeproj/project.pbxproj @@ -92,7 +92,7 @@ E01DD9D31D2311A600C39062 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0730; + LastUpgradeCheck = 1010; ORGANIZATIONNAME = Elialys; TargetAttributes = { E01DD9DA1D2311A600C39062 = { @@ -138,13 +138,23 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -166,7 +176,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -182,13 +192,23 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -204,7 +224,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; VALIDATE_PRODUCT = YES; diff --git a/ios/RNDocumentPicker/RNDocumentPicker.m b/ios/RNDocumentPicker/RNDocumentPicker.m index f12904df..1cb8b4b0 100644 --- a/ios/RNDocumentPicker/RNDocumentPicker.m +++ b/ios/RNDocumentPicker/RNDocumentPicker.m @@ -42,6 +42,10 @@ - (instancetype)init return self; } ++ (BOOL)requiresMainQueueSetup { + return NO; +} + - (dispatch_queue_t)methodQueue { return dispatch_get_main_queue(); diff --git a/package.json b/package.json index 049b88db..e344c694 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "icloud" ], "author": "Elyx0 (@Elyx0)", - "license": "ISC", + "license": "MIT", "bugs": { "url": "https://github.com/Elyx0/react-native-document-picker/issues" }, diff --git a/windows/RNDocumentPicker/RCTDocumentPickerModule.cs b/windows/RNDocumentPicker/RCTDocumentPickerModule.cs index 41119473..4269457e 100644 --- a/windows/RNDocumentPicker/RCTDocumentPickerModule.cs +++ b/windows/RNDocumentPicker/RCTDocumentPickerModule.cs @@ -1,18 +1,12 @@ using Newtonsoft.Json.Linq; using ReactNative.Bridge; using System; -using Newtonsoft.Json.Linq; -using ReactNative.Bridge; -using ReactNative.Collections; using System.Linq; using System.Collections.Generic; using Windows.ApplicationModel.Core; using Windows.UI.Core; -using Windows.UI.Popups; using Windows.Storage; using Windows.Storage.Pickers; -using ZXing; -using static System.FormattableString; using System.Text.RegularExpressions; using System.Threading.Tasks; diff --git a/windows/RNDocumentPicker/RNDocumentPicker.csproj b/windows/RNDocumentPicker/RNDocumentPicker.csproj index 9d14dbd3..d6e2f96e 100644 --- a/windows/RNDocumentPicker/RNDocumentPicker.csproj +++ b/windows/RNDocumentPicker/RNDocumentPicker.csproj @@ -12,7 +12,7 @@ en-US UAP 10.0.14393.0 - 10.0.10240.0 + 10.0.14393.0 14 512 {A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} diff --git a/windows/RNDocumentPicker/project.json b/windows/RNDocumentPicker/project.json index 91780b8d..52c8348d 100644 --- a/windows/RNDocumentPicker/project.json +++ b/windows/RNDocumentPicker/project.json @@ -1,12 +1,12 @@ { "dependencies": { "Microsoft.NETCore.UniversalWindowsPlatform": "5.2.2", - "Newtonsoft.Json": "9.0.1", + "Newtonsoft.Json": "12.0.1", "System.Reactive.Linq": "3.1.1", "ZXing.Net": "0.16.0" }, "frameworks": { - "uap10.0.10240": {} + "uap10.0.14393": {} }, "runtimes": { "win10-arm": {},