Skip to content

Commit 694af94

Browse files
committed
feat: read/write stream and RN0.80 upgrade
1 parent a1e18b3 commit 694af94

File tree

20 files changed

+3117
-748
lines changed

20 files changed

+3117
-748
lines changed

android/src/main/java/com/margelo/nitro/fs2/Fs2Stream.kt

Lines changed: 423 additions & 0 deletions
Large diffs are not rendered by default.

android/src/main/java/com/margelo/nitro/fs2/RNFSManager.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import java.io.RandomAccessFile
1616
import java.security.MessageDigest
1717
import androidx.core.net.toUri
1818
import com.facebook.react.bridge.ReactApplicationContext
19+
import com.margelo.nitro.fs2.utils.Fs2Util
1920

2021
class RNFSManager(private val context: ReactApplicationContext) {
2122
companion object {
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.margelo.nitro.fs2.utils
2+
3+
import android.content.Context
4+
import android.net.Uri
5+
import android.provider.MediaStore
6+
import androidx.core.net.toUri
7+
import java.io.File
8+
import com.margelo.nitro.fs2.IORejectionException
9+
10+
object Fs2Util {
11+
fun getFileUri(filepath: String, isDirectoryAllowed: Boolean = false): Uri {
12+
val uri = filepath.toUri()
13+
if (uri.scheme == null) {
14+
val file = File(filepath)
15+
if (!isDirectoryAllowed && file.isDirectory) {
16+
throw IORejectionException(
17+
"EISDIR",
18+
"EISDIR: illegal operation on a directory, read '$filepath'"
19+
)
20+
}
21+
return "file://$filepath".toUri()
22+
}
23+
return uri
24+
}
25+
26+
fun getOriginalFilepath(context: Context, filepath: String, isDirectoryAllowed: Boolean = false): String {
27+
val uri = getFileUri(filepath, isDirectoryAllowed)
28+
var originalFilepath = filepath
29+
if ("content" == uri.scheme) {
30+
try {
31+
context.contentResolver.query(uri, null, null, null, null)?.use { cursor ->
32+
if (cursor.moveToFirst()) {
33+
val columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA)
34+
originalFilepath = cursor.getString(columnIndex)
35+
}
36+
}
37+
} catch (e: IllegalArgumentException) {
38+
// Ignored in original code
39+
}
40+
}
41+
return originalFilepath
42+
}
43+
}

0 commit comments

Comments
 (0)