Last active
March 11, 2021 16:30
-
-
Save johnGachihi/6590de6e845e2089eca33e53e426bc9d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.android254.droidconke19.models | |
import com.google.firebase.remoteconfig.FirebaseRemoteConfig | |
data class WifiDetailsModel( | |
var wifiSsid: String, | |
var wifiPassword: String | |
) | |
////////////////////////////////////////////////////////////////// | |
// Could be separate file | |
private val WifiDetailsModel.isPropertiesNotEmpty | |
get() = wifiSsid.isNotEmpty() and wifiPassword.isNotEmpty() | |
object WifiDetailsModelFactory { | |
fun createUsingFirebaseRemoteConfigData(firebaseRemoteConfig: FirebaseRemoteConfig): WifiDetailsModel { | |
val wifiDetailsModel = WifiDetailsModel( | |
firebaseRemoteConfig.getString("wifi_ssid"), | |
firebaseRemoteConfig.getString("wifi_password") | |
) | |
if (!wifiDetailsModel.isPropertiesNotEmpty) | |
throw Exception("No Firebase RemoteConfig default values provided for wifi details") | |
return wifiDetailsModel | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.android254.droidconke19.repository | |
import com.android254.droidconke19.datastates.FirebaseResult | |
import com.android254.droidconke19.models.WifiDetailsModel | |
import com.google.firebase.remoteconfig.FirebaseRemoteConfig | |
import com.android254.droidconke19.datastates.runCatching | |
import com.android254.droidconke19.models.WifiDetailsModelFactory | |
import kotlinx.coroutines.tasks.await | |
interface WifiDetailsRepo { | |
suspend fun fetchWifiDetails(): FirebaseResult<WifiDetailsModel> | |
} | |
class WifiDetailsRepoImpl(private val firebaseRemoteConfig: FirebaseRemoteConfig) : WifiDetailsRepo { | |
override suspend fun fetchWifiDetails(): FirebaseResult<WifiDetailsModel> = | |
runCatching { | |
// Fetch Firebase RemoteConfig values | |
firebaseRemoteConfig.fetchAndActivate().await() | |
// Create an instance of WifiDetailsModels from active Firebase RemoteConfig values | |
WifiDetailsModelFactory.createUsingFirebaseRemoteConfigData(firebaseRemoteConfig) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment