From aa095d7ed00befd2dc9cb6adf52fa7de47a37a4d Mon Sep 17 00:00:00 2001 From: JI HUN LEE <51016231+easyhooon@users.noreply.github.com> Date: Sun, 12 Nov 2023 06:22:33 +0900 Subject: [PATCH 01/11] =?UTF-8?q?UiText=20=EB=B3=B4=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit String Resoucr 내에 변수가 있는 경우에 대한 대응을 하기 위함 --- .../bandalart/android/core/ui/UiText.kt | 26 +++++++++++++++++++ .../android/core/ui/extension/UiText.kt | 14 ---------- 2 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/UiText.kt delete mode 100644 core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/UiText.kt diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/UiText.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/UiText.kt new file mode 100644 index 00000000..fb4ab743 --- /dev/null +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/UiText.kt @@ -0,0 +1,26 @@ +package com.nexters.bandalart.android.core.ui + +import android.content.Context +import androidx.annotation.StringRes +import androidx.compose.runtime.Composable +import androidx.compose.ui.res.stringResource + +sealed class UiText { + data class DirectString(val value: String) : UiText() + + class StringResource( + @StringRes val resId: Int, + vararg val args: Any + ) : UiText() + + @Composable + fun asString() = when (this) { + is DirectString -> value + is StringResource -> stringResource(resId, *args) + } + + fun asString(context: Context) = when (this) { + is DirectString -> value + is StringResource -> context.getString(resId, *args) + } +} diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/UiText.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/UiText.kt deleted file mode 100644 index c18b6393..00000000 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/UiText.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.nexters.bandalart.android.core.ui.extension - -import android.content.Context -import androidx.annotation.StringRes - -sealed class UiText { - class StringResource(@StringRes val resId: Int) : UiText() - data class DirectString(val value: String) : UiText() - - fun asString(context: Context) = when (this) { - is StringResource -> context.getString(resId) - is DirectString -> value - } -} From 92ceee411b72ef5ffdb1515f5e18ba87bab2cd17 Mon Sep 17 00:00:00 2001 From: JI HUN LEE <51016231+easyhooon@users.noreply.github.com> Date: Sun, 12 Nov 2023 06:28:30 +0900 Subject: [PATCH 02/11] =?UTF-8?q?core:util=20=EB=AA=A8=EB=93=88=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ui 모듈과 util 모듈을 분리, 다른 모듈들에서 공통으로 사용하는 ui와 관련되지 않는 함수 및 클래스를 모아둠 패키지 구조 변경-> 확장함수가 아닌 파일들은 extension 밖으로 꺼냄 --- app/build.gradle.kts | 1 + core/ui/build.gradle.kts | 1 + .../{extension => }/MultipleEventsCutter.kt | 2 +- .../core/ui/{extension => }/TextUnit.kt | 2 +- .../core/ui/{extension => }/ThemeColor.kt | 2 +- .../core/ui/{extension => }/WindowInsets.kt | 2 +- .../core/ui/component/BandalartButton.kt | 2 +- .../component/BandalartDeleteAlertDialog.kt | 2 +- .../ui/component/BandalartDropDownMenu.kt | 2 +- .../android/core/ui/component/CellText.kt | 2 +- .../android/core/ui/component/EmojiText.kt | 2 +- .../core/ui/component/FixedSizeText.kt | 2 +- .../ui/component/NetworkErrorAlertDialog.kt | 2 +- .../android/core/ui/component/TitleText.kt | 2 +- .../bottomsheet/BottomSheetTextStyle.kt | 2 +- .../android/core/ui/extension/Modifier.kt | 2 ++ .../android/core/ui/extension/String.kt | 24 ----------------- core/util/build.gradle.kts | 20 ++++++++++++++ .../android/core/util/extension/Context.kt | 8 ++++++ .../android/core/util/extension/String.kt | 26 +++++++++++++++++++ .../feature/complete/CompleteViewModel.kt | 2 +- .../feature/complete/ui/SaveImageButton.kt | 2 +- feature/home/build.gradle.kts | 1 + .../feature/home/BandalartBottomSheet.kt | 14 +++++----- .../home/BandalartBottomSheetViewModel.kt | 2 +- .../android/feature/home/HomeScreen.kt | 2 +- .../android/feature/home/HomeViewModel.kt | 2 +- .../android/feature/home/ui/HomeAppTitle.kt | 7 +---- .../android/feature/home/ui/HomeHeader.kt | 4 +-- .../android/feature/home/ui/HomeTopBar.kt | 2 +- .../android/feature/home/ui/ShareButton.kt | 2 +- .../home/ui/bandalart/BandalartCell.kt | 4 +-- .../home/ui/bandalart/BandalartCellGrid.kt | 2 +- .../home/ui/bandalart/BandalartChart.kt | 4 +-- .../home/ui/bandalart/BandalartColorPicker.kt | 6 ++--- .../home/ui/bandalart/BandalartDatePicker.kt | 4 +-- .../home/ui/bandalart/BandalartEmojiPicker.kt | 2 +- .../home/ui/bandalart/BandalartItem.kt | 2 +- .../ui/bandalart/BandalartListBottomSheet.kt | 4 +-- .../ui/bandalart/BandalartSkeletonScreen.kt | 2 +- settings.gradle.kts | 1 + 41 files changed, 105 insertions(+), 74 deletions(-) rename core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/{extension => }/MultipleEventsCutter.kt (90%) rename core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/{extension => }/TextUnit.kt (84%) rename core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/{extension => }/ThemeColor.kt (84%) rename core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/{extension => }/WindowInsets.kt (94%) create mode 100644 core/util/build.gradle.kts create mode 100644 core/util/src/main/kotlin/com/nexters/bandalart/android/core/util/extension/Context.kt create mode 100644 core/util/src/main/kotlin/com/nexters/bandalart/android/core/util/extension/String.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e0e57ae5..d9e85826 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -57,6 +57,7 @@ dependencies { projects.core.domain, projects.core.network, projects.core.ui, + projects.core.util, projects.feature.complete, projects.feature.home, projects.feature.onboarding, diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index e3500377..024286c8 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -16,6 +16,7 @@ android { dependencies { implementations( projects.core.designsystem, + projects.core.util, libs.kotlinx.datetime, libs.androidx.core, libs.lottie.compose, diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/MultipleEventsCutter.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/MultipleEventsCutter.kt similarity index 90% rename from core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/MultipleEventsCutter.kt rename to core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/MultipleEventsCutter.kt index 66c1945c..9d12d8c4 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/MultipleEventsCutter.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/MultipleEventsCutter.kt @@ -1,4 +1,4 @@ -package com.nexters.bandalart.android.core.ui.extension +package com.nexters.bandalart.android.core.ui internal interface MultipleEventsCutter { fun processEvent(event: () -> Unit) diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/TextUnit.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/TextUnit.kt similarity index 84% rename from core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/TextUnit.kt rename to core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/TextUnit.kt index cdcd9d5a..f779c937 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/TextUnit.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/TextUnit.kt @@ -1,4 +1,4 @@ -package com.nexters.bandalart.android.core.ui.extension +package com.nexters.bandalart.android.core.ui import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalDensity diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/ThemeColor.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/ThemeColor.kt similarity index 84% rename from core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/ThemeColor.kt rename to core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/ThemeColor.kt index 32e534d2..6e2410c9 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/ThemeColor.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/ThemeColor.kt @@ -1,4 +1,4 @@ -package com.nexters.bandalart.android.core.ui.extension +package com.nexters.bandalart.android.core.ui data class ThemeColor( val mainColor: String, diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/WindowInsets.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/WindowInsets.kt similarity index 94% rename from core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/WindowInsets.kt rename to core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/WindowInsets.kt index 1de827e9..e2156def 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/WindowInsets.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/WindowInsets.kt @@ -1,4 +1,4 @@ -package com.nexters.bandalart.android.core.ui.extension +package com.nexters.bandalart.android.core.ui import android.app.Activity import android.graphics.Rect diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartButton.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartButton.kt index 73c21875..d047cf82 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartButton.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartButton.kt @@ -15,7 +15,7 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.nexters.bandalart.android.core.ui.extension.clickableSingle -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.Gray900 import com.nexters.bandalart.android.core.designsystem.theme.White import com.nexters.bandalart.android.core.designsystem.theme.pretendard diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDeleteAlertDialog.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDeleteAlertDialog.kt index 26288183..817dc2e0 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDeleteAlertDialog.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDeleteAlertDialog.kt @@ -25,7 +25,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Dialog import com.nexters.bandalart.android.core.ui.R -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.Gray200 import com.nexters.bandalart.android.core.designsystem.theme.Gray400 import com.nexters.bandalart.android.core.designsystem.theme.Gray900 diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDropDownMenu.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDropDownMenu.kt index 14440eb4..b6b892ea 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDropDownMenu.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDropDownMenu.kt @@ -23,7 +23,7 @@ import androidx.compose.ui.unit.DpOffset import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.nexters.bandalart.android.core.ui.R -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.Error import com.nexters.bandalart.android.core.designsystem.theme.White import com.nexters.bandalart.android.core.designsystem.theme.pretendard diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/CellText.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/CellText.kt index 8e18d6b2..41f59a5c 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/CellText.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/CellText.kt @@ -12,7 +12,7 @@ import androidx.compose.ui.text.style.LineBreak import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.pretendard val cellLineBreak = LineBreak( diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/EmojiText.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/EmojiText.kt index 0a86c955..55892c17 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/EmojiText.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/EmojiText.kt @@ -3,7 +3,7 @@ package com.nexters.bandalart.android.core.ui.component import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.unit.TextUnit -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp @Composable fun EmojiText( diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/FixedSizeText.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/FixedSizeText.kt index ad2003c8..4a7c5590 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/FixedSizeText.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/FixedSizeText.kt @@ -8,7 +8,7 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.TextUnit -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.pretendard @Composable diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/NetworkErrorAlertDialog.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/NetworkErrorAlertDialog.kt index ab095196..d9c4be3e 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/NetworkErrorAlertDialog.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/NetworkErrorAlertDialog.kt @@ -24,7 +24,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Dialog import com.nexters.bandalart.android.core.ui.R -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.Gray400 import com.nexters.bandalart.android.core.designsystem.theme.Gray900 import com.nexters.bandalart.android.core.designsystem.theme.White diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/TitleText.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/TitleText.kt index a1a5abf5..e8439e86 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/TitleText.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/TitleText.kt @@ -5,7 +5,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.sp -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.pretendard @Composable diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetTextStyle.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetTextStyle.kt index 220c0a3f..21c05950 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetTextStyle.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetTextStyle.kt @@ -4,7 +4,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.sp -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.Gray900 import com.nexters.bandalart.android.core.designsystem.theme.pretendard diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/Modifier.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/Modifier.kt index 7ff8dfb9..38d8fe88 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/Modifier.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/Modifier.kt @@ -9,6 +9,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.composed import androidx.compose.ui.platform.debugInspectorInfo import androidx.compose.ui.semantics.Role +import com.nexters.bandalart.android.core.ui.MultipleEventsCutter +import com.nexters.bandalart.android.core.ui.get @SuppressLint("ModifierFactoryUnreferencedReceiver") inline fun Modifier.noRippleClickable(crossinline onClick: () -> Unit): Modifier = composed { diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/String.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/String.kt index 971717b6..f058b1f6 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/String.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/extension/String.kt @@ -1,31 +1,7 @@ package com.nexters.bandalart.android.core.ui.extension import androidx.compose.ui.graphics.Color -import java.time.LocalDateTime -import java.time.format.DateTimeFormatter -import kotlinx.datetime.Instant -import kotlinx.datetime.TimeZone -import kotlinx.datetime.toLocalDateTime fun String.toColor(): Color { return Color(android.graphics.Color.parseColor(this)) } - -// ISO 8601 형식의 날짜와 시간 문자열을 "~년 월 일" 형태로 변환 -// "2023-08-02T18:27:25.862Z" -> "~23년 8월 2일" -fun String.toFormatDate(): String { - val instant = Instant.parse(this) - val dateTime = instant.toLocalDateTime(TimeZone.UTC) - return "~${dateTime.year - 2000}년 ${dateTime.monthNumber}월 ${dateTime.dayOfMonth}일" -} - -fun String.toStringLocalDateTime(): String { - val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm") - val dueDate = LocalDateTime.parse(this.substring(0, 16), formatter) - return "${dueDate.year}년 ${dueDate.monthValue}월 ${dueDate.dayOfMonth}일" -} - -fun String.toLocalDateTime(): LocalDateTime { - val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm") - return LocalDateTime.parse(this.substring(0, 16), formatter) -} diff --git a/core/util/build.gradle.kts b/core/util/build.gradle.kts new file mode 100644 index 00000000..a11188c3 --- /dev/null +++ b/core/util/build.gradle.kts @@ -0,0 +1,20 @@ +@file:Suppress("UnstableApiUsage", "INLINE_FROM_HIGHER_PLATFORM") + +plugins { + bandalart("android-library") +} + +android { + namespace = "com.nexters.bandalart.android.core.util" + + buildFeatures { + buildConfig = true + } +} + +dependencies { + implementations( + libs.kotlinx.datetime, + libs.androidx.core, + ) +} diff --git a/core/util/src/main/kotlin/com/nexters/bandalart/android/core/util/extension/Context.kt b/core/util/src/main/kotlin/com/nexters/bandalart/android/core/util/extension/Context.kt new file mode 100644 index 00000000..b9c67fde --- /dev/null +++ b/core/util/src/main/kotlin/com/nexters/bandalart/android/core/util/extension/Context.kt @@ -0,0 +1,8 @@ +package com.nexters.bandalart.android.core.util.extension + +import android.content.Context +import java.util.Locale + +fun Context.getCurrentLocale(): Locale { + return this.resources.configuration.locales.get(0) +} diff --git a/core/util/src/main/kotlin/com/nexters/bandalart/android/core/util/extension/String.kt b/core/util/src/main/kotlin/com/nexters/bandalart/android/core/util/extension/String.kt new file mode 100644 index 00000000..229284cf --- /dev/null +++ b/core/util/src/main/kotlin/com/nexters/bandalart/android/core/util/extension/String.kt @@ -0,0 +1,26 @@ +package com.nexters.bandalart.android.core.util.extension + +import kotlinx.datetime.Instant +import kotlinx.datetime.TimeZone +import kotlinx.datetime.toLocalDateTime +import java.time.LocalDateTime +import java.time.format.DateTimeFormatter + +// ISO 8601 형식의 날짜와 시간 문자열을 "~년 월 일" 형태로 변환 +// "2023-08-02T18:27:25.862Z" -> "~23년 8월 2일" +fun String.toFormatDate(): String { + val instant = Instant.parse(this) + val dateTime = instant.toLocalDateTime(TimeZone.UTC) + return "~${dateTime.year - 2000}년 ${dateTime.monthNumber}월 ${dateTime.dayOfMonth}일" +} + +fun String.toStringLocalDateTime(): String { + val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm") + val dueDate = LocalDateTime.parse(this.substring(0, 16), formatter) + return "${dueDate.year}년 ${dueDate.monthValue}월 ${dueDate.dayOfMonth}일" +} + +fun String.toLocalDateTime(): LocalDateTime { + val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm") + return LocalDateTime.parse(this.substring(0, 16), formatter) +} diff --git a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteViewModel.kt b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteViewModel.kt index ffa0c50e..cdd037fe 100644 --- a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteViewModel.kt +++ b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteViewModel.kt @@ -5,7 +5,7 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.nexters.bandalart.android.core.domain.usecase.bandalart.ShareBandalartUseCase import com.nexters.bandalart.android.core.domain.usecase.bandalart.UpsertBandalartKeyUseCase -import com.nexters.bandalart.android.core.ui.extension.UiText +import com.nexters.bandalart.android.core.ui.UiText import com.nexters.bandalart.android.feature.complete.navigation.BANDALART_KEY import com.nexters.bandalart.android.feature.complete.navigation.BANDALART_PROFILE_EMOJI import com.nexters.bandalart.android.feature.complete.navigation.BANDALART_TITLE diff --git a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/SaveImageButton.kt b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/SaveImageButton.kt index d6e77e1f..9c666bcc 100644 --- a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/SaveImageButton.kt +++ b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/SaveImageButton.kt @@ -21,7 +21,7 @@ import androidx.compose.ui.text.style.TextDecoration import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.Gray400 import com.nexters.bandalart.android.core.designsystem.theme.pretendard import com.nexters.bandalart.android.core.designsystem.R diff --git a/feature/home/build.gradle.kts b/feature/home/build.gradle.kts index 5a64bc08..a188ec05 100644 --- a/feature/home/build.gradle.kts +++ b/feature/home/build.gradle.kts @@ -19,6 +19,7 @@ dependencies { projects.core.designsystem, projects.core.domain, projects.core.ui, + projects.core.util, libs.kotlinx.collections.immutable, libs.androidx.core, libs.androidx.hilt.compose.navigation, diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt index 0d972561..ae821b12 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt @@ -70,19 +70,19 @@ import com.nexters.bandalart.android.core.ui.component.bottomsheet.BottomSheetDi import com.nexters.bandalart.android.core.ui.component.bottomsheet.BottomSheetSubTitleText import com.nexters.bandalart.android.core.ui.component.bottomsheet.BottomSheetTextStyle import com.nexters.bandalart.android.core.ui.component.bottomsheet.BottomSheetTopBar -import com.nexters.bandalart.android.core.ui.extension.NavigationBarHeightDp -import com.nexters.bandalart.android.core.ui.extension.StatusBarHeightDp -import com.nexters.bandalart.android.core.ui.extension.ThemeColor -import com.nexters.bandalart.android.core.ui.extension.allColor +import com.nexters.bandalart.android.core.ui.NavigationBarHeightDp +import com.nexters.bandalart.android.core.ui.StatusBarHeightDp import com.nexters.bandalart.android.core.ui.extension.noRippleClickable -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp -import com.nexters.bandalart.android.core.ui.extension.toLocalDateTime -import com.nexters.bandalart.android.core.ui.extension.toStringLocalDateTime +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.Gray100 import com.nexters.bandalart.android.core.designsystem.theme.Gray300 import com.nexters.bandalart.android.core.designsystem.theme.Gray400 import com.nexters.bandalart.android.core.designsystem.theme.Gray700 import com.nexters.bandalart.android.core.designsystem.theme.White +import com.nexters.bandalart.android.core.ui.ThemeColor +import com.nexters.bandalart.android.core.ui.allColor +import com.nexters.bandalart.android.core.util.extension.toLocalDateTime +import com.nexters.bandalart.android.core.util.extension.toStringLocalDateTime import com.nexters.bandalart.android.feature.home.model.BandalartCellUiModel import com.nexters.bandalart.android.feature.home.model.UpdateBandalartMainCellModel import com.nexters.bandalart.android.feature.home.model.UpdateBandalartSubCellModel diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheetViewModel.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheetViewModel.kt index 9eb71e7a..5b249706 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheetViewModel.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheetViewModel.kt @@ -6,12 +6,12 @@ import com.nexters.bandalart.android.core.domain.usecase.bandalart.DeleteBandala import com.nexters.bandalart.android.core.domain.usecase.bandalart.UpdateBandalartMainCellUseCase import com.nexters.bandalart.android.core.domain.usecase.bandalart.UpdateBandalartSubCellUseCase import com.nexters.bandalart.android.core.domain.usecase.bandalart.UpdateBandalartTaskCellUseCase +import com.nexters.bandalart.android.core.ui.UiText import com.nexters.bandalart.android.feature.home.mapper.toEntity import com.nexters.bandalart.android.feature.home.model.BandalartCellUiModel import com.nexters.bandalart.android.feature.home.model.UpdateBandalartMainCellModel import com.nexters.bandalart.android.feature.home.model.UpdateBandalartSubCellModel import com.nexters.bandalart.android.feature.home.model.UpdateBandalartTaskCellModel -import com.nexters.bandalart.android.core.ui.extension.UiText import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.flow.MutableSharedFlow diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeScreen.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeScreen.kt index ab776d86..38a72a62 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeScreen.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeScreen.kt @@ -31,10 +31,10 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.nexters.bandalart.android.core.designsystem.theme.Gray100 import com.nexters.bandalart.android.core.designsystem.theme.Gray50 import com.nexters.bandalart.android.core.ui.R +import com.nexters.bandalart.android.core.ui.ThemeColor import com.nexters.bandalart.android.core.ui.component.BandalartDeleteAlertDialog import com.nexters.bandalart.android.core.ui.component.LoadingScreen import com.nexters.bandalart.android.core.ui.component.NetworkErrorAlertDialog -import com.nexters.bandalart.android.core.ui.extension.ThemeColor import com.nexters.bandalart.android.feature.home.model.BandalartDetailUiModel import com.nexters.bandalart.android.feature.home.ui.bandalart.BandalartChart import com.nexters.bandalart.android.feature.home.ui.bandalart.BandalartEmojiBottomSheet diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeViewModel.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeViewModel.kt index 58bd95fb..891d718d 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeViewModel.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeViewModel.kt @@ -16,7 +16,7 @@ import com.nexters.bandalart.android.core.domain.usecase.bandalart.ShareBandalar import com.nexters.bandalart.android.core.domain.usecase.bandalart.UpdateBandalartEmojiUseCase import com.nexters.bandalart.android.core.domain.usecase.bandalart.UpsertBandalartKeyUseCase import com.nexters.bandalart.android.core.ui.R -import com.nexters.bandalart.android.core.ui.extension.UiText +import com.nexters.bandalart.android.core.ui.UiText import com.nexters.bandalart.android.feature.home.mapper.toEntity import com.nexters.bandalart.android.feature.home.mapper.toUiModel import com.nexters.bandalart.android.feature.home.model.BandalartCellUiModel diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeAppTitle.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeAppTitle.kt index fc12b97c..afe1c87e 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeAppTitle.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeAppTitle.kt @@ -1,6 +1,5 @@ package com.nexters.bandalart.android.feature.home.ui -import android.content.Context import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext @@ -12,6 +11,7 @@ import com.nexters.bandalart.android.core.designsystem.theme.koronaOneRegular import com.nexters.bandalart.android.core.designsystem.theme.neurimboGothicRegular import com.nexters.bandalart.android.core.ui.R import com.nexters.bandalart.android.core.ui.component.FixedSizeText +import com.nexters.bandalart.android.core.util.extension.getCurrentLocale import java.util.Locale @Composable @@ -67,8 +67,3 @@ fun HomeAppEnglishTitle( letterSpacing = (-0.36).sp, ) } - -// TODO core:util 모듈로 옮길 예정 -fun Context.getCurrentLocale(): Locale { - return this.resources.configuration.locales.get(0) -} diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeHeader.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeHeader.kt index f9de95d1..b3b1ac01 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeHeader.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeHeader.kt @@ -34,13 +34,13 @@ import androidx.compose.ui.unit.sp import com.nexters.bandalart.android.core.ui.component.BandalartDropDownMenu import com.nexters.bandalart.android.core.ui.component.EmojiText import com.nexters.bandalart.android.core.ui.component.FixedSizeText -import com.nexters.bandalart.android.core.ui.extension.toColor -import com.nexters.bandalart.android.core.ui.extension.toFormatDate import com.nexters.bandalart.android.core.designsystem.theme.Gray100 import com.nexters.bandalart.android.core.designsystem.theme.Gray300 import com.nexters.bandalart.android.core.designsystem.theme.Gray600 import com.nexters.bandalart.android.core.designsystem.theme.Gray900 import com.nexters.bandalart.android.core.designsystem.theme.MainColor +import com.nexters.bandalart.android.core.ui.extension.toColor +import com.nexters.bandalart.android.core.util.extension.toFormatDate import com.nexters.bandalart.android.feature.home.HomeUiState @Composable diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeTopBar.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeTopBar.kt index a12ef9fd..04d1c7f3 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeTopBar.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeTopBar.kt @@ -27,7 +27,7 @@ import com.nexters.bandalart.android.core.designsystem.theme.White import com.nexters.bandalart.android.core.designsystem.theme.pretendard import com.nexters.bandalart.android.core.ui.R import com.nexters.bandalart.android.core.ui.component.FixedSizeText -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp @Composable internal fun HomeTopBar( diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/ShareButton.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/ShareButton.kt index f1ea9f9c..ccb79ac5 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/ShareButton.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/ShareButton.kt @@ -19,7 +19,7 @@ import androidx.compose.ui.unit.sp import com.nexters.bandalart.android.core.designsystem.R import com.nexters.bandalart.android.core.ui.component.FixedSizeText import com.nexters.bandalart.android.core.ui.extension.clickableSingle -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.Gray100 import com.nexters.bandalart.android.core.designsystem.theme.Gray900 import com.nexters.bandalart.android.feature.home.HomeUiState diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCell.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCell.kt index bb23ed29..30980b38 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCell.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCell.kt @@ -30,13 +30,13 @@ import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import com.nexters.bandalart.android.core.ui.R import com.nexters.bandalart.android.core.ui.component.CellText -import com.nexters.bandalart.android.core.ui.extension.ThemeColor -import com.nexters.bandalart.android.core.ui.extension.toColor import com.nexters.bandalart.android.core.designsystem.theme.Gray200 import com.nexters.bandalart.android.core.designsystem.theme.Gray400 import com.nexters.bandalart.android.core.designsystem.theme.Gray500 import com.nexters.bandalart.android.core.designsystem.theme.Gray900 import com.nexters.bandalart.android.core.designsystem.theme.White +import com.nexters.bandalart.android.core.ui.ThemeColor +import com.nexters.bandalart.android.core.ui.extension.toColor import com.nexters.bandalart.android.feature.home.BandalartBottomSheet import com.nexters.bandalart.android.feature.home.model.BandalartCellUiModel diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCellGrid.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCellGrid.kt index de23dd35..87000866 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCellGrid.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCellGrid.kt @@ -8,7 +8,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import com.nexters.bandalart.android.core.ui.extension.ThemeColor +import com.nexters.bandalart.android.core.ui.ThemeColor @Composable fun BandalartCellGrid( diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartChart.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartChart.kt index caf4d777..b59bc7dd 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartChart.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartChart.kt @@ -16,10 +16,10 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.Constraints import androidx.compose.ui.unit.dp import com.nexters.bandalart.android.core.ui.R -import com.nexters.bandalart.android.core.ui.extension.ThemeColor -import com.nexters.bandalart.android.core.ui.extension.toColor import com.nexters.bandalart.android.core.designsystem.theme.Gray100 import com.nexters.bandalart.android.core.designsystem.theme.MainColor +import com.nexters.bandalart.android.core.ui.ThemeColor +import com.nexters.bandalart.android.core.ui.extension.toColor import com.nexters.bandalart.android.feature.home.HomeUiState @Composable diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartColorPicker.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartColorPicker.kt index f0a6aa49..c906ec41 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartColorPicker.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartColorPicker.kt @@ -18,12 +18,12 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import com.nexters.bandalart.android.core.ui.extension.ThemeColor -import com.nexters.bandalart.android.core.ui.extension.allColor import com.nexters.bandalart.android.core.ui.extension.noRippleClickable -import com.nexters.bandalart.android.core.ui.extension.toColor import com.nexters.bandalart.android.core.designsystem.theme.Gray900 import com.nexters.bandalart.android.core.designsystem.theme.White +import com.nexters.bandalart.android.core.ui.ThemeColor +import com.nexters.bandalart.android.core.ui.allColor +import com.nexters.bandalart.android.core.ui.extension.toColor @Composable fun BandalartColorPicker( diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartDatePicker.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartDatePicker.kt index 77fecc19..fb4e8a89 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartDatePicker.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartDatePicker.kt @@ -34,11 +34,11 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.nexters.bandalart.android.core.ui.R -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp -import com.nexters.bandalart.android.core.ui.extension.toLocalDateTime +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.Gray100 import com.nexters.bandalart.android.core.designsystem.theme.Gray900 import com.nexters.bandalart.android.core.designsystem.theme.pretendard +import com.nexters.bandalart.android.core.util.extension.toLocalDateTime import kotlinx.collections.immutable.ImmutableList import kotlinx.collections.immutable.toImmutableList import java.time.LocalDateTime diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartEmojiPicker.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartEmojiPicker.kt index d55d7e30..4d346d2b 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartEmojiPicker.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartEmojiPicker.kt @@ -34,7 +34,7 @@ import com.nexters.bandalart.android.core.designsystem.theme.Gray100 import com.nexters.bandalart.android.core.designsystem.theme.Gray400 import com.nexters.bandalart.android.core.designsystem.theme.White import com.nexters.bandalart.android.core.ui.component.EmojiText -import com.nexters.bandalart.android.core.ui.extension.NavigationBarHeightDp +import com.nexters.bandalart.android.core.ui.NavigationBarHeightDp import java.util.* import kotlinx.coroutines.launch diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartItem.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartItem.kt index 07bcdd39..9bb76c0a 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartItem.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartItem.kt @@ -35,11 +35,11 @@ import androidx.compose.ui.unit.sp import com.nexters.bandalart.android.core.ui.R import com.nexters.bandalart.android.core.ui.component.EmojiText import com.nexters.bandalart.android.core.ui.component.FixedSizeText -import com.nexters.bandalart.android.core.ui.extension.toColor import com.nexters.bandalart.android.core.designsystem.theme.Gray100 import com.nexters.bandalart.android.core.designsystem.theme.Gray300 import com.nexters.bandalart.android.core.designsystem.theme.Gray400 import com.nexters.bandalart.android.core.designsystem.theme.Gray900 +import com.nexters.bandalart.android.core.ui.extension.toColor import com.nexters.bandalart.android.feature.home.model.BandalartDetailUiModel import kotlinx.coroutines.launch diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartListBottomSheet.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartListBottomSheet.kt index b376c141..8df6e47e 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartListBottomSheet.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartListBottomSheet.kt @@ -39,8 +39,8 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.nexters.bandalart.android.core.ui.R import com.nexters.bandalart.android.core.ui.component.FixedSizeText -import com.nexters.bandalart.android.core.ui.extension.NavigationBarHeightDp -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.NavigationBarHeightDp +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.Gray200 import com.nexters.bandalart.android.core.designsystem.theme.Gray600 import com.nexters.bandalart.android.core.designsystem.theme.Gray800 diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeletonScreen.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeletonScreen.kt index 6d734051..9caa6593 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeletonScreen.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeletonScreen.kt @@ -40,7 +40,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import com.nexters.bandalart.android.core.ui.R import com.nexters.bandalart.android.core.ui.component.FixedSizeText -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp +import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.designsystem.theme.Gray100 import com.nexters.bandalart.android.core.designsystem.theme.Gray200 import com.nexters.bandalart.android.core.designsystem.theme.Gray300 diff --git a/settings.gradle.kts b/settings.gradle.kts index b7802173..5f8ba983 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -28,6 +28,7 @@ include( ":core:domain", ":core:network", ":core:ui", + ":core:util", ":feature:complete", ":feature:home", ":feature:onboarding", From 6eb09564ac7ee39e4307a181f6dffb30d2aecf7c Mon Sep 17 00:00:00 2001 From: JI HUN LEE <51016231+easyhooon@users.noreply.github.com> Date: Sun, 12 Nov 2023 06:31:25 +0900 Subject: [PATCH 03/11] =?UTF-8?q?deprecated=20=EB=90=9C=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=EC=BD=98=20=EA=B5=90=EC=B2=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feature/complete/ui/CompleteTopBar.kt | 4 +-- .../feature/home/BandalartBottomSheet.kt | 26 +++++++++---------- .../home/ui/bandalart/BandalartItem.kt | 10 +++---- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/CompleteTopBar.kt b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/CompleteTopBar.kt index 6940dea1..aa5f332c 100644 --- a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/CompleteTopBar.kt +++ b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/CompleteTopBar.kt @@ -6,7 +6,7 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBackIos +import androidx.compose.material.icons.automirrored.filled.ArrowBackIos import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.runtime.Composable @@ -34,7 +34,7 @@ fun CompleteTopBar( .aspectRatio(1f), ) { Icon( - imageVector = Icons.Default.ArrowBackIos, + imageVector = Icons.AutoMirrored.Filled.ArrowBackIos, contentDescription = context.getString(R.string.arrow_forward_descrption), tint = Gray900, ) diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt index ae821b12..a3925534 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt @@ -7,7 +7,6 @@ import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.animateContentSize import androidx.compose.animation.core.LinearOutSlowInEasing import androidx.compose.animation.core.tween -import com.nexters.bandalart.android.core.ui.R import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.clickable @@ -33,7 +32,7 @@ import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowForwardIos +import androidx.compose.material.icons.automirrored.filled.ArrowForwardIos import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.ExperimentalMaterial3Api @@ -60,6 +59,16 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.nexters.bandalart.android.core.designsystem.theme.Gray100 +import com.nexters.bandalart.android.core.designsystem.theme.Gray300 +import com.nexters.bandalart.android.core.designsystem.theme.Gray400 +import com.nexters.bandalart.android.core.designsystem.theme.Gray700 +import com.nexters.bandalart.android.core.designsystem.theme.White +import com.nexters.bandalart.android.core.ui.NavigationBarHeightDp +import com.nexters.bandalart.android.core.ui.R +import com.nexters.bandalart.android.core.ui.StatusBarHeightDp +import com.nexters.bandalart.android.core.ui.ThemeColor +import com.nexters.bandalart.android.core.ui.allColor import com.nexters.bandalart.android.core.ui.component.BandalartDeleteAlertDialog import com.nexters.bandalart.android.core.ui.component.EmojiText import com.nexters.bandalart.android.core.ui.component.bottomsheet.BottomSheetCompleteButton @@ -70,17 +79,8 @@ import com.nexters.bandalart.android.core.ui.component.bottomsheet.BottomSheetDi import com.nexters.bandalart.android.core.ui.component.bottomsheet.BottomSheetSubTitleText import com.nexters.bandalart.android.core.ui.component.bottomsheet.BottomSheetTextStyle import com.nexters.bandalart.android.core.ui.component.bottomsheet.BottomSheetTopBar -import com.nexters.bandalart.android.core.ui.NavigationBarHeightDp -import com.nexters.bandalart.android.core.ui.StatusBarHeightDp import com.nexters.bandalart.android.core.ui.extension.noRippleClickable import com.nexters.bandalart.android.core.ui.nonScaleSp -import com.nexters.bandalart.android.core.designsystem.theme.Gray100 -import com.nexters.bandalart.android.core.designsystem.theme.Gray300 -import com.nexters.bandalart.android.core.designsystem.theme.Gray400 -import com.nexters.bandalart.android.core.designsystem.theme.Gray700 -import com.nexters.bandalart.android.core.designsystem.theme.White -import com.nexters.bandalart.android.core.ui.ThemeColor -import com.nexters.bandalart.android.core.ui.allColor import com.nexters.bandalart.android.core.util.extension.toLocalDateTime import com.nexters.bandalart.android.core.util.extension.toStringLocalDateTime import com.nexters.bandalart.android.feature.home.model.BandalartCellUiModel @@ -90,8 +90,8 @@ import com.nexters.bandalart.android.feature.home.model.UpdateBandalartTaskCellM import com.nexters.bandalart.android.feature.home.ui.bandalart.BandalartColorPicker import com.nexters.bandalart.android.feature.home.ui.bandalart.BandalartDatePicker import com.nexters.bandalart.android.feature.home.ui.bandalart.BandalartEmojiPicker -import java.time.LocalDateTime import kotlinx.coroutines.launch +import java.time.LocalDateTime @Composable fun BandalartBottomSheet( @@ -357,7 +357,7 @@ fun BandalartBottomSheet( .align(Alignment.CenterEnd) .height(21.dp) .aspectRatio(1f), - imageVector = Icons.Default.ArrowForwardIos, + imageVector = Icons.AutoMirrored.Filled.ArrowForwardIos, contentDescription = stringResource(R.string.arrow_forward_descrption), tint = Gray400, ) diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartItem.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartItem.kt index 9bb76c0a..1d1c12f8 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartItem.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartItem.kt @@ -16,7 +16,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowForwardIos +import androidx.compose.material.icons.automirrored.filled.ArrowForwardIos import androidx.compose.material.icons.filled.Check import androidx.compose.material3.Card import androidx.compose.material3.ExperimentalMaterial3Api @@ -32,13 +32,13 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.nexters.bandalart.android.core.ui.R -import com.nexters.bandalart.android.core.ui.component.EmojiText -import com.nexters.bandalart.android.core.ui.component.FixedSizeText import com.nexters.bandalart.android.core.designsystem.theme.Gray100 import com.nexters.bandalart.android.core.designsystem.theme.Gray300 import com.nexters.bandalart.android.core.designsystem.theme.Gray400 import com.nexters.bandalart.android.core.designsystem.theme.Gray900 +import com.nexters.bandalart.android.core.ui.R +import com.nexters.bandalart.android.core.ui.component.EmojiText +import com.nexters.bandalart.android.core.ui.component.FixedSizeText import com.nexters.bandalart.android.core.ui.extension.toColor import com.nexters.bandalart.android.feature.home.model.BandalartDetailUiModel import kotlinx.coroutines.launch @@ -163,7 +163,7 @@ fun BandalartItem( if (currentBandalartKey != bandalartItem.key) { Box(modifier = Modifier.align(Alignment.CenterVertically)) { Icon( - imageVector = Icons.Default.ArrowForwardIos, + imageVector = Icons.AutoMirrored.Filled.ArrowForwardIos, contentDescription = stringResource(R.string.arrow_forward_descrption), tint = Gray400, modifier = Modifier.size(16.dp), From aa7bc40d6594ce053ad5a8bf6f66491f698a9e8f Mon Sep 17 00:00:00 2001 From: JI HUN LEE <51016231+easyhooon@users.noreply.github.com> Date: Sun, 12 Nov 2023 06:32:40 +0900 Subject: [PATCH 04/11] =?UTF-8?q?ObserveAsEvents=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Event 를 핸들링 하기 위함 --- .../bandalart/android/core/ui/ObserveEvent.kt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/ObserveEvent.kt diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/ObserveEvent.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/ObserveEvent.kt new file mode 100644 index 00000000..fc7b78a4 --- /dev/null +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/ObserveEvent.kt @@ -0,0 +1,23 @@ +package com.nexters.bandalart.android.core.ui + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.ui.platform.LocalLifecycleOwner +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.repeatOnLifecycle +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.withContext + +// https://www.youtube.com/watch?v=njchj9d_Lf8&t=1218s +@Composable +fun ObserveAsEvents(flow: Flow, onEvent: (T) -> Unit) { + val lifecycleOwner = LocalLifecycleOwner.current + LaunchedEffect(flow, lifecycleOwner.lifecycle) { + lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { + withContext(Dispatchers.Main.immediate) { + flow.collect(onEvent) + } + } + } +} From 2ce7c32e9484fae7fbe646982e75671a3accf517 Mon Sep 17 00:00:00 2001 From: JI HUN LEE <51016231+easyhooon@users.noreply.github.com> Date: Sun, 12 Nov 2023 18:57:24 +0900 Subject: [PATCH 05/11] =?UTF-8?q?MVVM=20=ED=8C=A8=ED=84=B4=EC=97=90=20?= =?UTF-8?q?=EB=A7=9E=EA=B2=8C=20ViewModel=20=EC=97=90=EC=84=9C=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EC=9E=90=EC=9D=98=20=EC=95=A1=EC=85=98=EC=9D=84=20?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=ED=95=98=EA=B3=A0,=20=EC=9D=B4=EB=B2=A4?= =?UTF-8?q?=ED=8A=B8=EB=A5=BC=20View=20=EC=97=90=20=EC=A0=84=EB=8B=AC?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EB=B0=A9=EC=8B=9D=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 뷰에서 사용자의 액션을 직접 처리하는 것은 MVVM 패턴에 위배, style check success --- .../bandalart/android/core/ui/UiText.kt | 2 +- .../feature/complete/CompleteScreen.kt | 21 ++++---- .../feature/complete/CompleteViewModel.kt | 11 +++- .../android/feature/home/HomeScreen.kt | 50 +++++++++++-------- .../android/feature/home/HomeViewModel.kt | 24 +++++++-- .../feature/onboarding/OnBoardingScreen.kt | 25 +++++++--- .../feature/onboarding/OnBoardingViewModel.kt | 26 ++++++++++ .../android/feature/splash/SplashScreen.kt | 37 +++++++++----- .../android/feature/splash/SplashViewModel.kt | 27 +++++++++- 9 files changed, 166 insertions(+), 57 deletions(-) create mode 100644 feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingViewModel.kt diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/UiText.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/UiText.kt index fb4ab743..a1d80117 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/UiText.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/UiText.kt @@ -10,7 +10,7 @@ sealed class UiText { class StringResource( @StringRes val resId: Int, - vararg val args: Any + vararg val args: Any, ) : UiText() @Composable diff --git a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteScreen.kt b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteScreen.kt index 4d0d2d52..0e14a7ef 100644 --- a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteScreen.kt +++ b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteScreen.kt @@ -24,6 +24,7 @@ import com.airbnb.lottie.compose.LottieConstants import com.airbnb.lottie.compose.animateLottieCompositionAsState import com.airbnb.lottie.compose.rememberLottieComposition import com.nexters.bandalart.android.core.designsystem.theme.Gray50 +import com.nexters.bandalart.android.core.ui.ObserveAsEvents import com.nexters.bandalart.android.core.ui.R import com.nexters.bandalart.android.core.ui.component.BandalartButton import com.nexters.bandalart.android.core.ui.component.TitleText @@ -39,12 +40,14 @@ internal fun CompleteRoute( val context = LocalContext.current val uiState by viewModel.uiState.collectAsStateWithLifecycle() - LaunchedEffect(viewModel) { - viewModel.eventFlow.collect { event -> - when (event) { - is CompleteUiEvent.ShowToast -> { - Toast.makeText(context, event.message.asString(context), Toast.LENGTH_SHORT).show() - } + ObserveAsEvents(flow = viewModel.eventFlow) { event -> + when (event) { + is CompleteUiEvent.NavigateToHome -> { + onNavigateBack() + } + + is CompleteUiEvent.ShowToast -> { + Toast.makeText(context, event.message.asString(context), Toast.LENGTH_SHORT).show() } } } @@ -52,7 +55,7 @@ internal fun CompleteRoute( CompleteScreen( modifier = modifier, uiState = uiState, - onNavigateBack = onNavigateBack, + navigateToHome = viewModel::navigateToHome, shareBandalart = viewModel::shareBandalart, initShareUrl = viewModel::initShareUrl, ) @@ -62,7 +65,7 @@ internal fun CompleteRoute( internal fun CompleteScreen( modifier: Modifier = Modifier, uiState: CompleteUiState, - onNavigateBack: () -> Unit, + navigateToHome: () -> Unit, shareBandalart: () -> Unit, initShareUrl: () -> Unit, ) { @@ -108,7 +111,7 @@ internal fun CompleteScreen( horizontalAlignment = Alignment.CenterHorizontally, ) { Spacer(modifier = Modifier.height(16.dp)) - CompleteTopBar(onNavigateBack = onNavigateBack) + CompleteTopBar(onNavigateBack = navigateToHome) Spacer(modifier = Modifier.height(40.dp)) TitleText(text = context.getString(R.string.complete_title)) Box(modifier = Modifier.fillMaxSize()) { diff --git a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteViewModel.kt b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteViewModel.kt index cdd037fe..da140ec2 100644 --- a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteViewModel.kt +++ b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteViewModel.kt @@ -39,8 +39,9 @@ data class CompleteUiState( val error: Throwable? = null, ) -sealed class CompleteUiEvent { - data class ShowToast(val message: UiText) : CompleteUiEvent() +sealed interface CompleteUiEvent { + data object NavigateToHome : CompleteUiEvent + data class ShowToast(val message: UiText) : CompleteUiEvent } @HiltViewModel @@ -111,4 +112,10 @@ class CompleteViewModel @Inject constructor( fun initShareUrl() { _uiState.value = _uiState.value.copy(shareUrl = "") } + + fun navigateToHome() { + viewModelScope.launch { + _eventFlow.emit(CompleteUiEvent.NavigateToHome) + } + } } diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeScreen.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeScreen.kt index 38a72a62..db3f0e24 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeScreen.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeScreen.kt @@ -21,6 +21,7 @@ import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext @@ -30,19 +31,20 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.nexters.bandalart.android.core.designsystem.theme.Gray100 import com.nexters.bandalart.android.core.designsystem.theme.Gray50 +import com.nexters.bandalart.android.core.ui.ObserveAsEvents import com.nexters.bandalart.android.core.ui.R import com.nexters.bandalart.android.core.ui.ThemeColor import com.nexters.bandalart.android.core.ui.component.BandalartDeleteAlertDialog import com.nexters.bandalart.android.core.ui.component.LoadingScreen import com.nexters.bandalart.android.core.ui.component.NetworkErrorAlertDialog import com.nexters.bandalart.android.feature.home.model.BandalartDetailUiModel +import com.nexters.bandalart.android.feature.home.ui.HomeHeader +import com.nexters.bandalart.android.feature.home.ui.HomeTopBar +import com.nexters.bandalart.android.feature.home.ui.ShareButton import com.nexters.bandalart.android.feature.home.ui.bandalart.BandalartChart import com.nexters.bandalart.android.feature.home.ui.bandalart.BandalartEmojiBottomSheet import com.nexters.bandalart.android.feature.home.ui.bandalart.BandalartListBottomSheet import com.nexters.bandalart.android.feature.home.ui.bandalart.BandalartSkeleton -import com.nexters.bandalart.android.feature.home.ui.HomeHeader -import com.nexters.bandalart.android.feature.home.ui.HomeTopBar -import com.nexters.bandalart.android.feature.home.ui.ShareButton import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -58,24 +60,35 @@ internal fun HomeRoute( ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() val context = LocalContext.current + val scope = rememberCoroutineScope() val bandalartCount by remember { derivedStateOf { uiState.bandalartList.size } } - LaunchedEffect(viewModel) { - viewModel.eventFlow.collect { event -> - when (event) { - is HomeUiEvent.ShowSnackbar -> { + ObserveAsEvents(flow = viewModel.eventFlow) { event -> + when (event) { + is HomeUiEvent.NavigateToComplete -> { + navigateToComplete( + event.key, + event.title, + event.profileEmoji.ifEmpty { + context.getString(R.string.home_default_emoji) + }, + ) + } + + is HomeUiEvent.ShowSnackbar -> { + scope.launch { val job = launch { onShowSnackbar(event.message.asString(context)) } delay(SnackbarDuration) job.cancel() } + } - is HomeUiEvent.ShowToast -> { - Toast.makeText(context, event.message.asString(context), Toast.LENGTH_SHORT).show() - } + is HomeUiEvent.ShowToast -> { + Toast.makeText(context, event.message.asString(context), Toast.LENGTH_SHORT).show() } } } @@ -84,7 +97,7 @@ internal fun HomeRoute( modifier = modifier, uiState = uiState, bandalartCount = bandalartCount, - navigateToComplete = navigateToComplete, + navigateToComplete = viewModel::navigateToComplete, getBandalartList = viewModel::getBandalartList, getBandalartDetail = viewModel::getBandalartDetail, createBandalart = viewModel::createBandalart, @@ -110,7 +123,7 @@ internal fun HomeScreen( modifier: Modifier = Modifier, uiState: HomeUiState, bandalartCount: Int, - navigateToComplete: (String, String, String) -> Unit, + navigateToComplete: () -> Unit, getBandalartList: (String?) -> Unit, getBandalartDetail: (String) -> Unit, createBandalart: () -> Unit, @@ -136,18 +149,13 @@ internal fun HomeScreen( } LaunchedEffect(key1 = uiState.bandalartDetailData?.isCompleted) { + val bandalartDetailData = uiState.bandalartDetailData ?: return@LaunchedEffect // 목표를 달성했을 경우 - if (uiState.bandalartDetailData?.isCompleted == true && !uiState.bandalartDetailData.title.isNullOrEmpty()) { + if (bandalartDetailData.isCompleted && !bandalartDetailData.title.isNullOrEmpty()) { // 목표 달성 화면을 띄워 줘야 하는 반다라트일 경우 - val isBandalartCompleted = checkCompletedBandalartKey(uiState.bandalartDetailData.key) + val isBandalartCompleted = checkCompletedBandalartKey(bandalartDetailData.key) if (isBandalartCompleted) { - navigateToComplete( - uiState.bandalartDetailData.key, - uiState.bandalartDetailData.title, - if (uiState.bandalartDetailData.profileEmoji.isNullOrEmpty()) { - context.getString(R.string.home_default_emoji) - } else uiState.bandalartDetailData.profileEmoji, - ) + navigateToComplete() } } } diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeViewModel.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeViewModel.kt index 891d718d..d4feca2e 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeViewModel.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeViewModel.kt @@ -82,9 +82,15 @@ data class HomeUiState( val error: Throwable? = null, ) -sealed class HomeUiEvent { - data class ShowSnackbar(val message: UiText) : HomeUiEvent() - data class ShowToast(val message: UiText) : HomeUiEvent() +sealed interface HomeUiEvent { + data class NavigateToComplete( + val key: String, + val title: String, + val profileEmoji: String, + ) : HomeUiEvent + + data class ShowSnackbar(val message: UiText) : HomeUiEvent + data class ShowToast(val message: UiText) : HomeUiEvent } @HiltViewModel @@ -501,4 +507,16 @@ class HomeViewModel @Inject constructor( deleteBandalartKeyUseCase(bandalartKey) } } + + fun navigateToComplete() { + viewModelScope.launch { + _eventFlow.emit( + HomeUiEvent.NavigateToComplete( + key = uiState.value.bandalartDetailData!!.key, + title = uiState.value.bandalartDetailData!!.title!!, + profileEmoji = uiState.value.bandalartDetailData!!.profileEmoji ?: "", + ), + ) + } + } } diff --git a/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingScreen.kt b/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingScreen.kt index 163e4dda..fe62b9b2 100644 --- a/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingScreen.kt +++ b/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingScreen.kt @@ -26,6 +26,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp +import androidx.hilt.navigation.compose.hiltViewModel import androidx.navigation.NavOptions import com.airbnb.lottie.compose.LottieAnimation import com.airbnb.lottie.compose.LottieCompositionSpec @@ -36,19 +37,32 @@ import com.nexters.bandalart.android.core.ui.R import com.nexters.bandalart.android.core.ui.component.BandalartButton import com.nexters.bandalart.android.core.ui.component.TitleText import com.nexters.bandalart.android.core.designsystem.theme.Gray50 +import com.nexters.bandalart.android.core.ui.ObserveAsEvents import com.nexters.bandalart.android.feature.onboarding.navigation.ONBOARDING_NAVIGATION_ROUTE @Composable internal fun OnBoardingRoute( navigateToHome: (NavOptions) -> Unit, + viewModel: SplashViewModel = hiltViewModel(), ) { - OnBoardingScreen(navigateToHome = navigateToHome) + ObserveAsEvents(flow = viewModel.eventFlow) { event -> + when (event) { + is OnBoardingUiEvent.NavigateToHome -> { + val options = NavOptions.Builder() + .setPopUpTo(ONBOARDING_NAVIGATION_ROUTE, inclusive = true) + .build() + navigateToHome(options) + } + } + } + + OnBoardingScreen(navigateToHome = viewModel::navigateToHome) } @Composable internal fun OnBoardingScreen( modifier: Modifier = Modifier, - navigateToHome: (NavOptions) -> Unit, + navigateToHome: () -> Unit, ) { val composition by rememberLottieComposition( spec = LottieCompositionSpec.RawRes( @@ -141,12 +155,7 @@ internal fun OnBoardingScreen( } } BandalartButton( - onClick = { - val options = NavOptions.Builder() - .setPopUpTo(ONBOARDING_NAVIGATION_ROUTE, inclusive = true) - .build() - navigateToHome(options) - }, + onClick = navigateToHome, text = context.getString(R.string.onboarding_start), modifier = Modifier .align(Alignment.BottomCenter) diff --git a/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingViewModel.kt b/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingViewModel.kt new file mode 100644 index 00000000..f5d47666 --- /dev/null +++ b/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingViewModel.kt @@ -0,0 +1,26 @@ +package com.nexters.bandalart.android.feature.onboarding + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.SharedFlow +import kotlinx.coroutines.flow.asSharedFlow +import kotlinx.coroutines.launch +import javax.inject.Inject + +sealed interface OnBoardingUiEvent { + data object NavigateToHome : OnBoardingUiEvent +} + +@HiltViewModel +class SplashViewModel @Inject constructor() : ViewModel() { + private val _eventFlow = MutableSharedFlow() + val eventFlow: SharedFlow = _eventFlow.asSharedFlow() + + fun navigateToHome() { + viewModelScope.launch { + _eventFlow.emit(OnBoardingUiEvent.NavigateToHome) + } + } +} diff --git a/feature/splash/src/main/kotlin/com/nexters/bandalart/android/feature/splash/SplashScreen.kt b/feature/splash/src/main/kotlin/com/nexters/bandalart/android/feature/splash/SplashScreen.kt index c2f3f7f2..1344d67f 100644 --- a/feature/splash/src/main/kotlin/com/nexters/bandalart/android/feature/splash/SplashScreen.kt +++ b/feature/splash/src/main/kotlin/com/nexters/bandalart/android/feature/splash/SplashScreen.kt @@ -15,6 +15,7 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.NavOptions import com.nexters.bandalart.android.core.designsystem.theme.Gray50 +import com.nexters.bandalart.android.core.ui.ObserveAsEvents import com.nexters.bandalart.android.core.ui.R import com.nexters.bandalart.android.core.ui.component.LoadingScreen import com.nexters.bandalart.android.core.ui.component.NetworkErrorAlertDialog @@ -28,10 +29,28 @@ internal fun SplashRoute( ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() + ObserveAsEvents(flow = viewModel.eventFlow) { event -> + when (event) { + is SplashUiEvent.NavigateToOnBoarding -> { + val options = NavOptions.Builder() + .setPopUpTo(SPLASH_NAVIGATION_ROUTE, inclusive = true) + .build() + navigateToOnBoarding(options) + } + + is SplashUiEvent.NavigateToHome -> { + val options = NavOptions.Builder() + .setPopUpTo(SPLASH_NAVIGATION_ROUTE, inclusive = true) + .build() + navigateToHome(options) + } + } + } + SplashScreen( uiState = uiState, - navigateToOnBoarding = navigateToOnBoarding, - navigateToHome = navigateToHome, + navigateToOnBoarding = viewModel::navigateToOnBoarding, + navigateToHome = viewModel::navigateToHome, openNetworkErrorAlertDialog = viewModel::openNetworkErrorAlertDialog, createGuestLoginToken = viewModel::createGuestLoginToken, ) @@ -41,8 +60,8 @@ internal fun SplashRoute( fun SplashScreen( modifier: Modifier = Modifier, uiState: SplashUiState, - navigateToOnBoarding: (NavOptions) -> Unit, - navigateToHome: (NavOptions) -> Unit, + navigateToOnBoarding: () -> Unit, + navigateToHome: () -> Unit, openNetworkErrorAlertDialog: (Boolean) -> Unit, createGuestLoginToken: () -> Unit, ) { @@ -65,17 +84,11 @@ fun SplashScreen( } !uiState.isLoggedIn -> { - val options = NavOptions.Builder() - .setPopUpTo(SPLASH_NAVIGATION_ROUTE, inclusive = true) - .build() - navigateToOnBoarding(options) + navigateToOnBoarding() } uiState.isLoggedIn -> { - val options = NavOptions.Builder() - .setPopUpTo(SPLASH_NAVIGATION_ROUTE, inclusive = true) - .build() - navigateToHome(options) + navigateToHome() } } diff --git a/feature/splash/src/main/kotlin/com/nexters/bandalart/android/feature/splash/SplashViewModel.kt b/feature/splash/src/main/kotlin/com/nexters/bandalart/android/feature/splash/SplashViewModel.kt index ad57fe6a..e89286b7 100644 --- a/feature/splash/src/main/kotlin/com/nexters/bandalart/android/feature/splash/SplashViewModel.kt +++ b/feature/splash/src/main/kotlin/com/nexters/bandalart/android/feature/splash/SplashViewModel.kt @@ -7,14 +7,17 @@ import com.nexters.bandalart.android.core.domain.usecase.login.CreateGuestLoginT import com.nexters.bandalart.android.core.domain.usecase.login.GetGuestLoginTokenUseCase import com.nexters.bandalart.android.core.domain.usecase.login.SetGuestLoginTokenUseCase import dagger.hilt.android.lifecycle.HiltViewModel -import javax.inject.Inject import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.SharedFlow import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch import timber.log.Timber +import javax.inject.Inject /** * SplashUiState @@ -32,6 +35,11 @@ data class SplashUiState( val error: Throwable? = null, ) +sealed interface SplashUiEvent { + data object NavigateToOnBoarding : SplashUiEvent + data object NavigateToHome : SplashUiEvent +} + @HiltViewModel class SplashViewModel @Inject constructor( private val getGuestLoginTokenUseCase: GetGuestLoginTokenUseCase, @@ -43,6 +51,9 @@ class SplashViewModel @Inject constructor( private val _uiState = MutableStateFlow(SplashUiState()) val uiState: StateFlow = _uiState.asStateFlow() + private val _eventFlow = MutableSharedFlow() + val eventFlow: SharedFlow = _eventFlow.asSharedFlow() + init { viewModelScope.launch { delay(500) @@ -80,9 +91,11 @@ class SplashViewModel @Inject constructor( _uiState.update { it.copy(isLoggedIn = false) } createBandalartUseCase() } + result.isSuccess && result.getOrNull() == null -> { Timber.e("Request succeeded but data validation failed") } + result.isFailure -> { _uiState.update { it.copy(isNetworkErrorAlertDialogOpened = true) } } @@ -94,4 +107,16 @@ class SplashViewModel @Inject constructor( fun openNetworkErrorAlertDialog(flag: Boolean) { _uiState.update { it.copy(isNetworkErrorAlertDialogOpened = flag) } } + + fun navigateToOnBoarding() { + viewModelScope.launch { + _eventFlow.emit(SplashUiEvent.NavigateToOnBoarding) + } + } + + fun navigateToHome() { + viewModelScope.launch { + _eventFlow.emit(SplashUiEvent.NavigateToHome) + } + } } From ac54f22719c7cfc070ab831c07688b12c4bdd372 Mon Sep 17 00:00:00 2001 From: JI HUN LEE <51016231+easyhooon@users.noreply.github.com> Date: Wed, 15 Nov 2023 10:05:14 +0900 Subject: [PATCH 06/11] =?UTF-8?q?=EB=84=A4=EB=B9=84=EA=B2=8C=EC=9D=B4?= =?UTF-8?q?=EC=85=98=20=EB=B0=94=20=EC=8A=A4=ED=83=80=EC=9D=BC=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=9D=BC=20=EB=AA=A8=EB=8B=AC=20=EB=B0=94=ED=85=80?= =?UTF-8?q?=EC=8B=9C=ED=8A=B8=EC=9D=98=20=ED=95=98=EB=8B=A8=EC=9D=98=20?= =?UTF-8?q?=ED=8C=A8=EB=94=A9=EC=9D=98=20=EC=B0=A8=EC=9D=B4=EA=B0=80=20?= =?UTF-8?q?=EC=83=9D=EA=B8=B0=EB=8A=94=20=EA=B2=83=EC=9D=84=20=EB=B3=B4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nexters/bandalart/android/core/ui/WindowInsets.kt | 8 ++++++++ .../android/feature/home/BandalartBottomSheet.kt | 5 +++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/WindowInsets.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/WindowInsets.kt index e2156def..8a61a266 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/WindowInsets.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/WindowInsets.kt @@ -7,6 +7,8 @@ import androidx.compose.foundation.layout.systemBars import androidx.compose.runtime.Composable import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp // https://sungbin.land/jetpack-compose-windowinsets-fa8f286f092b val NavigationBarHeightDp @@ -33,3 +35,9 @@ val StatusBarHeightDp rectangle.top.toDp() } } + +// https://stackoverflow.com/questions/75123079/how-do-i-detect-which-type-of-navigation-bar-is-active +@Composable +fun getNavigationBarPadding(): Dp { + return if (NavigationBarHeightDp == 0.dp) 32.dp else NavigationBarHeightDp - 16.dp +} diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt index a3925534..ddbd09be 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt @@ -64,7 +64,6 @@ import com.nexters.bandalart.android.core.designsystem.theme.Gray300 import com.nexters.bandalart.android.core.designsystem.theme.Gray400 import com.nexters.bandalart.android.core.designsystem.theme.Gray700 import com.nexters.bandalart.android.core.designsystem.theme.White -import com.nexters.bandalart.android.core.ui.NavigationBarHeightDp import com.nexters.bandalart.android.core.ui.R import com.nexters.bandalart.android.core.ui.StatusBarHeightDp import com.nexters.bandalart.android.core.ui.ThemeColor @@ -80,6 +79,7 @@ import com.nexters.bandalart.android.core.ui.component.bottomsheet.BottomSheetSu import com.nexters.bandalart.android.core.ui.component.bottomsheet.BottomSheetTextStyle import com.nexters.bandalart.android.core.ui.component.bottomsheet.BottomSheetTopBar import com.nexters.bandalart.android.core.ui.extension.noRippleClickable +import com.nexters.bandalart.android.core.ui.getNavigationBarPadding import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.util.extension.toLocalDateTime import com.nexters.bandalart.android.core.util.extension.toStringLocalDateTime @@ -493,8 +493,9 @@ fun BandalartBottomSheet( }, ) } - Spacer(modifier = Modifier.height(StatusBarHeightDp + NavigationBarHeightDp + 20.dp)) + Spacer(modifier = Modifier.height(StatusBarHeightDp + getNavigationBarPadding())) } } } } + From f7cc9a41ddec5c0d6dd80f06f6f17f9103c2b099 Mon Sep 17 00:00:00 2001 From: JI HUN LEE <51016231+easyhooon@users.noreply.github.com> Date: Wed, 15 Nov 2023 10:35:53 +0900 Subject: [PATCH 07/11] style check success --- .../bandalart/android/feature/home/BandalartBottomSheet.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt index ddbd09be..b846099a 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt @@ -498,4 +498,3 @@ fun BandalartBottomSheet( } } } - From 5d63529c3cfb1e17fa3acdd1b9620433e99e300f Mon Sep 17 00:00:00 2001 From: JI HUN LEE <51016231+easyhooon@users.noreply.github.com> Date: Mon, 20 Nov 2023 00:10:32 +0900 Subject: [PATCH 08/11] =?UTF-8?q?@Named=20Annotation=20->=20@Qualifier=20A?= =?UTF-8?q?nnotation=20=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @Named 를 통한 동일한 타입에 대한 식별의 경우 하드 코딩된 문자열이 식별자이므로 휴먼 에러가 발생할 수 있음 @Named 를 통한 식별보단 조금 더 복잡하지만 타입 안정성을 제공하고, 휴먼 에러가 발생할 가능성이 없는 Custom Qualifier(Custom Annotation Class)의 방법으로 변경 --- .../bandalart/android/core/data/di/ServiceModule.kt | 11 +++++------ .../android/core/network/di/NetworkModule.kt | 13 ++++++------- .../android/core/network/di/RetrofitQualifier.kt | 11 +++++++++++ 3 files changed, 22 insertions(+), 13 deletions(-) create mode 100644 core/network/src/main/kotlin/com/nexters/bandalart/android/core/network/di/RetrofitQualifier.kt diff --git a/core/data/src/main/kotlin/com/nexters/bandalart/android/core/data/di/ServiceModule.kt b/core/data/src/main/kotlin/com/nexters/bandalart/android/core/data/di/ServiceModule.kt index 42e051d8..57f5a1da 100644 --- a/core/data/src/main/kotlin/com/nexters/bandalart/android/core/data/di/ServiceModule.kt +++ b/core/data/src/main/kotlin/com/nexters/bandalart/android/core/data/di/ServiceModule.kt @@ -2,13 +2,14 @@ package com.nexters.bandalart.android.core.data.di import com.nexters.bandalart.android.core.data.service.BandalartService import com.nexters.bandalart.android.core.data.service.GuestLoginService +import com.nexters.bandalart.android.core.network.di.BandalartApi +import com.nexters.bandalart.android.core.network.di.LoginApi import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import javax.inject.Singleton import retrofit2.Retrofit -import javax.inject.Named +import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) @@ -17,8 +18,7 @@ internal object ServiceModule { @Singleton @Provides internal fun provideBandalartService( - @Named("HttpClient") - retrofit: Retrofit, + @BandalartApi retrofit: Retrofit, ): BandalartService { return retrofit.create(BandalartService::class.java) } @@ -26,8 +26,7 @@ internal object ServiceModule { @Singleton @Provides internal fun provideGuestLoginService( - @Named("AuthHttpClient") - retrofit: Retrofit, + @LoginApi retrofit: Retrofit, ): GuestLoginService { return retrofit.create(GuestLoginService::class.java) } diff --git a/core/network/src/main/kotlin/com/nexters/bandalart/android/core/network/di/NetworkModule.kt b/core/network/src/main/kotlin/com/nexters/bandalart/android/core/network/di/NetworkModule.kt index 9b530f8e..cffdd6c8 100644 --- a/core/network/src/main/kotlin/com/nexters/bandalart/android/core/network/di/NetworkModule.kt +++ b/core/network/src/main/kotlin/com/nexters/bandalart/android/core/network/di/NetworkModule.kt @@ -19,8 +19,6 @@ import io.ktor.client.request.header import io.ktor.http.ContentType import io.ktor.http.contentType import io.ktor.serialization.kotlinx.json.json -import java.util.concurrent.TimeUnit -import javax.inject.Singleton import kotlinx.coroutines.runBlocking import kotlinx.serialization.json.Json import okhttp3.Interceptor @@ -29,7 +27,8 @@ import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor import retrofit2.Retrofit import timber.log.Timber -import javax.inject.Named +import java.util.concurrent.TimeUnit +import javax.inject.Singleton private const val MaxTimeoutMillis = 3000L private const val MaxRetryCount = 3 @@ -91,10 +90,10 @@ internal object NetworkModule { } } + @LoginApi @Singleton @Provides - @Named("AuthHttpClient") - internal fun provideRetrofitAuthHttpClient( + internal fun provideLoginApiRetrofit( httpLoggingInterceptor: HttpLoggingInterceptor, ): Retrofit { val contentType = "application/json".toMediaType() @@ -110,10 +109,10 @@ internal object NetworkModule { .build() } + @BandalartApi @Singleton @Provides - @Named("HttpClient") - internal fun provideRetrofitHttpClient( + internal fun provideBandalartApiRetrofit( dataStoreProvider: DataStoreProvider, httpLoggingInterceptor: HttpLoggingInterceptor, ): Retrofit { diff --git a/core/network/src/main/kotlin/com/nexters/bandalart/android/core/network/di/RetrofitQualifier.kt b/core/network/src/main/kotlin/com/nexters/bandalart/android/core/network/di/RetrofitQualifier.kt new file mode 100644 index 00000000..517a1a83 --- /dev/null +++ b/core/network/src/main/kotlin/com/nexters/bandalart/android/core/network/di/RetrofitQualifier.kt @@ -0,0 +1,11 @@ +package com.nexters.bandalart.android.core.network.di + +import javax.inject.Qualifier + +@Qualifier +@Retention(AnnotationRetention.BINARY) +annotation class BandalartApi + +@Qualifier +@Retention(AnnotationRetention.BINARY) +annotation class LoginApi From 4a1a4ce62433ea9d89516ead67b5da4511ee3723 Mon Sep 17 00:00:00 2001 From: JI HUN LEE <51016231+easyhooon@users.noreply.github.com> Date: Mon, 20 Nov 2023 07:46:15 +0900 Subject: [PATCH 09/11] =?UTF-8?q?modifier=20parameter=20=EC=88=9C=EC=84=9C?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20modifier=20=EA=B0=80=20?= =?UTF-8?q?=EC=97=86=EB=8A=94=20Composable=20modifier=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 공식 문서에 의하면 modifier 의 위치는 first 'optional' parameter 임, first parameter 가 아니라 --- .../core/ui/component/BandalartDeleteAlertDialog.kt | 2 +- .../android/core/ui/component/BandalartDropDownMenu.kt | 2 +- .../bandalart/android/core/ui/component/CellText.kt | 2 +- .../bandalart/android/core/ui/component/EmojiText.kt | 3 +++ .../bandalart/android/core/ui/component/FixedSizeText.kt | 2 +- .../bandalart/android/core/ui/component/LoadingScreen.kt | 4 +++- .../android/core/ui/component/NetworkErrorAlertDialog.kt | 2 +- .../bandalart/android/core/ui/component/TitleText.kt | 3 +++ .../core/ui/component/bottomsheet/BottomSheetButton.kt | 4 ++-- .../core/ui/component/bottomsheet/BottomSheetDivider.kt | 6 ++++-- .../core/ui/component/bottomsheet/BottomSheetText.kt | 2 +- .../core/ui/component/bottomsheet/BottomSheetTopBar.kt | 3 ++- .../bandalart/android/feature/complete/CompleteScreen.kt | 6 +++--- .../android/feature/complete/ui/CompleteBandalart.kt | 2 +- .../android/feature/complete/ui/CompleteTopBar.kt | 4 ++-- .../android/feature/home/BandalartBottomSheet.kt | 3 ++- .../nexters/bandalart/android/feature/home/HomeScreen.kt | 6 +++--- .../feature/home/ui/CompletionRatioProgressBar.kt | 3 ++- .../bandalart/android/feature/home/ui/HomeHeader.kt | 6 ++---- .../bandalart/android/feature/home/ui/HomeTopBar.kt | 3 ++- .../bandalart/android/feature/home/ui/ShareButton.kt | 2 +- .../android/feature/home/ui/bandalart/BandalartCell.kt | 4 ++-- .../feature/home/ui/bandalart/BandalartCellGrid.kt | 3 ++- .../android/feature/home/ui/bandalart/BandalartChart.kt | 2 +- .../feature/home/ui/bandalart/BandalartColorPicker.kt | 3 ++- .../feature/home/ui/bandalart/BandalartDatePicker.kt | 3 ++- .../home/ui/bandalart/BandalartEmojiBottomSheet.kt | 4 ++-- .../feature/home/ui/bandalart/BandalartEmojiPicker.kt | 2 +- .../android/feature/home/ui/bandalart/BandalartItem.kt | 2 +- .../home/ui/bandalart/BandalartListBottomSheet.kt | 2 +- .../feature/home/ui/bandalart/BandalartSkeleton.kt | 6 +++++- .../feature/home/ui/bandalart/BandalartSkeletonScreen.kt | 2 +- .../android/feature/onboarding/OnBoardingScreen.kt | 9 +++++++-- .../feature/onboarding/{ => ui}/PagerIndicator.kt | 5 +++-- .../bandalart/android/feature/splash/SplashScreen.kt | 4 +++- 35 files changed, 74 insertions(+), 47 deletions(-) rename feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/{ => ui}/PagerIndicator.kt (92%) diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDeleteAlertDialog.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDeleteAlertDialog.kt index 817dc2e0..9a9f0210 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDeleteAlertDialog.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDeleteAlertDialog.kt @@ -33,11 +33,11 @@ import com.nexters.bandalart.android.core.designsystem.theme.White @Composable fun BandalartDeleteAlertDialog( - modifier: Modifier = Modifier, title: String, message: String, onDeleteClicked: () -> Unit, onCancelClicked: () -> Unit, + modifier: Modifier = Modifier, ) { val context = LocalContext.current Dialog(onDismissRequest = { onCancelClicked() }) { diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDropDownMenu.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDropDownMenu.kt index b6b892ea..6fb32843 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDropDownMenu.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/BandalartDropDownMenu.kt @@ -30,10 +30,10 @@ import com.nexters.bandalart.android.core.designsystem.theme.pretendard @Composable fun BandalartDropDownMenu( - modifier: Modifier = Modifier, openDropDownMenu: (Boolean) -> Unit, isDropDownMenuOpened: Boolean, onDeleteClicked: () -> Unit, + modifier: Modifier = Modifier, ) { val context = LocalContext.current MaterialTheme( diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/CellText.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/CellText.kt index 41f59a5c..0d374dce 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/CellText.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/CellText.kt @@ -23,10 +23,10 @@ val cellLineBreak = LineBreak( @Composable fun CellText( - modifier: Modifier = Modifier, cellText: String, cellTextColor: Color, fontWeight: FontWeight, + modifier: Modifier = Modifier, textAlpha: Float = 1f, ) { Text( diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/EmojiText.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/EmojiText.kt index 55892c17..fac366a0 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/EmojiText.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/EmojiText.kt @@ -2,6 +2,7 @@ package com.nexters.bandalart.android.core.ui.component import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier import androidx.compose.ui.unit.TextUnit import com.nexters.bandalart.android.core.ui.nonScaleSp @@ -9,9 +10,11 @@ import com.nexters.bandalart.android.core.ui.nonScaleSp fun EmojiText( emojiText: String?, fontSize: TextUnit, + modifier: Modifier = Modifier, ) { Text( text = emojiText ?: "", + modifier = modifier, fontSize = fontSize.nonScaleSp, ) } diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/FixedSizeText.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/FixedSizeText.kt index 4a7c5590..5dc5939d 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/FixedSizeText.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/FixedSizeText.kt @@ -14,10 +14,10 @@ import com.nexters.bandalart.android.core.designsystem.theme.pretendard @Composable fun FixedSizeText( text: String, - modifier: Modifier = Modifier, color: Color, fontSize: TextUnit, fontWeight: FontWeight, + modifier: Modifier = Modifier, fontFamily: FontFamily = pretendard, letterSpacing: TextUnit = TextUnit.Unspecified, textAlign: TextAlign? = null, diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/LoadingScreen.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/LoadingScreen.kt index 77cbc00f..737ed4f3 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/LoadingScreen.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/LoadingScreen.kt @@ -23,7 +23,9 @@ import com.nexters.bandalart.android.core.designsystem.theme.Black import com.nexters.bandalart.android.core.designsystem.theme.White @Composable -fun LoadingScreen(modifier: Modifier = Modifier) { +fun LoadingScreen( + modifier: Modifier = Modifier, +) { Box( modifier = modifier.noRippleClickable { }, contentAlignment = Alignment.Center, diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/NetworkErrorAlertDialog.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/NetworkErrorAlertDialog.kt index d9c4be3e..ad96a138 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/NetworkErrorAlertDialog.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/NetworkErrorAlertDialog.kt @@ -31,10 +31,10 @@ import com.nexters.bandalart.android.core.designsystem.theme.White @Composable fun NetworkErrorAlertDialog( - modifier: Modifier = Modifier, title: String, message: String, onConfirmClick: () -> Unit, + modifier: Modifier = Modifier, ) { val context = LocalContext.current Dialog(onDismissRequest = {}) { diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/TitleText.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/TitleText.kt index e8439e86..876d1f2e 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/TitleText.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/TitleText.kt @@ -2,6 +2,7 @@ package com.nexters.bandalart.android.core.ui.component import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.sp @@ -11,9 +12,11 @@ import com.nexters.bandalart.android.core.designsystem.theme.pretendard @Composable fun TitleText( text: String, + modifier: Modifier = Modifier, ) { Text( text = text, + modifier = modifier, fontFamily = pretendard, fontWeight = FontWeight.W700, fontSize = 22.sp.nonScaleSp, diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetButton.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetButton.kt index d62fca87..174dbb66 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetButton.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetButton.kt @@ -15,8 +15,8 @@ import com.nexters.bandalart.android.core.ui.R @Composable fun BottomSheetDeleteButton( - modifier: Modifier = Modifier, onClick: () -> Unit, + modifier: Modifier = Modifier, ) { FilledIconButton( onClick = onClick, @@ -32,9 +32,9 @@ fun BottomSheetDeleteButton( @Composable fun BottomSheetCompleteButton( - modifier: Modifier = Modifier, isBlankCell: Boolean, onClick: () -> Unit, + modifier: Modifier = Modifier, ) { FilledIconButton( onClick = onClick, diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetDivider.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetDivider.kt index 342faa94..8fdb6963 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetDivider.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetDivider.kt @@ -10,9 +10,11 @@ import androidx.compose.ui.unit.dp import com.nexters.bandalart.android.core.designsystem.theme.Gray300 @Composable -fun BottomSheetDivider() { +fun BottomSheetDivider( + modifier: Modifier = Modifier, +) { Box( - modifier = Modifier + modifier = modifier .height(1.dp) .fillMaxWidth() .background(Gray300), diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetText.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetText.kt index 17f8749d..5f17a45f 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetText.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetText.kt @@ -16,10 +16,10 @@ import com.nexters.bandalart.android.core.ui.R @Composable fun BottomSheetTitleText( - modifier: Modifier = Modifier, isMainCell: Boolean, isSubCell: Boolean, isBlankCell: Boolean, + modifier: Modifier = Modifier, ) { FixedSizeText( text = diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetTopBar.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetTopBar.kt index 1b0a2154..91522319 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetTopBar.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/bottomsheet/BottomSheetTopBar.kt @@ -31,11 +31,12 @@ fun BottomSheetTopBar( bottomSheetState: SheetState, onResult: (Boolean, Boolean) -> Unit, bottomSheetClosed: () -> Unit, + modifier: Modifier = Modifier, ) { val scope = rememberCoroutineScope() Box( - modifier = Modifier + modifier = modifier .fillMaxWidth() .padding(horizontal = 16.dp), ) { diff --git a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteScreen.kt b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteScreen.kt index 0e14a7ef..29ef6ada 100644 --- a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteScreen.kt +++ b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/CompleteScreen.kt @@ -33,8 +33,8 @@ import com.nexters.bandalart.android.feature.complete.ui.CompleteTopBar @Composable internal fun CompleteRoute( - modifier: Modifier = Modifier, onNavigateBack: () -> Unit, + modifier: Modifier = Modifier, viewModel: CompleteViewModel = hiltViewModel(), ) { val context = LocalContext.current @@ -53,21 +53,21 @@ internal fun CompleteRoute( } CompleteScreen( - modifier = modifier, uiState = uiState, navigateToHome = viewModel::navigateToHome, shareBandalart = viewModel::shareBandalart, initShareUrl = viewModel::initShareUrl, + modifier = modifier, ) } @Composable internal fun CompleteScreen( - modifier: Modifier = Modifier, uiState: CompleteUiState, navigateToHome: () -> Unit, shareBandalart: () -> Unit, initShareUrl: () -> Unit, + modifier: Modifier = Modifier, ) { val context = LocalContext.current val composition by rememberLottieComposition( diff --git a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/CompleteBandalart.kt b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/CompleteBandalart.kt index 8514bab5..5d3df636 100644 --- a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/CompleteBandalart.kt +++ b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/CompleteBandalart.kt @@ -34,8 +34,8 @@ import com.nexters.bandalart.android.feature.complete.CompleteUiState @Composable fun CompleteBandalart( - modifier: Modifier = Modifier, uiState: CompleteUiState, + modifier: Modifier = Modifier, ) { val context = LocalContext.current diff --git a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/CompleteTopBar.kt b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/CompleteTopBar.kt index aa5f332c..b2b0b6d0 100644 --- a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/CompleteTopBar.kt +++ b/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/CompleteTopBar.kt @@ -18,12 +18,12 @@ import com.nexters.bandalart.android.core.ui.R @Composable fun CompleteTopBar( - modifier: Modifier = Modifier, onNavigateBack: () -> Unit, + modifier: Modifier = Modifier, ) { val context = LocalContext.current Row( - modifier + modifier = modifier .fillMaxWidth() .padding(horizontal = 16.dp), ) { diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt index b846099a..be4fd35e 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt @@ -104,6 +104,7 @@ fun BandalartBottomSheet( bottomSheetState: Boolean, bottomSheetDataChangedState: Boolean, ) -> Unit, + modifier: Modifier = Modifier, viewModel: BottomSheetViewModel = hiltViewModel(), ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() @@ -117,7 +118,7 @@ fun BandalartBottomSheet( viewModel.bottomSheetClosed() onResult(false, false) }, - modifier = Modifier + modifier = modifier .wrapContentSize() .statusBarsPadding() .noRippleClickable { }, diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeScreen.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeScreen.kt index db3f0e24..3efb7b72 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeScreen.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/HomeScreen.kt @@ -53,9 +53,9 @@ private const val SnackbarDuration = 1000L @Composable internal fun HomeRoute( - modifier: Modifier = Modifier, navigateToComplete: (String, String, String) -> Unit, onShowSnackbar: suspend (String) -> Boolean, + modifier: Modifier = Modifier, viewModel: HomeViewModel = hiltViewModel(), ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() @@ -94,7 +94,6 @@ internal fun HomeRoute( } HomeScreen( - modifier = modifier, uiState = uiState, bandalartCount = bandalartCount, navigateToComplete = viewModel::navigateToComplete, @@ -115,12 +114,12 @@ internal fun HomeRoute( initShareUrl = viewModel::initShareUrl, checkCompletedBandalartKey = viewModel::checkCompletedBandalartKey, openNetworkErrorDialog = viewModel::openNetworkErrorAlertDialog, + modifier = modifier, ) } @Composable internal fun HomeScreen( - modifier: Modifier = Modifier, uiState: HomeUiState, bandalartCount: Int, navigateToComplete: () -> Unit, @@ -141,6 +140,7 @@ internal fun HomeScreen( initShareUrl: () -> Unit, checkCompletedBandalartKey: suspend (String) -> Boolean, openNetworkErrorDialog: (Boolean) -> Unit, + modifier: Modifier = Modifier, ) { val context = LocalContext.current diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/CompletionRatioProgressBar.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/CompletionRatioProgressBar.kt index 9746ff4e..3e43d595 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/CompletionRatioProgressBar.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/CompletionRatioProgressBar.kt @@ -29,6 +29,7 @@ import com.nexters.bandalart.android.core.designsystem.theme.Gray100 fun CompletionRatioProgressBar( completionRatio: Int, progressColor: Color, + modifier: Modifier = Modifier, ) { var progress by remember { mutableFloatStateOf(0f) } @@ -46,7 +47,7 @@ fun CompletionRatioProgressBar( } Column( - modifier = Modifier + modifier = modifier .fillMaxWidth() .wrapContentSize(), ) { diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeHeader.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeHeader.kt index b3b1ac01..840b697a 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeHeader.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeHeader.kt @@ -45,16 +45,14 @@ import com.nexters.bandalart.android.feature.home.HomeUiState @Composable fun HomeHeader( - modifier: Modifier = Modifier, uiState: HomeUiState, openDropDownMenu: (Boolean) -> Unit, openEmojiBottomSheet: (Boolean) -> Unit, openBandalartDeleteAlertDialog: (Boolean) -> Unit, openCellBottomSheet: (Boolean) -> Unit, + modifier: Modifier = Modifier, ) { - Column( - modifier.padding(horizontal = 16.dp), - ) { + Column(modifier.padding(horizontal = 16.dp)) { Spacer(modifier = Modifier.height(24.dp)) Column { Box(modifier = Modifier.align(Alignment.CenterHorizontally)) { diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeTopBar.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeTopBar.kt index 04d1c7f3..f6adc357 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeTopBar.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeTopBar.kt @@ -33,9 +33,10 @@ import com.nexters.bandalart.android.core.ui.nonScaleSp internal fun HomeTopBar( bandalartCount: Int, onShowBandalartList: () -> Unit, + modifier: Modifier = Modifier, ) { Box( - modifier = Modifier + modifier = modifier .fillMaxWidth() .height(62.dp) .background(White), diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/ShareButton.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/ShareButton.kt index ccb79ac5..d2bece33 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/ShareButton.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/ShareButton.kt @@ -26,9 +26,9 @@ import com.nexters.bandalart.android.feature.home.HomeUiState @Composable fun ShareButton( - modifier: Modifier = Modifier, uiState: HomeUiState, shareBandalart: (String) -> Unit, + modifier: Modifier = Modifier, ) { Box( modifier = modifier diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCell.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCell.kt index 30980b38..7dd65aa6 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCell.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCell.kt @@ -58,13 +58,13 @@ data class SubCell( @Composable fun BandalartCell( - modifier: Modifier = Modifier, bandalartKey: String, themeColor: ThemeColor, isMainCell: Boolean, - cellInfo: CellInfo = CellInfo(), cellData: BandalartCellUiModel, bottomSheetDataChanged: (Boolean) -> Unit, + modifier: Modifier = Modifier, + cellInfo: CellInfo = CellInfo(), outerPadding: Dp = 3.dp, innerPadding: Dp = 2.dp, mainCellPadding: Dp = 1.dp, diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCellGrid.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCellGrid.kt index 87000866..9d17e554 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCellGrid.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartCellGrid.kt @@ -18,9 +18,10 @@ fun BandalartCellGrid( rows: Int, cols: Int, bottomSheetDataChanged: (Boolean) -> Unit, + modifier: Modifier = Modifier, ) { Column( - modifier = Modifier.fillMaxSize(), + modifier = modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, verticalArrangement = Arrangement.SpaceEvenly, ) { diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartChart.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartChart.kt index b59bc7dd..229711e3 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartChart.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartChart.kt @@ -24,11 +24,11 @@ import com.nexters.bandalart.android.feature.home.HomeUiState @Composable fun BandalartChart( - modifier: Modifier = Modifier, bandalartKey: String, uiState: HomeUiState, themeColor: ThemeColor, bottomSheetDataChanged: (Boolean) -> Unit, + modifier: Modifier = Modifier, ) { val context = LocalContext.current val screenWidthDp = LocalConfiguration.current.screenWidthDp.dp diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartColorPicker.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartColorPicker.kt index c906ec41..edaa1d5c 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartColorPicker.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartColorPicker.kt @@ -29,9 +29,10 @@ import com.nexters.bandalart.android.core.ui.extension.toColor fun BandalartColorPicker( initColor: ThemeColor, onResult: (ThemeColor) -> Unit, + modifier: Modifier = Modifier, ) { Row( - modifier = Modifier + modifier = modifier .fillMaxWidth() .height(45.dp), verticalAlignment = Alignment.CenterVertically, diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartDatePicker.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartDatePicker.kt index fb4e8a89..22a1c33a 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartDatePicker.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartDatePicker.kt @@ -52,10 +52,11 @@ fun BandalartDatePicker( datePickerScope: CoroutineScope, datePickerState: SheetState, currentDueDate: LocalDateTime, + modifier: Modifier = Modifier, ) { Column( + modifier = modifier.fillMaxWidth(), horizontalAlignment = Alignment.CenterHorizontally, - modifier = Modifier.fillMaxWidth(), ) { val chosenYear = remember { mutableStateOf(currentDueDate.year.toString()) } val chosenMonth = remember { mutableStateOf(currentDueDate.monthValue.toString()) } diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartEmojiBottomSheet.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartEmojiBottomSheet.kt index c16f615a..586653c7 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartEmojiBottomSheet.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartEmojiBottomSheet.kt @@ -22,6 +22,7 @@ fun BandalartEmojiBottomSheet( bottomSheetState: Boolean, bottomSheetDataChangedState: Boolean, ) -> Unit, + modifier: Modifier = Modifier, viewModel: HomeViewModel = hiltViewModel(), ) { val bottomSheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) @@ -30,8 +31,7 @@ fun BandalartEmojiBottomSheet( onDismissRequest = { onResult(false, false) }, - modifier = Modifier - .wrapContentSize(), + modifier = modifier.wrapContentSize(), sheetState = bottomSheetState, dragHandle = null, ) { diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartEmojiPicker.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartEmojiPicker.kt index 4d346d2b..b74a9a77 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartEmojiPicker.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartEmojiPicker.kt @@ -40,11 +40,11 @@ import kotlinx.coroutines.launch @Composable fun BandalartEmojiPicker( - modifier: Modifier = Modifier, currentEmoji: String?, isBottomSheet: Boolean, onResult: (String?, Boolean) -> Unit, emojiPickerState: SheetState, + modifier: Modifier = Modifier, ): @Composable (ColumnScope.() -> Unit) { return { val scope = rememberCoroutineScope() diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartItem.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartItem.kt index 1d1c12f8..21411bed 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartItem.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartItem.kt @@ -45,12 +45,12 @@ import kotlinx.coroutines.launch @Composable fun BandalartItem( - modifier: Modifier = Modifier, bottomSheetState: SheetState, bandalartItem: BandalartDetailUiModel, currentBandalartKey: String, onClick: (String) -> Unit, onCancelClicked: () -> Unit, + modifier: Modifier = Modifier, ) { val scope = rememberCoroutineScope() diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartListBottomSheet.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartListBottomSheet.kt index 8df6e47e..3aa54169 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartListBottomSheet.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartListBottomSheet.kt @@ -52,7 +52,6 @@ import kotlinx.coroutines.launch @Composable fun BandalartListBottomSheet( - modifier: Modifier = Modifier, bandalartList: ImmutableList, currentBandalartKey: String, getBandalartDetail: (String) -> Unit, @@ -60,6 +59,7 @@ fun BandalartListBottomSheet( showSkeletonChanged: (Boolean) -> Unit, onCancelClicked: () -> Unit, createBandalart: () -> Unit, + modifier: Modifier = Modifier, ) { val scope = rememberCoroutineScope() val bottomSheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeleton.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeleton.kt index f38a0b41..0a850050 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeleton.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeleton.kt @@ -7,6 +7,7 @@ import androidx.compose.animation.core.infiniteRepeatable import androidx.compose.animation.core.rememberInfiniteTransition import androidx.compose.animation.core.tween import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Brush import androidx.compose.ui.res.stringResource @@ -19,7 +20,9 @@ import com.nexters.bandalart.android.core.designsystem.theme.Gray50 import com.nexters.bandalart.android.core.designsystem.theme.White @Composable -fun BandalartSkeleton() { +fun BandalartSkeleton( + modifier: Modifier = Modifier, +) { val shimmerMainColors = listOf( Gray200, Gray300, @@ -66,5 +69,6 @@ fun BandalartSkeleton() { taskBrush = taskBrush, subBrush = subBrush, mainBrush = mainBrush, + modifier = modifier, ) } diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeletonScreen.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeletonScreen.kt index 9caa6593..b2867fee 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeletonScreen.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeletonScreen.kt @@ -53,10 +53,10 @@ import com.nexters.bandalart.android.feature.home.ui.CompletionRatioProgressBar @Composable fun BandalartSkeletonScreen( - modifier: Modifier = Modifier, taskBrush: Brush, subBrush: Brush, mainBrush: Brush, + modifier: Modifier = Modifier, ) { Surface( modifier = modifier.fillMaxSize(), diff --git a/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingScreen.kt b/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingScreen.kt index fe62b9b2..4a81ba7e 100644 --- a/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingScreen.kt +++ b/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingScreen.kt @@ -39,10 +39,12 @@ import com.nexters.bandalart.android.core.ui.component.TitleText import com.nexters.bandalart.android.core.designsystem.theme.Gray50 import com.nexters.bandalart.android.core.ui.ObserveAsEvents import com.nexters.bandalart.android.feature.onboarding.navigation.ONBOARDING_NAVIGATION_ROUTE +import com.nexters.bandalart.android.feature.onboarding.ui.PagerIndicator @Composable internal fun OnBoardingRoute( navigateToHome: (NavOptions) -> Unit, + modifier: Modifier = Modifier, viewModel: SplashViewModel = hiltViewModel(), ) { ObserveAsEvents(flow = viewModel.eventFlow) { event -> @@ -56,13 +58,16 @@ internal fun OnBoardingRoute( } } - OnBoardingScreen(navigateToHome = viewModel::navigateToHome) + OnBoardingScreen( + navigateToHome = viewModel::navigateToHome, + modifier = modifier, + ) } @Composable internal fun OnBoardingScreen( - modifier: Modifier = Modifier, navigateToHome: () -> Unit, + modifier: Modifier = Modifier, ) { val composition by rememberLottieComposition( spec = LottieCompositionSpec.RawRes( diff --git a/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/PagerIndicator.kt b/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/ui/PagerIndicator.kt similarity index 92% rename from feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/PagerIndicator.kt rename to feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/ui/PagerIndicator.kt index 416fede5..bebbcab7 100644 --- a/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/PagerIndicator.kt +++ b/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/ui/PagerIndicator.kt @@ -1,6 +1,6 @@ @file:OptIn(ExperimentalFoundationApi::class) -package com.nexters.bandalart.android.feature.onboarding +package com.nexters.bandalart.android.feature.onboarding.ui import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background @@ -25,8 +25,9 @@ import com.nexters.bandalart.android.core.designsystem.theme.Gray700 fun PagerIndicator( pageCount: Int, pagerState: PagerState, + modifier: Modifier = Modifier, ) { - Box { + Box(modifier = modifier) { Row( modifier = Modifier .height(32.dp) diff --git a/feature/splash/src/main/kotlin/com/nexters/bandalart/android/feature/splash/SplashScreen.kt b/feature/splash/src/main/kotlin/com/nexters/bandalart/android/feature/splash/SplashScreen.kt index 1344d67f..930038d8 100644 --- a/feature/splash/src/main/kotlin/com/nexters/bandalart/android/feature/splash/SplashScreen.kt +++ b/feature/splash/src/main/kotlin/com/nexters/bandalart/android/feature/splash/SplashScreen.kt @@ -25,6 +25,7 @@ import com.nexters.bandalart.android.feature.splash.navigation.SPLASH_NAVIGATION internal fun SplashRoute( navigateToOnBoarding: (NavOptions) -> Unit, navigateToHome: (NavOptions) -> Unit, + modifier: Modifier = Modifier, viewModel: SplashViewModel = hiltViewModel(), ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() @@ -53,17 +54,18 @@ internal fun SplashRoute( navigateToHome = viewModel::navigateToHome, openNetworkErrorAlertDialog = viewModel::openNetworkErrorAlertDialog, createGuestLoginToken = viewModel::createGuestLoginToken, + modifier = modifier, ) } @Composable fun SplashScreen( - modifier: Modifier = Modifier, uiState: SplashUiState, navigateToOnBoarding: () -> Unit, navigateToHome: () -> Unit, openNetworkErrorAlertDialog: (Boolean) -> Unit, createGuestLoginToken: () -> Unit, + modifier: Modifier = Modifier, ) { val context = LocalContext.current From 221b5bad090fdd8bf65634727626a6d292f1ccfb Mon Sep 17 00:00:00 2001 From: JI HUN LEE <51016231+easyhooon@users.noreply.github.com> Date: Mon, 20 Nov 2023 07:52:07 +0900 Subject: [PATCH 10/11] =?UTF-8?q?core:ui=20=EB=AA=A8=EB=93=88=EB=A1=9C=20?= =?UTF-8?q?=EB=B9=BC=EB=82=BC=20=EC=88=98=20=EC=9E=88=EB=8A=94=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EC=A0=80=EB=B8=94=20core:ui=20=EB=AA=A8=EB=93=88?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../android/core/ui/component}/CompletionRatioProgressBar.kt | 2 +- .../android/core/ui/component/NetworkErrorAlertDialog.kt | 4 ++-- .../bandalart/android/core/ui/component}/PagerIndicator.kt | 2 +- .../bandalart/android/core/ui/component}/SaveImageButton.kt | 2 +- .../nexters/bandalart/android/feature/home/ui/HomeAppTitle.kt | 2 +- .../nexters/bandalart/android/feature/home/ui/HomeHeader.kt | 1 + .../feature/home/ui/{ShareButton.kt => HomeShareButton.kt} | 0 .../feature/home/ui/bandalart/BandalartSkeletonScreen.kt | 2 +- .../bandalart/android/feature/onboarding/OnBoardingScreen.kt | 2 +- 9 files changed, 9 insertions(+), 8 deletions(-) rename {feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui => core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component}/CompletionRatioProgressBar.kt (97%) rename {feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/ui => core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component}/PagerIndicator.kt (96%) rename {feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui => core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component}/SaveImageButton.kt (97%) rename feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/{ShareButton.kt => HomeShareButton.kt} (100%) diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/CompletionRatioProgressBar.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/CompletionRatioProgressBar.kt similarity index 97% rename from feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/CompletionRatioProgressBar.kt rename to core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/CompletionRatioProgressBar.kt index 3e43d595..e729c1b8 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/CompletionRatioProgressBar.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/CompletionRatioProgressBar.kt @@ -1,4 +1,4 @@ -package com.nexters.bandalart.android.feature.home.ui +package com.nexters.bandalart.android.core.ui.component import androidx.compose.animation.animateContentSize import androidx.compose.animation.core.LinearOutSlowInEasing diff --git a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/NetworkErrorAlertDialog.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/NetworkErrorAlertDialog.kt index ad96a138..827ea6f7 100644 --- a/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/NetworkErrorAlertDialog.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/NetworkErrorAlertDialog.kt @@ -54,8 +54,8 @@ fun NetworkErrorAlertDialog( ) Spacer(modifier = Modifier.height(8.dp)) FixedSizeText( - modifier = Modifier.align(Alignment.CenterHorizontally), text = title, + modifier = Modifier.align(Alignment.CenterHorizontally), color = Gray900, fontSize = 20.sp, fontWeight = FontWeight.W700, @@ -65,8 +65,8 @@ fun NetworkErrorAlertDialog( ) Spacer(modifier = Modifier.height(8.dp)) FixedSizeText( - modifier = Modifier.align(Alignment.CenterHorizontally), text = message, + modifier = Modifier.align(Alignment.CenterHorizontally), color = Gray400, fontSize = 14.sp, fontWeight = FontWeight.W500, diff --git a/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/ui/PagerIndicator.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/PagerIndicator.kt similarity index 96% rename from feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/ui/PagerIndicator.kt rename to core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/PagerIndicator.kt index bebbcab7..7a7c1df6 100644 --- a/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/ui/PagerIndicator.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/PagerIndicator.kt @@ -1,6 +1,6 @@ @file:OptIn(ExperimentalFoundationApi::class) -package com.nexters.bandalart.android.feature.onboarding.ui +package com.nexters.bandalart.android.core.ui.component import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background diff --git a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/SaveImageButton.kt b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/SaveImageButton.kt similarity index 97% rename from feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/SaveImageButton.kt rename to core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/SaveImageButton.kt index 9c666bcc..f62b644e 100644 --- a/feature/complete/src/main/kotlin/com/nexters/bandalart/android/feature/complete/ui/SaveImageButton.kt +++ b/core/ui/src/main/kotlin/com/nexters/bandalart/android/core/ui/component/SaveImageButton.kt @@ -1,6 +1,6 @@ @file:Suppress("unused") -package com.nexters.bandalart.android.feature.complete.ui +package com.nexters.bandalart.android.core.ui.component import androidx.compose.foundation.Image import androidx.compose.foundation.clickable diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeAppTitle.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeAppTitle.kt index afe1c87e..9a3d760d 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeAppTitle.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeAppTitle.kt @@ -41,8 +41,8 @@ fun HomeAppKoreanTitle( modifier: Modifier = Modifier, ) { FixedSizeText( - modifier = modifier, text = stringResource(R.string.bandalart), + modifier = modifier, color = Gray900, fontSize = 28.sp, fontWeight = FontWeight.W400, diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeHeader.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeHeader.kt index 840b697a..38a5517f 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeHeader.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeHeader.kt @@ -39,6 +39,7 @@ import com.nexters.bandalart.android.core.designsystem.theme.Gray300 import com.nexters.bandalart.android.core.designsystem.theme.Gray600 import com.nexters.bandalart.android.core.designsystem.theme.Gray900 import com.nexters.bandalart.android.core.designsystem.theme.MainColor +import com.nexters.bandalart.android.core.ui.component.CompletionRatioProgressBar import com.nexters.bandalart.android.core.ui.extension.toColor import com.nexters.bandalart.android.core.util.extension.toFormatDate import com.nexters.bandalart.android.feature.home.HomeUiState diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/ShareButton.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeShareButton.kt similarity index 100% rename from feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/ShareButton.kt rename to feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/HomeShareButton.kt diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeletonScreen.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeletonScreen.kt index b2867fee..d56d8e99 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeletonScreen.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/ui/bandalart/BandalartSkeletonScreen.kt @@ -49,7 +49,7 @@ import com.nexters.bandalart.android.core.designsystem.theme.Gray600 import com.nexters.bandalart.android.core.designsystem.theme.Gray900 import com.nexters.bandalart.android.core.designsystem.theme.White import com.nexters.bandalart.android.core.designsystem.theme.neurimboGothicRegular -import com.nexters.bandalart.android.feature.home.ui.CompletionRatioProgressBar +import com.nexters.bandalart.android.core.ui.component.CompletionRatioProgressBar @Composable fun BandalartSkeletonScreen( diff --git a/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingScreen.kt b/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingScreen.kt index 4a81ba7e..3c1dda69 100644 --- a/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingScreen.kt +++ b/feature/onboarding/src/main/kotlin/com/nexters/bandalart/android/feature/onboarding/OnBoardingScreen.kt @@ -39,7 +39,7 @@ import com.nexters.bandalart.android.core.ui.component.TitleText import com.nexters.bandalart.android.core.designsystem.theme.Gray50 import com.nexters.bandalart.android.core.ui.ObserveAsEvents import com.nexters.bandalart.android.feature.onboarding.navigation.ONBOARDING_NAVIGATION_ROUTE -import com.nexters.bandalart.android.feature.onboarding.ui.PagerIndicator +import com.nexters.bandalart.android.core.ui.component.PagerIndicator @Composable internal fun OnBoardingRoute( From ddb11aad9ab53d4fd34532c1fba3f6e848ce40bd Mon Sep 17 00:00:00 2001 From: JI HUN LEE <51016231+easyhooon@users.noreply.github.com> Date: Fri, 24 Nov 2023 22:06:43 +0900 Subject: [PATCH 11/11] =?UTF-8?q?deprecated=20=EB=90=9C=20=EC=95=84?= =?UTF-8?q?=EC=9D=B4=EC=BD=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 필요 없는 import 제거 --- .../android/feature/home/BandalartBottomSheet.kt | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt index f5ae0481..34ad38c4 100644 --- a/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt +++ b/feature/home/src/main/kotlin/com/nexters/bandalart/android/feature/home/BandalartBottomSheet.kt @@ -65,6 +65,7 @@ import com.nexters.bandalart.android.core.designsystem.theme.Gray100 import com.nexters.bandalart.android.core.designsystem.theme.Gray300 import com.nexters.bandalart.android.core.designsystem.theme.Gray400 import com.nexters.bandalart.android.core.designsystem.theme.Gray700 +import com.nexters.bandalart.android.core.designsystem.theme.Transparent import com.nexters.bandalart.android.core.designsystem.theme.White import com.nexters.bandalart.android.core.ui.R import com.nexters.bandalart.android.core.ui.StatusBarHeightDp @@ -85,15 +86,6 @@ import com.nexters.bandalart.android.core.ui.getNavigationBarPadding import com.nexters.bandalart.android.core.ui.nonScaleSp import com.nexters.bandalart.android.core.util.extension.toLocalDateTime import com.nexters.bandalart.android.core.util.extension.toStringLocalDateTime -import com.nexters.bandalart.android.core.ui.extension.nonScaleSp -import com.nexters.bandalart.android.core.ui.extension.toLocalDateTime -import com.nexters.bandalart.android.core.ui.extension.toStringLocalDateTime -import com.nexters.bandalart.android.core.designsystem.theme.Gray100 -import com.nexters.bandalart.android.core.designsystem.theme.Gray300 -import com.nexters.bandalart.android.core.designsystem.theme.Gray400 -import com.nexters.bandalart.android.core.designsystem.theme.Gray700 -import com.nexters.bandalart.android.core.designsystem.theme.Transparent -import com.nexters.bandalart.android.core.designsystem.theme.White import com.nexters.bandalart.android.feature.home.model.BandalartCellUiModel import com.nexters.bandalart.android.feature.home.model.UpdateBandalartMainCellModel import com.nexters.bandalart.android.feature.home.model.UpdateBandalartSubCellModel @@ -101,8 +93,8 @@ import com.nexters.bandalart.android.feature.home.model.UpdateBandalartTaskCellM import com.nexters.bandalart.android.feature.home.ui.bandalart.BandalartColorPicker import com.nexters.bandalart.android.feature.home.ui.bandalart.BandalartDatePicker import com.nexters.bandalart.android.feature.home.ui.bandalart.BandalartEmojiPicker -import java.time.LocalDateTime import kotlinx.coroutines.launch +import java.time.LocalDateTime @Composable fun BandalartBottomSheet( @@ -371,7 +363,7 @@ fun BandalartBottomSheet( .align(Alignment.CenterEnd) .height(21.dp) .aspectRatio(1f), - imageVector = Icons.Default.ArrowForwardIos, + imageVector = Icons.AutoMirrored.Filled.ArrowForwardIos, contentDescription = stringResource(R.string.arrow_forward_descrption), tint = Gray400, )