|
1 | 1 | package dev.gitlive.firebase.firestore.internal
|
2 | 2 |
|
3 | 3 | import cocoapods.FirebaseFirestoreInternal.FIRFirestore
|
| 4 | +import cocoapods.FirebaseFirestoreInternal.FIRMemoryCacheSettings |
| 5 | +import cocoapods.FirebaseFirestoreInternal.FIRPersistentCacheSettings |
4 | 6 | import dev.gitlive.firebase.firestore.FirebaseFirestoreSettings
|
| 7 | +import dev.gitlive.firebase.firestore.LocalCacheSettings |
| 8 | +import dev.gitlive.firebase.firestore.MemoryGarbageCollectorSettings |
5 | 9 | import dev.gitlive.firebase.firestore.NativeFirebaseFirestore
|
6 | 10 | import dev.gitlive.firebase.firestore.NativeTransaction
|
7 | 11 | import dev.gitlive.firebase.firestore.await
|
8 | 12 | import dev.gitlive.firebase.firestore.awaitResult
|
9 | 13 | import dev.gitlive.firebase.firestore.firestoreSettings
|
10 | 14 | import dev.gitlive.firebase.firestore.memoryCacheSettings
|
| 15 | +import dev.gitlive.firebase.firestore.memoryEagerGcSettings |
| 16 | +import dev.gitlive.firebase.firestore.persistentCacheSettings |
11 | 17 | import kotlinx.coroutines.runBlocking
|
12 | 18 |
|
13 | 19 | @Suppress("UNCHECKED_CAST")
|
14 | 20 | internal actual class NativeFirebaseFirestoreWrapper internal actual constructor(actual val native: NativeFirebaseFirestore) {
|
15 | 21 |
|
16 |
| - actual var settings: FirebaseFirestoreSettings = firestoreSettings { }.also { |
17 |
| - native.settings = it.ios |
18 |
| - } |
| 22 | + actual var settings: FirebaseFirestoreSettings |
| 23 | + get() = firestoreSettings { |
| 24 | + host = native.settings.host |
| 25 | + sslEnabled = native.settings.sslEnabled |
| 26 | + dispatchQueue = native.settings.dispatchQueue |
| 27 | + @Suppress("SENSELESS_NULL_IN_WHEN") |
| 28 | + cacheSettings = when (val nativeCacheSettings = native.settings.cacheSettings) { |
| 29 | + is FIRPersistentCacheSettings -> persistentCacheSettings { |
| 30 | + // SizeBytes cannot be determined |
| 31 | + } |
| 32 | + is FIRMemoryCacheSettings -> memoryCacheSettings { |
| 33 | + // Garbage collection settings cannot be determined |
| 34 | + } |
| 35 | + null -> when { |
| 36 | + native.settings.persistenceEnabled -> LocalCacheSettings.Persistent(native.settings.cacheSizeBytes) |
| 37 | + native.settings.cacheSizeBytes == FirebaseFirestoreSettings.CACHE_SIZE_UNLIMITED -> LocalCacheSettings.Memory( |
| 38 | + MemoryGarbageCollectorSettings.Eager, |
| 39 | + ) |
| 40 | + else -> LocalCacheSettings.Memory( |
| 41 | + MemoryGarbageCollectorSettings.LRUGC( |
| 42 | + native.settings.cacheSizeBytes, |
| 43 | + ), |
| 44 | + ) |
| 45 | + } |
| 46 | + else -> error("Unknown cache settings $nativeCacheSettings") |
| 47 | + } |
| 48 | + } |
19 | 49 | set(value) {
|
20 |
| - field = value |
21 | 50 | native.settings = value.ios
|
22 | 51 | }
|
23 | 52 |
|
|
0 commit comments