From abc3a3b42cc4687891c4f231af30735f6d4930c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=BC=ED=98=81?= Date: Wed, 3 Jun 2026 09:50:23 +0900 Subject: [PATCH 1/3] =?UTF-8?q?refactor:=20Material=20Icons=EB=A5=BC=20?= =?UTF-8?q?=EC=BB=A4=EC=8A=A4=ED=85=80=20=EB=B2=A1=ED=84=B0=20=EB=A6=AC?= =?UTF-8?q?=EC=86=8C=EC=8A=A4=EB=A1=9C=20=EA=B5=90=EC=B2=B4=20=EB=B0=8F=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EC=9D=98=EC=A1=B4=EC=84=B1=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 기본 Material Icons(`Search`, `PlayArrow`, `Person`, `Settings`)를 대체할 커스텀 벡터 드로어블 리소스 추가 - `SearchableSongList`, `MemorialReceivedDetailScreen`, `TopHeader` 컴포저블에서 `Icons.Default` 대신 `painterResource`를 사용하도록 수정 - `core:ui` 및 `afternote:presentation` 모듈의 `build.gradle.kts`와 `libs.versions.toml`에서 미사용되는 `material-icons-core` 의존성 삭제 - `MainActivity`에서 `enableEdgeToEdge()` 호출 위치를 `onCreate` 상단으로 이동하여 엣지 투 엣지 설정 시점 최적화 --- .../java/com/afternote/afternote_fe/MainActivity.kt | 4 +--- core/ui/build.gradle.kts | 1 - feature/afternote/presentation/build.gradle.kts | 1 - .../receiver/detail/MemorialReceivedDetailScreen.kt | 4 +--- .../presentation/receiver/summary/TopHeader.kt | 9 ++++----- .../shared/detail/song/SearchableSongList.kt | 5 ++--- .../main/res/drawable/feature_afternote_ic_person.xml | 11 +++++++++++ .../res/drawable/feature_afternote_ic_play_arrow.xml | 11 +++++++++++ .../main/res/drawable/feature_afternote_ic_search.xml | 11 +++++++++++ .../res/drawable/feature_afternote_ic_settings.xml | 11 +++++++++++ gradle/libs.versions.toml | 1 - 11 files changed, 52 insertions(+), 17 deletions(-) create mode 100644 feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_person.xml create mode 100644 feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_play_arrow.xml create mode 100644 feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_search.xml create mode 100644 feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_settings.xml diff --git a/app/src/main/java/com/afternote/afternote_fe/MainActivity.kt b/app/src/main/java/com/afternote/afternote_fe/MainActivity.kt index 63264448c..73988804f 100644 --- a/app/src/main/java/com/afternote/afternote_fe/MainActivity.kt +++ b/app/src/main/java/com/afternote/afternote_fe/MainActivity.kt @@ -22,9 +22,9 @@ class MainActivity : FragmentActivity() { override fun onCreate(savedInstanceState: Bundle?) { val splashScreen = installSplashScreen() super.onCreate(savedInstanceState) + enableEdgeToEdge() if (BuildConfig.DEBUG && intent.getBooleanExtra(EXTRA_DEBUG_START_TIMELETTER, false)) { - enableEdgeToEdge() setContent { AfternoteTheme { AppNavigation(startDestination = Route.TimeLetter) @@ -38,8 +38,6 @@ class MainActivity : FragmentActivity() { viewModel.startRoute.value == null } - enableEdgeToEdge() - setContent { AfternoteTheme { val startRoute by viewModel.startRoute.collectAsStateWithLifecycle() diff --git a/core/ui/build.gradle.kts b/core/ui/build.gradle.kts index b3bd3795f..0bb00e329 100644 --- a/core/ui/build.gradle.kts +++ b/core/ui/build.gradle.kts @@ -15,7 +15,6 @@ dependencies { implementation(projects.core.common) implementation(libs.coil.compose) implementation(libs.coil.network.okhttp) - implementation(libs.androidx.compose.material.icons.core) // Compose Preview Screenshot Testing (#241) screenshotTestImplementation(libs.screenshot.validation.api) diff --git a/feature/afternote/presentation/build.gradle.kts b/feature/afternote/presentation/build.gradle.kts index bd4ed7667..c81c3c189 100644 --- a/feature/afternote/presentation/build.gradle.kts +++ b/feature/afternote/presentation/build.gradle.kts @@ -20,7 +20,6 @@ dependencies { implementation(projects.core.model) implementation(projects.core.common) implementation(projects.core.ui) - implementation(libs.androidx.compose.material.icons.core) implementation(libs.coil.network.okhttp) implementation(libs.coil.compose) implementation(libs.androidx.activity.compose) diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/detail/MemorialReceivedDetailScreen.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/detail/MemorialReceivedDetailScreen.kt index fab6330dc..9599a495a 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/detail/MemorialReceivedDetailScreen.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/detail/MemorialReceivedDetailScreen.kt @@ -19,8 +19,6 @@ import androidx.compose.foundation.layout.statusBarsPadding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.PlayArrow import androidx.compose.material3.Icon import androidx.compose.material3.Scaffold import androidx.compose.material3.Text @@ -216,7 +214,7 @@ private fun ReceiverVideoSection( contentAlignment = Alignment.Center, ) { Icon( - imageVector = Icons.Default.PlayArrow, + painter = painterResource(R.drawable.feature_afternote_ic_play_arrow), contentDescription = "Play", tint = AfternoteDesign.colors.white, modifier = diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/summary/TopHeader.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/summary/TopHeader.kt index 93747589e..b84abb9f6 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/summary/TopHeader.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/summary/TopHeader.kt @@ -3,15 +3,14 @@ package com.afternote.feature.afternote.presentation.receiver.summary import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Person -import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.Icon import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier +import androidx.compose.ui.res.painterResource import androidx.compose.ui.unit.dp import com.afternote.core.ui.theme.AfternoteDesign import com.afternote.core.ui.topbar.DetailTopBar +import com.afternote.feature.afternote.presentation.R @Composable fun TopHeader(modifier: Modifier = Modifier) { @@ -20,14 +19,14 @@ fun TopHeader(modifier: Modifier = Modifier) { title = "AFTERNOTE", actions = { Icon( - imageVector = Icons.Default.Person, + painter = painterResource(R.drawable.feature_afternote_ic_person), contentDescription = null, modifier = Modifier.size(24.dp), tint = AfternoteDesign.colors.gray9, ) Spacer(modifier = Modifier.width(16.dp)) Icon( - imageVector = Icons.Default.Settings, + painter = painterResource(R.drawable.feature_afternote_ic_settings), contentDescription = null, modifier = Modifier.size(24.dp), tint = AfternoteDesign.colors.gray9, diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/shared/detail/song/SearchableSongList.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/shared/detail/song/SearchableSongList.kt index c59a98647..9d0172852 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/shared/detail/song/SearchableSongList.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/shared/detail/song/SearchableSongList.kt @@ -25,8 +25,6 @@ import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.input.TextFieldLineLimits import androidx.compose.foundation.text.input.TextFieldState import androidx.compose.foundation.text.input.rememberTextFieldState -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.Search import androidx.compose.material3.Icon import androidx.compose.material3.Scaffold import androidx.compose.material3.Text @@ -44,6 +42,7 @@ import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.platform.LocalFocusManager +import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction @@ -539,7 +538,7 @@ private fun SongSearchTextField( } Spacer(modifier = Modifier.width(8.dp)) Icon( - imageVector = Icons.Default.Search, + painter = painterResource(R.drawable.feature_afternote_ic_search), contentDescription = stringResource(R.string.song_search_label), tint = AfternoteDesign.colors.gray9, modifier = Modifier.size(24.dp), diff --git a/feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_person.xml b/feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_person.xml new file mode 100644 index 000000000..deebb3d40 --- /dev/null +++ b/feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_person.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_play_arrow.xml b/feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_play_arrow.xml new file mode 100644 index 000000000..95e40a5c5 --- /dev/null +++ b/feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_play_arrow.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_search.xml b/feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_search.xml new file mode 100644 index 000000000..8f3b3b48a --- /dev/null +++ b/feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_search.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_settings.xml b/feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_settings.xml new file mode 100644 index 000000000..7279c4da9 --- /dev/null +++ b/feature/afternote/presentation/src/main/res/drawable/feature_afternote_ic_settings.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4d231a7c1..23cd5a860 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -65,7 +65,6 @@ androidx-compose-ui-tooling-preview = { group = "androidx.compose.ui", name = "u androidx-compose-ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } androidx-compose-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3" } -androidx-compose-material-icons-core = { group = "androidx.compose.material", name = "material-icons-core" } androidx-compose-material-icons-extended = { group = "androidx.compose.material", name = "material-icons-extended" } androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" } material = { group = "com.google.android.material", name = "material", version.ref = "material" } From 526ac129e2f62a70b9c1742cb0e4a28b8d470bbc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=BC=ED=98=81?= Date: Wed, 3 Jun 2026 10:53:07 +0900 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20detekt=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC(detekt.yml)=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 프로젝트 내 정적 분석 도구 설정을 담은 `config/detekt/detekt.yml` 파일 제거 - `@Composable` 함수의 네이밍 규칙(PascalCase) 예외 처리 및 `@Preview` 관련 미사용 멤버 검사 제외 설정 삭제 --- config/detekt/detekt.yml | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 config/detekt/detekt.yml diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml deleted file mode 100644 index 4cd023476..000000000 --- a/config/detekt/detekt.yml +++ /dev/null @@ -1,16 +0,0 @@ -naming: - FunctionNaming: - active: true - functionPattern: '[a-z][a-zA-Z0-9]*' - excludeClassPattern: '$^' - # @Composable 함수는 PascalCase 컨벤션을 따르므로 이 규칙에서 제외. - ignoreAnnotated: - - 'Composable' - -style: - UnusedPrivateMember: - active: true - # @Preview composable은 IDE 프리뷰 전용이라 호출부가 없어도 사용되는 것으로 간주. - ignoreAnnotated: - - 'Preview' - - 'PreviewParameter' From c2396bf68d4a29b6d871f015e9d1ec62f74e052e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=BC=ED=98=81?= Date: Wed, 3 Jun 2026 13:28:45 +0900 Subject: [PATCH 3/3] =?UTF-8?q?test:=20MemorialPlaylistScreen=20=EC=8A=A4?= =?UTF-8?q?=ED=81=AC=EB=A6=B0=EC=83=B7=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20?= =?UTF-8?q?=EB=A0=88=ED=8D=BC=EB=9F=B0=EC=8A=A4=20=EC=9D=B4=EB=AF=B8?= =?UTF-8?q?=EC=A7=80=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `MemorialPlaylistScreenScreenshotTest`의 검증용 레퍼런스 스크린샷 이미지 갱신 --- ...ialPlaylistScreenScreenshot_748aa731_0.png | Bin 32622 -> 32614 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/feature/afternote/presentation/src/screenshotTestDebug/reference/com/afternote/feature/afternote/presentation/receiver/playlist/MemorialPlaylistScreenScreenshotTestKt/memorialPlaylistScreenScreenshot_748aa731_0.png b/feature/afternote/presentation/src/screenshotTestDebug/reference/com/afternote/feature/afternote/presentation/receiver/playlist/MemorialPlaylistScreenScreenshotTestKt/memorialPlaylistScreenScreenshot_748aa731_0.png index 54a1c8c416395c28688c8e02eb86ee64e7eb9d5c..4809373d1a4e5c9442aa8f3c1771532eae7407a6 100644 GIT binary patch delta 14368 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 RN>S#-uhvIP4qyD^{{bl*b=&{| delta 15607 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 Uz2A?4-{to2b=Xt(>*?SA7m6*u!2kdN