![Namecheap Takes Down Polyfill.io Service Following Supply Chain Attack](https://cdn.sanity.io/images/cgdhsj6q/production/6af25114feaaac7179b18127c83327568ff592d1-1024x1024.webp?w=800&fit=max&auto=format)
Security News
Namecheap Takes Down Polyfill.io Service Following Supply Chain Attack
Polyfill.io has been serving malware for months via its CDN, after the project's open source maintainer sold the service to a company based in China.
@r4dic4l/react-native-open-doc
Advanced tools
Readme
This is a fork of react-native-open-doc.
Open files stored on device for preview - Android and iOS.
Pick files using native file pickers for iOS and Android (UIDocumentPickerViewController / Intent.ACTION_OPEN_DOCUMENT)
Share files on Android (for iOS use the react-native Share.share({ url: selectedUri }) api, see https://reactnative.dev/docs/share#share for more details).
$ npm install @r4dic4l/react-native-open-doc --save
$ react-native link @r4dic4l/react-native-open-doc
Android ONLY: Define a FileProvider
Define a file provider in your AndroidManifest.xml.
Note that the authorities value should be <your package name>.provider
, for example:
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="com.mydomain.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
In meta-data, all supported files should be listed. @xml/provider_paths takes values configured in xml/provider_paths.xml.
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="shared" path="."/>
<external-path name="shared" path="."/>
<external-files-path name="shared" path="."/>
<root-path name="root" path="."/>
</paths>
Define intents for actions for package visibility in android 11
For actions in this package, the following intents are necessary in your AndroidManifest.xml.
<manifest>
...
<queries>
<intent>
<action android:name="android.intent.action.VIEW" />
<data android:mimeType="*/*" />
</intent>
<intent>
<action android:name="android.intent.action.SEND" />
<data android:mimeType="*/*" />
</intent>
<intent>
<action android:name="android.intent.action.OPEN_DOCUMENT" />
<data android:mimeType="*/*" />
</intent>
</queries>
...
</manifest>
Libraries
➜ Add Files to [your project's name]
node_modules
➜ react-native-open-doc
and add RNCOpenDoc.xcodeproj
libRNCOpenDoc.a
to your project's Build Phases
➜ Link Binary With Libraries
Cmd+R
)<android/app/src/main/java/[...]/MainActivity.java
import com.capriza.reactlibrary.RNCOpenDocPackage;
to the imports at the top of the filenew RNCOpenDocPackage()
to the list returned by the getPackages()
methodandroid/settings.gradle
:
include ':react-native-open-doc'
project(':react-native-open-doc').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-open-doc/android')
android/app/build.gradle
:
implementation project(':react-native-open-doc')
import RNCOpenDoc from '@r4dic4l/react-native-open-doc';
// For opening a document by path (android and iOS)
// Works with file:// prefix OR direct file path
RNCOpenDoc.open(pathToFile);
// For opening a content:// document (android ONLY)
// Works with file:// prefix OR direct file path OR content:// URI string with a suggested mime type for intent
RNCOpenDoc.openWithSuggestedMime(contentUri, suggestedMimeType);
// For sharing a document by path (android ONLY)
// For iOS use the react-native Share.share({ url: selectedUri }) api (see https://reactnative.dev/docs/share#share)
// Works with file:// prefix OR direct file path
RNCOpenDoc.share(pathToFile);
// For sharing a content:// document (android ONLY)
// Works with file:// prefix OR direct file path OR content:// URI string with a suggested mime type for intent
RNCOpenDoc.shareWithSuggestedMime(pathToFile, suggestedMimeType);
// For using the file picker (android and iOS)
RNCOpenDoc.pick(null, (error, files) => {
if (error) {
console.log(`error in RNCOpenDoc.pick ${error}`);
}
else if (files) {
this.handleSelectedFiles(files);
}
});
files
is an array of objects with the following properties:
fileName
(string) e.g. "foo.html"fileSize
(number) (iOS only) File size in bytesmimeType
(string) (iOS only) e.g. "text/html"uri
(string) Example (iOS): "file:///private/var/mobile/Containers/Data/Application/.../foo.html"FAQs
React Native module for opening documents
The npm package @r4dic4l/react-native-open-doc receives a total of 1 weekly downloads. As such, @r4dic4l/react-native-open-doc popularity was classified as not popular.
We found that @r4dic4l/react-native-open-doc demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Polyfill.io has been serving malware for months via its CDN, after the project's open source maintainer sold the service to a company based in China.
Security News
OpenSSF is warning open source maintainers to stay vigilant against reputation farming on GitHub, where users artificially inflate their status by manipulating interactions on closed issues and PRs.
Security News
A JavaScript library maintainer is under fire after merging a controversial PR to support legacy versions of Node.js.