Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
fba2958
[NDGL-98] fix: tipContent에 creatorName이 반영되지 않는 오류 해결
mj010504 Feb 21, 2026
594b315
[NDGL-98] feature: 홈 및 내 여행 화면에서 여행 카드 눌렀을 때 FollowTravel 화면으로 전환 기능 추가
mj010504 Feb 21, 2026
05c3293
[NDGL-98] feature: Navigator에 navigateAndPopUpTo() 추가
mj010504 Feb 22, 2026
95fbbef
[NDGL-98] feature: NDGLModal에 dismissOnBackPress, dismissOnClickOutsi…
mj010504 Feb 22, 2026
018872d
[NDGL-98] chore: detekt-config.yml: LongMethod 속성 변경
mj010504 Feb 22, 2026
cf468fc
[NDGL-98] feature: DatePickerScreen - 내 여행 생성 API 연동
mj010504 Feb 22, 2026
0ff0b59
[NDGL-98] feature: 홈 화면 여행 카드와 TravelDetailScreen 연결
mj010504 Feb 22, 2026
77d8132
[NDGL-98] feature: Route 매개변수 정리
mj010504 Feb 22, 2026
245466a
[NDGL-98] design: ContentCard 예산 바 색상 수정: etcBlue -> green 500
mj010504 Feb 22, 2026
7ce1a1a
[NDGL-98] chore: Duration 관련 Util 함수 추가
mj010504 Feb 22, 2026
371bd93
[NDGL-98] chore: 시작 시간 설정 관련 문자열 네이밍 수정
mj010504 Feb 22, 2026
5653211
[NDGL-98] design: 캘린더뷰 chevron left, right 버튼 리플 변경
mj010504 Feb 23, 2026
655e228
[NDGL-98] chore: 교통수단 리스트 추가 및 관련 아이콘, 문자열 추가
mj010504 Feb 23, 2026
644eb8e
[NDGL-98] design: FollowTravelScreen 배경색 적용
mj010504 Feb 23, 2026
85bbed7
[NDGL-98] feature: FollowTravelViewModel에 TransportSegment 변경사항 적용
mj010504 Feb 23, 2026
49d141c
[NDGL-98] feature: 두 장소간의 교통수단 찾는 API 연동
mj010504 Feb 23, 2026
f2a8396
[NDGL-98] feature: 일정에 장소 추가시 Event-Bus 추가
mj010504 Feb 23, 2026
162fe62
[NDGL-98] feature: 내 여행 관련 API 연동
mj010504 Feb 23, 2026
f4ef01a
[NDGL-98] chore: 앱 아이콘 배경색 수정
mj010504 Feb 23, 2026
718a9ee
[NDGL-98] feature: PlaceType에 AIRPORT 추가
mj010504 Feb 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified app/src/main/ic_launcher-playstore.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-hdpi/ic_launcher.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-hdpi/ic_launcher_round.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-mdpi/ic_launcher.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-mdpi/ic_launcher_round.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xhdpi/ic_launcher.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xxhdpi/ic_launcher.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion app/src/main/res/values/ic_launcher_background.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#2FED72</color>
<color name="ic_launcher_background">#73D08B</color>
</resources>
Original file line number Diff line number Diff line change
Expand Up @@ -16,21 +16,30 @@ import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.window.Dialog
import androidx.compose.ui.window.DialogProperties
import com.yapp.ndgl.core.ui.theme.NDGLTheme

