diff --git a/patches/react-native-file-viewer+2.1.4.patch b/patches/react-native-file-viewer+2.1.4.patch new file mode 100644 index 000000000..618f86038 --- /dev/null +++ b/patches/react-native-file-viewer+2.1.4.patch @@ -0,0 +1,103 @@ +diff --git a/node_modules/react-native-file-viewer/android/src/main/java/com/vinzscam/reactnativefileviewer/RNFileViewerModule.java b/node_modules/react-native-file-viewer/android/src/main/java/com/vinzscam/reactnativefileviewer/RNFileViewerModule.java +index 11fd79f..92156a1 100644 +--- a/node_modules/react-native-file-viewer/android/src/main/java/com/vinzscam/reactnativefileviewer/RNFileViewerModule.java ++++ b/node_modules/react-native-file-viewer/android/src/main/java/com/vinzscam/reactnativefileviewer/RNFileViewerModule.java +@@ -6,6 +6,8 @@ import android.content.Intent; + import android.content.pm.PackageManager; + import android.net.Uri; + import androidx.core.content.FileProvider; ++ ++import android.text.TextUtils; + import android.webkit.MimeTypeMap; + + import com.facebook.react.bridge.ActivityEventListener; +@@ -41,6 +43,21 @@ public class RNFileViewerModule extends ReactContextBaseJavaModule { + reactContext.addActivityEventListener(mActivityEventListener); + } + ++ private static String getExtension(String uri) { ++ if (uri == null) { ++ return null; ++ } ++ ++ int dot = uri.lastIndexOf("."); ++ if (dot >= 0) { ++ // exclude the dot ++ return uri.substring(dot + 1); ++ } else { ++ // No extension. ++ return ""; ++ } ++ } ++ + @ReactMethod + public void open(String path, Integer currentId, ReadableMap options) { + Uri contentUri = null; +@@ -51,6 +68,7 @@ public class RNFileViewerModule extends ReactContextBaseJavaModule { + contentUri = Uri.parse(path); + } else { + File newFile = new File(path); ++ + try { + final String packageName = getCurrentActivity().getPackageName(); + final String authority = new StringBuilder(packageName).append(".provider").toString(); +@@ -68,6 +86,9 @@ public class RNFileViewerModule extends ReactContextBaseJavaModule { + } + + String extension = MimeTypeMap.getFileExtensionFromUrl(path).toLowerCase(); ++ if (TextUtils.isEmpty(extension)) { ++ extension = getExtension(path); ++ } + String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); + + Intent shareIntent = new Intent(); +@@ -84,9 +105,9 @@ public class RNFileViewerModule extends ReactContextBaseJavaModule { + intentActivity = shareIntent; + } + +- PackageManager pm = getCurrentActivity().getPackageManager(); +- +- if (shareIntent.resolveActivity(pm) != null) { ++// PackageManager pm = getCurrentActivity().getPackageManager(); ++// ++// if (shareIntent.resolveActivity(pm) != null) { + try { + getCurrentActivity().startActivityForResult(intentActivity, currentId + RN_FILE_VIEWER_REQUEST); + sendEvent(OPEN_EVENT, currentId, null); +@@ -94,21 +115,21 @@ public class RNFileViewerModule extends ReactContextBaseJavaModule { + catch(Exception e) { + sendEvent(OPEN_EVENT, currentId, e.getMessage()); + } +- } else { +- try { +- if (showStoreSuggestions) { +- if(mimeType == null) { +- throw new Exception("It wasn't possible to detect the type of the file"); +- } +- Intent storeIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=" + mimeType + "&c=apps")); +- getCurrentActivity().startActivity(storeIntent); +- } +- throw new Exception("No app associated with this mime type"); +- } +- catch(Exception e) { +- sendEvent(OPEN_EVENT, currentId, e.getMessage()); +- } +- } ++// } else { ++// try { ++// if (showStoreSuggestions) { ++// if(mimeType == null) { ++// throw new Exception("It wasn't possible to detect the type of the file"); ++// } ++// Intent storeIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=" + mimeType + "&c=apps")); ++// getCurrentActivity().startActivity(storeIntent); ++// } ++// throw new Exception("No app associated with this mime type"); ++// } ++// catch(Exception e) { ++// sendEvent(OPEN_EVENT, currentId, e.getMessage()); ++// } ++// } + } + + @Override