From c3ca0753e9a2517d6a37cb47a85c2df75e4511c0 Mon Sep 17 00:00:00 2001 From: easyhooon Date: Wed, 24 Dec 2025 16:02:28 +0900 Subject: [PATCH 1/4] =?UTF-8?q?[BOOK-479]=20feat:=20=EC=B1=85=20=EA=B2=80?= =?UTF-8?q?=EC=83=89=20=EA=B2=B0=EA=B3=BC=20=EC=97=86=EC=9D=84=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0,=20=EC=B9=B4=EC=B9=B4=EC=98=A4=ED=86=A1=20=EC=B1=84?= =?UTF-8?q?=EB=84=90=20=EC=95=88=EB=82=B4=20=EB=B0=8F=20=EC=B1=84=ED=8C=85?= =?UTF-8?q?=20=EC=9D=B4=EB=8F=99=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../search/book/BookSearchPresenter.kt | 14 +++-- .../feature/search/book/BookSearchUi.kt | 56 +++++++++++++++---- .../feature/search/book/BookSearchUiState.kt | 17 +++--- .../search/book/HandleBookSearchSideEffect.kt | 7 +++ .../search/src/main/res/values/strings.xml | 4 +- 5 files changed, 73 insertions(+), 25 deletions(-) diff --git a/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchPresenter.kt b/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchPresenter.kt index 8699c1e8..3d6b29d2 100644 --- a/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchPresenter.kt +++ b/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchPresenter.kt @@ -67,7 +67,7 @@ class BookSearchPresenter( override fun present(): BookSearchUiState { val scope = rememberCoroutineScope() val userState by authRepository.userState.collectAsRetainedState(initial = UserState.Guest) - var uiState by rememberRetained { mutableStateOf(UiState.Idle) } + var searchUiState by rememberRetained { mutableStateOf(SearchUiState.Idle) } var footerState by rememberRetained { mutableStateOf(FooterState.Idle) } val queryState = rememberTextFieldState() val recentSearches by repository.bookRecentSearches.collectAsRetainedState(initial = emptyList()) @@ -86,7 +86,7 @@ class BookSearchPresenter( fun searchBooks(query: String, startIndex: Int = START_INDEX) { scope.launch { if (startIndex == START_INDEX) { - uiState = UiState.Loading + searchUiState = SearchUiState.Loading } else { footerState = FooterState.Loading } @@ -108,7 +108,7 @@ class BookSearchPresenter( isLastPage = result.lastPage if (startIndex == START_INDEX) { - uiState = UiState.Success + searchUiState = SearchUiState.Success analyticsHelper.logEvent(SEARCH_BOOK_RESULT) } else { footerState = if (isLastPage) FooterState.End else FooterState.Idle @@ -119,7 +119,7 @@ class BookSearchPresenter( analyticsHelper.logEvent(ERROR_SEARCH_LOADING) val errorMessage = exception.message ?: "알 수 없는 오류가 발생했습니다." if (startIndex == START_INDEX) { - uiState = UiState.Error(exception) + searchUiState = SearchUiState.Error(exception) } else { footerState = FooterState.Error(errorMessage) } @@ -260,6 +260,10 @@ class BookSearchPresenter( is BookSearchUiEvent.OnBookRegisterSuccessCancelButtonClick -> { isBookRegisterSuccessBottomSheetVisible = false } + + is BookSearchUiEvent.OnInquireClick -> { + sideEffect = BookSearchSideEffect.NavigateToKakaoTalkChannel + } } } @@ -268,7 +272,7 @@ class BookSearchPresenter( } return BookSearchUiState( - uiState = uiState, + searchUiState = searchUiState, footerState = footerState, queryState = queryState, recentSearches = recentSearches.toImmutableList(), diff --git a/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchUi.kt b/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchUi.kt index 6f55c5b6..f6c60053 100644 --- a/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchUi.kt +++ b/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchUi.kt @@ -24,6 +24,9 @@ import com.ninecraft.booket.core.common.constants.BookStatus import com.ninecraft.booket.core.common.extensions.toErrorType import com.ninecraft.booket.core.designsystem.DevicePreview import com.ninecraft.booket.core.designsystem.component.ReedDivider +import com.ninecraft.booket.core.designsystem.component.button.ReedButton +import com.ninecraft.booket.core.designsystem.component.button.ReedButtonColorStyle +import com.ninecraft.booket.core.designsystem.component.button.smallButtonStyle import com.ninecraft.booket.core.designsystem.component.textfield.ReedTextField import com.ninecraft.booket.core.designsystem.theme.ReedTheme import com.ninecraft.booket.core.designsystem.theme.White @@ -114,19 +117,19 @@ internal fun BookSearchContent( ReedDivider() Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing2)) - when (state.uiState) { - is UiState.Loading -> { + when (state.searchUiState) { + is SearchUiState.Loading -> { ReedLoadingIndicator() } - is UiState.Error -> { + is SearchUiState.Error -> { ReedErrorUi( - errorType = state.uiState.exception.toErrorType(), + errorType = state.searchUiState.exception.toErrorType(), onRetryClick = { state.eventSink(BookSearchUiEvent.OnRetryClick) }, ) } - is UiState.Idle -> { + is SearchUiState.Idle -> { if (state.recentSearches.isEmpty()) { Box( modifier = Modifier.fillMaxSize(), @@ -173,17 +176,33 @@ internal fun BookSearchContent( } } - is UiState.Success -> { + is SearchUiState.Success -> { if (state.isEmptySearchResult) { Box( modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center, ) { - Text( - text = stringResource(R.string.empty_results), - color = ReedTheme.colors.contentSecondary, - style = ReedTheme.typography.body1Medium, - ) + Column( + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text( + text = stringResource(R.string.empty_results_title), + color = ReedTheme.colors.contentPrimary, + style = ReedTheme.typography.headline1SemiBold, + ) + Text( + text = stringResource(R.string.empty_results_description), + color = ReedTheme.colors.contentSecondary, + style = ReedTheme.typography.body1Medium, + ) + Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing4)) + ReedButton( + onClick = { state.eventSink(BookSearchUiEvent.OnInquireClick) }, + text = stringResource(R.string.inquire), + sizeStyle = smallButtonStyle, + colorStyle = ReedButtonColorStyle.SECONDARY, + ) + } } } else { Row( @@ -294,7 +313,7 @@ internal fun BookSearchContent( @DevicePreview @Composable -private fun BookSearchPreview() { +private fun BookRecentSearchPreview() { ReedTheme { BookSearchUi( state = BookSearchUiState( @@ -303,3 +322,16 @@ private fun BookSearchPreview() { ) } } + +@DevicePreview +@Composable +private fun BookSearchEmptyResultPreview() { + ReedTheme { + BookSearchContent( + state = BookSearchUiState( + searchUiState = SearchUiState.Success, + eventSink = {}, + ), + ) + } +} diff --git a/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchUiState.kt b/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchUiState.kt index 17e15a45..aba63c9b 100644 --- a/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchUiState.kt +++ b/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/BookSearchUiState.kt @@ -14,15 +14,15 @@ import kotlinx.collections.immutable.persistentListOf import java.util.UUID @Immutable -sealed interface UiState { - data object Idle : UiState - data object Loading : UiState - data object Success : UiState - data class Error(val exception: Throwable) : UiState +sealed interface SearchUiState { + data object Idle : SearchUiState + data object Loading : SearchUiState + data object Success : SearchUiState + data class Error(val exception: Throwable) : SearchUiState } data class BookSearchUiState( - val uiState: UiState = UiState.Idle, + val searchUiState: SearchUiState = SearchUiState.Idle, val footerState: FooterState = FooterState.Idle, val queryState: TextFieldState = TextFieldState(), val recentSearches: ImmutableList = persistentListOf(), @@ -37,7 +37,7 @@ data class BookSearchUiState( val sideEffect: BookSearchSideEffect? = null, val eventSink: (BookSearchUiEvent) -> Unit, ) : CircuitUiState { - val isEmptySearchResult: Boolean get() = uiState is UiState.Success && searchResult.totalResults == 0 + val isEmptySearchResult: Boolean get() = searchUiState is SearchUiState.Success && searchResult.totalResults == 0 } @Immutable @@ -46,6 +46,8 @@ sealed interface BookSearchSideEffect { val message: UiText, private val key: String = UUID.randomUUID().toString(), ) : BookSearchSideEffect + + data object NavigateToKakaoTalkChannel : BookSearchSideEffect } sealed interface BookSearchUiEvent : CircuitUiEvent { @@ -64,4 +66,5 @@ sealed interface BookSearchUiEvent : CircuitUiEvent { data object OnBookRegisterButtonClick : BookSearchUiEvent data object OnBookRegisterSuccessOkButtonClick : BookSearchUiEvent data object OnBookRegisterSuccessCancelButtonClick : BookSearchUiEvent + data object OnInquireClick : BookSearchUiEvent } diff --git a/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/HandleBookSearchSideEffect.kt b/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/HandleBookSearchSideEffect.kt index 27fd56e1..5eeaae2d 100644 --- a/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/HandleBookSearchSideEffect.kt +++ b/feature/search/src/main/kotlin/com/ninecraft/booket/feature/search/book/HandleBookSearchSideEffect.kt @@ -3,6 +3,8 @@ package com.ninecraft.booket.feature.search.book import android.widget.Toast import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalUriHandler +import com.ninecraft.booket.feature.search.BuildConfig import com.skydoves.compose.effects.RememberedEffect @Composable @@ -11,6 +13,7 @@ internal fun HandleBookSearchSideEffects( eventSink: (BookSearchUiEvent) -> Unit, ) { val context = LocalContext.current + val uriHandler = LocalUriHandler.current RememberedEffect(state.sideEffect) { when (state.sideEffect) { @@ -18,6 +21,10 @@ internal fun HandleBookSearchSideEffects( Toast.makeText(context, state.sideEffect.message.asString(context), Toast.LENGTH_SHORT).show() } + is BookSearchSideEffect.NavigateToKakaoTalkChannel -> { + uriHandler.openUri(BuildConfig.REED_KAKAOTALK_CHANNEL_URL) + } + null -> {} } diff --git a/feature/search/src/main/res/values/strings.xml b/feature/search/src/main/res/values/strings.xml index c27ec69f..9fc993e7 100644 --- a/feature/search/src/main/res/values/strings.xml +++ b/feature/search/src/main/res/values/strings.xml @@ -5,7 +5,9 @@ 최근 검색어 오류가 발생했습니다 - 검색어와 일치하는 도서가 없습니다 + 아직 등록된 책이 없어요 + 카카오톡 채널로 문의를 남겨주세요 + 문의하기 등록 옵션 도서가 등록되었어요! 독서 기록을 바로 시작할까요? From 48374b8ff2658a3ecd32466f4540699e6b2a90d1 Mon Sep 17 00:00:00 2001 From: easyhooon Date: Wed, 24 Dec 2025 16:02:48 +0900 Subject: [PATCH 2/4] =?UTF-8?q?[BOOK-479]=20refactor:=20localProperty=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20=ED=95=A8=EC=88=98=20=EA=B3=B5=ED=86=B5?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 12 +++++------- .../ninecraft/booket/convention/Extensions.kt | 5 +++++ core/network/build.gradle.kts | 10 +++------- core/ocr/build.gradle.kts | 9 ++------- feature/login/build.gradle.kts | 16 ++++++++++++++++ feature/search/build.gradle.kts | 11 +++++++++++ 6 files changed, 42 insertions(+), 21 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index bebec272..a134bd11 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,7 +1,7 @@ @file:Suppress("INLINE_FROM_HIGHER_PLATFORM") -import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties import com.google.devtools.ksp.gradle.KspExtension +import com.ninecraft.booket.convention.getLocalProperty import org.gradle.kotlin.dsl.configure import java.util.Properties @@ -32,6 +32,7 @@ android { getByName("debug") { isDebuggable = true applicationIdSuffix = ".dev" + buildConfigField("String", "GOOGLE_WEB_CLIENT_ID", getLocalProperty("DEBUG_GOOGLE_WEB_CLIENT_ID")) manifestPlaceholders += mapOf( "appName" to "@string/app_name_dev", ) @@ -42,6 +43,7 @@ android { isMinifyEnabled = true isShrinkResources = true signingConfig = signingConfigs.getByName("release") + buildConfigField("String", "GOOGLE_WEB_CLIENT_ID", getLocalProperty("RELEASE_GOOGLE_WEB_CLIENT_ID")) manifestPlaceholders += mapOf( "appName" to "@string/app_name", ) @@ -53,8 +55,8 @@ android { } defaultConfig { - buildConfigField("String", "KAKAO_NATIVE_APP_KEY", getApiKey("KAKAO_NATIVE_APP_KEY")) - manifestPlaceholders["KAKAO_NATIVE_APP_KEY"] = getApiKey("KAKAO_NATIVE_APP_KEY").trim('"') + buildConfigField("String", "KAKAO_NATIVE_APP_KEY", getLocalProperty("KAKAO_NATIVE_APP_KEY")) + manifestPlaceholders["KAKAO_NATIVE_APP_KEY"] = getLocalProperty("KAKAO_NATIVE_APP_KEY").trim('"') } buildFeatures { @@ -109,7 +111,3 @@ dependencies { api(libs.circuit.codegen.annotation) ksp(libs.circuit.codegen.ksp) } - -fun getApiKey(propertyKey: String): String { - return gradleLocalProperties(rootDir, providers).getProperty(propertyKey) -} diff --git a/build-logic/src/main/kotlin/com/ninecraft/booket/convention/Extensions.kt b/build-logic/src/main/kotlin/com/ninecraft/booket/convention/Extensions.kt index 110c1a15..3eeccfdb 100644 --- a/build-logic/src/main/kotlin/com/ninecraft/booket/convention/Extensions.kt +++ b/build-logic/src/main/kotlin/com/ninecraft/booket/convention/Extensions.kt @@ -1,5 +1,6 @@ package com.ninecraft.booket.convention +import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties import org.gradle.accessors.dm.LibrariesForLibs import org.gradle.api.Project import org.gradle.kotlin.dsl.the @@ -10,3 +11,7 @@ internal val Project.libs internal fun Project.applyPlugins(vararg plugins: String) { plugins.forEach(pluginManager::apply) } + +fun Project.getLocalProperty(propertyKey: String): String { + return gradleLocalProperties(rootDir, providers).getProperty(propertyKey) +} diff --git a/core/network/build.gradle.kts b/core/network/build.gradle.kts index 8dc45dd0..9879fab4 100644 --- a/core/network/build.gradle.kts +++ b/core/network/build.gradle.kts @@ -1,6 +1,6 @@ @file:Suppress("INLINE_FROM_HIGHER_PLATFORM") -import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties +import com.ninecraft.booket.convention.getLocalProperty plugins { @@ -18,11 +18,11 @@ android { buildTypes { debug { - buildConfigField("String", "SERVER_BASE_URL", getServerBaseUrl("DEBUG_SERVER_BASE_URL")) + buildConfigField("String", "SERVER_BASE_URL", getLocalProperty("DEBUG_SERVER_BASE_URL")) } release { - buildConfigField("String", "SERVER_BASE_URL", getServerBaseUrl("RELEASE_SERVER_BASE_URL")) + buildConfigField("String", "SERVER_BASE_URL", getLocalProperty("RELEASE_SERVER_BASE_URL")) } } } @@ -36,7 +36,3 @@ dependencies { libs.logger, ) } - -fun getServerBaseUrl(propertyKey: String): String { - return gradleLocalProperties(rootDir, providers).getProperty(propertyKey) -} diff --git a/core/ocr/build.gradle.kts b/core/ocr/build.gradle.kts index fc89475b..b9cd6968 100644 --- a/core/ocr/build.gradle.kts +++ b/core/ocr/build.gradle.kts @@ -1,7 +1,6 @@ @file:Suppress("INLINE_FROM_HIGHER_PLATFORM") -import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties - +import com.ninecraft.booket.convention.getLocalProperty plugins { alias(libs.plugins.booket.android.library) @@ -13,7 +12,7 @@ android { namespace = "com.ninecraft.booket.core.ocr" defaultConfig { - buildConfigField("String", "CLOUD_VISION_API_KEY", getApiKey("CLOUD_VISION_API_KEY")) + buildConfigField("String", "CLOUD_VISION_API_KEY", getLocalProperty("CLOUD_VISION_API_KEY")) } buildFeatures { @@ -30,7 +29,3 @@ dependencies { libs.logger, ) } - -fun getApiKey(propertyKey: String): String { - return gradleLocalProperties(rootDir, providers).getProperty(propertyKey) -} diff --git a/feature/login/build.gradle.kts b/feature/login/build.gradle.kts index fa25f74d..13fbee6e 100644 --- a/feature/login/build.gradle.kts +++ b/feature/login/build.gradle.kts @@ -1,5 +1,7 @@ @file:Suppress("INLINE_FROM_HIGHER_PLATFORM") +import com.ninecraft.booket.convention.getLocalProperty + plugins { alias(libs.plugins.booket.android.feature) alias(libs.plugins.kotlin.serialization) @@ -8,6 +10,20 @@ plugins { android { namespace = "com.ninecraft.booket.feature.login" + + buildTypes { + getByName("debug") { + buildConfigField("String", "GOOGLE_WEB_CLIENT_ID", getLocalProperty("DEBUG_GOOGLE_WEB_CLIENT_ID")) + } + + getByName("release") { + buildConfigField("String", "GOOGLE_WEB_CLIENT_ID", getLocalProperty("RELEASE_GOOGLE_WEB_CLIENT_ID")) + } + } + + buildFeatures { + buildConfig = true + } } dependencies { diff --git a/feature/search/build.gradle.kts b/feature/search/build.gradle.kts index 0a6fb604..069689da 100644 --- a/feature/search/build.gradle.kts +++ b/feature/search/build.gradle.kts @@ -1,5 +1,8 @@ @file:Suppress("INLINE_FROM_HIGHER_PLATFORM") +import com.ninecraft.booket.convention.getLocalProperty + + plugins { alias(libs.plugins.booket.android.feature) alias(libs.plugins.kotlin.serialization) @@ -8,6 +11,14 @@ plugins { android { namespace = "com.ninecraft.booket.feature.search" + + buildFeatures { + buildConfig = true + + defaultConfig { + buildConfigField("String", "REED_KAKAOTALK_CHANNEL_URL", getLocalProperty("REED_KAKAOTALK_CHANNEL_URL")) + } + } } dependencies { From 6116acf3a64f1be04785a6d775e2d2cd2bac401f Mon Sep 17 00:00:00 2001 From: easyhooon Date: Wed, 24 Dec 2025 16:04:49 +0900 Subject: [PATCH 3/4] =?UTF-8?q?[BOOK-479]=20chore:=20.stability=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=B5=9C=EC=8B=A0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/onboarding/stability/onboarding.stability | 4 ++-- feature/search/stability/search.stability | 10 ++++++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/feature/onboarding/stability/onboarding.stability b/feature/onboarding/stability/onboarding.stability index 4a020e64..74d90270 100644 --- a/feature/onboarding/stability/onboarding.stability +++ b/feature/onboarding/stability/onboarding.stability @@ -25,13 +25,13 @@ internal fun com.ninecraft.booket.feature.onboarding.OnboardingUi(state: com.nin - modifier: STABLE (marked @Stable or @Immutable) @Composable -internal fun com.ninecraft.booket.feature.onboarding.component.OnboardingPage(imageRes: kotlin.Int, titleRes: kotlin.Int, highlightTextRes: kotlin.Int, descriptionRes: kotlin.Int, modifier: androidx.compose.ui.Modifier): kotlin.Unit +internal fun com.ninecraft.booket.feature.onboarding.component.OnboardingPage(imageRes: kotlin.Int, titleRes: kotlin.Int, highlightTextRes: kotlin.Int?, descriptionRes: kotlin.Int, modifier: androidx.compose.ui.Modifier): kotlin.Unit skippable: true restartable: true params: - imageRes: STABLE (primitive type) - titleRes: STABLE (primitive type) - - highlightTextRes: STABLE (primitive type) + - highlightTextRes: STABLE (class with no mutable properties) - descriptionRes: STABLE (primitive type) - modifier: STABLE (marked @Stable or @Immutable) diff --git a/feature/search/stability/search.stability b/feature/search/stability/search.stability index 6756f3dc..5e758f5e 100644 --- a/feature/search/stability/search.stability +++ b/feature/search/stability/search.stability @@ -4,6 +4,12 @@ // Do not edit this file directly. To update it, run: // ./gradlew :search:stabilityDump +@Composable +private fun com.ninecraft.booket.feature.search.book.BookRecentSearchPreview(): kotlin.Unit + skippable: true + restartable: true + params: + @Composable internal fun com.ninecraft.booket.feature.search.book.BookSearchContent(state: com.ninecraft.booket.feature.search.book.BookSearchUiState, modifier: androidx.compose.ui.Modifier): kotlin.Unit skippable: true @@ -13,13 +19,13 @@ internal fun com.ninecraft.booket.feature.search.book.BookSearchContent(state: c - modifier: STABLE (marked @Stable or @Immutable) @Composable -public fun com.ninecraft.booket.feature.search.book.BookSearchPresenter.present(): com.ninecraft.booket.feature.search.book.BookSearchUiState +private fun com.ninecraft.booket.feature.search.book.BookSearchEmptyResultPreview(): kotlin.Unit skippable: true restartable: true params: @Composable -private fun com.ninecraft.booket.feature.search.book.BookSearchPreview(): kotlin.Unit +public fun com.ninecraft.booket.feature.search.book.BookSearchPresenter.present(): com.ninecraft.booket.feature.search.book.BookSearchUiState skippable: true restartable: true params: From b065c0ce1077ffeb397bd4f4d051dda5866cef94 Mon Sep 17 00:00:00 2001 From: easyhooon Date: Wed, 24 Dec 2025 16:24:41 +0900 Subject: [PATCH 4/4] =?UTF-8?q?[BOOK-479]=20chore:=20=ED=86=A0=EB=81=BC=20?= =?UTF-8?q?=EB=A6=AC=EB=B7=B0=20=EB=B0=98=EC=98=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- feature/search/build.gradle.kts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/feature/search/build.gradle.kts b/feature/search/build.gradle.kts index 069689da..19632fa8 100644 --- a/feature/search/build.gradle.kts +++ b/feature/search/build.gradle.kts @@ -14,10 +14,10 @@ android { buildFeatures { buildConfig = true + } - defaultConfig { - buildConfigField("String", "REED_KAKAOTALK_CHANNEL_URL", getLocalProperty("REED_KAKAOTALK_CHANNEL_URL")) - } + defaultConfig { + buildConfigField("String", "REED_KAKAOTALK_CHANNEL_URL", getLocalProperty("REED_KAKAOTALK_CHANNEL_URL")) } }