Coverage Summary for Class: AppConfigRepositoryImpl (com.georgeci.moneysurfer.data.repository)
| Class |
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| AppConfigRepositoryImpl |
100%
(2/2)
|
100%
(6/6)
|
100%
(15/15)
|
100%
(116/116)
|
| AppConfigRepositoryImpl$fetch$1 |
|
| Total |
100%
(2/2)
|
100%
(6/6)
|
100%
(15/15)
|
100%
(116/116)
|
package com.georgeci.moneysurfer.data.repository
import co.touchlab.kermit.Logger
import com.georgeci.moneysurfer.data.remote.AppConfigRemoteSource
import com.georgeci.moneysurfer.domain.model.RemoteAppConfig
import com.georgeci.moneysurfer.domain.repositories.AppConfigRepository
import org.koin.core.annotation.Single
@Single(binds = [AppConfigRepository::class])
class AppConfigRepositoryImpl(
private val remoteSource: AppConfigRemoteSource,
) : AppConfigRepository {
private val log = Logger.withTag("AppConfigRepository")
override suspend fun fetch(): RemoteAppConfig? = runCatching {
remoteSource.fetchMobile()?.let { dto ->
RemoteAppConfig(
minSupportedAppVersionCode = dto.minSupportedAppVersionCode,
latestAppVersionCode = dto.latestAppVersionCode,
forceUpdate = dto.forceUpdate,
message = dto.message,
)
}
}.onFailure { error ->
log.w(error) { "fetch failed — gate falls back to Supported" }
}.getOrNull()
}