diff --git a/Near/app/src/main/java/com/alarmy/near/data/mapper/FriendSummaryMapper.kt b/Near/app/src/main/java/com/alarmy/near/data/mapper/FriendSummaryMapper.kt
index c1811712..4dcffd3d 100644
--- a/Near/app/src/main/java/com/alarmy/near/data/mapper/FriendSummaryMapper.kt
+++ b/Near/app/src/main/java/com/alarmy/near/data/mapper/FriendSummaryMapper.kt
@@ -13,7 +13,7 @@ fun FriendSummaryEntity.toModel(): FriendSummary =
id = friendId,
name = name,
profileImageUrl = imageUrl,
- lastContactedAt = lastContactAt,
+ lastContactedAt = lastContactAt?.replace("-", "."),
isContacted = true,
contactFrequencyLevel =
when (checkRate) {
diff --git a/Near/app/src/main/java/com/alarmy/near/presentation/feature/friendprofileedittor/FriendProfileEditorScreen.kt b/Near/app/src/main/java/com/alarmy/near/presentation/feature/friendprofileedittor/FriendProfileEditorScreen.kt
index ddff2c75..699d3029 100644
--- a/Near/app/src/main/java/com/alarmy/near/presentation/feature/friendprofileedittor/FriendProfileEditorScreen.kt
+++ b/Near/app/src/main/java/com/alarmy/near/presentation/feature/friendprofileedittor/FriendProfileEditorScreen.kt
@@ -45,17 +45,18 @@ import com.alarmy.near.model.Friend
import com.alarmy.near.model.Relation
import com.alarmy.near.model.ReminderInterval
import com.alarmy.near.presentation.feature.friendprofileedittor.component.NearDatePicker
-import com.alarmy.near.presentation.ui.component.bottomsheet.CycleSettingBottomSheet
import com.alarmy.near.presentation.feature.friendprofileedittor.dialog.EditorExitDialog
import com.alarmy.near.presentation.feature.friendprofileedittor.uistate.FriendProfileEditorUIEvent
import com.alarmy.near.presentation.feature.friendprofileedittor.uistate.FriendProfileEditorUIState
import com.alarmy.near.presentation.ui.component.NearFrame
import com.alarmy.near.presentation.ui.component.appbar.NearTopAppbar
+import com.alarmy.near.presentation.ui.component.bottomsheet.CycleSettingBottomSheet
import com.alarmy.near.presentation.ui.component.radiobutton.NearSmallRadioButton
import com.alarmy.near.presentation.ui.component.textfield.NearLimitedTextField
import com.alarmy.near.presentation.ui.component.textfield.NearTextField
import com.alarmy.near.presentation.ui.extension.onNoRippleClick
import com.alarmy.near.presentation.ui.theme.NearTheme
+import com.alarmy.near.utils.extensions.DateExtension
import kotlinx.coroutines.launch
@Composable
@@ -333,12 +334,7 @@ fun FriendProfileEditorScreen(
horizontalArrangement = Arrangement.SpaceBetween,
) {
Text(
- text =
- stringResource(friendProfileEditorUIState.contactFrequency.reminderInterval.labelRes) +
- stringResource(
- R.string.friend_profile_editor_contact_period_format,
- stringResource(friendProfileEditorUIState.contactFrequency.dayOfWeek.resId),
- ),
+ text = buildContactFrequencyText(friendProfileEditorUIState.contactFrequency),
style = NearTheme.typography.B2_14_MEDIUM,
color = NearTheme.colors.BLACK_1A1A1A,
)
@@ -613,3 +609,29 @@ fun FriendProfileEditorScreenPreview() {
)
}
}
+
+@Composable
+private fun buildContactFrequencyText(contactFrequency: ContactFrequency): String {
+ val intervalText = stringResource(contactFrequency.reminderInterval.labelRes)
+ val suffix =
+ when (contactFrequency.reminderInterval) {
+ ReminderInterval.EVERY_WEEK,
+ ReminderInterval.EVERY_TWO_WEEK,
+ -> DateExtension.getTodayDayOfWeekInKorean()
+ ReminderInterval.EVERY_MONTH,
+ ReminderInterval.EVERY_SIX_MONTH,
+ ->
+ stringResource(
+ R.string.friend_profile_editor_contact_period_day_of_month,
+ DateExtension.getTodayDayOfMonth(),
+ )
+ else -> null
+ }
+ if (suffix == null) {
+ return intervalText
+ }
+ return "$intervalText ${stringResource(
+ R.string.friend_profile_editor_contact_period_format,
+ suffix,
+ )}"
+}
diff --git a/Near/app/src/main/java/com/alarmy/near/presentation/feature/friendprofileedittor/component/NearDatePicker.kt b/Near/app/src/main/java/com/alarmy/near/presentation/feature/friendprofileedittor/component/NearDatePicker.kt
index 2f23a951..9d50b2d3 100644
--- a/Near/app/src/main/java/com/alarmy/near/presentation/feature/friendprofileedittor/component/NearDatePicker.kt
+++ b/Near/app/src/main/java/com/alarmy/near/presentation/feature/friendprofileedittor/component/NearDatePicker.kt
@@ -1,7 +1,7 @@
package com.alarmy.near.presentation.feature.friendprofileedittor.component
+import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.DatePicker
-import androidx.compose.material3.DatePickerColors
import androidx.compose.material3.DatePickerDefaults
import androidx.compose.material3.DatePickerDialog
import androidx.compose.material3.DatePickerState
@@ -12,11 +12,7 @@ import androidx.compose.material3.rememberDatePickerState
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.tooling.preview.Preview
-import com.alarmy.near.presentation.ui.theme.NearColor
import com.alarmy.near.presentation.ui.theme.NearTheme
-import java.text.SimpleDateFormat
-import java.util.Date
-import java.util.Locale
@OptIn(ExperimentalMaterial3Api::class)
@Composable
@@ -33,15 +29,27 @@ fun NearDatePicker(
),
onDismissRequest = onDismiss,
confirmButton = {
- TextButton(onClick = {
- onDateSelected(datePickerState.selectedDateMillis)
- onDismiss()
- }) {
+ TextButton(
+ onClick = {
+ onDateSelected(datePickerState.selectedDateMillis)
+ onDismiss()
+ },
+ colors =
+ ButtonDefaults.textButtonColors(
+ contentColor = NearTheme.colors.BLUE01_5AA2E9,
+ ),
+ ) {
Text("확인")
}
},
dismissButton = {
- TextButton(onClick = onDismiss) {
+ TextButton(
+ onClick = onDismiss,
+ colors =
+ ButtonDefaults.textButtonColors(
+ contentColor = NearTheme.colors.BLUE01_5AA2E9,
+ ),
+ ) {
Text("닫기")
}
},
@@ -57,6 +65,13 @@ fun NearDatePicker(
colors =
DatePickerDefaults.colors().copy(
containerColor = NearTheme.colors.WHITE_FFFFFF,
+ selectedDayContainerColor = NearTheme.colors.BLUE01_5AA2E9,
+ selectedDayContentColor = NearTheme.colors.WHITE_FFFFFF,
+ todayDateBorderColor = NearTheme.colors.BLUE01_5AA2E9,
+ todayContentColor = NearTheme.colors.BLUE01_5AA2E9,
+ currentYearContentColor = NearTheme.colors.BLUE01_5AA2E9,
+ selectedYearContentColor = NearTheme.colors.WHITE_FFFFFF,
+ selectedYearContainerColor = NearTheme.colors.BLUE01_5AA2E9,
),
)
}
diff --git a/Near/app/src/main/java/com/alarmy/near/presentation/ui/theme/Theme.kt b/Near/app/src/main/java/com/alarmy/near/presentation/ui/theme/Theme.kt
index 5737bacc..4e0aed22 100644
--- a/Near/app/src/main/java/com/alarmy/near/presentation/ui/theme/Theme.kt
+++ b/Near/app/src/main/java/com/alarmy/near/presentation/ui/theme/Theme.kt
@@ -6,7 +6,9 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.SideEffect
import androidx.compose.runtime.staticCompositionLocalOf
+import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalView
+import androidx.compose.ui.unit.Density
import androidx.core.view.WindowCompat
val LocalCustomColors =
@@ -29,7 +31,21 @@ fun NearTheme(
darkTheme -> lightColor // TODO DarkTheme 추가시 수정
else -> lightColor
}
+
+ /*
+ * TODO
+ * 하단 부분으로 Typography의 크기를 고정합니다.
+ * 시스템에서 텍스트 크기를 조정해도 앱 내부에서는 변경되지 않기에 접근성을 해칠 수 있습니다.
+ * 추후 다른 방법으로 텍스트 크기를 조정하도록 합니다.
+ * */
+ val currentDensity = LocalDensity.current
+ val themeDensity =
+ Density(
+ density = currentDensity.density,
+ fontScale = 1f,
+ )
CompositionLocalProvider(
+ LocalDensity provides themeDensity,
LocalCustomColors provides colorScheme,
LocalCustomTypography provides Typography,
content = content,
diff --git a/Near/app/src/main/java/com/alarmy/near/utils/extensions/DateExtension.kt b/Near/app/src/main/java/com/alarmy/near/utils/extensions/DateExtension.kt
index 803497c4..fbf71edc 100644
--- a/Near/app/src/main/java/com/alarmy/near/utils/extensions/DateExtension.kt
+++ b/Near/app/src/main/java/com/alarmy/near/utils/extensions/DateExtension.kt
@@ -137,6 +137,12 @@ object DateExtension {
// ReminderInterval을 contactWeek 문자열로 변환
fun toContactWeekString(reminderInterval: ReminderInterval): String = reminderInterval.name
+ // 오늘 날짜의 일(day)을 반환해서 반복 주기 표기에 사용한다.
+ fun getTodayDayOfMonth(): Int {
+ val calendar = Calendar.getInstance()
+ return calendar.get(Calendar.DAY_OF_MONTH)
+ }
+
// 오늘 요일을 DayOfWeek enum으로 반환
fun getTodayDayOfWeek(): DayOfWeek {
val calendar = Calendar.getInstance()
diff --git a/Near/app/src/main/res/values/strings.xml b/Near/app/src/main/res/values/strings.xml
index 145bbba6..742b5e75 100644
--- a/Near/app/src/main/res/values/strings.xml
+++ b/Near/app/src/main/res/values/strings.xml
@@ -73,6 +73,7 @@
추가하기
기념일
(%1$s 마다)
+ %1$d일
더 가까워졌어요!
수정
삭제