Skip to content

Commit 1fbd295

Browse files
Merge branch 'master' into 1.8.2
2 parents c52bfd7 + be99f63 commit 1fbd295

File tree

6 files changed

+49
-1
lines changed
  • firebase-common/src/jsMain/kotlin/dev/gitlive/firebase
  • firebase-storage/src
    • androidMain/kotlin/dev/gitlive/firebase/storage
    • commonMain/kotlin/dev/gitlive/firebase/storage
    • iosMain/kotlin/dev/gitlive/firebase/storage
    • jsMain/kotlin/dev/gitlive/firebase/storage

6 files changed

+49
-1
lines changed

README.md

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,4 +236,10 @@ If you are building a Kotlin multiplatform library which will be consumed from J
236236
}
237237
```
238238

239-
239+
## Contributing
240+
If you'd like to contribute to this project then you can fork this repository.
241+
You can build and test the project locally.
242+
1. Open the project in IntelliJ IDEA.
243+
2. Install cocoapods via `sudo gem install -n /usr/local/bin cocoapods`
244+
3. Install the GitLive plugin into IntelliJ
245+
4. After a gradle sync then run `publishToMavenLocal`

firebase-common/src/jsMain/kotlin/dev/gitlive/firebase/externals.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,7 @@ external object firebase {
518518
fun setMaxOperationRetryTime(time: Double): Unit
519519
fun setMaxUploadRetryTime(time: Double): Unit
520520
fun useEmulator(host: String, port: Int)
521+
fun ref(): Reference
521522
}
522523

523524
open class Reference {

firebase-storage/src/androidMain/kotlin/dev/gitlive/firebase/storage/storage.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ actual class FirebaseStorage(val android: com.google.firebase.storage.FirebaseSt
4343
android.useEmulator(host, port)
4444
}
4545

46+
actual val reference = StorageReference(android.reference)
4647
}
4748

4849
actual class StorageReference(val android: com.google.firebase.storage.StorageReference) {
@@ -59,6 +60,8 @@ actual class StorageReference(val android: com.google.firebase.storage.StorageRe
5960

6061
actual suspend fun getDownloadUrl(): String = android.downloadUrl.await().toString()
6162

63+
actual suspend fun listAll(): ListResult = ListResult(android.listAll().await())
64+
6265
actual fun putFileResumable(file: File): ProgressFlow {
6366
val android = android.putFile(file.uri)
6467

@@ -88,6 +91,12 @@ actual class StorageReference(val android: com.google.firebase.storage.StorageRe
8891
}
8992
}
9093

94+
actual class ListResult(android: com.google.firebase.storage.ListResult) {
95+
actual val prefixes: List<StorageReference> = android.prefixes.map { StorageReference(it) }
96+
actual val items: List<StorageReference> = android.items.map { StorageReference(it) }
97+
actual val pageToken: String? = android.pageToken
98+
}
99+
91100
actual class File(val uri: Uri)
92101

93102
actual typealias FirebaseStorageException = com.google.firebase.storage.StorageException

firebase-storage/src/commonMain/kotlin/dev/gitlive/firebase/storage/storage.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ expect class FirebaseStorage {
1818
fun setMaxOperationRetryTimeMillis(maxOperationRetryTimeMillis: Long)
1919
fun setMaxUploadRetryTimeMillis(maxUploadRetryTimeMillis: Long)
2020
fun useEmulator(host: String, port: Int)
21+
22+
val reference: StorageReference
2123
}
2224

2325
expect class StorageReference {
@@ -34,8 +36,15 @@ expect class StorageReference {
3436

3537
suspend fun getDownloadUrl(): String
3638

39+
suspend fun listAll(): ListResult
40+
3741
fun putFileResumable(file: File): ProgressFlow
42+
}
3843

44+
expect class ListResult {
45+
val prefixes: List<StorageReference>
46+
val items: List<StorageReference>
47+
val pageToken: String?
3948
}
4049

4150
expect class File

firebase-storage/src/iosMain/kotlin/dev/gitlive/firebase/storage/storage.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
package dev.gitlive.firebase.storage
66

77
import cocoapods.FirebaseStorage.FIRStorage
8+
import cocoapods.FirebaseStorage.FIRStorageListResult
89
import cocoapods.FirebaseStorage.FIRStorageReference
910
import cocoapods.FirebaseStorage.FIRStorageTaskStatusFailure
1011
import cocoapods.FirebaseStorage.FIRStorageTaskStatusPause
@@ -48,6 +49,7 @@ actual class FirebaseStorage(val ios: FIRStorage) {
4849
ios.useEmulatorWithHost(host, port.toLong())
4950
}
5051

52+
actual val reference get() = StorageReference(ios.reference())
5153
}
5254

5355
actual class StorageReference(val ios: FIRStorageReference) {
@@ -66,6 +68,12 @@ actual class StorageReference(val ios: FIRStorageReference) {
6668
downloadURLWithCompletion(completion = it)
6769
}.absoluteString()!!
6870

71+
actual suspend fun listAll(): ListResult = awaitResult {
72+
ios.listAllWithCompletion { firStorageListResult, nsError ->
73+
it.invoke(firStorageListResult?.let { ListResult(it) }, nsError)
74+
}
75+
}
76+
6977
actual fun putFileResumable(file: File): ProgressFlow {
7078
val ios = ios.putFile(file.url)
7179

@@ -102,6 +110,12 @@ actual class StorageReference(val ios: FIRStorageReference) {
102110

103111
}
104112

113+
actual class ListResult(ios: FIRStorageListResult) {
114+
actual val prefixes: List<StorageReference> = ios.prefixes().map { StorageReference(it as FIRStorageReference) }
115+
actual val items: List<StorageReference> = ios.items().map { StorageReference(it as FIRStorageReference) }
116+
actual val pageToken: String? = ios.pageToken()
117+
}
118+
105119
actual class File(val url: NSURL)
106120

107121
actual class FirebaseStorageException(message: String): FirebaseException(message)

firebase-storage/src/jsMain/kotlin/dev/gitlive/firebase/storage/storage.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ actual class FirebaseStorage(val js: firebase.storage.Storage) {
3838
js.useEmulator(host, port)
3939
}
4040

41+
actual val reference: StorageReference get() = StorageReference(js.ref())
4142
}
4243

4344
actual class StorageReference(val js: firebase.storage.Reference) {
@@ -54,6 +55,8 @@ actual class StorageReference(val js: firebase.storage.Reference) {
5455

5556
actual suspend fun getDownloadUrl(): String = rethrow { js.getDownloadURL().await().toString() }
5657

58+
actual suspend fun listAll(): ListResult = rethrow { ListResult(js.listAll().await()) }
59+
5760
actual fun putFileResumable(file: File): ProgressFlow = rethrow {
5861
val uploadTask = js.put(file)
5962

@@ -85,6 +88,12 @@ actual class StorageReference(val js: firebase.storage.Reference) {
8588

8689
}
8790

91+
actual class ListResult(js: firebase.storage.ListResult) {
92+
actual val prefixes: List<StorageReference> = js.prefixes.map { StorageReference(it) }
93+
actual val items: List<StorageReference> = js.items.map { StorageReference(it) }
94+
actual val pageToken: String? = js.nextPageToken
95+
}
96+
8897
actual typealias File = org.w3c.files.File
8998

9099
actual open class FirebaseStorageException(code: String, cause: Throwable) :

0 commit comments

Comments
 (0)