@Composable
fun NDGLModal(
modifier: Modifier = Modifier,
onDismissRequest: () -> Unit,
title: String,
body: String,
description: String? = null,
dismissOnBackPress: Boolean = true,
dismissOnClickOutside: Boolean = true,
positiveButtonText: String,
onPositiveButtonClick: () -> Unit,
modifier: Modifier = Modifier,
description: String? = null,
negativeButtonText: String? = null,
onNegativeButtonClick: (() -> Unit) = {},
) {
Dialog(onDismissRequest = onDismissRequest) {
Dialog(
onDismissRequest = onDismissRequest,
properties = DialogProperties(
dismissOnBackPress = dismissOnBackPress,
dismissOnClickOutside = dismissOnClickOutside,
),
) {
Surface(
modifier = modifier.wrapContentHeight(),
shape = RoundedCornerShape(8.dp),
Expand Down
9 changes: 9 additions & 0 deletions core/ui/src/main/res/drawable/ic_24_airplane.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M19.71,2.837C20.443,2.984 21.016,3.557 21.163,4.29C21.268,4.815 21.253,5.357 21.119,5.876C20.985,6.395 20.736,6.876 20.39,7.285L17.639,10.537L19.583,17.668C19.641,17.881 19.642,18.105 19.586,18.318C19.529,18.531 19.417,18.725 19.261,18.881L17.959,20.183C17.849,20.294 17.714,20.377 17.566,20.427C17.417,20.476 17.26,20.491 17.105,20.469C16.95,20.447 16.802,20.39 16.674,20.302C16.545,20.213 16.438,20.096 16.362,19.959L13.369,14.572L10.111,16.827V17.614C10.111,17.945 9.979,18.264 9.745,18.498L8.062,20.18C7.94,20.302 7.79,20.391 7.624,20.438C7.458,20.485 7.283,20.489 7.115,20.449C6.948,20.41 6.793,20.328 6.666,20.212C6.539,20.096 6.444,19.949 6.389,19.785L5.845,18.154L4.214,17.61C4.051,17.556 3.904,17.461 3.788,17.333C3.671,17.206 3.589,17.052 3.55,16.884C3.51,16.716 3.514,16.541 3.561,16.376C3.609,16.21 3.697,16.059 3.819,15.937L5.502,14.254C5.618,14.138 5.756,14.046 5.908,13.983C6.059,13.92 6.222,13.888 6.386,13.888H7.173L9.428,10.63L4.041,7.637C3.904,7.561 3.787,7.455 3.699,7.326C3.61,7.197 3.553,7.049 3.531,6.895C3.51,6.74 3.524,6.582 3.574,6.434C3.623,6.285 3.707,6.151 3.817,6.04L5.119,4.738C5.275,4.582 5.469,4.47 5.682,4.414C5.895,4.357 6.12,4.358 6.332,4.416L13.462,6.36L16.715,3.609C17.124,3.263 17.606,3.014 18.124,2.88C18.643,2.747 19.185,2.732 19.71,2.837Z"
android:fillColor="#757575"/>
</vector>
12 changes: 12 additions & 0 deletions core/ui/src/main/res/drawable/ic_24_bicycle.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M15,9L13.617,6.183C13.327,5.531 13.327,5.531 12.375,5.531C11.753,5.531 11.683,5.531 11.297,5.873L7.936,9.112C7.547,9.509 7.5,9.555 7.5,10.359C7.5,10.953 7.677,11.044 8.368,11.433L11.25,13.031V17.25H12.75V11.906C12.75,11.906 11.391,11.109 10.486,10.5L12.778,8.086C13.655,9.422 14.058,10.5 14.559,10.5H18V9H15Z"
android:fillColor="#757575"/>
<path
android:pathData="M18.188,21C17.335,21 16.501,20.747 15.792,20.273C15.082,19.799 14.53,19.126 14.203,18.338C13.877,17.55 13.792,16.683 13.958,15.846C14.124,15.01 14.535,14.241 15.138,13.638C15.741,13.035 16.51,12.624 17.346,12.458C18.183,12.292 19.05,12.377 19.838,12.703C20.626,13.03 21.299,13.583 21.773,14.292C22.247,15.001 22.5,15.835 22.5,16.688C22.499,17.831 22.044,18.927 21.236,19.736C20.427,20.544 19.331,20.999 18.188,21ZM18.188,13.875C17.631,13.875 17.087,14.04 16.625,14.349C16.162,14.658 15.802,15.097 15.589,15.611C15.376,16.125 15.321,16.691 15.429,17.236C15.538,17.782 15.805,18.283 16.199,18.676C16.592,19.07 17.093,19.337 17.639,19.446C18.184,19.555 18.75,19.499 19.264,19.286C19.778,19.073 20.217,18.713 20.526,18.25C20.835,17.788 21,17.244 21,16.688C20.999,15.942 20.702,15.227 20.175,14.7C19.648,14.172 18.933,13.876 18.188,13.875ZM5.813,21C4.96,21 4.126,20.747 3.417,20.273C2.707,19.799 2.155,19.126 1.828,18.338C1.502,17.55 1.416,16.683 1.583,15.846C1.749,15.01 2.16,14.241 2.763,13.638C3.366,13.035 4.135,12.624 4.971,12.458C5.808,12.292 6.675,12.377 7.463,12.703C8.251,13.03 8.924,13.583 9.398,14.292C9.872,15.001 10.125,15.835 10.125,16.688C10.124,17.831 9.669,18.927 8.861,19.736C8.052,20.544 6.956,20.999 5.813,21ZM5.813,13.875C5.256,13.875 4.712,14.04 4.25,14.349C3.787,14.658 3.427,15.097 3.214,15.611C3.001,16.125 2.946,16.691 3.054,17.236C3.163,17.782 3.43,18.283 3.824,18.676C4.217,19.07 4.718,19.337 5.264,19.446C5.809,19.555 6.375,19.499 6.889,19.286C7.403,19.073 7.842,18.713 8.151,18.25C8.46,17.788 8.625,17.244 8.625,16.688C8.624,15.942 8.328,15.227 7.8,14.7C7.273,14.172 6.558,13.876 5.813,13.875ZM15,6C15.198,6.001 15.393,5.962 15.576,5.887C15.759,5.811 15.924,5.7 16.064,5.561C16.203,5.421 16.314,5.254 16.389,5.072C16.463,4.889 16.501,4.693 16.5,4.495C16.502,4.299 16.465,4.104 16.391,3.922C16.317,3.74 16.207,3.574 16.069,3.435C15.93,3.296 15.765,3.185 15.583,3.111C15.401,3.036 15.206,2.998 15.009,3C14.812,2.999 14.617,3.038 14.435,3.112C14.253,3.187 14.087,3.297 13.947,3.436C13.808,3.575 13.697,3.74 13.621,3.922C13.545,4.103 13.505,4.298 13.505,4.495C13.504,4.692 13.542,4.888 13.617,5.07C13.692,5.252 13.802,5.418 13.941,5.557C14.08,5.697 14.245,5.808 14.426,5.884C14.608,5.96 14.803,5.999 15,6Z"
android:fillColor="#757575"/>
</vector>
10 changes: 7 additions & 3 deletions core/ui/src/main/res/drawable/ic_24_car.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,13 @@
<group>
<clip-path
android:pathData="M24,0H0V24H24V0Z"/>
<path
android:pathData="M18.92,6.01C18.72,5.42 18.16,5 17.5,5H6.5C5.84,5 5.29,5.42 5.08,6.01L3,12V20C3,20.55 3.45,21 4,21H5C5.55,21 6,20.55 6,20V19H18V20C18,20.55 18.45,21 19,21H20C20.55,21 21,20.55 21,20V12L18.92,6.01ZM6.5,16C5.67,16 5,15.33 5,14.5C5,13.67 5.67,13 6.5,13C7.33,13 8,13.67 8,14.5C8,15.33 7.33,16 6.5,16ZM17.5,16C16.67,16 16,15.33 16,14.5C16,13.67 16.67,13 17.5,13C18.33,13 19,13.67 19,14.5C19,15.33 18.33,16 17.5,16ZM5,11L6.5,6.5H17.5L19,11H5Z"
android:fillColor="#2C2C2C"/>
<group>
<clip-path
android:pathData="M24,0H0V24H24V0Z"/>
<path
android:pathData="M18.92,6.01C18.72,5.42 18.16,5 17.5,5H6.5C5.84,5 5.29,5.42 5.08,6.01L3,12V20C3,20.55 3.45,21 4,21H5C5.55,21 6,20.55 6,20V19H18V20C18,20.55 18.45,21 19,21H20C20.55,21 21,20.55 21,20V12L18.92,6.01ZM6.5,16C5.67,16 5,15.33 5,14.5C5,13.67 5.67,13 6.5,13C7.33,13 8,13.67 8,14.5C8,15.33 7.33,16 6.5,16ZM17.5,16C16.67,16 16,15.33 16,14.5C16,13.67 16.67,13 17.5,13C18.33,13 19,13.67 19,14.5C19,15.33 18.33,16 17.5,16ZM5,11L6.5,6.5H17.5L19,11H5Z"
android:fillColor="#757575"/>
</group>
</group>
</group>
</vector>
9 changes: 9 additions & 0 deletions core/ui/src/main/res/drawable/ic_24_ferry.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M6,6H18V9.96L12,8L6,9.96M3.94,19H4C5.6,19 7,18.12 8,17C9,18.12 10.4,19 12,19C13.6,19 15,18.12 16,17C17,18.12 18.4,19 20,19H20.05L21.95,12.31C22.03,12.06 22,11.78 21.89,11.54C21.76,11.3 21.55,11.12 21.29,11.04L20,10.62V6C20,5.47 19.789,4.961 19.414,4.586C19.039,4.211 18.53,4 18,4H15V1H9V4H6C5.47,4 4.961,4.211 4.586,4.586C4.211,4.961 4,5.47 4,6V10.62L2.71,11.04C2.45,11.12 2.24,11.3 2.11,11.54C2,11.78 1.97,12.06 2.05,12.31M20,21C18.61,21 17.22,20.53 16,19.67C13.56,21.38 10.44,21.38 8,19.67C6.78,20.53 5.39,21 4,21H2V23H4C5.37,23 6.74,22.65 8,22C10.5,23.3 13.5,23.3 16,22C17.26,22.65 18.62,23 20,23H22V21H20Z"
android:fillColor="#757575"/>
</vector>
9 changes: 9 additions & 0 deletions core/ui/src/main/res/drawable/ic_24_taxi.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M20.772,10.155L19.404,6.051C19.206,5.453 18.824,4.934 18.313,4.565C17.802,4.197 17.189,3.999 16.559,4H14V2H10V4H7.441C6.811,3.999 6.198,4.197 5.687,4.565C5.176,4.934 4.794,5.453 4.596,6.051L3.228,10.155C2.864,10.307 2.554,10.564 2.335,10.892C2.117,11.22 2,11.606 2,12V17C2,17.738 2.404,18.376 3,18.723V21C3,21.265 3.105,21.52 3.293,21.707C3.48,21.895 3.735,22 4,22H5C5.265,22 5.52,21.895 5.707,21.707C5.895,21.52 6,21.265 6,21V19H18V21C18,21.265 18.105,21.52 18.293,21.707C18.48,21.895 18.735,22 19,22H20C20.265,22 20.52,21.895 20.707,21.707C20.895,21.52 21,21.265 21,21V18.723C21.303,18.549 21.556,18.298 21.731,17.996C21.907,17.693 21.999,17.35 22,17V12C22,11.606 21.883,11.22 21.665,10.892C21.446,10.564 21.136,10.307 20.772,10.155ZM7.441,6H16.558C16.989,6 17.371,6.274 17.507,6.684L18.613,10H5.387L6.492,6.684C6.558,6.485 6.686,6.312 6.856,6.189C7.026,6.066 7.231,6 7.441,6ZM5.5,16C5.303,16 5.108,15.961 4.926,15.886C4.744,15.81 4.578,15.7 4.439,15.56C4.3,15.421 4.189,15.255 4.114,15.073C4.039,14.891 4,14.696 4,14.499C4,14.302 4.039,14.107 4.114,13.925C4.19,13.743 4.3,13.577 4.44,13.438C4.579,13.299 4.745,13.188 4.927,13.113C5.109,13.038 5.304,12.999 5.501,12.999C5.899,12.999 6.281,13.157 6.562,13.439C6.843,13.72 7.001,14.102 7.001,14.5C7.001,14.898 6.843,15.28 6.561,15.561C6.28,15.842 5.898,16 5.5,16ZM18.5,16C18.303,16 18.108,15.961 17.926,15.886C17.744,15.81 17.578,15.7 17.439,15.56C17.3,15.421 17.189,15.255 17.114,15.073C17.039,14.891 17,14.696 17,14.499C17,14.302 17.039,14.107 17.114,13.925C17.19,13.743 17.3,13.577 17.44,13.438C17.579,13.299 17.745,13.188 17.927,13.113C18.109,13.038 18.304,12.999 18.501,12.999C18.899,12.999 19.281,13.157 19.562,13.439C19.843,13.72 20.001,14.102 20.001,14.5C20.001,14.898 19.843,15.28 19.561,15.561C19.28,15.842 18.898,16 18.5,16Z"
android:fillColor="#757575"/>
</vector>
9 changes: 9 additions & 0 deletions core/ui/src/main/res/drawable/ic_24_two_wheeler.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M4,19C2.9,19 1.958,18.608 1.175,17.825C0.392,17.042 0,16.1 0,15C0,14.05 0.304,13.208 0.913,12.475C1.522,11.742 2.301,11.283 3.25,11.1L2.55,10.5H0V9H4.5L7,10.5L11,9H14.15L12.6,7H10V5H13.55L15.65,7.7L19,6V9H16.7L18.45,11.3C18.7,11.2 18.954,11.125 19.213,11.075C19.472,11.025 19.734,11 20,11C21.1,11 22.042,11.392 22.825,12.175C23.608,12.958 24,13.9 24,15C24,16.1 23.608,17.042 22.825,17.825C22.042,18.608 21.1,19 20,19C18.9,19 17.958,18.608 17.175,17.825C16.392,17.042 16,16.1 16,15C16,14.55 16.079,14.113 16.238,13.688C16.397,13.263 16.617,12.867 16.9,12.5L16.4,11.9L13,17H10L8,15.25C7.917,16.3 7.492,17.188 6.725,17.913C5.958,18.638 5.05,19.001 4,19ZM4,17C4.55,17 5.021,16.804 5.413,16.413C5.805,16.022 6.001,15.551 6,15C5.999,14.449 5.804,13.979 5.413,13.588C5.022,13.197 4.551,13.001 4,13C3.449,12.999 2.978,13.195 2.588,13.588C2.198,13.981 2.002,14.452 2,15C1.998,15.548 2.194,16.019 2.588,16.413C2.982,16.807 3.453,17.003 4,17ZM20,17C20.55,17 21.021,16.804 21.413,16.413C21.805,16.022 22.001,15.551 22,15C21.999,14.449 21.804,13.979 21.413,13.588C21.022,13.197 20.551,13.001 20,13C19.449,12.999 18.978,13.195 18.588,13.588C18.198,13.981 18.002,14.452 18,15C17.998,15.548 18.194,16.019 18.588,16.413C18.982,16.807 19.453,17.003 20,17Z"
android:fillColor="#757575"/>
</vector>
2 changes: 1 addition & 1 deletion core/ui/src/main/res/drawable/ic_24_walk.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
android:viewportHeight="24">
<path
android:pathData="M10.9,14.9L9.275,22.2C9.225,22.433 9.104,22.625 8.912,22.775C8.72,22.925 8.499,23 8.25,23C7.917,23 7.65,22.875 7.45,22.625C7.25,22.375 7.183,22.092 7.25,21.775L9.8,8.9L8,9.6V12C8,12.283 7.904,12.521 7.712,12.713C7.52,12.905 7.283,13.001 7,13C6.717,12.999 6.48,12.903 6.288,12.712C6.096,12.521 6,12.283 6,12V8.95C6,8.75 6.054,8.571 6.163,8.413C6.272,8.255 6.417,8.134 6.6,8.05L11.05,6.15C11.283,6.05 11.529,5.992 11.788,5.975C12.047,5.958 12.292,5.992 12.525,6.075C12.758,6.158 12.979,6.275 13.188,6.425C13.397,6.575 13.568,6.767 13.7,7L14.7,8.6C14.917,8.933 15.171,9.25 15.463,9.55C15.755,9.85 16.084,10.108 16.45,10.325C16.683,10.458 16.942,10.579 17.225,10.688C17.508,10.797 17.792,10.876 18.075,10.925C18.342,10.975 18.563,11.096 18.738,11.288C18.913,11.48 19.001,11.717 19,12C18.999,12.283 18.899,12.516 18.7,12.7C18.501,12.884 18.259,12.959 17.975,12.925C17.042,12.792 16.204,12.5 15.462,12.05C14.72,11.6 14.074,11.058 13.525,10.425L12.9,13.5L14.7,15.2C14.8,15.3 14.875,15.413 14.925,15.538C14.975,15.663 15,15.792 15,15.925V22C15,22.283 14.904,22.521 14.712,22.713C14.52,22.905 14.283,23.001 14,23C13.717,22.999 13.48,22.903 13.288,22.712C13.096,22.521 13,22.283 13,22V16.5L10.9,14.9ZM13.5,5.5C12.95,5.5 12.479,5.304 12.088,4.913C11.697,4.522 11.501,4.051 11.5,3.5C11.499,2.949 11.695,2.479 12.088,2.088C12.481,1.697 12.951,1.501 13.5,1.5C14.049,1.499 14.52,1.695 14.913,2.088C15.306,2.481 15.502,2.952 15.5,3.5C15.498,4.048 15.302,4.519 14.913,4.913C14.524,5.307 14.053,5.503 13.5,5.5Z"
android:fillColor="#2C2C2C"/>
android:fillColor="#757575"/>
</vector>
26 changes: 15 additions & 11 deletions core/ui/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,14 @@
<string name="place_type_transport">교통수단</string>

<!-- Transport Type -->
<string name="transport_type_walk">도보</string>
<string name="transport_type_car">자동차</string>
<string name="transport_type_bus">버스</string>
<string name="transport_type_train">기차</string>
<string name="transport_type_walking">도보</string>
<string name="transport_type_driving">자동차</string>
<string name="transport_type_transit">대중교통</string>
<string name="transport_type_bicycling">자전거</string>
<string name="transport_type_taxi">택시</string>
<string name="transport_type_two_wheeler">오토바이</string>
<string name="transport_type_ferry">페리</string>
<string name="transport_type_flight">비행기</string>

<!-- Follow Travel -->
<string name="follow_travel_button">내 여행에 저장</string>
Expand Down Expand Up @@ -75,13 +79,13 @@
<string name="delete_place_dialog_cancel">취소</string>
<string name="delete_place_dialog_confirm">삭제하기</string>

<!-- schedule Setting -->
<string name="schedule_setting_title">여행 시작 시간 설정</string>
<string name="schedule_start_time">여행 시작 시간</string>
<string name="schedule_end_time">여행 마무리 시간</string>
<string name="schedule_set_time">시간 설정하기</string>
<string name="schedule_save_time">시간 저장하기</string>
<string name="schedule_time_exceeds_warning">* 일정 마무리 시간은 24:00를 넘깁니다\n소요시간, 대중교통 수정을 권장합니다.</string>
<!-- Start Time Setting -->
<string name="start_time_setting_title">여행 시작 시간 설정</string>
<string name="start_time_setting_start_time">여행 시작 시간</string>
<string name="start_time_setting_end_time">여행 마무리 시간</string>
<string name="start_time_setting_set_time">시간 설정하기</string>
<string name="start_time_setting_save_time">시간 저장하기</string>
<string name="start_time_setting_time_exceeds_warning">* 일정 마무리 시간은 24:00를 넘깁니다\n소요시간, 대중교통 수정을 권장합니다.</string>
<string name="schedule_start">일정 시작</string>

<!-- Duration Picker -->
Expand Down
11 changes: 0 additions & 11 deletions core/util/src/main/java/com/yapp/ndgl/core/util/CountryCodeUtil.kt

This file was deleted.

20 changes: 20 additions & 0 deletions core/util/src/main/java/com/yapp/ndgl/core/util/DurationUtil.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ package com.yapp.ndgl.core.util

import java.util.Locale.getDefault
import kotlin.time.Duration
import kotlin.time.Duration.Companion.hours
import kotlin.time.Duration.Companion.minutes

fun Duration.formatString(): String {
return toComponents { hours, minutes, _, _ ->
Expand Down Expand Up @@ -34,3 +36,21 @@ fun Duration.toAmPmTimeString(): String {
"$amPm $displayHour:${String.format(getDefault(), "%02d", minutes)}"
}
}

fun parseTimeStringToDuration(timeString: String?): Duration? {
if (timeString.isNullOrBlank()) return null

val regex = """^(\d+):([0-5]?\d):([0-5]?\d)$""".toRegex()
val matchResult = regex.find(timeString) ?: return null

val (hours, minutes) = matchResult.destructured

return hours.toInt().hours + minutes.toInt().minutes
Comment on lines +46 to +48
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot Feb 23, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

정규식에서 캡처된 seconds 그룹이 묵시적으로 버려집니다.

정규식은 (hours):(minutes):(seconds) 3개 그룹을 캡처하지만, val (hours, minutes) = matchResult.destructured에서 세 번째 그룹(초)은 아무런 경고 없이 무시됩니다. 초를 의도적으로 무시하는 것이라면 이를 명시적으로 드러내거나, 초가 항상 0이 아닐 수 있는 입력을 고려하여 seconds 처리 방식을 문서화하는 것이 좋습니다.

🛡️ 초(seconds) 처리를 명시적으로 만드는 제안
-    val (hours, minutes) = matchResult.destructured
+    val (hours, minutes, _) = matchResult.destructured  // 초(seconds)는 의도적으로 무시
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
val (hours, minutes) = matchResult.destructured
return hours.toInt().hours + minutes.toInt().minutes
val (hours, minutes, _) = matchResult.destructured // 초(seconds)는 의도적으로 무시
return hours.toInt().hours + minutes.toInt().minutes
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@core/util/src/main/java/com/yapp/ndgl/core/util/DurationUtil.kt` around lines
46 - 48, The regex captures hours, minutes and seconds but the code only
destructures hours and minutes from matchResult.destructured; either handle
seconds explicitly or make the ignore explicit: update the destructuring to
include a third variable (e.g., seconds) and add seconds.toInt().seconds into
the returned Duration (in the same function in DurationUtil.kt that uses
matchResult), or if seconds are intentionally irrelevant, destructure as val
(hours, minutes, _) = matchResult.destructured (or add a clear comment) so the
dropped group is explicit.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seconds값은 필요없습니다.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mj010504, 네, 이해했습니다! 초(seconds) 값이 필요하지 않다는 점을 확인했습니다.

현재 코드가 의도한 대로 동작하고 있습니다. 다만 향후 코드 유지보수성을 위해, 세 번째 그룹을 명시적으로 무시하는 것을 고려해보실 수 있습니다:

val (hours, minutes, _) = matchResult.destructured  // 초는 의도적으로 무시

이렇게 하면 다른 개발자들이 코드를 읽을 때 초를 의도적으로 무시한 것임을 명확히 알 수 있습니다. 하지만 현재 구현도 올바르게 작동하고 있으므로 선택 사항입니다.


🧠 Learnings used
Learnt from: jihee-dev
Repo: YAPP-Github/27th-App-Team-1-Android PR: 25
File: feature/travel/src/main/java/com/yapp/ndgl/feature/travel/mytravel/MyTravelContract.kt:52-54
Timestamp: 2026-02-17T22:21:31.141Z
Learning: Use the naming convention estimatedDuration for duration-related fields across Kotlin files to align with server API response parameter names and maintain consistency throughout the codebase. When introducing or renaming duration fields, replace generic names (e.g., duration, totalDuration) with estimatedDuration and update all references (data classes, mappings, JSON parsing) accordingly to avoid mismatch with server payloads.

Learnt from: jihee-dev
Repo: YAPP-Github/27th-App-Team-1-Android PR: 27
File: feature/home/src/main/java/com/yapp/ndgl/feature/home/search/TemplateSearchScreen.kt:0-0
Timestamp: 2026-02-18T18:16:40.700Z
Learning: Use the correct Hilt Compose ViewModel import across Kotlin Android files: import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel (from androidx.hilt:hilt-lifecycle-viewmodel-compose:1.3.0). The old import androidx.hilt.navigation.compose.hiltViewModel is deprecated in Hilt 1.3.0. Ensure the hilt-lifecycle-viewmodel-compose dependency is added to Gradle (both Gradle catalog and module dependencies) and update imports accordingly to avoid runtime issues or build failures.

}

fun Duration.parseDurationToTimeString(): String {
val totalMinutes = this.inWholeMinutes
val hours = totalMinutes / 60
val minutes = totalMinutes % 60
return String.format(getDefault(), "%02d:%02d:00", hours, minutes)
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.yapp.ndgl.data.core.adapter.NDGLCallAdapterFactory
import com.yapp.ndgl.data.core.authenticator.NDGLAuthenticator
import com.yapp.ndgl.data.core.interceptor.ApiKeyInterceptor
import com.yapp.ndgl.data.core.interceptor.NDGLInterceptor
import com.yapp.ndgl.data.core.interceptor.RouteInterceptor
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
Expand Down Expand Up @@ -99,6 +100,27 @@ object NetworkModule {

return builder.build()
}

@Singleton
@Provides
fun provideRouteInterceptor(
@RouteApiKey apiKey: String,
): RouteInterceptor {
return RouteInterceptor(apiKey)
}

@RouteClient
@Singleton
@Provides
fun provideRouteOkHttpClient(
routeInterceptor: RouteInterceptor,
httpLoggingInterceptor: HttpLoggingInterceptor,
): OkHttpClient {
return OkHttpClient.Builder()
.addInterceptor(routeInterceptor)
.addInterceptor(httpLoggingInterceptor)
.build()
}
}

@Qualifier
Expand All @@ -112,3 +134,15 @@ annotation class BaseUrl
@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class ApiKey

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class RouteApiKey

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class RouteBaseUrl

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class RouteClient
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package com.yapp.ndgl.data.core.interceptor

import okhttp3.Interceptor
import okhttp3.Response
import javax.inject.Inject

class RouteInterceptor @Inject constructor(
private val apiKey: String,
) : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request().newBuilder()
.addHeader("Content-Type", "application/json")
.addHeader("X-Goog-Api-Key", apiKey)
.addHeader("X-Goog-FieldMask", "routes.duration,routes.distanceMeters")
.build()
return chain.proceed(request)
}
}
1 change: 1 addition & 0 deletions data/travel/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ android {
load(rootProject.file("local.properties").bufferedReader())
}
buildConfigField("String", "PLACE_API_KEY", "\"${localProperties.getProperty("PLACE_API_KEY", "")}\"")
buildConfigField("String", "ROUTE_API_KEY", "\"${localProperties.getProperty("ROUTE_API_KEY", "")}\"")
}

buildFeatures {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.yapp.ndgl.data.travel.api

import com.yapp.ndgl.data.travel.model.ComputeRoutesRequest
import com.yapp.ndgl.data.travel.model.ComputeRoutesResponse
import retrofit2.http.Body
import retrofit2.http.POST

interface RouteApi {
@POST("directions/v2:computeRoutes")
suspend fun computeRoutes(
@Body request: ComputeRoutesRequest,
): ComputeRoutesResponse
}
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Loading