Skip to content

Commit c07da78

Browse files
committed
Replace get*Type*() methods by extension get operator
1 parent 8c88f3f commit c07da78

File tree

5 files changed

+26
-30
lines changed

5 files changed

+26
-30
lines changed

firebase-remoteconfig/src/androidMain/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfig.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
@file:JvmName("android")
12
package dev.gitlive.firebase.remoteconfig
23

34
import com.google.firebase.remoteconfig.FirebaseRemoteConfigClientException
@@ -48,12 +49,8 @@ actual class FirebaseRemoteConfig internal constructor(val android: AndroidFireb
4849
actual suspend fun activate(): Boolean = android.activate().await()
4950
actual suspend fun ensureInitialized() = android.ensureInitialized().await().let { }
5051
actual suspend fun fetchAndActivate(): Boolean = android.fetchAndActivate().await()
51-
actual fun getBoolean(key: String) = android.getBoolean(key)
52-
actual fun getDouble(key: String) = android.getDouble(key)
5352
actual fun getKeysByPrefix(prefix: String): Set<String> = android.getKeysByPrefix(prefix)
54-
actual fun getLong(key: String) = android.getLong(key)
55-
actual fun getString(key: String) = android.getString(key)
56-
actual operator fun get(key: String) = FirebaseRemoteConfigValue(android.getValue(key))
53+
actual fun getValue(key: String) = FirebaseRemoteConfigValue(android.getValue(key))
5754
actual suspend fun reset() = android.reset().await().let { }
5855

5956
private fun AndroidFirebaseRemoteConfigSettings.asCommon(): FirebaseRemoteConfigSettings {

firebase-remoteconfig/src/commonMain/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfig.kt

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,25 @@ expect class FirebaseRemoteConfig {
1616
suspend fun ensureInitialized()
1717
suspend fun fetch(minimumFetchIntervalInSeconds: Long? = null)
1818
suspend fun fetchAndActivate(): Boolean
19-
fun getBoolean(key: String): Boolean
20-
fun getDouble(key: String): Double
2119
fun getKeysByPrefix(prefix: String): Set<String>
22-
fun getLong(key: String): Long
23-
fun getString(key: String): String
24-
operator fun get(key: String): FirebaseRemoteConfigValue
20+
fun getValue(key: String): FirebaseRemoteConfigValue
2521
suspend fun reset()
2622
suspend fun settings(init: FirebaseRemoteConfigSettings.() -> Unit)
2723
suspend fun setDefaults(vararg defaults: Pair<String, Any?>)
2824
}
2925

26+
inline operator fun <reified T> FirebaseRemoteConfig.get(key: String): T {
27+
val configValue = getValue(key)
28+
return when(T::class) {
29+
Boolean::class -> configValue.asBoolean() as T
30+
Double::class -> configValue.asDouble() as T
31+
Long::class -> configValue.asLong() as T
32+
String::class -> configValue.asString() as T
33+
FirebaseRemoteConfigValue::class -> configValue as T
34+
else -> throw IllegalArgumentException()
35+
}
36+
}
37+
3038
expect open class FirebaseRemoteConfigException : FirebaseException
3139
expect class FirebaseRemoteConfigClientException : FirebaseRemoteConfigException
3240
expect class FirebaseRemoteConfigFetchThrottledException : FirebaseRemoteConfigException

firebase-remoteconfig/src/commonTest/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfig.kt

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,13 @@ class FirebaseRemoteConfigTest {
5454
val remoteConfig = Firebase.remoteConfig
5555
remoteConfig.setDefaults(*defaults)
5656

57-
assertEquals(true, remoteConfig.getBoolean("test_default_boolean"))
58-
assertEquals(42.0, remoteConfig.getDouble("test_default_double"))
59-
assertEquals(42L, remoteConfig.getLong("test_default_long"))
60-
assertEquals("Hello World", remoteConfig.getString("test_default_string"))
61-
assertEquals("Hello World", remoteConfig.getString("test_default_string"))
57+
assertEquals(true, remoteConfig["test_default_boolean"])
58+
assertEquals(42.0, remoteConfig["test_default_double"])
59+
assertEquals(42L, remoteConfig["test_default_long"])
60+
assertEquals("Hello World", remoteConfig["test_default_string"])
61+
assertEquals("Hello World", remoteConfig["test_default_string"])
6262

63-
val value = remoteConfig["test_default_string"]
63+
val value: FirebaseRemoteConfigValue = remoteConfig["test_default_string"]
6464
assertEquals("Hello World", value.asString())
6565
assertEquals(ValueSource.Default, value.getSource())
6666
assertEquals("Hello World", value.asByteArray().decodeToString())
@@ -129,7 +129,7 @@ class FirebaseRemoteConfigTest {
129129
remoteConfig.fetch()
130130
remoteConfig.activate()
131131

132-
val value = remoteConfig["test_remote_string"]
132+
val value: FirebaseRemoteConfigValue = remoteConfig["test_remote_string"]
133133
assertEquals("Hello from remote!", value.asString())
134134
assertEquals(ValueSource.Remote, value.getSource())
135135
}
@@ -144,7 +144,7 @@ class FirebaseRemoteConfigTest {
144144

145145
remoteConfig.fetchAndActivate()
146146

147-
val value = remoteConfig["test_remote_string"]
147+
val value: FirebaseRemoteConfigValue = remoteConfig["test_remote_string"]
148148
assertEquals("Hello from remote!", value.asString())
149149
assertEquals(ValueSource.Remote, value.getSource())
150150
}

firebase-remoteconfig/src/iosMain/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfig.kt

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -70,15 +70,10 @@ actual class FirebaseRemoteConfig internal constructor(val ios: FIRRemoteConfig)
7070
return status == FIRRemoteConfigFetchAndActivateStatus.FIRRemoteConfigFetchAndActivateStatusSuccessFetchedFromRemote
7171
}
7272

73-
actual fun getBoolean(key: String): Boolean = ios.configValueForKey(key).boolValue
74-
actual fun getDouble(key: String): Double = ios.configValueForKey(key).numberValue.doubleValue
75-
actual fun getLong(key: String): Long = ios.configValueForKey(key).numberValue.longValue
76-
actual fun getString(key: String): String = ios.configValueForKey(key).stringValue ?: ""
77-
7873
actual fun getKeysByPrefix(prefix: String): Set<String> =
7974
all.keys.filter { it.startsWith(prefix) }.toSet()
8075

81-
actual operator fun get(key: String): FirebaseRemoteConfigValue =
76+
actual fun getValue(key: String): FirebaseRemoteConfigValue =
8277
FirebaseRemoteConfigValue(ios.configValueForKey(key))
8378

8479
actual suspend fun reset() {

firebase-remoteconfig/src/jsMain/kotlin/dev/gitlive/firebase/remoteconfig/FirebaseRemoteConfig.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ actual fun Firebase.remoteConfig(app: FirebaseApp): FirebaseRemoteConfig = rethr
2020

2121
actual class FirebaseRemoteConfig internal constructor(val js: firebase.remoteConfig.RemoteConfig) {
2222
actual val all: Map<String, FirebaseRemoteConfigValue>
23-
get() = rethrow { getAllKeys().map { Pair(it, this[it]) }.toMap() }
23+
get() = rethrow { getAllKeys().map { Pair(it, getValue(it)) }.toMap() }
2424

2525
actual val info: FirebaseRemoteConfigInfo
2626
get() = rethrow {
@@ -38,12 +38,8 @@ actual class FirebaseRemoteConfig internal constructor(val js: firebase.remoteCo
3838
rethrow { js.fetch().await() }
3939

4040
actual suspend fun fetchAndActivate(): Boolean = rethrow { js.fetchAndActivate().await() }
41-
actual fun getBoolean(key: String): Boolean = rethrow { js.getBoolean(key) }
42-
actual fun getDouble(key: String): Double = rethrow { js.getNumber(key).toDouble() }
43-
actual fun getLong(key: String): Long = rethrow { js.getNumber(key).toLong() }
44-
actual fun getString(key: String): String = rethrow { js.getString(key) ?: "" }
4541

46-
actual operator fun get(key: String): FirebaseRemoteConfigValue = rethrow {
42+
actual fun getValue(key: String): FirebaseRemoteConfigValue = rethrow {
4743
FirebaseRemoteConfigValue(js.getValue(key))
4844
}
4945

0 commit comments

Comments
 (0)