Getting started with React Native OMH Storage
React Native OMH Storage is a project that integrates various cloud storage providers to React Native. It offers a unified API to work with different storage providers.
Prerequisites
Before getting started, the documentation assumes you are able to create a project with React Native. If you do not meet these prerequisites, follow the links below:
React Native - Setting up the development environment
Additionally, the current versions of the Android OMH libraries require a minimum Android API level of 23 or 26 depending on chosen provider. To ensure your Android application builds successfully, set the minSdkVersion
to at least 23 for Google Drive and Dropbox, or 26 for OneDrive, in your android/build.gradle file, depending on the storage providers you plan to support.
Installation
To integrate a storage provider into your React Native project, follow the specific steps for each provider:
Usage
Operations that can be performed on files can also be applied to folders.
Note:
Below examples are referencing storageClient
. You can see example initialization and usage in our Example App.
Please refer to getStorageClient and useRequireStorageClient files for example implementation.
Get root folder path
Retrieve the root folder ID of the storage service. Useful for listing files in the root folder.
const rootFolderId = storageClient.rootFolderId;
List files
List files in a specific folder.
const files = await storageClient.listFiles('folderId');
Search files
Search for files with names containing the specified query.
const searchResults = await storageClient.search('fileName');
Create folder
Create a folder in a specific folder.
const newFolder = await storageClient.createFolder(
'folderName',
'parentFolderId'
);
Create file (with mime type)
Create a file with a specified MIME type in a folder.
const newFile = await storageClient.createFileWithMimeType(
'fileName',
'fileMimeType',
'parentFolderId'
);
Create file (with extension)
Create a file with a specified extension in a folder.
const newFile = await storageClient.createFileWithExtension(
'fileName',
'fileExtension',
'parentFolderId'
);
Update file
Update a file with the content of a local file.
const updatedFile = await storageClient.updateFile(localFile, 'fileId');
Delete file
Move a file to trash using its ID.
await storageClient.deleteFile('fileId');
Permanently Delete File
Permanently delete a file using its ID.
await storageClient.permanentlyDeleteFile('fileId');
Upload file
Upload a local file to a specific folder.
const uploadedFile = await storageClient.localFileUpload(localFile, 'folderId');
Download file
Download a file using its ID.
await storageClient.downloadFile(file, 'saveDirectory');
Export file
Export a file with a specific MIME type.
await storageClient.exportFile(
file,
'mimeType',
'fileExtension',
'saveDirectory'
);
Get file metadata
Retrieve the metadata of a file using its ID.
const fileMetadata = await storageClient.getFileMetadata('fileId');
For more details on file metadata support for each provider, please refer to the File metadata documentation.
Get file versions
Retrieve versions of a file using its ID.
const fileVersions = await storageClient.getFileVersions('fileId');
Download file version
Download a specific version of a file.
await storageClient.downloadFileVersion(file, 'versionId', 'saveDirectory');
Get file permissions
List the permissions of a file using its ID.
const permissions = await storageClient.getPermissions('fileId');
For more details on file permissions support for each provider, please refer to the File permissions documentation.
Create file permission
Create a permission for a file.
const newPermission = await storageClient.createPermission(
'fileId',
'role', // e.g., 'writer'
{ email: 'user@example.com' }, // Permission recipient
true, // Send notification email
'Optional message'
);
Update file permission
Update the role of a permission for a file.
const updatedPermission = await storageClient.updatePermission(
'fileId',
'permissionId',
'newRole' // e.g., 'reader'
);
Delete file permission
Delete a permission for a file.
await storageClient.deletePermission('fileId', 'permissionId');
Get file url
Retrieve the URL of a file.
const fileUrl = await storageClient.getWebUrl('fileId');
For a more in depth view on the available methods, access the Reference API.
Sample app
Explore the sample app included in the repository to see the implementation of storage with Google Drive and other storage providers. The sample app demonstrates the integration and usage of the various storage providers, providing a practical example to help you get started quickly.