diff --git a/app/src/androidTest/java/com/afternote/afternote_fe/AppAndReceiverCompletionAndroidTest.kt b/app/src/androidTest/java/com/afternote/afternote_fe/AppAndReceiverCompletionAndroidTest.kt
index 93a05984c3..59134b050d 100644
--- a/app/src/androidTest/java/com/afternote/afternote_fe/AppAndReceiverCompletionAndroidTest.kt
+++ b/app/src/androidTest/java/com/afternote/afternote_fe/AppAndReceiverCompletionAndroidTest.kt
@@ -49,6 +49,11 @@ import com.afternote.feature.afternote.domain.model.LeaveMessageBlock
import com.afternote.feature.afternote.presentation.receiver.detail.ReceivedAfternoteDetailRoute
import com.afternote.feature.afternote.presentation.receiver.detail.ReceivedAfternoteDetailViewModel
import com.afternote.feature.home.presentation.HomeTabActions
+import com.afternote.feature.home.presentation.receiver.ReceiverHomeActions
+import com.afternote.feature.home.presentation.receiver.ReceiverHomeEvent
+import com.afternote.feature.home.presentation.receiver.ReceiverHomeScreen
+import com.afternote.feature.home.presentation.receiver.ReceiverHomeViewModel
+import com.afternote.feature.home.presentation.receiver.model.ReceiverHomeUiState
import com.afternote.feature.mindrecord.domain.model.ReceiverMindRecords
import com.afternote.feature.mindrecord.domain.repository.WeeklyReportRepository
import com.afternote.feature.mindrecord.domain.testing.FakeMindRecordReceiverRepository
@@ -74,11 +79,6 @@ import com.afternote.feature.receiver.presentation.deliveryverification.Document
import com.afternote.feature.receiver.presentation.deliveryverification.DocumentUploadViewModel
import com.afternote.feature.receiver.presentation.deliveryverification.IdentityVerificationEmailScreen
import com.afternote.feature.receiver.presentation.deliveryverification.IdentityVerificationViewModel
-import com.afternote.feature.receiver.presentation.home.ReceiverHomeActions
-import com.afternote.feature.receiver.presentation.home.ReceiverHomeEvent
-import com.afternote.feature.receiver.presentation.home.ReceiverHomeScreen
-import com.afternote.feature.receiver.presentation.home.ReceiverHomeViewModel
-import com.afternote.feature.receiver.presentation.home.model.ReceiverHomeUiState
import com.afternote.feature.receiver.presentation.navigation.ReceiverNavActions
import com.afternote.feature.receiver.presentation.navigation.model.ReceiverRoute
import com.afternote.feature.timeletter.domain.model.ReceivedTimeLetterList
@@ -329,10 +329,10 @@ class ReceiverRuntimeCompletionAndroidTest {
senderMessage = Result.failure(offline),
)
composeRule
- .onNodeWithText(context.getString(ReceiverR.string.receiver_home_error_message))
+ .onNodeWithText(context.getString(HomeR.string.home_receiver_error_message))
.assertIsDisplayed()
composeRule
- .onNodeWithText(context.getString(ReceiverR.string.receiver_home_retry))
+ .onNodeWithText(context.getString(HomeR.string.home_receiver_retry))
.performClick()
composeRule.waitUntil(timeoutMillis = 5_000) { homeCallCounts().all { it == 2 } }
@@ -365,12 +365,12 @@ class ReceiverRuntimeCompletionAndroidTest {
)
composeRule
- .onNodeWithText(context.getString(ReceiverR.string.receiver_home_sender_record_title, "이발신"))
+ .onNodeWithText(context.getString(HomeR.string.home_receiver_sender_record_title, "이발신"))
.assertIsDisplayed()
composeRule.onNodeWithText("언제나 응원할게").assertIsDisplayed()
composeRule
.onAllNodes(
- hasText(context.getString(ReceiverR.string.receiver_home_section_count_unavailable)),
+ hasText(context.getString(HomeR.string.home_receiver_section_count_unavailable)),
).apply {
assertCountEquals(2)
this[0].performScrollTo().assertIsDisplayed()
diff --git a/app/src/main/java/com/afternote/afternote_fe/navigation/AppNavigation.kt b/app/src/main/java/com/afternote/afternote_fe/navigation/AppNavigation.kt
index db20398b33..64c12f60f6 100644
--- a/app/src/main/java/com/afternote/afternote_fe/navigation/AppNavigation.kt
+++ b/app/src/main/java/com/afternote/afternote_fe/navigation/AppNavigation.kt
@@ -32,9 +32,9 @@ import com.afternote.feature.afternote.presentation.author.navigation.model.Afte
import com.afternote.feature.afternote.presentation.receiver.navigation.receivedAfternoteNavGraph
import com.afternote.feature.home.presentation.HomeTabScreen
import com.afternote.feature.home.presentation.HomeTabViewModel
+import com.afternote.feature.home.presentation.receiver.ReceiverHomeEntry
import com.afternote.feature.mindrecord.presentation.navigation.mindRecordNavGraph
import com.afternote.feature.onboarding.presentation.navigation.onboardingNavGraph
-import com.afternote.feature.receiver.presentation.home.ReceiverHomeEntry
import com.afternote.feature.receiver.presentation.navigation.model.ReceiverRoute
import com.afternote.feature.receiver.presentation.navigation.receiverNavGraph
import com.afternote.feature.setting.presentation.navigation.settingNavGraph
diff --git a/app/src/main/java/com/afternote/afternote_fe/navigation/AppNavigationActions.kt b/app/src/main/java/com/afternote/afternote_fe/navigation/AppNavigationActions.kt
index b5e4ee9748..8f543b3283 100644
--- a/app/src/main/java/com/afternote/afternote_fe/navigation/AppNavigationActions.kt
+++ b/app/src/main/java/com/afternote/afternote_fe/navigation/AppNavigationActions.kt
@@ -14,11 +14,11 @@ import com.afternote.feature.afternote.presentation.author.navigation.model.SELE
import com.afternote.feature.afternote.presentation.receiver.navigation.ReceivedAfternoteNavActions
import com.afternote.feature.afternote.presentation.receiver.navigation.model.ReceivedAfternoteRoute
import com.afternote.feature.home.presentation.HomeTabActions
+import com.afternote.feature.home.presentation.receiver.ReceiverHomeActions
import com.afternote.feature.mindrecord.presentation.navigation.MindRecordNavActions
import com.afternote.feature.mindrecord.presentation.navigation.MindRecordRoute
import com.afternote.feature.onboarding.presentation.navigation.OnboardingNavActions
import com.afternote.feature.onboarding.presentation.navigation.OnboardingRoute
-import com.afternote.feature.receiver.presentation.home.ReceiverHomeActions
import com.afternote.feature.receiver.presentation.navigation.ReceiverNavActions
import com.afternote.feature.receiver.presentation.navigation.model.ReceiverRoute
import com.afternote.feature.setting.presentation.navigation.SettingNavActions
diff --git a/feature/home/presentation/build.gradle.kts b/feature/home/presentation/build.gradle.kts
index 578ffe8ae0..fb4e6b31ca 100644
--- a/feature/home/presentation/build.gradle.kts
+++ b/feature/home/presentation/build.gradle.kts
@@ -20,6 +20,15 @@ dependencies {
implementation(projects.core.ui)
implementation(projects.feature.mindrecord.domain)
implementation(projects.feature.mindrecord.presentation)
+ // 수신자 홈이 3 피처를 모으는 집계 대시보드라 생긴 의존 (#1462).
+ // domain 은 아래 방향이라 순환이 없다. receiver.presentation 은 실패 계측
+ // (ReceiverFailureStage·recordReceiverFailure) 하나 때문인데, 그 계측은 수신자
+ // 진입 인프라의 일부라 feature:receiver 에 남는 편이 맞다 — mindrecord.presentation
+ // 을 이미 같은 이유로 의존하고 있다.
+ implementation(projects.feature.receiver.domain)
+ implementation(projects.feature.receiver.presentation)
+ implementation(projects.feature.afternote.domain)
+ implementation(projects.feature.timeletter.domain)
implementation(libs.androidx.lifecycle.viewmodel.ktx)
implementation(libs.androidx.lifecycle.runtime.compose)
@@ -27,6 +36,10 @@ dependencies {
testImplementation(libs.coroutines.test)
testImplementation(testFixtures(projects.core.domain))
testImplementation(testFixtures(projects.feature.mindrecord.domain))
+ // 수신자 홈 테스트가 쓰던 fixture·스캐너를 함께 옮긴다 (#1462).
+ testImplementation(testFixtures(projects.feature.receiver.domain))
+ testImplementation(testFixtures(projects.feature.timeletter.domain))
+ testImplementation(testFixtures(projects.core.ui))
// 자리표시자가 화면에 도달하는지는 실제로 그려 봐야 확인된다 (#562).
// 로딩 중 배지가 «미완료» 로 확정되지 않는지는 실제로 그려 봐야 확인된다 (#698).
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeActions.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeActions.kt
similarity index 86%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeActions.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeActions.kt
index 2c3b63f735..2f36d99ec2 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeActions.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeActions.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home
+package com.afternote.feature.home.presentation.receiver
/**
* 수신자 홈에서 외부 라우팅으로 빠지는 액션 묶음.
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeEntry.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeEntry.kt
similarity index 95%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeEntry.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeEntry.kt
index 389c53a300..4b3c875167 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeEntry.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeEntry.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home
+package com.afternote.feature.home.presentation.receiver
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeEvent.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeEvent.kt
similarity index 85%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeEvent.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeEvent.kt
index 2dd80b2eec..de5fc81922 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeEvent.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeEvent.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home
+package com.afternote.feature.home.presentation.receiver
/** 수신자 홈 화면 사용자 이벤트. */
sealed interface ReceiverHomeEvent {
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeScreen.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeScreen.kt
similarity index 90%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeScreen.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeScreen.kt
index 6f47593dbd..8170474c03 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeScreen.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeScreen.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home
+package com.afternote.feature.home.presentation.receiver
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
@@ -31,13 +31,13 @@ import com.afternote.core.ui.popup.Popup
import com.afternote.core.ui.popup.PopupType
import com.afternote.core.ui.theme.AfternoteDesign
import com.afternote.core.ui.topbar.HomeTopBar
-import com.afternote.feature.receiver.presentation.R
-import com.afternote.feature.receiver.presentation.home.component.AfternoteSection
-import com.afternote.feature.receiver.presentation.home.component.MindRecordSection
-import com.afternote.feature.receiver.presentation.home.component.SenderMessageHeroCard
-import com.afternote.feature.receiver.presentation.home.component.TimeLetterSection
-import com.afternote.feature.receiver.presentation.home.model.ReceiverDownloadState
-import com.afternote.feature.receiver.presentation.home.model.ReceiverHomeUiState
+import com.afternote.feature.home.presentation.R
+import com.afternote.feature.home.presentation.receiver.component.AfternoteSection
+import com.afternote.feature.home.presentation.receiver.component.MindRecordSection
+import com.afternote.feature.home.presentation.receiver.component.SenderMessageHeroCard
+import com.afternote.feature.home.presentation.receiver.component.TimeLetterSection
+import com.afternote.feature.home.presentation.receiver.model.ReceiverDownloadState
+import com.afternote.feature.home.presentation.receiver.model.ReceiverHomeUiState
/**
* 수신자 홈 화면 — 한 마디 + 마음의 기록·타임레터·애프터노트 카드 + 모든 기록 내려받기 버튼.
@@ -116,7 +116,7 @@ private fun SuccessContent(
// senderName 가 blank 면 헤더·Hero 카드 모두 안 그림 — "故 님이 남기신 기록" 같은 깨진 문구 회피.
if (state.senderName.isNotBlank()) {
Text(
- text = stringResource(R.string.receiver_home_sender_record_title, state.senderName),
+ text = stringResource(R.string.home_receiver_sender_record_title, state.senderName),
style = AfternoteDesign.typography.h2,
color = AfternoteDesign.colors.gray9,
)
@@ -142,7 +142,7 @@ private fun SuccessContent(
onGoClick = actions.onNavigateToAfternote,
)
AfternoteButton(
- text = stringResource(R.string.receiver_home_download_all_button),
+ text = stringResource(R.string.home_receiver_download_all_button),
onClick = { onEvent(ReceiverHomeEvent.RequestDownload) },
type = AfternoteButtonType.Default,
)
@@ -171,7 +171,7 @@ private fun DownloadDialogHost(
if (showDialog) {
Popup(
type = PopupType.Variant2,
- message = stringResource(R.string.receiver_home_download_all_dialog_message),
+ message = stringResource(R.string.home_receiver_download_all_dialog_message),
onConfirm = { onEvent(ReceiverHomeEvent.ConfirmDownload) },
onDismiss = { onEvent(ReceiverHomeEvent.DismissDownload) },
isLoading = state is ReceiverDownloadState.InProgress,
@@ -211,14 +211,14 @@ private fun ErrorState(
) {
Column(horizontalAlignment = Alignment.CenterHorizontally) {
Text(
- text = stringResource(R.string.receiver_home_error_message),
+ text = stringResource(R.string.home_receiver_error_message),
style = AfternoteDesign.typography.bodySmallR,
color = AfternoteDesign.colors.gray7,
)
Spacer(modifier = Modifier.height(16.dp))
TextButton(onClick = onRetry) {
Text(
- text = stringResource(R.string.receiver_home_retry),
+ text = stringResource(R.string.home_receiver_retry),
style = AfternoteDesign.typography.captionLargeB,
color = AfternoteDesign.colors.gray9,
)
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeViewModel.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeViewModel.kt
similarity index 96%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeViewModel.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeViewModel.kt
index 87437f10d4..9088836d69 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeViewModel.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeViewModel.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home
+package com.afternote.feature.home.presentation.receiver
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
@@ -6,15 +6,15 @@ import com.afternote.core.common.reporting.ErrorReporter
import com.afternote.core.common.result.runCatchingCancellable
import com.afternote.core.ui.icon.AfternoteSourceIcon
import com.afternote.feature.afternote.domain.AfternoteType
+import com.afternote.feature.home.presentation.R
+import com.afternote.feature.home.presentation.receiver.model.MindRecordSummary
+import com.afternote.feature.home.presentation.receiver.model.ReceiverDownloadState
+import com.afternote.feature.home.presentation.receiver.model.ReceiverHomeUiState
+import com.afternote.feature.home.presentation.receiver.model.SenderMessage
import com.afternote.feature.mindrecord.domain.model.ReceiverMindRecords
import com.afternote.feature.mindrecord.domain.repository.MindRecordReceiverRepository
import com.afternote.feature.receiver.domain.model.AfterNoteListItem
import com.afternote.feature.receiver.domain.repository.ReceiverRepository
-import com.afternote.feature.receiver.presentation.R
-import com.afternote.feature.receiver.presentation.home.model.MindRecordSummary
-import com.afternote.feature.receiver.presentation.home.model.ReceiverDownloadState
-import com.afternote.feature.receiver.presentation.home.model.ReceiverHomeUiState
-import com.afternote.feature.receiver.presentation.home.model.SenderMessage
import com.afternote.feature.receiver.presentation.reporting.ReceiverFailureStage
import com.afternote.feature.receiver.presentation.reporting.recordReceiverFailure
import com.afternote.feature.timeletter.domain.repository.ReceiverTimeLetterRepository
@@ -205,13 +205,13 @@ class ReceiverHomeViewModel
.onFailure { e ->
errorReporter.recordReceiverFailure(ReceiverFailureStage.RECEIVED_EXPORT_SAVE, e)
updateDownload(
- ReceiverDownloadState.Failed(R.string.receiver_home_download_all_save_failed),
+ ReceiverDownloadState.Failed(R.string.home_receiver_download_all_save_failed),
)
}
}.onFailure { e ->
errorReporter.recordReceiverFailure(ReceiverFailureStage.RECEIVED_EXPORT_DOWNLOAD, e)
updateDownload(
- ReceiverDownloadState.Failed(R.string.receiver_home_download_all_failed),
+ ReceiverDownloadState.Failed(R.string.home_receiver_download_all_failed),
)
}
}
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/AfternoteSection.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/AfternoteSection.kt
similarity index 87%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/AfternoteSection.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/AfternoteSection.kt
index fe1d8b69de..e210950be4 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/AfternoteSection.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/AfternoteSection.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
@@ -22,7 +22,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.afternote.core.ui.icon.AfternoteSourceIcon
import com.afternote.core.ui.theme.AfternoteDesign
-import com.afternote.feature.receiver.presentation.R
+import com.afternote.feature.home.presentation.R
private const val MAX_VISIBLE_ICONS = 4
private val ICON_SIZE = 32.dp
@@ -41,14 +41,14 @@ fun AfternoteSection(
) {
HomeSectionCard(
modifier = modifier,
- title = stringResource(R.string.receiver_home_afternote_section_title),
- description = stringResource(R.string.receiver_home_afternote_section_desc),
+ title = stringResource(R.string.home_receiver_afternote_section_title),
+ description = stringResource(R.string.home_receiver_afternote_section_desc),
countLine =
rememberCountLine(
- prefix = stringResource(R.string.receiver_home_afternote_count_prefix, countText(totalCount)),
- suffix = stringResource(R.string.receiver_home_afternote_count_suffix),
+ prefix = stringResource(R.string.home_receiver_afternote_count_prefix, countText(totalCount)),
+ suffix = stringResource(R.string.home_receiver_afternote_count_suffix),
),
- buttonText = stringResource(R.string.receiver_home_afternote_section_button),
+ buttonText = stringResource(R.string.home_receiver_afternote_section_button),
onButtonClick = onGoClick,
middleContent = {
if (totalCount == null) return@HomeSectionCard
@@ -108,7 +108,7 @@ private fun ExtraCountChip(count: Int) {
contentAlignment = Alignment.Center,
) {
Text(
- text = stringResource(R.string.receiver_home_afternote_extra_count, count),
+ text = stringResource(R.string.home_receiver_afternote_extra_count, count),
style = AfternoteDesign.typography.captionLargeB,
color = AfternoteDesign.colors.white,
)
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/HomeSectionCard.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/HomeSectionCard.kt
similarity index 95%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/HomeSectionCard.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/HomeSectionCard.kt
index 423b3a46e3..78edf29b44 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/HomeSectionCard.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/HomeSectionCard.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.foundation.background
import androidx.compose.foundation.border
@@ -20,7 +20,7 @@ import androidx.compose.ui.text.buildAnnotatedString
import androidx.compose.ui.text.withStyle
import androidx.compose.ui.unit.dp
import com.afternote.core.ui.theme.AfternoteDesign
-import com.afternote.feature.receiver.presentation.R
+import com.afternote.feature.home.presentation.R
/**
* 마음의 기록·타임레터·애프터노트 카드의 공통 컨테이너.
@@ -96,4 +96,4 @@ fun rememberCountLine(
* 두 번 적혀 한쪽만 고쳐질 자리가 된다.
*/
@Composable
-fun countText(count: Int?): String = count?.toString() ?: stringResource(R.string.receiver_home_section_count_unavailable)
+fun countText(count: Int?): String = count?.toString() ?: stringResource(R.string.home_receiver_section_count_unavailable)
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/MindRecordSection.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/MindRecordSection.kt
similarity index 73%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/MindRecordSection.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/MindRecordSection.kt
index bdbb94fad2..4f46cfcd69 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/MindRecordSection.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/MindRecordSection.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row
@@ -9,8 +9,8 @@ import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
-import com.afternote.feature.receiver.presentation.R
-import com.afternote.feature.receiver.presentation.home.model.MindRecordSummary
+import com.afternote.feature.home.presentation.R
+import com.afternote.feature.home.presentation.receiver.model.MindRecordSummary
import com.afternote.core.ui.R as CoreUiR
/**
@@ -22,18 +22,18 @@ fun MindRecordSection(
onGoClick: () -> Unit,
modifier: Modifier = Modifier,
) {
- val totalLabel = stringResource(R.string.receiver_home_mindrecord_total_label)
+ val totalLabel = stringResource(R.string.home_receiver_mindrecord_total_label)
HomeSectionCard(
modifier = modifier,
- title = stringResource(R.string.receiver_home_mindrecord_section_title),
- description = stringResource(R.string.receiver_home_mindrecord_section_desc),
+ title = stringResource(R.string.home_receiver_mindrecord_section_title),
+ description = stringResource(R.string.home_receiver_mindrecord_section_desc),
countLine =
rememberCountLine(
prefix =
- stringResource(R.string.receiver_home_mindrecord_count_prefix, countText(summary?.totalCount)),
- suffix = stringResource(R.string.receiver_home_mindrecord_count_suffix),
+ stringResource(R.string.home_receiver_mindrecord_count_prefix, countText(summary?.totalCount)),
+ suffix = stringResource(R.string.home_receiver_mindrecord_count_suffix),
),
- buttonText = stringResource(R.string.receiver_home_mindrecord_section_button),
+ buttonText = stringResource(R.string.home_receiver_mindrecord_section_button),
onButtonClick = onGoClick,
middleContent = {
// 조회 실패에도 카드를 숨기지 않는다 — 섹션 레이아웃 유지가 시안 확정값이고,
@@ -45,14 +45,14 @@ fun MindRecordSection(
) {
MindRecordStatCard(
iconResId = CoreUiR.drawable.core_ui_ic_mindrecord,
- label = stringResource(R.string.receiver_home_mindrecord_daily_question),
+ label = stringResource(R.string.home_receiver_mindrecord_daily_question),
totalLabel = totalLabel,
count = summary?.dailyQuestionCount,
modifier = Modifier.weight(1f),
)
MindRecordStatCard(
iconResId = CoreUiR.drawable.core_ui_ic_diary,
- label = stringResource(R.string.receiver_home_mindrecord_diary),
+ label = stringResource(R.string.home_receiver_mindrecord_diary),
totalLabel = totalLabel,
count = summary?.diaryCount,
modifier = Modifier.weight(1f),
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/MindRecordStatCard.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/MindRecordStatCard.kt
similarity index 95%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/MindRecordStatCard.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/MindRecordStatCard.kt
index 252204c62c..0d1a4f181d 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/MindRecordStatCard.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/MindRecordStatCard.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.foundation.background
import androidx.compose.foundation.border
@@ -21,7 +21,7 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.style.TextOverflow
import androidx.compose.ui.unit.dp
import com.afternote.core.ui.theme.AfternoteDesign
-import com.afternote.feature.receiver.presentation.R
+import com.afternote.feature.home.presentation.R
/**
* 마음의 기록 섹션 안에 들어가는 작은 통계 카드: 아이콘 → 라벨 → TOTAL → 카운트 (수직 정렬).
@@ -78,7 +78,7 @@ fun MindRecordStatCard(
)
Spacer(modifier = Modifier.height(2.dp))
Text(
- text = count?.toString() ?: stringResource(R.string.receiver_home_section_count_unavailable),
+ text = count?.toString() ?: stringResource(R.string.home_receiver_section_count_unavailable),
style = AfternoteDesign.typography.h3,
color = AfternoteDesign.colors.gray9,
)
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/SectionGoButton.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/SectionGoButton.kt
similarity index 96%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/SectionGoButton.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/SectionGoButton.kt
index b10c28e694..d77cbb2dcf 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/SectionGoButton.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/SectionGoButton.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/SenderMessageHeroCard.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/SenderMessageHeroCard.kt
similarity index 93%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/SenderMessageHeroCard.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/SenderMessageHeroCard.kt
index ca4bb5026e..bf1e8eecb9 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/SenderMessageHeroCard.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/SenderMessageHeroCard.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
@@ -19,7 +19,7 @@ import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import com.afternote.core.ui.theme.AfternoteDesign
-import com.afternote.feature.receiver.presentation.R
+import com.afternote.feature.home.presentation.R
/**
* 고인이 남긴 한 마디 + 작성일 + 본문을 보여주는 그라데이션 카드.
@@ -45,7 +45,7 @@ fun SenderMessageHeroCard(
verticalAlignment = Alignment.CenterVertically,
) {
Text(
- text = stringResource(R.string.receiver_home_hero_title, senderName),
+ text = stringResource(R.string.home_receiver_hero_title, senderName),
style = AfternoteDesign.typography.bodySmallB,
color = AfternoteDesign.colors.gray7,
)
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/TimeLetterSection.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/TimeLetterSection.kt
similarity index 58%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/TimeLetterSection.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/TimeLetterSection.kt
index e8e8174962..4f92f7c3dd 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/component/TimeLetterSection.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/component/TimeLetterSection.kt
@@ -1,9 +1,9 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
-import com.afternote.feature.receiver.presentation.R
+import com.afternote.feature.home.presentation.R
/** 타임레터 섹션 — 단순 카드. */
@Composable
@@ -14,15 +14,15 @@ fun TimeLetterSection(
) {
HomeSectionCard(
modifier = modifier,
- title = stringResource(R.string.receiver_home_timeletter_section_title),
- description = stringResource(R.string.receiver_home_timeletter_section_desc),
+ title = stringResource(R.string.home_receiver_timeletter_section_title),
+ description = stringResource(R.string.home_receiver_timeletter_section_desc),
countLine =
rememberCountLine(
prefix =
- stringResource(R.string.receiver_home_timeletter_count_prefix, countText(totalCount)),
- suffix = stringResource(R.string.receiver_home_timeletter_count_suffix),
+ stringResource(R.string.home_receiver_timeletter_count_prefix, countText(totalCount)),
+ suffix = stringResource(R.string.home_receiver_timeletter_count_suffix),
),
- buttonText = stringResource(R.string.receiver_home_timeletter_section_button),
+ buttonText = stringResource(R.string.home_receiver_timeletter_section_button),
onButtonClick = onGoClick,
)
}
diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/model/ReceiverHomeUiState.kt b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/model/ReceiverHomeUiState.kt
similarity index 96%
rename from feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/model/ReceiverHomeUiState.kt
rename to feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/model/ReceiverHomeUiState.kt
index 003442b4bf..50ddf80a0c 100644
--- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/model/ReceiverHomeUiState.kt
+++ b/feature/home/presentation/src/main/kotlin/com/afternote/feature/home/presentation/receiver/model/ReceiverHomeUiState.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.model
+package com.afternote.feature.home.presentation.receiver.model
import androidx.annotation.StringRes
import androidx.compose.runtime.Immutable
diff --git a/feature/home/presentation/src/main/res/values/strings.xml b/feature/home/presentation/src/main/res/values/strings.xml
index 496404c40f..2ca0700e39 100644
--- a/feature/home/presentation/src/main/res/values/strings.xml
+++ b/feature/home/presentation/src/main/res/values/strings.xml
@@ -13,4 +13,36 @@
다시 시도
–
+
+
+ 故 %1$s님이 남기신 기록
+ %1$s님의 한 마디
+ TOTAL
+ 데일리 질문
+ 일기
+ +%1$d
+ 마음의 기록
+ 고인의 일상적인 생각과 감정, 일기들입니다.
+ 마음의 기록 확인하러 가기
+ 타임레터
+ 고인이 특별한 날에\n수신자님에게 작성한 편지입니다.
+ 라이프 이벤트 레터 확인하러 가기
+ 애프터노트
+ 고인이 사후 정리하고자 하는 데이터입니다.
+ 애프터노트 확인하러 가기
+ –
+ 모든 기록 내려받기
+ 모든 기록을 내려받으시겠습니까?
+ 모든 기록 내려받기에 실패했습니다.
+ 파일 저장에 실패했습니다.
+
+ 정보를 불러오지 못했습니다.
+ 다시 시도
+ "%1$s개 "
+ 마음의 기록이 있습니다.
+ "%1$s개 "
+ 라이프 이벤트 레터가 있습니다.
+ %1$s개
+ 의 애프터노트가 있습니다.
diff --git a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeScreenScreenshotTest.kt b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeScreenScreenshotTest.kt
similarity index 91%
rename from feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeScreenScreenshotTest.kt
rename to feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeScreenScreenshotTest.kt
index d8b2e702c9..75989ec771 100644
--- a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeScreenScreenshotTest.kt
+++ b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeScreenScreenshotTest.kt
@@ -1,12 +1,12 @@
-package com.afternote.feature.receiver.presentation.home
+package com.afternote.feature.home.presentation.receiver
import androidx.compose.runtime.Composable
import androidx.compose.ui.tooling.preview.Preview
import com.afternote.core.ui.icon.AfternoteSourceIcon
import com.afternote.core.ui.theme.AfternoteTheme
-import com.afternote.feature.receiver.presentation.home.model.MindRecordSummary
-import com.afternote.feature.receiver.presentation.home.model.ReceiverHomeUiState
-import com.afternote.feature.receiver.presentation.home.model.SenderMessage
+import com.afternote.feature.home.presentation.receiver.model.MindRecordSummary
+import com.afternote.feature.home.presentation.receiver.model.ReceiverHomeUiState
+import com.afternote.feature.home.presentation.receiver.model.SenderMessage
import com.android.tools.screenshot.PreviewTest
/** baseline 은 화면 픽셀만 본다 — 외부 라우팅은 눌리지 않으므로 빈 액션으로 채운다. */
diff --git a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/AfternoteSectionScreenshotTest.kt b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/AfternoteSectionScreenshotTest.kt
similarity index 92%
rename from feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/AfternoteSectionScreenshotTest.kt
rename to feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/AfternoteSectionScreenshotTest.kt
index f8d11804c4..30837cfa2f 100644
--- a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/AfternoteSectionScreenshotTest.kt
+++ b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/AfternoteSectionScreenshotTest.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
diff --git a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/MindRecordSectionScreenshotTest.kt b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/MindRecordSectionScreenshotTest.kt
similarity index 85%
rename from feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/MindRecordSectionScreenshotTest.kt
rename to feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/MindRecordSectionScreenshotTest.kt
index 45c785571c..cd52f5ec7b 100644
--- a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/MindRecordSectionScreenshotTest.kt
+++ b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/MindRecordSectionScreenshotTest.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
@@ -6,7 +6,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.afternote.core.ui.theme.AfternoteTheme
-import com.afternote.feature.receiver.presentation.home.model.MindRecordSummary
+import com.afternote.feature.home.presentation.receiver.model.MindRecordSummary
import com.android.tools.screenshot.PreviewTest
@PreviewTest
diff --git a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/MindRecordStatCardScreenshotTest.kt b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/MindRecordStatCardScreenshotTest.kt
similarity index 93%
rename from feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/MindRecordStatCardScreenshotTest.kt
rename to feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/MindRecordStatCardScreenshotTest.kt
index 08685d3a1e..b20e42b057 100644
--- a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/MindRecordStatCardScreenshotTest.kt
+++ b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/MindRecordStatCardScreenshotTest.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
diff --git a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/SectionGoButtonScreenshotTest.kt b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/SectionGoButtonScreenshotTest.kt
similarity index 92%
rename from feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/SectionGoButtonScreenshotTest.kt
rename to feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/SectionGoButtonScreenshotTest.kt
index f00d5ddc4f..d9570b6db6 100644
--- a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/SectionGoButtonScreenshotTest.kt
+++ b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/SectionGoButtonScreenshotTest.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
diff --git a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/SenderMessageHeroCardScreenshotTest.kt b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/SenderMessageHeroCardScreenshotTest.kt
similarity index 94%
rename from feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/SenderMessageHeroCardScreenshotTest.kt
rename to feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/SenderMessageHeroCardScreenshotTest.kt
index b7ebed0ec1..838780af46 100644
--- a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/SenderMessageHeroCardScreenshotTest.kt
+++ b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/SenderMessageHeroCardScreenshotTest.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
diff --git a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/TimeLetterSectionScreenshotTest.kt b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/TimeLetterSectionScreenshotTest.kt
similarity index 90%
rename from feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/TimeLetterSectionScreenshotTest.kt
rename to feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/TimeLetterSectionScreenshotTest.kt
index f76049e39a..4847deb56f 100644
--- a/feature/receiver/presentation/src/screenshotTest/kotlin/com/afternote/feature/receiver/presentation/home/component/TimeLetterSectionScreenshotTest.kt
+++ b/feature/home/presentation/src/screenshotTest/kotlin/com/afternote/feature/home/presentation/receiver/component/TimeLetterSectionScreenshotTest.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.compose.foundation.layout.padding
import androidx.compose.runtime.Composable
diff --git a/feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/ReceiverHomeScreenScreenshotTestKt/receiverHomeScreenLoadingScreenshot_748aa731_0.png b/feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/ReceiverHomeScreenScreenshotTestKt/receiverHomeScreenLoadingScreenshot_748aa731_0.png
similarity index 100%
rename from feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/ReceiverHomeScreenScreenshotTestKt/receiverHomeScreenLoadingScreenshot_748aa731_0.png
rename to feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/ReceiverHomeScreenScreenshotTestKt/receiverHomeScreenLoadingScreenshot_748aa731_0.png
diff --git a/feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/ReceiverHomeScreenScreenshotTestKt/receiverHomeScreenPartialFailureScreenshot_748aa731_0.png b/feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/ReceiverHomeScreenScreenshotTestKt/receiverHomeScreenPartialFailureScreenshot_748aa731_0.png
similarity index 100%
rename from feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/ReceiverHomeScreenScreenshotTestKt/receiverHomeScreenPartialFailureScreenshot_748aa731_0.png
rename to feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/ReceiverHomeScreenScreenshotTestKt/receiverHomeScreenPartialFailureScreenshot_748aa731_0.png
diff --git a/feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/ReceiverHomeScreenScreenshotTestKt/receiverHomeScreenSuccessScreenshot_748aa731_0.png b/feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/ReceiverHomeScreenScreenshotTestKt/receiverHomeScreenSuccessScreenshot_748aa731_0.png
similarity index 100%
rename from feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/ReceiverHomeScreenScreenshotTestKt/receiverHomeScreenSuccessScreenshot_748aa731_0.png
rename to feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/ReceiverHomeScreenScreenshotTestKt/receiverHomeScreenSuccessScreenshot_748aa731_0.png
diff --git a/feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/component/AfternoteSectionScreenshotTestKt/afternoteSectionScreenshot_748aa731_0.png b/feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/component/AfternoteSectionScreenshotTestKt/afternoteSectionScreenshot_748aa731_0.png
similarity index 100%
rename from feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/component/AfternoteSectionScreenshotTestKt/afternoteSectionScreenshot_748aa731_0.png
rename to feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/component/AfternoteSectionScreenshotTestKt/afternoteSectionScreenshot_748aa731_0.png
diff --git a/feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/component/MindRecordSectionScreenshotTestKt/mindRecordSectionScreenshot_748aa731_0.png b/feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/component/MindRecordSectionScreenshotTestKt/mindRecordSectionScreenshot_748aa731_0.png
similarity index 100%
rename from feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/component/MindRecordSectionScreenshotTestKt/mindRecordSectionScreenshot_748aa731_0.png
rename to feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/component/MindRecordSectionScreenshotTestKt/mindRecordSectionScreenshot_748aa731_0.png
diff --git a/feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/component/MindRecordStatCardScreenshotTestKt/mindRecordStatCardScreenshot_748aa731_0.png b/feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/component/MindRecordStatCardScreenshotTestKt/mindRecordStatCardScreenshot_748aa731_0.png
similarity index 100%
rename from feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/component/MindRecordStatCardScreenshotTestKt/mindRecordStatCardScreenshot_748aa731_0.png
rename to feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/component/MindRecordStatCardScreenshotTestKt/mindRecordStatCardScreenshot_748aa731_0.png
diff --git a/feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/component/SectionGoButtonScreenshotTestKt/sectionGoButtonScreenshot_748aa731_0.png b/feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/component/SectionGoButtonScreenshotTestKt/sectionGoButtonScreenshot_748aa731_0.png
similarity index 100%
rename from feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/component/SectionGoButtonScreenshotTestKt/sectionGoButtonScreenshot_748aa731_0.png
rename to feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/component/SectionGoButtonScreenshotTestKt/sectionGoButtonScreenshot_748aa731_0.png
diff --git a/feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/component/SenderMessageHeroCardScreenshotTestKt/senderMessageHeroCardScreenshot_748aa731_0.png b/feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/component/SenderMessageHeroCardScreenshotTestKt/senderMessageHeroCardScreenshot_748aa731_0.png
similarity index 100%
rename from feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/component/SenderMessageHeroCardScreenshotTestKt/senderMessageHeroCardScreenshot_748aa731_0.png
rename to feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/component/SenderMessageHeroCardScreenshotTestKt/senderMessageHeroCardScreenshot_748aa731_0.png
diff --git a/feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/component/TimeLetterSectionScreenshotTestKt/timeLetterSectionScreenshot_748aa731_0.png b/feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/component/TimeLetterSectionScreenshotTestKt/timeLetterSectionScreenshot_748aa731_0.png
similarity index 100%
rename from feature/receiver/presentation/src/screenshotTestDebug/reference/com/afternote/feature/receiver/presentation/home/component/TimeLetterSectionScreenshotTestKt/timeLetterSectionScreenshot_748aa731_0.png
rename to feature/home/presentation/src/screenshotTestDebug/reference/com/afternote/feature/home/presentation/receiver/component/TimeLetterSectionScreenshotTestKt/timeLetterSectionScreenshot_748aa731_0.png
diff --git a/feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeDownloadSnackbarTest.kt b/feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeDownloadSnackbarTest.kt
similarity index 85%
rename from feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeDownloadSnackbarTest.kt
rename to feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeDownloadSnackbarTest.kt
index 6691581653..fd114ca365 100644
--- a/feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeDownloadSnackbarTest.kt
+++ b/feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeDownloadSnackbarTest.kt
@@ -1,12 +1,12 @@
-package com.afternote.feature.receiver.presentation.home
+package com.afternote.feature.home.presentation.receiver
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.junit4.v2.createComposeRule
import androidx.compose.ui.test.onNodeWithText
import com.afternote.core.ui.theme.AfternoteTheme
-import com.afternote.feature.receiver.presentation.R
-import com.afternote.feature.receiver.presentation.home.model.ReceiverDownloadState
-import com.afternote.feature.receiver.presentation.home.model.ReceiverHomeUiState
+import com.afternote.feature.home.presentation.R
+import com.afternote.feature.home.presentation.receiver.model.ReceiverDownloadState
+import com.afternote.feature.home.presentation.receiver.model.ReceiverHomeUiState
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
@@ -38,14 +38,14 @@ class ReceiverHomeDownloadSnackbarTest {
@Test
fun `내려받기 실패 상태는 스낵바로 표출된다`() {
- setHomeContent(ReceiverDownloadState.Failed(R.string.receiver_home_download_all_failed))
+ setHomeContent(ReceiverDownloadState.Failed(R.string.home_receiver_download_all_failed))
composeRule.onNodeWithText("모든 기록 내려받기에 실패했습니다.").assertIsDisplayed()
}
@Test
fun `파일 저장 실패 상태도 자기 문구로 표출된다`() {
- setHomeContent(ReceiverDownloadState.Failed(R.string.receiver_home_download_all_save_failed))
+ setHomeContent(ReceiverDownloadState.Failed(R.string.home_receiver_download_all_save_failed))
composeRule.onNodeWithText("파일 저장에 실패했습니다.").assertIsDisplayed()
}
diff --git a/feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeHeaderTest.kt b/feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeHeaderTest.kt
similarity index 97%
rename from feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeHeaderTest.kt
rename to feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeHeaderTest.kt
index b6dcf38554..eaf8715723 100644
--- a/feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeHeaderTest.kt
+++ b/feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeHeaderTest.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home
+package com.afternote.feature.home.presentation.receiver
import androidx.activity.ComponentActivity
import androidx.compose.ui.test.assertCountEquals
@@ -11,7 +11,7 @@ import androidx.compose.ui.test.onNodeWithTag
import com.afternote.core.ui.R
import com.afternote.core.ui.theme.AfternoteTheme
import com.afternote.core.ui.topbar.PROFILE_ICON_TEST_TAG
-import com.afternote.feature.receiver.presentation.home.model.ReceiverHomeUiState
+import com.afternote.feature.home.presentation.receiver.model.ReceiverHomeUiState
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
diff --git a/feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeViewModelTest.kt b/feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeViewModelTest.kt
similarity index 98%
rename from feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeViewModelTest.kt
rename to feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeViewModelTest.kt
index d272fd6c0d..39f968b144 100644
--- a/feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/home/ReceiverHomeViewModelTest.kt
+++ b/feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/ReceiverHomeViewModelTest.kt
@@ -1,14 +1,14 @@
-package com.afternote.feature.receiver.presentation.home
+package com.afternote.feature.home.presentation.receiver
import com.afternote.core.common.reporting.ErrorReporter
+import com.afternote.feature.home.presentation.receiver.model.ReceiverDownloadState
+import com.afternote.feature.home.presentation.receiver.model.ReceiverHomeUiState
import com.afternote.feature.mindrecord.domain.model.MindRecordType
import com.afternote.feature.mindrecord.domain.model.ReceiverMindRecords
import com.afternote.feature.mindrecord.domain.testing.FakeMindRecordReceiverRepository
import com.afternote.feature.receiver.domain.model.AfterNotesListResult
import com.afternote.feature.receiver.domain.model.SenderMessageInfo
import com.afternote.feature.receiver.domain.testing.FakeReceiverRepository
-import com.afternote.feature.receiver.presentation.home.model.ReceiverDownloadState
-import com.afternote.feature.receiver.presentation.home.model.ReceiverHomeUiState
import com.afternote.feature.timeletter.domain.model.ReceivedTimeLetterList
import com.afternote.feature.timeletter.domain.testing.FakeReceiverTimeLetterRepository
import kotlinx.coroutines.Dispatchers
diff --git a/feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/home/component/ReceiverHomeCountFallbackTest.kt b/feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/component/ReceiverHomeCountFallbackTest.kt
similarity index 95%
rename from feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/home/component/ReceiverHomeCountFallbackTest.kt
rename to feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/component/ReceiverHomeCountFallbackTest.kt
index 963eac5b38..d8d7064339 100644
--- a/feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/home/component/ReceiverHomeCountFallbackTest.kt
+++ b/feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/component/ReceiverHomeCountFallbackTest.kt
@@ -1,4 +1,4 @@
-package com.afternote.feature.receiver.presentation.home.component
+package com.afternote.feature.home.presentation.receiver.component
import androidx.activity.ComponentActivity
import androidx.compose.ui.test.assertCountEquals
@@ -7,7 +7,7 @@ import androidx.compose.ui.test.junit4.createAndroidComposeRule
import androidx.compose.ui.test.onAllNodesWithText
import androidx.compose.ui.test.onNodeWithText
import com.afternote.core.ui.theme.AfternoteTheme
-import com.afternote.feature.receiver.presentation.home.model.MindRecordSummary
+import com.afternote.feature.home.presentation.receiver.model.MindRecordSummary
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
diff --git a/feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/component/ReceiverHomeTouchTargetTest.kt b/feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/component/ReceiverHomeTouchTargetTest.kt
new file mode 100644
index 0000000000..861b6efe69
--- /dev/null
+++ b/feature/home/presentation/src/test/kotlin/com/afternote/feature/home/presentation/receiver/component/ReceiverHomeTouchTargetTest.kt
@@ -0,0 +1,49 @@
+package com.afternote.feature.home.presentation.receiver.component
+
+import androidx.compose.ui.semantics.Role
+import androidx.compose.ui.test.junit4.v2.createComposeRule
+import androidx.compose.ui.test.onNodeWithText
+import androidx.compose.ui.test.performClick
+import com.afternote.core.ui.testing.MinimumTouchTargetSize
+import com.afternote.core.ui.testing.assertAccessibleClickTargets
+import com.afternote.core.ui.testing.scanEnabledClickTargets
+import com.afternote.core.ui.theme.AfternoteTheme
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertFalse
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+import org.robolectric.annotation.Config
+
+/**
+ * 수신자 홈 섹션 이동 버튼의 클릭 타깃 가드.
+ *
+ * 종전에는 `feature:receiver` 의 `ReceiverFlowTouchTargetTest` 가 서류 슬롯 카드와 한 테스트에서
+ * 같은 규약을 걸었다. 수신자 홈이 `feature:home` 으로 옮겨지며(#1462) 두 컴포넌트가 다른
+ * 모듈이 됐으므로 단언을 그대로 둔 채 이쪽 몫만 옮겼다.
+ */
+@RunWith(RobolectricTestRunner::class)
+@Config(sdk = [35])
+class ReceiverHomeTouchTargetTest {
+ @get:Rule
+ val composeRule = createComposeRule()
+
+ @Test
+ fun `section go button is a named button target that meets the minimum size`() {
+ var goClicks = 0
+ composeRule.setContent {
+ AfternoteTheme {
+ SectionGoButton(text = "Go", onClick = { goClicks++ })
+ }
+ }
+
+ composeRule.assertAccessibleClickTargets()
+ val goTarget = composeRule.scanEnabledClickTargets().single { it.name == "Go" }
+ assertEquals(Role.Button, goTarget.role)
+ assertFalse(goTarget.isSmallerThan(MinimumTouchTargetSize))
+
+ composeRule.onNodeWithText("Go").performClick()
+ assertEquals(1, goClicks)
+ }
+}
diff --git a/feature/receiver/presentation/src/main/res/values/strings.xml b/feature/receiver/presentation/src/main/res/values/strings.xml
index dcf7352c8a..d8eb2cb24e 100644
--- a/feature/receiver/presentation/src/main/res/values/strings.xml
+++ b/feature/receiver/presentation/src/main/res/values/strings.xml
@@ -1,32 +1,9 @@
- 故 %1$s님이 남기신 기록
- %1$s님의 한 마디
- TOTAL
- 데일리 질문
- 일기
- +%1$d
- 마음의 기록
- 고인의 일상적인 생각과 감정, 일기들입니다.
- 마음의 기록 확인하러 가기
- 타임레터
- 고인이 특별한 날에\n수신자님에게 작성한 편지입니다.
- 라이프 이벤트 레터 확인하러 가기
- 애프터노트
- 고인이 사후 정리하고자 하는 데이터입니다.
- 애프터노트 확인하러 가기
- –
- 모든 기록 내려받기
- 모든 기록을 내려받으시겠습니까?
- 모든 기록 내려받기에 실패했습니다.
- 파일 저장에 실패했습니다.
-
- 정보를 불러오지 못했습니다.
- 다시 시도
- "%1$s개 "
- 마음의 기록이 있습니다.
- "%1$s개 "
- 라이프 이벤트 레터가 있습니다.
- %1$s개
- 의 애프터노트가 있습니다.
diff --git a/feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/ReceiverFlowTouchTargetTest.kt b/feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/ReceiverFlowTouchTargetTest.kt
index c28f4795b5..34c53030c0 100644
--- a/feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/ReceiverFlowTouchTargetTest.kt
+++ b/feature/receiver/presentation/src/test/kotlin/com/afternote/feature/receiver/presentation/ReceiverFlowTouchTargetTest.kt
@@ -12,7 +12,6 @@ import com.afternote.core.ui.testing.scanEnabledClickTargets
import com.afternote.core.ui.theme.AfternoteTheme
import com.afternote.feature.receiver.presentation.deliveryverification.DocumentSlotState
import com.afternote.feature.receiver.presentation.deliveryverification.component.DocumentSlotCard
-import com.afternote.feature.receiver.presentation.home.component.SectionGoButton
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Rule
@@ -24,9 +23,11 @@ import org.robolectric.annotation.Config
/**
* 수신자 흐름 진입 컴포넌트의 클릭 타깃 가드.
*
- * 섹션 이동 버튼(홈)과 서류 슬롯 카드(열람 신청)는 화면이 다르지만 규약이 같다 — 이름이 붙은
- * Button 역할이어야 하고, 최소 터치 크기를 밑돌지 않아야 하며, 한 카드의 촬영·첨부 두 진입점이
- * 서로 다른 콜백으로 갈려야 한다.
+ * 서류 슬롯 카드(열람 신청)는 이름이 붙은 Button 역할이어야 하고, 최소 터치 크기를 밑돌지
+ * 않아야 하며, 한 카드의 촬영·첨부 두 진입점이 서로 다른 콜백으로 갈려야 한다.
+ *
+ * 같은 규약을 거는 섹션 이동 버튼은 수신자 홈과 함께 `feature:home` 으로 옮겼다 (#1462) —
+ * `ReceiverHomeTouchTargetTest` 에 있다.
*/
@RunWith(RobolectricTestRunner::class)
@Config(sdk = [35])
@@ -35,13 +36,11 @@ class ReceiverFlowTouchTargetTest {
val composeRule = createComposeRule()
@Test
- fun `receiver navigation field and attachment actions invoke distinct callbacks`() {
- var goClicks = 0
+ fun `receiver document slot camera and attachment actions invoke distinct callbacks`() {
var pickClicks = 0
composeRule.setContent {
AfternoteTheme {
Column {
- SectionGoButton(text = "Go", onClick = { goClicks++ })
DocumentSlotCard(
title = "Document",
slot = DocumentSlotState(),
@@ -53,20 +52,15 @@ class ReceiverFlowTouchTargetTest {
composeRule.assertAccessibleClickTargets()
val targets = composeRule.scanEnabledClickTargets()
- val goTarget = targets.single { it.name == "Go" }
val attachTarget = targets.single { it.name == "서류 촬영 또는 파일 첨부" }
- assertEquals(Role.Button, goTarget.role)
assertEquals(Role.Button, targets.single { it.name == "촬영 또는 파일 첨부" }.role)
assertEquals(Role.Button, attachTarget.role)
assertEquals(43f, attachTarget.layoutWidth.value, 0.1f)
assertEquals(43f, attachTarget.layoutHeight.value, 0.1f)
- assertFalse(goTarget.isSmallerThan(MinimumTouchTargetSize))
assertFalse(attachTarget.isSmallerThan(MinimumTouchTargetSize))
- composeRule.onNodeWithText("Go").performClick()
composeRule.onNodeWithText("촬영 또는 파일 첨부").performClick()
composeRule.onAllNodesWithContentDescription("서류 촬영 또는 파일 첨부")[0].performClick()
- assertEquals(1, goClicks)
assertEquals(2, pickClicks)
}
}
diff --git a/konsist/src/test/kotlin/com/afternote/konsist/ReceiverHomeResourceKonsistTest.kt b/konsist/src/test/kotlin/com/afternote/konsist/ReceiverHomeResourceKonsistTest.kt
index 019e0c3311..d88cbccb48 100644
--- a/konsist/src/test/kotlin/com/afternote/konsist/ReceiverHomeResourceKonsistTest.kt
+++ b/konsist/src/test/kotlin/com/afternote/konsist/ReceiverHomeResourceKonsistTest.kt
@@ -19,7 +19,7 @@ class ReceiverHomeResourceKonsistTest {
fun `수신자 홈은 다른 feature 의 R 을 참조하지 않는다`() {
AfternoteKonsistScope
.files
- .withPackage("com.afternote.feature.receiver.presentation.home..")
+ .withPackage("com.afternote.feature.home.presentation.receiver..")
.assertFalse { file ->
file.imports.any { import -> FOREIGN_FEATURE_RESOURCE.matches(import.name) } ||
// import 만 보면 FQN 참조가 그대로 빠져나간다 — 이 패키지의 screenshotTest 가
@@ -30,12 +30,12 @@ class ReceiverHomeResourceKonsistTest {
}
private companion object {
- /** 수신자 자신이 아닌 feature 의 `R` (또는 그 하위 참조). */
+ /** 수신자 홈이 사는 `home` 모듈이 아닌 feature 의 `R` (또는 그 하위 참조). #1462 로 모듈이 바뀌었다. */
val FOREIGN_FEATURE_RESOURCE =
- Regex("""^com\.afternote\.feature\.(?!receiver\.)[a-z]+\.presentation\.R(\..*)?$""")
+ Regex("""^com\.afternote\.feature\.(?!home\.)[a-z]+\.presentation\.R(\..*)?$""")
/** 같은 참조를 본문 어디서든 — FQN 으로 쓴 자리를 잡는다. 주석·문자열 오탐은 감수한다. */
val FOREIGN_FEATURE_RESOURCE_REFERENCE =
- Regex("""com\.afternote\.feature\.(?!receiver\.)[a-z]+\.presentation\.R\.""")
+ Regex("""com\.afternote\.feature\.(?!home\.)[a-z]+\.presentation\.R\.""")
}
}
diff --git a/konsist/src/test/kotlin/com/afternote/konsist/ScanScopeKonsistTest.kt b/konsist/src/test/kotlin/com/afternote/konsist/ScanScopeKonsistTest.kt
index 055bd2416d..2513f5bdb3 100644
--- a/konsist/src/test/kotlin/com/afternote/konsist/ScanScopeKonsistTest.kt
+++ b/konsist/src/test/kotlin/com/afternote/konsist/ScanScopeKonsistTest.kt
@@ -254,7 +254,7 @@ class ScanScopeKonsistTest {
checkout,
"feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/home/ProbeHome.kt",
"""
- package com.afternote.feature.receiver.presentation.home
+ package com.afternote.feature.home.presentation.receiver
import com.afternote.feature.afternote.presentation.R
@@ -313,7 +313,7 @@ class ScanScopeKonsistTest {
const val DOMAIN_PACKAGE = "com.afternote..domain.."
const val PRESENTATION_PACKAGE = "com.afternote..presentation.."
- const val RECEIVER_HOME_PACKAGE = "com.afternote.feature.receiver.presentation.home.."
+ const val RECEIVER_HOME_PACKAGE = "com.afternote.feature.home.presentation.receiver.."
const val DTO_PACKAGE = "com.afternote..dto.."
const val SERIALIZABLE = "Serializable"
}