diff --git a/core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/repository/DefaultRemoteConfigRepository.kt b/core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/repository/DefaultRemoteConfigRepository.kt index a2292c31..7f47a519 100644 --- a/core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/repository/DefaultRemoteConfigRepository.kt +++ b/core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/repository/DefaultRemoteConfigRepository.kt @@ -3,40 +3,32 @@ package com.ninecraft.booket.core.data.impl.repository import com.google.firebase.remoteconfig.FirebaseRemoteConfig import com.google.firebase.remoteconfig.get import com.ninecraft.booket.core.common.utils.isUpdateRequired +import com.ninecraft.booket.core.common.utils.runSuspendCatching import com.ninecraft.booket.core.data.api.repository.RemoteConfigRepository import com.ninecraft.booket.core.data.impl.BuildConfig import com.orhanobut.logger.Logger -import kotlinx.coroutines.suspendCancellableCoroutine +import kotlinx.coroutines.tasks.await import javax.inject.Inject -import kotlin.coroutines.resume class DefaultRemoteConfigRepository @Inject constructor( private val remoteConfig: FirebaseRemoteConfig, ) : RemoteConfigRepository { - override suspend fun getLatestVersion(): Result = suspendCancellableCoroutine { continuation -> - remoteConfig.fetchAndActivate().addOnCompleteListener { task -> - if (task.isSuccessful) { - val latestVersion = remoteConfig[KEY_LATEST_VERSION].asString() - Logger.d("LatestVersion: $latestVersion") - continuation.resume(Result.success(latestVersion)) - } else { - Logger.e(task.exception, "getLatestVersion failed") - continuation.resume(Result.failure(task.exception ?: Exception("Unknown error"))) - } - } + override suspend fun getLatestVersion(): Result = runSuspendCatching { + remoteConfig.fetchAndActivate().await() + val latestVersion = remoteConfig[KEY_LATEST_VERSION].asString() + Logger.d("LatestVersion: $latestVersion") + latestVersion + }.onFailure { exception -> + Logger.e(exception, "getLatestVersion failed") } - override suspend fun shouldUpdate(): Result = suspendCancellableCoroutine { continuation -> - remoteConfig.fetchAndActivate().addOnCompleteListener { task -> - if (task.isSuccessful) { - val minVersion = remoteConfig[KEY_MIN_VERSION].asString() - val currentVersion = BuildConfig.APP_VERSION - continuation.resume(Result.success(isUpdateRequired(currentVersion, minVersion))) - } else { - Logger.e(task.exception, "shouldUpdate: getMinVersion failed") - continuation.resume(Result.failure(task.exception ?: Exception("Unknown error"))) - } - } + override suspend fun shouldUpdate(): Result = runSuspendCatching { + remoteConfig.fetchAndActivate().await() + val minVersion = remoteConfig[KEY_MIN_VERSION].asString() + val currentVersion = BuildConfig.APP_VERSION + isUpdateRequired(currentVersion, minVersion) + }.onFailure { exception -> + Logger.e(exception, "shouldUpdate: getMinVersion failed") } companion object { diff --git a/feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/component/BookItem.kt b/feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/component/BookItem.kt index 98e6d98d..033283d4 100644 --- a/feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/component/BookItem.kt +++ b/feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/component/BookItem.kt @@ -1,5 +1,6 @@ package com.ninecraft.booket.feature.detail.record.component +import androidx.compose.foundation.border import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -48,7 +49,12 @@ internal fun BookItem( .padding(end = ReedTheme.spacing.spacing4) .width(46.dp) .height(68.dp) - .clip(RoundedCornerShape(size = ReedTheme.radius.xs)), + .clip(RoundedCornerShape(size = ReedTheme.radius.xs)) + .border( + width = 1.dp, + color = ReedTheme.colors.borderPrimary, + shape = RoundedCornerShape(ReedTheme.radius.xs), + ), placeholder = painterResource(R.drawable.ic_placeholder), ) Column(modifier = Modifier.weight(1f)) { diff --git a/feature/detail/src/main/res/drawable/img_insight.webp b/feature/detail/src/main/res/drawable/img_insight.webp index 235bad8e..77d816fd 100644 Binary files a/feature/detail/src/main/res/drawable/img_insight.webp and b/feature/detail/src/main/res/drawable/img_insight.webp differ diff --git a/feature/detail/src/main/res/drawable/img_joy.webp b/feature/detail/src/main/res/drawable/img_joy.webp index afa54b1e..00414f16 100644 Binary files a/feature/detail/src/main/res/drawable/img_joy.webp and b/feature/detail/src/main/res/drawable/img_joy.webp differ diff --git a/feature/detail/src/main/res/drawable/img_sad.webp b/feature/detail/src/main/res/drawable/img_sad.webp index dcbf98e3..439e3224 100644 Binary files a/feature/detail/src/main/res/drawable/img_sad.webp and b/feature/detail/src/main/res/drawable/img_sad.webp differ diff --git a/feature/detail/src/main/res/drawable/img_warm.webp b/feature/detail/src/main/res/drawable/img_warm.webp index a94574e6..a432f9e6 100644 Binary files a/feature/detail/src/main/res/drawable/img_warm.webp and b/feature/detail/src/main/res/drawable/img_warm.webp differ diff --git a/feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/component/LibraryBookItem.kt b/feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/component/LibraryBookItem.kt index 12c6cff7..fc3afd3f 100644 --- a/feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/component/LibraryBookItem.kt +++ b/feature/library/src/main/kotlin/com/ninecraft/booket/feature/library/component/LibraryBookItem.kt @@ -1,5 +1,6 @@ package com.ninecraft.booket.feature.library.component +import androidx.compose.foundation.border import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -52,7 +53,12 @@ fun LibraryBookItem( ) .width(68.dp) .height(100.dp) - .clip(RoundedCornerShape(size = ReedTheme.radius.sm)), + .clip(RoundedCornerShape(size = ReedTheme.radius.sm)) + .border( + width = 1.dp, + color = ReedTheme.colors.borderPrimary, + shape = RoundedCornerShape(ReedTheme.radius.sm), + ), placeholder = painterResource(designR.drawable.ic_placeholder), ) Column(modifier = Modifier.weight(1f)) { diff --git a/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/component/BookItem.kt b/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/component/BookItem.kt index 53c538c2..3db9ef4e 100644 --- a/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/component/BookItem.kt +++ b/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/component/BookItem.kt @@ -1,6 +1,7 @@ package com.ninecraft.booket.feature.search.book.component import androidx.compose.foundation.background +import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.BoxWithConstraints @@ -65,7 +66,12 @@ fun BookItem( ) .width(68.dp) .height(100.dp) - .clip(RoundedCornerShape(size = ReedTheme.radius.sm)), + .clip(RoundedCornerShape(size = ReedTheme.radius.sm)) + .border( + width = 1.dp, + color = ReedTheme.colors.borderPrimary, + shape = RoundedCornerShape(ReedTheme.radius.sm), + ), ) { NetworkImage( imageUrl = book.coverImageUrl, diff --git a/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/library/component/LibraryBookItem.kt b/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/library/component/LibraryBookItem.kt index 8b30433a..14265931 100644 --- a/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/library/component/LibraryBookItem.kt +++ b/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/library/component/LibraryBookItem.kt @@ -1,5 +1,6 @@ package com.ninecraft.booket.feature.search.library.component +import androidx.compose.foundation.border import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -52,7 +53,12 @@ fun LibraryBookItem( ) .width(68.dp) .height(100.dp) - .clip(RoundedCornerShape(size = ReedTheme.radius.sm)), + .clip(RoundedCornerShape(size = ReedTheme.radius.sm)) + .border( + width = 1.dp, + color = ReedTheme.colors.borderPrimary, + shape = RoundedCornerShape(ReedTheme.radius.sm), + ), placeholder = painterResource(designR.drawable.ic_placeholder), ) Column(modifier = Modifier.weight(1f)) {