@@ -13,10 +13,6 @@ class HybridFileSystem : HybridFileSystemSpec() {
13
13
private val context = NitroModules .applicationContext
14
14
? : throw RuntimeException (" Application context is missing" )
15
15
16
- init {
17
- context.addActivityEventListener(activityEventListener)
18
- }
19
-
20
16
override fun getMetadata (path : String ): Metadata {
21
17
val uri = Uri .parse(path)
22
18
val document = DocumentFile .fromSingleUri(context, uri)
@@ -87,57 +83,61 @@ class HybridFileSystem : HybridFileSystemSpec() {
87
83
}
88
84
}
89
85
90
- companion object {
91
- private const val FILE_PICKER_REQUEST_CODE = 1001
92
- private var pendingPromise: Promise <Array <String >>? = null
93
-
94
- val activityEventListener = object : BaseActivityEventListener () {
95
- override fun onActivityResult (
96
- activity : Activity ,
97
- requestCode : Int ,
98
- resultCode : Int ,
99
- data : Intent ?
100
- ) {
101
- handleActivityResult(requestCode, resultCode, data)
102
- }
86
+ private var pendingPromise: Promise <Array <String >>? = null
87
+
88
+ private val activityEventListener = object : BaseActivityEventListener () {
89
+ override fun onActivityResult (
90
+ activity : Activity ,
91
+ requestCode : Int ,
92
+ resultCode : Int ,
93
+ data : Intent ?
94
+ ) {
95
+ handleActivityResult(requestCode, resultCode, data)
103
96
}
97
+ }.also { listener ->
98
+ // tbd: register/deregister accordingly
99
+ context.addActivityEventListener(listener)
100
+ }
104
101
105
- fun handleActivityResult (requestCode : Int , resultCode : Int , data : Intent ? ) {
106
- if (requestCode == FILE_PICKER_REQUEST_CODE ) {
107
- val promise = pendingPromise
108
- ? : throw RuntimeException (" Promise missing" )
109
-
110
- if (resultCode == Activity .RESULT_OK && data != null ) {
111
- try {
112
- val paths = mutableListOf<String >()
113
-
114
- if (data.clipData != null ) {
115
- // Multiple files
116
- for (i in 0 until data.clipData!! .itemCount) {
117
- data.clipData!! .getItemAt(i).uri.toString().let {
118
- paths.add(it)
119
- }
120
- }
121
- } else {
122
- // Single file
123
- data.data?.toString()?.let {
102
+ private fun handleActivityResult (requestCode : Int , resultCode : Int , data : Intent ? ) {
103
+ if (requestCode == FILE_PICKER_REQUEST_CODE ) {
104
+ val promise = pendingPromise
105
+ ? : throw RuntimeException (" Promise missing" )
106
+
107
+ if (resultCode == Activity .RESULT_OK && data != null ) {
108
+ try {
109
+ val paths = mutableListOf<String >()
110
+
111
+ if (data.clipData != null ) {
112
+ // Multiple files
113
+ for (i in 0 until data.clipData!! .itemCount) {
114
+ data.clipData!! .getItemAt(i).uri.toString().let {
124
115
paths.add(it)
125
116
}
126
117
}
127
-
128
- promise.resolve(paths.toTypedArray())
129
- } catch (e: Exception ) {
130
- promise.reject(Error (e.message))
118
+ } else {
119
+ // Single file
120
+ data.data?.toString()?.let {
121
+ paths.add(it)
122
+ }
131
123
}
132
- } else {
133
- promise.reject(Error (" File picker cancelled" ))
134
- }
135
124
136
- pendingPromise = null
125
+ promise.resolve(paths.toTypedArray())
126
+ } catch (e: Exception ) {
127
+ promise.reject(Error (e.message))
128
+ }
129
+ } else {
130
+ promise.reject(Error (" File picker cancelled" ))
137
131
}
132
+
133
+ pendingPromise = null
138
134
}
139
135
}
140
136
141
137
override val memorySize: Long
142
138
get() = 0L
143
- }
139
+
140
+ companion object {
141
+ private const val FILE_PICKER_REQUEST_CODE = 1001
142
+ }
143
+ }
0 commit comments