From 5709e70592ac41436ccdb7aa7e1353fe2eaad587 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Sat, 14 Sep 2024 18:30:49 +0900 Subject: [PATCH 01/49] =?UTF-8?q?[feat]=20#256=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8=20=EC=9D=BC=EC=A0=95=20=EC=83=81=EC=84=B8=20=EC=9D=B4?= =?UTF-8?q?=EB=B2=A4=ED=8A=B8=EB=AA=85=20=EC=83=81=EC=88=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/sopt/dateroad/presentation/util/Constraints.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index 666c9bd3..8deb219a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -59,3 +59,10 @@ object Pattern { private const val NICKNAME_PATTERN = "^[ㄱ-ㅎ가-힣a-zA-Z0-9]*$" val NICKNAME_REGEX = Regex(NICKNAME_PATTERN) } + +object TimelineDetailAmplitude { + const val VIEW_SCHEDULE_DETAILS = "view_schedule_details" + const val CLICK_KAKAO_SHARE = "click_kakao_share" + const val CLICK_CLOSE_KAKAO = "click_close_kakao" + const val CLICK_OPEN_KAKAO = "click_open_kakao" +} From 5585d0544f374513cb2090a2341240a0a9c2b127 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Sat, 14 Sep 2024 18:40:05 +0900 Subject: [PATCH 02/49] =?UTF-8?q?[feat]=20#256=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8=20=EC=9D=BC=EC=A0=95=20=EC=83=81=EC=84=B8=20=ED=94=84?= =?UTF-8?q?=EB=A1=9C=ED=8D=BC=ED=8B=B0=20=EC=83=81=EC=88=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/org/sopt/dateroad/presentation/util/Constraints.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index 8deb219a..afb6e475 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -65,4 +65,9 @@ object TimelineDetailAmplitude { const val CLICK_KAKAO_SHARE = "click_kakao_share" const val CLICK_CLOSE_KAKAO = "click_close_kakao" const val CLICK_OPEN_KAKAO = "click_open_kakao" + const val VIEW_PATH = "view_path" + const val DATE_COURSE_NUM="date_course_num" + const val DATE_TOTAL_DURATION="date_total_duration" + + } From 51d28b1486c7588f846e2135236a56d8c2631da4 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Sat, 14 Sep 2024 19:18:10 +0900 Subject: [PATCH 03/49] =?UTF-8?q?[feat]=20#256=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8=20=EC=9D=BC=EC=A0=95=20=EC=83=81=EC=84=B8=20=EC=95=B0?= =?UTF-8?q?=ED=94=8C=EB=A6=AC=ED=8A=9C=EB=93=9C=20=ED=8A=B8=EB=9E=98?= =?UTF-8?q?=ED=82=B9=20=EC=9D=B4=EB=B2=A4=ED=8A=B8=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=8B=AC=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/timelinedetail/TimelineDetailScreen.kt | 47 ++++++++++++++++++- .../dateroad/presentation/util/Constraints.kt | 6 +-- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt index b2f88b62..fd185319 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt @@ -54,6 +54,14 @@ import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadBasicTopBar import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView import org.sopt.dateroad.presentation.ui.component.view.DateRoadIdleView import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.CLICK_CLOSE_KAKAO +import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.CLICK_KAKAO_SHARE +import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.CLICK_OPEN_KAKAO +import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.DATE_COURSE_NUM +import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.DATE_TOTAL_DURATION +import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.VIEW_PATH +import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.VIEW_SCHEDULE_DETAILS +import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils import org.sopt.dateroad.presentation.util.modifier.noRippleClickable import org.sopt.dateroad.presentation.util.view.LoadState import org.sopt.dateroad.ui.theme.DATEROADTheme @@ -83,6 +91,10 @@ fun TimelineDetailRoute( } } + LaunchedEffect(uiState.loadState, lifecycleOwner) { + if (uiState.loadState == LoadState.Success) AmplitudeUtils.trackEventWithProperty(eventName = VIEW_SCHEDULE_DETAILS, propertyName = VIEW_PATH, propertyValue = "Test Value") + } + when (uiState.loadState) { LoadState.Idle -> DateRoadIdleView() @@ -94,7 +106,18 @@ fun TimelineDetailRoute( timelineType = timelineType, onTopBarItemClick = popBackStack, onButtonClick = { viewModel.setEvent(TimelineDetailContract.TimelineDetailEvent.SetShowDeleteBottomSheet(true)) }, - showKakaoClicked = { viewModel.setEvent(TimelineDetailContract.TimelineDetailEvent.SetShowKakaoDialog(true)) }, + showKakaoClicked = { + viewModel.setEvent(TimelineDetailContract.TimelineDetailEvent.SetShowKakaoDialog(true)) + AmplitudeUtils.trackEventWithProperties( + eventName = CLICK_KAKAO_SHARE, + mapOf( + DATE_COURSE_NUM to uiState.timelineDetail.places.size, + DATE_TOTAL_DURATION to uiState.timelineDetail.places.sumOf { place -> + place.duration.replace("시간", "").trim().toIntOrNull() ?: 0 + } + ) + ) + }, setShowKakaoDialog = { showKakaoDialog -> viewModel.setEvent(TimelineDetailContract.TimelineDetailEvent.SetShowKakaoDialog(showKakaoDialog)) }, setShowDeleteBottomSheet = { showDeleteBottomSheet -> viewModel.setEvent(TimelineDetailContract.TimelineDetailEvent.SetShowDeleteBottomSheet(showDeleteBottomSheet)) }, setShowDeleteDialog = { showDeleteDialog -> viewModel.setEvent(TimelineDetailContract.TimelineDetailEvent.SetShowDeleteDialog(showDeleteDialog)) }, @@ -287,9 +310,29 @@ fun TimelineDetailScreen( onDismissRequest = { setShowKakaoDialog(false) }, onClickConfirm = { setShowKakaoDialog(false) + AmplitudeUtils.trackEventWithProperties( + eventName = CLICK_OPEN_KAKAO, + mapOf( + DATE_COURSE_NUM to uiState.timelineDetail.places.size, + DATE_TOTAL_DURATION to uiState.timelineDetail.places.sumOf { place -> + place.duration.replace("시간", "").trim().toIntOrNull() ?: 0 + } + ) + ) onKakaoShareConfirm() }, - onClickDismiss = { setShowKakaoDialog(false) } + onClickDismiss = { + setShowKakaoDialog(false) + AmplitudeUtils.trackEventWithProperties( + eventName = CLICK_CLOSE_KAKAO, + mapOf( + DATE_COURSE_NUM to uiState.timelineDetail.places.size, + DATE_TOTAL_DURATION to uiState.timelineDetail.places.sumOf { place -> + place.duration.replace("시간", "").trim().toIntOrNull() ?: 0 + } + ) + ) + } ) } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index afb6e475..a4a032d2 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -66,8 +66,6 @@ object TimelineDetailAmplitude { const val CLICK_CLOSE_KAKAO = "click_close_kakao" const val CLICK_OPEN_KAKAO = "click_open_kakao" const val VIEW_PATH = "view_path" - const val DATE_COURSE_NUM="date_course_num" - const val DATE_TOTAL_DURATION="date_total_duration" - - + const val DATE_COURSE_NUM = "date_course_num" + const val DATE_TOTAL_DURATION = "date_total_duration" } From ac99d506fe27cc3c563d183948ee3a46b41aeba7 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Mon, 16 Sep 2024 19:18:33 +0900 Subject: [PATCH 04/49] =?UTF-8?q?[feat]=20#256=20=EC=9C=A0=EC=9E=85?= =?UTF-8?q?=EA=B2=BD=EB=A1=9C=20property=EA=B0=92=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/navigator/component/MainNavHost.kt | 3 ++- .../ui/timelinedetail/TimelineDetailScreen.kt | 13 +++++++++++-- .../navigation/TimelineDetailNavigation.kt | 12 +++++++++++- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt index d2ea98f2..dc3e58f2 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt @@ -143,7 +143,8 @@ fun MainNavHost( ) timelineDetailGraph( - popBackStack = navigator::popBackStackIfNotHome + popBackStack = navigator::popBackStackIfNotHome, + navController = navigator.navHostController ) } } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt index fd185319..c059601a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt @@ -1,5 +1,6 @@ package org.sopt.dateroad.presentation.ui.timelinedetail +import android.util.Log import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -71,7 +72,8 @@ import org.sopt.dateroad.ui.theme.DateRoadTheme fun TimelineDetailRoute( popBackStack: () -> Unit, timelineId: Int, - timelineType: TimelineType + timelineType: TimelineType, + previousView: String ) { val viewModel: TimelineDetailViewModel = hiltViewModel() val uiState by viewModel.uiState.collectAsStateWithLifecycle() @@ -92,7 +94,14 @@ fun TimelineDetailRoute( } LaunchedEffect(uiState.loadState, lifecycleOwner) { - if (uiState.loadState == LoadState.Success) AmplitudeUtils.trackEventWithProperty(eventName = VIEW_SCHEDULE_DETAILS, propertyName = VIEW_PATH, propertyValue = "Test Value") + Log.d("ㅋㅋ", "$previousView") + if (uiState.loadState == LoadState.Success) { + AmplitudeUtils.trackEventWithProperty( + eventName = VIEW_SCHEDULE_DETAILS, + propertyName = VIEW_PATH, + propertyValue = previousView + ) + } } when (uiState.loadState) { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt index dfc9c1ef..ebef97d9 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt @@ -14,6 +14,7 @@ fun NavController.navigateToTimelineDetail(timelineType: TimelineType, timelineI } fun NavGraphBuilder.timelineDetailGraph( + navController: NavController, popBackStack: () -> Unit ) { composable( @@ -26,10 +27,19 @@ fun NavGraphBuilder.timelineDetailGraph( val timelineType = TimelineType.valueOf(backStackEntry.arguments?.getString(TimelineDetailRoutes.TIMELINE_TYPE) ?: TimelineType.PINK.name) val timelineId = backStackEntry.arguments?.getInt(TimelineDetailRoutes.TIMELINE_ID) ?: 1 + val previousRoute = navController.previousBackStackEntry?.destination?.route ?: "Unknown" + + val previousView = when (previousRoute) { + "Home" -> "홈" + "Timeline" -> "데이트 일정" + else -> "Unknown" + } + TimelineDetailRoute( popBackStack = popBackStack, timelineId = timelineId, - timelineType = timelineType + timelineType = timelineType, + previousView = previousView ) } } From 1169e37034f6e732688fe56a8bbd413f8a9b895f Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Mon, 16 Sep 2024 19:56:04 +0900 Subject: [PATCH 05/49] =?UTF-8?q?[feat]=20#234=20=ED=99=88=20=EB=B7=B0=20?= =?UTF-8?q?=EC=95=B0=ED=94=8C=EB=A6=AC=ED=8A=9C=EB=93=9C=20=EC=9D=B4?= =?UTF-8?q?=EB=B2=A4=ED=8A=B8,=20=ED=94=84=EB=A1=9C=ED=8D=BC=ED=8B=B0=20?= =?UTF-8?q?=EB=AA=85=20=EC=83=81=EC=88=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/sopt/dateroad/presentation/util/Constraints.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index 666c9bd3..4f437422 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -59,3 +59,13 @@ object Pattern { private const val NICKNAME_PATTERN = "^[ㄱ-ㅎ가-힣a-zA-Z0-9]*$" val NICKNAME_REGEX = Regex(NICKNAME_PATTERN) } + +object HomeAmplitude { + const val VIEW_MAIN = "view_main" + const val USER_NAME = "user_name" + const val USER_POINT = "user_point" + const val COURSE_LIST_ID = "course_list_id" + const val COURSE_LIST_TITLE = "course_list_title" + const val COURSE_LIST_LOCATION = "course_list_location" + const val COURSE_LIST_COST = "course_list_cost" +} \ No newline at end of file From 45ef7f568fb7407792baa659c5c8a94576363a5d Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Mon, 16 Sep 2024 19:56:28 +0900 Subject: [PATCH 06/49] =?UTF-8?q?[chore]=20#256=20=EB=A1=9C=EA=B7=B8=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/ui/timelinedetail/TimelineDetailScreen.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt index c059601a..49e3b104 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt @@ -94,7 +94,6 @@ fun TimelineDetailRoute( } LaunchedEffect(uiState.loadState, lifecycleOwner) { - Log.d("ㅋㅋ", "$previousView") if (uiState.loadState == LoadState.Success) { AmplitudeUtils.trackEventWithProperty( eventName = VIEW_SCHEDULE_DETAILS, From 4153c077cdf7d59c1d2779b4f4549c9a49cd38d3 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Mon, 16 Sep 2024 19:56:56 +0900 Subject: [PATCH 07/49] [chore] #256 kilintFormat --- .../presentation/ui/timelinedetail/TimelineDetailScreen.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt index 49e3b104..89be543b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt @@ -1,6 +1,5 @@ package org.sopt.dateroad.presentation.ui.timelinedetail -import android.util.Log import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement From 0a1abc51f5cd720364fe6c6cd4241b61cc20664b Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Mon, 16 Sep 2024 20:51:40 +0900 Subject: [PATCH 08/49] =?UTF-8?q?[feat]=20#234=20=ED=99=88=20=EB=B7=B0=20?= =?UTF-8?q?=EC=95=B0=ED=94=8C=EB=A6=AC=ED=8A=9C=EB=93=9C=20=ED=8A=B8?= =?UTF-8?q?=EB=9E=98=ED=82=B9=20=EC=BD=94=EB=93=9C=20=EC=8B=AC=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/ui/home/HomeScreen.kt | 24 +++++++++++++++++++ .../dateroad/presentation/util/Constraints.kt | 2 +- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt index 3c13dac2..bf4366d1 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt @@ -55,6 +55,14 @@ import org.sopt.dateroad.presentation.ui.home.component.DateRoadHomeTopBar import org.sopt.dateroad.presentation.ui.home.component.HomeAdvertisement import org.sopt.dateroad.presentation.ui.home.component.HomeHotCourseCard import org.sopt.dateroad.presentation.ui.home.component.HomeTimeLineCard +import org.sopt.dateroad.presentation.util.HomeAmplitude.COURSE_LIST_COST +import org.sopt.dateroad.presentation.util.HomeAmplitude.COURSE_LIST_ID +import org.sopt.dateroad.presentation.util.HomeAmplitude.COURSE_LIST_LOCATION +import org.sopt.dateroad.presentation.util.HomeAmplitude.COURSE_LIST_TITLE +import org.sopt.dateroad.presentation.util.HomeAmplitude.USER_NAME +import org.sopt.dateroad.presentation.util.HomeAmplitude.USER_POINT +import org.sopt.dateroad.presentation.util.HomeAmplitude.VIEW_MAIN +import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils import org.sopt.dateroad.presentation.util.view.LoadState import org.sopt.dateroad.ui.theme.DateRoadTheme @@ -107,6 +115,22 @@ fun HomeRoute( } } + LaunchedEffect(uiState.loadState, lifecycleOwner) { + if (uiState.loadState == LoadState.Success) { + AmplitudeUtils.trackEventWithProperties( + eventName = VIEW_MAIN, + mapOf( + USER_NAME to uiState.userPoint.name, + USER_POINT to uiState.userPoint.point, + COURSE_LIST_ID to uiState.topLikedCourses.map { it.courseId }.joinToString(), + COURSE_LIST_TITLE to uiState.topLikedCourses.joinToString { it.title }, + COURSE_LIST_LOCATION to uiState.topLikedCourses.joinToString { it.city }, + COURSE_LIST_COST to uiState.topLikedCourses.joinToString { it.cost } + ) + ) + } + } + when (uiState.loadState) { LoadState.Idle -> DateRoadIdleView() diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index 4f437422..ae133f73 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -68,4 +68,4 @@ object HomeAmplitude { const val COURSE_LIST_TITLE = "course_list_title" const val COURSE_LIST_LOCATION = "course_list_location" const val COURSE_LIST_COST = "course_list_cost" -} \ No newline at end of file +} From fd1f3dfea5293247bfc36d0a33e2bdc27f9bf08d Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Mon, 16 Sep 2024 21:46:30 +0900 Subject: [PATCH 09/49] =?UTF-8?q?[chore]=20#234=20=EC=BD=94=EC=8A=A4=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=8D=BC=ED=8B=B0=20new=20=EC=BD=94=EC=8A=A4?= =?UTF-8?q?=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/sopt/dateroad/presentation/ui/home/HomeScreen.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt index bf4366d1..cf86587a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt @@ -122,10 +122,10 @@ fun HomeRoute( mapOf( USER_NAME to uiState.userPoint.name, USER_POINT to uiState.userPoint.point, - COURSE_LIST_ID to uiState.topLikedCourses.map { it.courseId }.joinToString(), - COURSE_LIST_TITLE to uiState.topLikedCourses.joinToString { it.title }, - COURSE_LIST_LOCATION to uiState.topLikedCourses.joinToString { it.city }, - COURSE_LIST_COST to uiState.topLikedCourses.joinToString { it.cost } + COURSE_LIST_ID to uiState.topLikedCourses.map { it.courseId }.joinToString() + "," + uiState.latestCourses.map { it.courseId }.joinToString(), + COURSE_LIST_TITLE to uiState.topLikedCourses.joinToString { it.title } + "," + uiState.latestCourses.joinToString { it.title }, + COURSE_LIST_LOCATION to uiState.topLikedCourses.joinToString { it.city } + "," + uiState.latestCourses.joinToString { it.city }, + COURSE_LIST_COST to uiState.topLikedCourses.joinToString { it.cost } + "," + uiState.latestCourses.joinToString { it.cost } ) ) } From c36418086dcebd1a7ccd5012880083dba933933e Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Tue, 17 Sep 2024 17:43:00 +0900 Subject: [PATCH 10/49] =?UTF-8?q?[feat]=20#263=20=EC=BD=94=EC=8A=A4=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=20=EC=95=B0=ED=94=8C=EB=A6=AC=ED=8A=9C?= =?UTF-8?q?=EB=93=9C=20=EC=9D=B4=EB=B2=A4=ED=8A=B8,=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=8D=BC=ED=8B=B0=20=EB=AA=85=20=EC=83=81=EC=88=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/dateroad/presentation/util/Constraints.kt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index 666c9bd3..5fe02e39 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -49,6 +49,7 @@ object Token { object Time { const val TIME = " 시간" } + object LoadingView { const val LOTTIE = "loading.json" const val CLIPMIN = 0 @@ -59,3 +60,14 @@ object Pattern { private const val NICKNAME_PATTERN = "^[ㄱ-ㅎ가-힣a-zA-Z0-9]*$" val NICKNAME_REGEX = Regex(NICKNAME_PATTERN) } + +object CourseDetailAmplitude { + const val VIEW_COURSE_DETAILS = "view_course_details" + const val CLICK_COURSE_BACK = "click_course_back" + const val CLICK_COURSE_LIKES = "click_course_likes" + const val COURSE_LIST_ID = "course_list_id" + const val COURSE_LIST_TITLE = "course_list_title" + const val CLICK_LIST_PURCHASE = "click_course_purchase" + const val PURCHASE_SUCCESS = "purchase_success" + const val COURSE_LIST_LIKE = "course_list_like" +} \ No newline at end of file From 4199de08b6f0226f44e0696714539a7b272534b4 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Tue, 17 Sep 2024 18:37:19 +0900 Subject: [PATCH 11/49] =?UTF-8?q?[feat]=20#263=20=20=EC=BD=94=EC=8A=A4=20?= =?UTF-8?q?=EC=83=81=EC=84=B8=20=EC=95=B0=ED=94=8C=EB=A6=AC=ED=8A=9C?= =?UTF-8?q?=EB=93=9C=20=ED=8A=B8=EB=9E=98=ED=82=B9=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=8B=AC=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/coursedetail/CourseDetailContract.kt | 3 +- .../ui/coursedetail/CourseDetailScreen.kt | 33 ++++++++++++++++++- .../ui/coursedetail/CourseDetailViewModel.kt | 2 +- .../dateroad/presentation/util/Constraints.kt | 4 +-- 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailContract.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailContract.kt index 34f1576d..94235726 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailContract.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailContract.kt @@ -23,7 +23,8 @@ class CourseDetailContract { val currentImagePage: Int = 0, val usePointLoadState: LoadState = LoadState.Idle, val deleteLoadState: LoadState = LoadState.Idle, - var isWebViewOpened: Boolean = false + var isWebViewOpened: Boolean = false, + var hasDialogOpened: Boolean = false ) : UiState sealed interface CourseDetailSideEffect : UiSideEffect { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt index e7fc9b7e..811231ba 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt @@ -45,7 +45,16 @@ import org.sopt.dateroad.presentation.ui.coursedetail.component.CourseDetailBasi import org.sopt.dateroad.presentation.ui.coursedetail.component.CourseDetailBottomBar import org.sopt.dateroad.presentation.ui.coursedetail.component.CourseDetailUnopenedDetail import org.sopt.dateroad.presentation.ui.coursedetail.component.courseDetailOpenedDetail +import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_BACK +import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_LIKES +import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_PURCHASE +import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_ID +import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_LIKE +import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_TITLE +import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.PURCHASE_SUCCESS +import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.VIEW_COURSE_DETAILS import org.sopt.dateroad.presentation.util.WebViewUrl.REPORT_URL +import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils import org.sopt.dateroad.presentation.util.view.LoadState import org.sopt.dateroad.ui.theme.DATEROADTheme import org.sopt.dateroad.ui.theme.DateRoadTheme @@ -74,6 +83,18 @@ fun CourseDetailRoute( viewModel.fetchCourseDetail(courseId = courseId) } + LaunchedEffect(uiState.loadState, lifecycleOwner) { + if (uiState.loadState == LoadState.Success) { + AmplitudeUtils.trackEventWithProperties( + eventName = VIEW_COURSE_DETAILS, + mapOf( + COURSE_LIST_ID to uiState.courseDetail.courseId, + COURSE_LIST_TITLE to uiState.courseDetail.title + ) + ) + } + } + when (uiState.loadState) { LoadState.Idle -> DateRoadIdleView() @@ -101,6 +122,7 @@ fun CourseDetailRoute( true -> viewModel.deleteCourseLike(courseId = courseId) false -> viewModel.postCourseLike(courseId = courseId) } + AmplitudeUtils.trackEventWithProperty(eventName = CLICK_COURSE_LIKES, propertyName = COURSE_LIST_LIKE, propertyValue = uiState.courseDetail.isUserLiked) }, onDeleteButtonClicked = { viewModel.deleteCourse(courseId = courseId) @@ -110,7 +132,16 @@ fun CourseDetailRoute( onReportCourseBottomSheet = { viewModel.setEvent(CourseDetailContract.CourseDetailEvent.OnReportCourseBottomSheet) }, dismissReportCourseBottomSheet = { viewModel.setEvent(CourseDetailContract.CourseDetailEvent.DismissReportCourseBottomSheet) }, enrollSchedule = { viewModel.setSideEffect(CourseDetailContract.CourseDetailSideEffect.NavigateToEnroll(EnrollType.TIMELINE, courseId)) }, - onTopBarIconClicked = { viewModel.setSideEffect(CourseDetailContract.CourseDetailSideEffect.PopBackStack) }, + onTopBarIconClicked = { + viewModel.setSideEffect(CourseDetailContract.CourseDetailSideEffect.PopBackStack) + AmplitudeUtils.trackEventWithProperties( + eventName = CLICK_COURSE_BACK, + mapOf( + CLICK_COURSE_PURCHASE to uiState.hasDialogOpened, + PURCHASE_SUCCESS to uiState.courseDetail.isAccess + ) + ) + }, openCourseDetail = { viewModel.postUsePoint(courseId = courseId) }, onReportButtonClicked = { viewModel.setEvent(CourseDetailContract.CourseDetailEvent.OnReportWebViewClicked) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt index ecb9a3cf..973067c6 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt @@ -34,7 +34,7 @@ class CourseDetailViewModel @Inject constructor( is CourseDetailContract.CourseDetailEvent.DismissDialogDeleteCourse -> setState { copy(isDeleteCourseDialogOpen = false) } is CourseDetailContract.CourseDetailEvent.OnDialogReportCourse -> setState { copy(isReportCourseDialogOpen = true) } is CourseDetailContract.CourseDetailEvent.DismissDialogReportCourse -> setState { copy(isReportCourseDialogOpen = false) } - is CourseDetailContract.CourseDetailEvent.OnDialogLookedByPoint -> setState { copy(isPointReadDialogOpen = true) } + is CourseDetailContract.CourseDetailEvent.OnDialogLookedByPoint -> setState { copy(isPointReadDialogOpen = true, hasDialogOpened = true) } is CourseDetailContract.CourseDetailEvent.DismissDialogLookedByPoint -> setState { copy(isPointReadDialogOpen = false) } is CourseDetailContract.CourseDetailEvent.OnLikeButtonClicked -> setState { copy(isLikedButtonChecked = !isLikedButtonChecked) } is CourseDetailContract.CourseDetailEvent.OnDeleteCourseBottomSheet -> setState { copy(isDeleteCourseBottomSheetOpen = true) } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index 5fe02e39..28092d15 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -67,7 +67,7 @@ object CourseDetailAmplitude { const val CLICK_COURSE_LIKES = "click_course_likes" const val COURSE_LIST_ID = "course_list_id" const val COURSE_LIST_TITLE = "course_list_title" - const val CLICK_LIST_PURCHASE = "click_course_purchase" + const val CLICK_COURSE_PURCHASE = "click_course_purchase" const val PURCHASE_SUCCESS = "purchase_success" const val COURSE_LIST_LIKE = "course_list_like" -} \ No newline at end of file +} From 6d7dab9778b7ac3d078018399fcbde7f21636d15 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Tue, 17 Sep 2024 21:43:28 +0900 Subject: [PATCH 12/49] =?UTF-8?q?[chore]=20#234=20=EC=BD=94=EC=8A=A4=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=ED=94=84=EB=A1=9C=ED=8D=BC?= =?UTF-8?q?=ED=8B=B0=20Hot,=20New=20=EA=B5=AC=EB=B6=84=20=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=EB=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/dateroad/presentation/ui/home/HomeScreen.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt index cf86587a..4af604c5 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt @@ -122,10 +122,14 @@ fun HomeRoute( mapOf( USER_NAME to uiState.userPoint.name, USER_POINT to uiState.userPoint.point, - COURSE_LIST_ID to uiState.topLikedCourses.map { it.courseId }.joinToString() + "," + uiState.latestCourses.map { it.courseId }.joinToString(), - COURSE_LIST_TITLE to uiState.topLikedCourses.joinToString { it.title } + "," + uiState.latestCourses.joinToString { it.title }, - COURSE_LIST_LOCATION to uiState.topLikedCourses.joinToString { it.city } + "," + uiState.latestCourses.joinToString { it.city }, - COURSE_LIST_COST to uiState.topLikedCourses.joinToString { it.cost } + "," + uiState.latestCourses.joinToString { it.cost } + COURSE_LIST_ID to + "Hot: " + uiState.topLikedCourses.map { it.courseId }.joinToString() + " / New: " + uiState.latestCourses.map { it.courseId }.joinToString(), + COURSE_LIST_TITLE to + "Hot: " + uiState.topLikedCourses.joinToString { it.title } + " / New: " + uiState.latestCourses.joinToString { it.title }, + COURSE_LIST_LOCATION to + "Hot: " + uiState.topLikedCourses.joinToString { it.city } + " / New: " + uiState.latestCourses.joinToString { it.city }, + COURSE_LIST_COST to + "Hot: " + uiState.topLikedCourses.joinToString { it.cost } + " / New: " + uiState.latestCourses.joinToString { it.cost } ) ) } From 0ec8898d519a12ec42b2d9aec09a064862e1c20f Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Tue, 17 Sep 2024 21:50:29 +0900 Subject: [PATCH 13/49] =?UTF-8?q?[chore]=20#234=20=EC=95=B0=ED=94=8C?= =?UTF-8?q?=EB=A6=AC=ED=8A=9C=EB=93=9C=20=EC=8A=A4=ED=8A=B8=EB=A7=81=20?= =?UTF-8?q?=EC=83=81=EC=88=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/dateroad/presentation/ui/home/HomeScreen.kt | 10 ++++++---- .../org/sopt/dateroad/presentation/util/Constraints.kt | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt index 4af604c5..ad4f5f63 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt @@ -59,6 +59,8 @@ import org.sopt.dateroad.presentation.util.HomeAmplitude.COURSE_LIST_COST import org.sopt.dateroad.presentation.util.HomeAmplitude.COURSE_LIST_ID import org.sopt.dateroad.presentation.util.HomeAmplitude.COURSE_LIST_LOCATION import org.sopt.dateroad.presentation.util.HomeAmplitude.COURSE_LIST_TITLE +import org.sopt.dateroad.presentation.util.HomeAmplitude.HOT +import org.sopt.dateroad.presentation.util.HomeAmplitude.NEW import org.sopt.dateroad.presentation.util.HomeAmplitude.USER_NAME import org.sopt.dateroad.presentation.util.HomeAmplitude.USER_POINT import org.sopt.dateroad.presentation.util.HomeAmplitude.VIEW_MAIN @@ -123,13 +125,13 @@ fun HomeRoute( USER_NAME to uiState.userPoint.name, USER_POINT to uiState.userPoint.point, COURSE_LIST_ID to - "Hot: " + uiState.topLikedCourses.map { it.courseId }.joinToString() + " / New: " + uiState.latestCourses.map { it.courseId }.joinToString(), + HOT + uiState.topLikedCourses.map { it.courseId }.joinToString() + NEW + uiState.latestCourses.map { it.courseId }.joinToString(), COURSE_LIST_TITLE to - "Hot: " + uiState.topLikedCourses.joinToString { it.title } + " / New: " + uiState.latestCourses.joinToString { it.title }, + HOT + uiState.topLikedCourses.joinToString { it.title } + NEW + uiState.latestCourses.joinToString { it.title }, COURSE_LIST_LOCATION to - "Hot: " + uiState.topLikedCourses.joinToString { it.city } + " / New: " + uiState.latestCourses.joinToString { it.city }, + HOT + uiState.topLikedCourses.joinToString { it.city } + NEW + uiState.latestCourses.joinToString { it.city }, COURSE_LIST_COST to - "Hot: " + uiState.topLikedCourses.joinToString { it.cost } + " / New: " + uiState.latestCourses.joinToString { it.cost } + HOT + uiState.topLikedCourses.joinToString { it.cost } + NEW + uiState.latestCourses.joinToString { it.cost } ) ) } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index ae133f73..c4af5af1 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -68,4 +68,6 @@ object HomeAmplitude { const val COURSE_LIST_TITLE = "course_list_title" const val COURSE_LIST_LOCATION = "course_list_location" const val COURSE_LIST_COST = "course_list_cost" + const val HOT = "Hot: " + const val NEW = " / New: " } From 825fa7fba5284ed920b96c35d40e8629e5dcfb51 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Thu, 19 Sep 2024 19:25:12 +0900 Subject: [PATCH 14/49] =?UTF-8?q?[feat]=20#268=20=EC=9C=A0=EC=A0=80=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=8D=BC=ED=8B=B0=20=EC=B4=88=EA=B8=B0?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dateroad/presentation/ui/profile/ProfileScreen.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt index 7de82f39..5a9d1343 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt @@ -50,7 +50,12 @@ import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadBasicTopBar import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView import org.sopt.dateroad.presentation.util.Pattern.NICKNAME_REGEX +import org.sopt.dateroad.presentation.util.TimelineAmplitude.DATE_SCHEDULE_NUM +import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_COURSE_COUNT +import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_FREE_REMAINED import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_NAME +import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_POINT +import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_PURCHASE_COUNT import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils import org.sopt.dateroad.presentation.util.modifier.noRippleClickable import org.sopt.dateroad.presentation.util.view.LoadState @@ -127,6 +132,11 @@ fun ProfileRoute( LoadState.Success -> { navigationToHome() AmplitudeUtils.updateStringUserProperty(propertyName = USER_NAME, propertyValue = uiState.signUp.userSignUpInfo.name) + AmplitudeUtils.updateIntUserProperty(propertyName = USER_POINT, propertyValue = 0) + AmplitudeUtils.updateIntUserProperty(propertyName = USER_FREE_REMAINED, propertyValue = 0) + AmplitudeUtils.updateIntUserProperty(propertyName = USER_PURCHASE_COUNT, propertyValue = 0) + AmplitudeUtils.updateIntUserProperty(propertyName = USER_COURSE_COUNT, propertyValue = 0) + AmplitudeUtils.updateIntUserProperty(propertyName = DATE_SCHEDULE_NUM, propertyValue = 0) } LoadState.Error -> DateRoadErrorView() From 934dbb60351ca4c83bb4862feef345a32d24d126 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Sat, 21 Sep 2024 14:22:56 +0900 Subject: [PATCH 15/49] =?UTF-8?q?[chore]=20#256=20duration=20String->Int?= =?UTF-8?q?=20=ED=95=A8=EC=88=98=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/ui/timelinedetail/TimelineDetailScreen.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt index 89be543b..0dbe3334 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt @@ -322,7 +322,7 @@ fun TimelineDetailScreen( mapOf( DATE_COURSE_NUM to uiState.timelineDetail.places.size, DATE_TOTAL_DURATION to uiState.timelineDetail.places.sumOf { place -> - place.duration.replace("시간", "").trim().toIntOrNull() ?: 0 + durationToInt(place.duration) } ) ) @@ -410,3 +410,7 @@ fun TimelineDetailScreenPreview() { ) } } + +fun durationToInt(duration:String):Int{ + return duration.replace("시간", "").trim().toIntOrNull() ?: 0 +} From 2dbda6ec2b794781f71ced358e12702f1f0cef2e Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Sat, 21 Sep 2024 14:23:35 +0900 Subject: [PATCH 16/49] =?UTF-8?q?[chore]=20#256=20ViewPath=20=EC=83=81?= =?UTF-8?q?=EC=88=98=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../timelinedetail/navigation/TimelineDetailNavigation.kt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt index ebef97d9..1d0a6c25 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt @@ -8,6 +8,8 @@ import androidx.navigation.compose.composable import androidx.navigation.navArgument import org.sopt.dateroad.presentation.type.TimelineType import org.sopt.dateroad.presentation.ui.timelinedetail.TimelineDetailRoute +import org.sopt.dateroad.presentation.util.ViewPath.HOME +import org.sopt.dateroad.presentation.util.ViewPath.TIMELINE fun NavController.navigateToTimelineDetail(timelineType: TimelineType, timelineId: Int, navOptions: NavOptions? = null) { navigate(TimelineDetailRoutes.route(timelineType, timelineId), navOptions) @@ -30,8 +32,8 @@ fun NavGraphBuilder.timelineDetailGraph( val previousRoute = navController.previousBackStackEntry?.destination?.route ?: "Unknown" val previousView = when (previousRoute) { - "Home" -> "홈" - "Timeline" -> "데이트 일정" + HOME -> "홈" + TIMELINE -> "데이트 일정" else -> "Unknown" } From ef6277b577e3350c7c8e21d66485ee004acdbe5b Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Sat, 21 Sep 2024 14:27:21 +0900 Subject: [PATCH 17/49] [chore] #256 ktlintFormat --- .../presentation/ui/timelinedetail/TimelineDetailScreen.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt index 0dbe3334..6815f5e9 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt @@ -411,6 +411,6 @@ fun TimelineDetailScreenPreview() { } } -fun durationToInt(duration:String):Int{ - return duration.replace("시간", "").trim().toIntOrNull() ?: 0 +fun durationToInt(duration: String): Int { + return duration.replace("시간", "").trim().toIntOrNull() ?: 0 } From 4aadc22f634a34d4872413890f2e6d9c86b8ddcd Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Mon, 23 Sep 2024 14:41:49 +0900 Subject: [PATCH 18/49] =?UTF-8?q?[feat]=20#268=20=EC=BD=94=EC=8A=A4=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=20=EC=8B=9C=20UserProperty=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataremote/datasource/CourseRemoteDataSource.kt | 3 ++- .../datasourceimpl/CourseRemoteDataSourceImpl.kt | 3 ++- .../model/response/ResponseEnrollCourseDto.kt | 12 ++++++++++++ .../data/dataremote/service/CourseService.kt | 3 ++- .../mapper/todomain/ResponseEnrollCourseDtoMapper.kt | 9 +++++++++ .../data/repositoryimpl/CourseRepositoryImpl.kt | 5 +++-- .../sopt/dateroad/domain/model/EnrollCourseResult.kt | 6 ++++++ .../dateroad/domain/repository/CourseRepository.kt | 3 ++- .../dateroad/domain/usecase/PostCourseUseCase.kt | 3 ++- .../presentation/ui/enroll/EnrollViewModel.kt | 7 ++++++- 10 files changed, 46 insertions(+), 8 deletions(-) create mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollCourseDto.kt create mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollCourseDtoMapper.kt create mode 100644 app/src/main/java/org/sopt/dateroad/domain/model/EnrollCourseResult.kt diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/CourseRemoteDataSource.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/CourseRemoteDataSource.kt index 2dbb97a2..1781a033 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/CourseRemoteDataSource.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/CourseRemoteDataSource.kt @@ -4,6 +4,7 @@ import okhttp3.MultipartBody import okhttp3.RequestBody import org.sopt.dateroad.data.dataremote.model.response.ResponseCourseDetailDto import org.sopt.dateroad.data.dataremote.model.response.ResponseCoursesDto +import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollCourseDto interface CourseRemoteDataSource { suspend fun deleteCourse(courseId: Int) @@ -16,7 +17,7 @@ interface CourseRemoteDataSource { suspend fun getSortedCourses(sortBy: String): ResponseCoursesDto - suspend fun postCourse(images: List, course: RequestBody, tags: RequestBody, places: RequestBody) + suspend fun postCourse(images: List, course: RequestBody, tags: RequestBody, places: RequestBody): ResponseEnrollCourseDto suspend fun postCourseLike(courseId: Int) } diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/CourseRemoteDataSourceImpl.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/CourseRemoteDataSourceImpl.kt index 1de52e07..a8d43b15 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/CourseRemoteDataSourceImpl.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/CourseRemoteDataSourceImpl.kt @@ -6,6 +6,7 @@ import okhttp3.RequestBody import org.sopt.dateroad.data.dataremote.datasource.CourseRemoteDataSource import org.sopt.dateroad.data.dataremote.model.response.ResponseCourseDetailDto import org.sopt.dateroad.data.dataremote.model.response.ResponseCoursesDto +import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollCourseDto import org.sopt.dateroad.data.dataremote.service.CourseService class CourseRemoteDataSourceImpl @Inject constructor( @@ -21,7 +22,7 @@ class CourseRemoteDataSourceImpl @Inject constructor( override suspend fun getSortedCourses(sortBy: String): ResponseCoursesDto = courseService.getSortedCourses(sortBy = sortBy) - override suspend fun postCourse(images: List, course: RequestBody, tags: RequestBody, places: RequestBody) = courseService.postCourse(images = images, course = course, tags = tags, places = places) + override suspend fun postCourse(images: List, course: RequestBody, tags: RequestBody, places: RequestBody): ResponseEnrollCourseDto = courseService.postCourse(images = images, course = course, tags = tags, places = places) override suspend fun postCourseLike(courseId: Int) = courseService.postCourseLike(courseId = courseId) } diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollCourseDto.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollCourseDto.kt new file mode 100644 index 00000000..e58b9c3c --- /dev/null +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollCourseDto.kt @@ -0,0 +1,12 @@ +package org.sopt.dateroad.data.dataremote.model.response + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class ResponseEnrollCourseDto( + @SerialName("userPoint") + val userPoint: Int, + @SerialName("userCourseCount") + val userCourseCount: Long +) diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/CourseService.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/CourseService.kt index 3c9b2460..8cdc4ccb 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/CourseService.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/CourseService.kt @@ -4,6 +4,7 @@ import okhttp3.MultipartBody import okhttp3.RequestBody import org.sopt.dateroad.data.dataremote.model.response.ResponseCourseDetailDto import org.sopt.dateroad.data.dataremote.model.response.ResponseCoursesDto +import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollCourseDto import org.sopt.dateroad.data.dataremote.util.ApiConstraints.API import org.sopt.dateroad.data.dataremote.util.ApiConstraints.CITY import org.sopt.dateroad.data.dataremote.util.ApiConstraints.COST @@ -60,7 +61,7 @@ interface CourseService { @Part(COURSE) course: RequestBody, @Part(TAGS) tags: RequestBody, @Part(PLACES) places: RequestBody - ) + ): ResponseEnrollCourseDto @POST("$API/$VERSION/$COURSES/{$COURSE_ID}/$LIKES") suspend fun postCourseLike( diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollCourseDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollCourseDtoMapper.kt new file mode 100644 index 00000000..182cabfc --- /dev/null +++ b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollCourseDtoMapper.kt @@ -0,0 +1,9 @@ +package org.sopt.dateroad.data.mapper.todomain + +import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollCourseDto +import org.sopt.dateroad.domain.model.EnrollCourseResult + +fun ResponseEnrollCourseDto.toDomain(): EnrollCourseResult = EnrollCourseResult( + userPoint = this.userPoint, + userCourseCount = this.userCourseCount +) diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/CourseRepositoryImpl.kt b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/CourseRepositoryImpl.kt index b176eb96..3ff3eee0 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/CourseRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/CourseRepositoryImpl.kt @@ -15,6 +15,7 @@ import org.sopt.dateroad.data.mapper.todomain.toDomain import org.sopt.dateroad.domain.model.Course import org.sopt.dateroad.domain.model.CourseDetail import org.sopt.dateroad.domain.model.Enroll +import org.sopt.dateroad.domain.model.EnrollCourseResult import org.sopt.dateroad.domain.repository.CourseRepository import org.sopt.dateroad.domain.type.GyeonggiAreaType import org.sopt.dateroad.domain.type.IncheonAreaType @@ -58,13 +59,13 @@ class CourseRepositoryImpl @Inject constructor( courseRemoteDataSource.getSortedCourses(sortBy = sortedBy.name).toDomain() } - override suspend fun postCourse(enroll: Enroll): Result = runCatching { + override suspend fun postCourse(enroll: Enroll): Result = runCatching { courseRemoteDataSource.postCourse( images = enroll.images.map { image -> ContentUriRequestBody(contentResolver = contentResolver, uri = Uri.parse(image)).toFormData() }, course = Json.encodeToString(enroll.toCourseData()).toRequestBody("application/json".toMediaType()), places = Json.encodeToString(enroll.places.mapIndexed { index, place -> place.toData(sequence = index) }).toRequestBody("application/json".toMediaType()), tags = Json.encodeToString(enroll.tags.map { tag -> tag.toData() }).toRequestBody("application/json".toMediaType()) - ) + ).toDomain() } override suspend fun postCourseLike(courseId: Int): Result = runCatching { diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/EnrollCourseResult.kt b/app/src/main/java/org/sopt/dateroad/domain/model/EnrollCourseResult.kt new file mode 100644 index 00000000..dcd3f596 --- /dev/null +++ b/app/src/main/java/org/sopt/dateroad/domain/model/EnrollCourseResult.kt @@ -0,0 +1,6 @@ +package org.sopt.dateroad.domain.model + +data class EnrollCourseResult( + val userPoint: Int, + val userCourseCount: Long +) diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/CourseRepository.kt b/app/src/main/java/org/sopt/dateroad/domain/repository/CourseRepository.kt index 834e54f9..8969c20d 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/CourseRepository.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/repository/CourseRepository.kt @@ -3,6 +3,7 @@ package org.sopt.dateroad.domain.repository import org.sopt.dateroad.domain.model.Course import org.sopt.dateroad.domain.model.CourseDetail import org.sopt.dateroad.domain.model.Enroll +import org.sopt.dateroad.domain.model.EnrollCourseResult import org.sopt.dateroad.domain.type.MoneyTagType import org.sopt.dateroad.domain.type.RegionType import org.sopt.dateroad.domain.type.SortByType @@ -18,7 +19,7 @@ interface CourseRepository { suspend fun getSortedCourses(sortedBy: SortByType): Result> - suspend fun postCourse(enroll: Enroll): Result + suspend fun postCourse(enroll: Enroll): Result suspend fun postCourseLike(courseId: Int): Result } diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseUseCase.kt b/app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseUseCase.kt index fa608a69..3fb4981c 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseUseCase.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseUseCase.kt @@ -3,11 +3,12 @@ package org.sopt.dateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton import org.sopt.dateroad.domain.model.Enroll +import org.sopt.dateroad.domain.model.EnrollCourseResult import org.sopt.dateroad.domain.repository.CourseRepository @Singleton class PostCourseUseCase @Inject constructor( private val courseRepository: CourseRepository ) { - suspend operator fun invoke(enroll: Enroll): Result = courseRepository.postCourse(enroll = enroll) + suspend operator fun invoke(enroll: Enroll): Result = courseRepository.postCourse(enroll = enroll) } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollViewModel.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollViewModel.kt index 29cb0e85..de6cf2a0 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollViewModel.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollViewModel.kt @@ -13,6 +13,9 @@ import org.sopt.dateroad.domain.usecase.PostCourseUseCase import org.sopt.dateroad.domain.usecase.PostTimelineUseCase import org.sopt.dateroad.presentation.type.EnrollScreenType import org.sopt.dateroad.presentation.type.EnrollType +import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_COURSE_COUNT +import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_POINT +import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils import org.sopt.dateroad.presentation.util.base.BaseViewModel import org.sopt.dateroad.presentation.util.view.LoadState @@ -142,8 +145,10 @@ class EnrollViewModel @Inject constructor( private fun postCourse() { viewModelScope.launch { setEvent(EnrollContract.EnrollEvent.Enroll(loadState = LoadState.Loading)) - postCourseUseCase(enroll = currentState.enroll).onSuccess { + postCourseUseCase(enroll = currentState.enroll).onSuccess { result -> setEvent(EnrollContract.EnrollEvent.Enroll(loadState = LoadState.Success)) + AmplitudeUtils.updateIntUserProperty(propertyName = USER_POINT, propertyValue = result.userPoint) + AmplitudeUtils.updateIntUserProperty(propertyName = USER_COURSE_COUNT, propertyValue = result.userCourseCount.toInt()) }.onFailure { setEvent(EnrollContract.EnrollEvent.Enroll(loadState = LoadState.Error)) } From dfb24e68289573b4abe86b65498e94b02c692dbe Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Mon, 23 Sep 2024 16:13:56 +0900 Subject: [PATCH 19/49] =?UTF-8?q?[chore]=20#268=20=EB=AC=B4=EB=A3=8C=20?= =?UTF-8?q?=EC=97=B4=EB=9E=8C=20=EA=B8=B0=ED=9A=8C=20=EC=B4=88=EA=B8=B0?= =?UTF-8?q?=EA=B0=92=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt index 5a9d1343..96c5eb15 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt @@ -133,7 +133,7 @@ fun ProfileRoute( navigationToHome() AmplitudeUtils.updateStringUserProperty(propertyName = USER_NAME, propertyValue = uiState.signUp.userSignUpInfo.name) AmplitudeUtils.updateIntUserProperty(propertyName = USER_POINT, propertyValue = 0) - AmplitudeUtils.updateIntUserProperty(propertyName = USER_FREE_REMAINED, propertyValue = 0) + AmplitudeUtils.updateIntUserProperty(propertyName = USER_FREE_REMAINED, propertyValue = 3) AmplitudeUtils.updateIntUserProperty(propertyName = USER_PURCHASE_COUNT, propertyValue = 0) AmplitudeUtils.updateIntUserProperty(propertyName = USER_COURSE_COUNT, propertyValue = 0) AmplitudeUtils.updateIntUserProperty(propertyName = DATE_SCHEDULE_NUM, propertyValue = 0) From 729626149adbc61f04286a02e79930ad8572059f Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Tue, 24 Sep 2024 14:15:30 +0900 Subject: [PATCH 20/49] =?UTF-8?q?[chore]=20#256=20viewPath=20=EC=9D=B8?= =?UTF-8?q?=EC=9E=90=EB=A1=9C=20=EB=84=98=EA=B2=A8=EC=A3=BC=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/navigator/component/MainNavHost.kt | 12 +++++++++++- .../navigation/TimelineDetailNavigation.kt | 10 ++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt index dc3e58f2..1f0d17ad 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt @@ -26,6 +26,8 @@ import org.sopt.dateroad.presentation.ui.read.navigation.readNavGraph import org.sopt.dateroad.presentation.ui.signin.navigation.signInGraph import org.sopt.dateroad.presentation.ui.timeline.navigation.timelineNavGraph import org.sopt.dateroad.presentation.ui.timelinedetail.navigation.timelineDetailGraph +import org.sopt.dateroad.presentation.util.ViewPath.HOME +import org.sopt.dateroad.presentation.util.ViewPath.TIMELINE import org.sopt.dateroad.ui.theme.DateRoadTheme @Composable @@ -142,9 +144,17 @@ fun MainNavHost( navigateToTimelineDetail = navigator::navigateToTimelineDetail ) + val previousRoute = navigator.navHostController.previousBackStackEntry?.destination?.route ?: "Unknown" + + val previousView = when (previousRoute) { + HOME -> "홈" + TIMELINE -> "데이트 일정" + else -> "Unknown" + } + timelineDetailGraph( popBackStack = navigator::popBackStackIfNotHome, - navController = navigator.navHostController + viewPath= previousView ) } } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt index 1d0a6c25..21dd3f23 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt @@ -16,7 +16,7 @@ fun NavController.navigateToTimelineDetail(timelineType: TimelineType, timelineI } fun NavGraphBuilder.timelineDetailGraph( - navController: NavController, + viewPath: String, popBackStack: () -> Unit ) { composable( @@ -29,19 +29,13 @@ fun NavGraphBuilder.timelineDetailGraph( val timelineType = TimelineType.valueOf(backStackEntry.arguments?.getString(TimelineDetailRoutes.TIMELINE_TYPE) ?: TimelineType.PINK.name) val timelineId = backStackEntry.arguments?.getInt(TimelineDetailRoutes.TIMELINE_ID) ?: 1 - val previousRoute = navController.previousBackStackEntry?.destination?.route ?: "Unknown" - val previousView = when (previousRoute) { - HOME -> "홈" - TIMELINE -> "데이트 일정" - else -> "Unknown" - } TimelineDetailRoute( popBackStack = popBackStack, timelineId = timelineId, timelineType = timelineType, - previousView = previousView + previousView = viewPath ) } } From c4147ef64657896dade442979a81f139bebb0075 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Tue, 24 Sep 2024 17:00:37 +0900 Subject: [PATCH 21/49] =?UTF-8?q?[feat]=20#268=20=EC=BD=94=EC=8A=A4=20?= =?UTF-8?q?=EC=97=B4=EB=9E=8C=20=EC=8B=9C=20UserProperty=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../datasource/UserPointRemoteDataSource.kt | 3 ++- .../UserPointRemoteDataSourceImpl.kt | 3 ++- .../model/response/ResponseUserUsePointDto.kt | 14 ++++++++++++++ .../data/dataremote/service/UserPointService.kt | 3 ++- .../todomain/ResponseUserUsePointDtoMapper.kt | 10 ++++++++++ .../data/repositoryimpl/UserPointRepositoryImpl.kt | 5 +++-- .../sopt/dateroad/domain/model/PointUseResult.kt | 8 ++++++++ .../domain/repository/UserPointRepository.kt | 3 ++- .../dateroad/domain/usecase/PostUsePointUseCase.kt | 4 ++-- .../ui/coursedetail/CourseDetailViewModel.kt | 9 ++++++++- 10 files changed, 53 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseUserUsePointDto.kt create mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseUserUsePointDtoMapper.kt create mode 100644 app/src/main/java/org/sopt/dateroad/domain/model/PointUseResult.kt diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/UserPointRemoteDataSource.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/UserPointRemoteDataSource.kt index e6d980c2..7a9b6329 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/UserPointRemoteDataSource.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/UserPointRemoteDataSource.kt @@ -3,11 +3,12 @@ package org.sopt.dateroad.data.dataremote.datasource import org.sopt.dateroad.data.dataremote.model.request.RequestUsePointDto import org.sopt.dateroad.data.dataremote.model.response.ResponsePointHistoryDto import org.sopt.dateroad.data.dataremote.model.response.ResponseUserPointDto +import org.sopt.dateroad.data.dataremote.model.response.ResponseUserUsePointDto interface UserPointRemoteDataSource { suspend fun getUserPoint(): ResponseUserPointDto suspend fun getPointHistory(): ResponsePointHistoryDto - suspend fun postUsePoint(courseId: Int, requestUsePointDto: RequestUsePointDto) + suspend fun postUsePoint(courseId: Int, requestUsePointDto: RequestUsePointDto): ResponseUserUsePointDto } diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/UserPointRemoteDataSourceImpl.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/UserPointRemoteDataSourceImpl.kt index 6bccb202..03c877d8 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/UserPointRemoteDataSourceImpl.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/UserPointRemoteDataSourceImpl.kt @@ -5,6 +5,7 @@ import org.sopt.dateroad.data.dataremote.datasource.UserPointRemoteDataSource import org.sopt.dateroad.data.dataremote.model.request.RequestUsePointDto import org.sopt.dateroad.data.dataremote.model.response.ResponsePointHistoryDto import org.sopt.dateroad.data.dataremote.model.response.ResponseUserPointDto +import org.sopt.dateroad.data.dataremote.model.response.ResponseUserUsePointDto import org.sopt.dateroad.data.dataremote.service.UserPointService class UserPointRemoteDataSourceImpl @Inject constructor( @@ -14,5 +15,5 @@ class UserPointRemoteDataSourceImpl @Inject constructor( override suspend fun getPointHistory(): ResponsePointHistoryDto = userPointService.getPointHistory() - override suspend fun postUsePoint(courseId: Int, requestUsePointDto: RequestUsePointDto) = userPointService.postUsePoint(courseId = courseId, requestUsePointDto = requestUsePointDto) + override suspend fun postUsePoint(courseId: Int, requestUsePointDto: RequestUsePointDto): ResponseUserUsePointDto = userPointService.postUsePoint(courseId = courseId, requestUsePointDto = requestUsePointDto) } diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseUserUsePointDto.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseUserUsePointDto.kt new file mode 100644 index 00000000..c67218c1 --- /dev/null +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseUserUsePointDto.kt @@ -0,0 +1,14 @@ +package org.sopt.dateroad.data.dataremote.model.response + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class ResponseUserUsePointDto( + @SerialName("userPoint") + val userPoint: Int, + @SerialName("userFreeRemained") + val userFreeRemained: Int, + @SerialName("userPurchaseCount") + val userPurchaseCount: Long +) diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/UserPointService.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/UserPointService.kt index ec718ef6..b18baf54 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/UserPointService.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/UserPointService.kt @@ -3,6 +3,7 @@ package org.sopt.dateroad.data.dataremote.service import org.sopt.dateroad.data.dataremote.model.request.RequestUsePointDto import org.sopt.dateroad.data.dataremote.model.response.ResponsePointHistoryDto import org.sopt.dateroad.data.dataremote.model.response.ResponseUserPointDto +import org.sopt.dateroad.data.dataremote.model.response.ResponseUserUsePointDto import org.sopt.dateroad.data.dataremote.util.ApiConstraints.API import org.sopt.dateroad.data.dataremote.util.ApiConstraints.COURSES import org.sopt.dateroad.data.dataremote.util.ApiConstraints.COURSE_ID @@ -27,5 +28,5 @@ interface UserPointService { suspend fun postUsePoint( @Path(COURSE_ID) courseId: Int, @Body requestUsePointDto: RequestUsePointDto - ) + ): ResponseUserUsePointDto } diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseUserUsePointDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseUserUsePointDtoMapper.kt new file mode 100644 index 00000000..3e92e338 --- /dev/null +++ b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseUserUsePointDtoMapper.kt @@ -0,0 +1,10 @@ +package org.sopt.dateroad.data.mapper.todomain + +import org.sopt.dateroad.data.dataremote.model.response.ResponseUserUsePointDto +import org.sopt.dateroad.domain.model.PointUseResult + +fun ResponseUserUsePointDto.toDomain(): PointUseResult = PointUseResult( + userPoint = this.userPoint, + userFreeRemained = this.userFreeRemained, + userPurchaseCount = this.userPurchaseCount +) diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserPointRepositoryImpl.kt b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserPointRepositoryImpl.kt index 6bcaa4ad..459178fc 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserPointRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserPointRepositoryImpl.kt @@ -5,6 +5,7 @@ import org.sopt.dateroad.data.dataremote.datasource.UserPointRemoteDataSource import org.sopt.dateroad.data.mapper.todata.toData import org.sopt.dateroad.data.mapper.todomain.toDomain import org.sopt.dateroad.domain.model.PointHistory +import org.sopt.dateroad.domain.model.PointUseResult import org.sopt.dateroad.domain.model.UsePoint import org.sopt.dateroad.domain.model.UserPoint import org.sopt.dateroad.domain.repository.UserPointRepository @@ -20,7 +21,7 @@ class UserPointRepositoryImpl @Inject constructor( userPointRemoteDataSource.getPointHistory().toDomain() } - override suspend fun postUsePoint(courseId: Int, usePoint: UsePoint) { - userPointRemoteDataSource.postUsePoint(courseId = courseId, requestUsePointDto = usePoint.toData()) + override suspend fun postUsePoint(courseId: Int, usePoint: UsePoint): Result = runCatching { + userPointRemoteDataSource.postUsePoint(courseId = courseId, requestUsePointDto = usePoint.toData()).toDomain() } } diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/PointUseResult.kt b/app/src/main/java/org/sopt/dateroad/domain/model/PointUseResult.kt new file mode 100644 index 00000000..b2fa449c --- /dev/null +++ b/app/src/main/java/org/sopt/dateroad/domain/model/PointUseResult.kt @@ -0,0 +1,8 @@ +package org.sopt.dateroad.domain.model + +data class PointUseResult( + val userPoint: Int, + val userFreeRemained: Int, + val userPurchaseCount: Long + +) diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/UserPointRepository.kt b/app/src/main/java/org/sopt/dateroad/domain/repository/UserPointRepository.kt index cbf8e89c..6da30ebe 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/UserPointRepository.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/repository/UserPointRepository.kt @@ -1,6 +1,7 @@ package org.sopt.dateroad.domain.repository import org.sopt.dateroad.domain.model.PointHistory +import org.sopt.dateroad.domain.model.PointUseResult import org.sopt.dateroad.domain.model.UsePoint import org.sopt.dateroad.domain.model.UserPoint @@ -9,5 +10,5 @@ interface UserPointRepository { suspend fun getPointHistory(): Result - suspend fun postUsePoint(courseId: Int, usePoint: UsePoint) + suspend fun postUsePoint(courseId: Int, usePoint: UsePoint): Result } diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostUsePointUseCase.kt b/app/src/main/java/org/sopt/dateroad/domain/usecase/PostUsePointUseCase.kt index da2f2945..d1dfe0f9 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostUsePointUseCase.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/usecase/PostUsePointUseCase.kt @@ -2,6 +2,7 @@ package org.sopt.dateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton +import org.sopt.dateroad.domain.model.PointUseResult import org.sopt.dateroad.domain.model.UsePoint import org.sopt.dateroad.domain.repository.UserPointRepository @@ -9,7 +10,6 @@ import org.sopt.dateroad.domain.repository.UserPointRepository class PostUsePointUseCase @Inject constructor( private val userPointRepository: UserPointRepository ) { - suspend operator fun invoke(courseId: Int, usePoint: UsePoint): Result = runCatching { + suspend operator fun invoke(courseId: Int, usePoint: UsePoint): Result = userPointRepository.postUsePoint(courseId = courseId, usePoint = usePoint) - } } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt index ecb9a3cf..c21bf7b8 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt @@ -11,6 +11,10 @@ import org.sopt.dateroad.domain.usecase.GetCourseDetailUseCase import org.sopt.dateroad.domain.usecase.PostCourseLikeUseCase import org.sopt.dateroad.domain.usecase.PostUsePointUseCase import org.sopt.dateroad.presentation.util.Point +import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_FREE_REMAINED +import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_POINT +import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_PURCHASE_COUNT +import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils import org.sopt.dateroad.presentation.util.base.BaseViewModel import org.sopt.dateroad.presentation.util.view.LoadState @@ -89,8 +93,11 @@ class CourseDetailViewModel @Inject constructor( fun postUsePoint(courseId: Int) { viewModelScope.launch { setEvent(CourseDetailContract.CourseDetailEvent.PostUsePoint(usePointLoadState = LoadState.Loading, isAccess = currentState.courseDetail.isAccess)) - postUsePointUseCase(courseId = courseId, usePoint = UsePoint(Point.POINT, Point.POINT_USED, Point.POINT_USED_DESCRIPTION)).onSuccess { + postUsePointUseCase(courseId = courseId, usePoint = UsePoint(Point.POINT, Point.POINT_USED, Point.POINT_USED_DESCRIPTION)).onSuccess { result -> setEvent(CourseDetailContract.CourseDetailEvent.PostUsePoint(usePointLoadState = LoadState.Success, isAccess = true)) + AmplitudeUtils.updateIntUserProperty(propertyName = USER_POINT, propertyValue = result.userPoint) + AmplitudeUtils.updateIntUserProperty(propertyName = USER_FREE_REMAINED, propertyValue = result.userFreeRemained) + AmplitudeUtils.updateIntUserProperty(propertyName = USER_PURCHASE_COUNT, propertyValue = result.userPurchaseCount.toInt()) }.onFailure { setEvent(CourseDetailContract.CourseDetailEvent.PostUsePoint(usePointLoadState = LoadState.Error, isAccess = currentState.courseDetail.isAccess)) } From ec5eca2ffd3eb38b523cec304a348c3997663eba Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Wed, 25 Sep 2024 16:23:31 +0900 Subject: [PATCH 22/49] =?UTF-8?q?[feat]=20#268=20=EC=9D=BC=EC=A0=95=20?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=20=EC=8B=9C=20UserProperty=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dataremote/datasource/TimelineRemoteDataSource.kt | 3 ++- .../datasourceimpl/TimelineRemoteDataSourceImpl.kt | 3 ++- .../model/response/ResponseEnrollTimelineDto.kt | 10 ++++++++++ .../data/dataremote/service/TimelineService.kt | 3 ++- .../mapper/todomain/ResponseEnrollTimelineDtoMapper.kt | 8 ++++++++ .../data/repositoryimpl/TimelineRepositoryImpl.kt | 5 +++-- .../sopt/dateroad/domain/model/EnrollTimelineResult.kt | 5 +++++ .../dateroad/domain/repository/TimelineRepository.kt | 3 ++- .../dateroad/domain/usecase/PostTimelineUseCase.kt | 3 ++- .../dateroad/presentation/ui/enroll/EnrollViewModel.kt | 4 +++- .../org/sopt/dateroad/presentation/util/Constraints.kt | 2 +- 11 files changed, 40 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollTimelineDto.kt create mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollTimelineDtoMapper.kt create mode 100644 app/src/main/java/org/sopt/dateroad/domain/model/EnrollTimelineResult.kt diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/TimelineRemoteDataSource.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/TimelineRemoteDataSource.kt index b210627c..b24f5591 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/TimelineRemoteDataSource.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/TimelineRemoteDataSource.kt @@ -1,6 +1,7 @@ package org.sopt.dateroad.data.dataremote.datasource import org.sopt.dateroad.data.dataremote.model.request.RequestTimelineDto +import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollTimelineDto import org.sopt.dateroad.data.dataremote.model.response.ResponseNearestTimelineDto import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelineDetailDto import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelinesDto @@ -14,5 +15,5 @@ interface TimelineRemoteDataSource { suspend fun getNearestTimeline(): ResponseNearestTimelineDto - suspend fun postTimeline(requestTimelineDto: RequestTimelineDto) + suspend fun postTimeline(requestTimelineDto: RequestTimelineDto): ResponseEnrollTimelineDto } diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/TimelineRemoteDataSourceImpl.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/TimelineRemoteDataSourceImpl.kt index 66624bb6..e98ab11e 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/TimelineRemoteDataSourceImpl.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/TimelineRemoteDataSourceImpl.kt @@ -3,6 +3,7 @@ package org.sopt.dateroad.data.dataremote.datasourceimpl import javax.inject.Inject import org.sopt.dateroad.data.dataremote.datasource.TimelineRemoteDataSource import org.sopt.dateroad.data.dataremote.model.request.RequestTimelineDto +import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollTimelineDto import org.sopt.dateroad.data.dataremote.model.response.ResponseNearestTimelineDto import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelineDetailDto import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelinesDto @@ -19,5 +20,5 @@ class TimelineRemoteDataSourceImpl @Inject constructor( override suspend fun getNearestTimeline(): ResponseNearestTimelineDto = timelineService.getNearestTimeline() - override suspend fun postTimeline(requestTimelineDto: RequestTimelineDto) = timelineService.postTimeline(requestTimelineDto = requestTimelineDto) + override suspend fun postTimeline(requestTimelineDto: RequestTimelineDto): ResponseEnrollTimelineDto = timelineService.postTimeline(requestTimelineDto = requestTimelineDto) } diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollTimelineDto.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollTimelineDto.kt new file mode 100644 index 00000000..8779af0a --- /dev/null +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollTimelineDto.kt @@ -0,0 +1,10 @@ +package org.sopt.dateroad.data.dataremote.model.response + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class ResponseEnrollTimelineDto( + @SerialName("dateScheduleNum") + val dateScheduleNum: Long +) diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/TimelineService.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/TimelineService.kt index 8665d5bb..107e25bd 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/TimelineService.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/TimelineService.kt @@ -1,6 +1,7 @@ package org.sopt.dateroad.data.dataremote.service import org.sopt.dateroad.data.dataremote.model.request.RequestTimelineDto +import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollTimelineDto import org.sopt.dateroad.data.dataremote.model.response.ResponseNearestTimelineDto import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelineDetailDto import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelinesDto @@ -39,5 +40,5 @@ interface TimelineService { @POST("$API/$VERSION/$DATES") suspend fun postTimeline( @Body requestTimelineDto: RequestTimelineDto - ) + ): ResponseEnrollTimelineDto } diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollTimelineDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollTimelineDtoMapper.kt new file mode 100644 index 00000000..59fe1341 --- /dev/null +++ b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollTimelineDtoMapper.kt @@ -0,0 +1,8 @@ +package org.sopt.dateroad.data.mapper.todomain + +import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollTimelineDto +import org.sopt.dateroad.domain.model.EnrollTimelineResult + +fun ResponseEnrollTimelineDto.toDomain(): EnrollTimelineResult = EnrollTimelineResult( + dateScheduleNum = this.dateScheduleNum +) diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/TimelineRepositoryImpl.kt b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/TimelineRepositoryImpl.kt index 5d9e1452..8aae5764 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/TimelineRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/TimelineRepositoryImpl.kt @@ -7,6 +7,7 @@ import org.sopt.dateroad.data.mapper.todomain.toDomain import org.sopt.dateroad.data.mapper.todomain.toFutureTimelineDomain import org.sopt.dateroad.data.mapper.todomain.toPastTimelineDomain import org.sopt.dateroad.domain.model.Enroll +import org.sopt.dateroad.domain.model.EnrollTimelineResult import org.sopt.dateroad.domain.model.NearestTimeline import org.sopt.dateroad.domain.model.Timeline import org.sopt.dateroad.domain.model.TimelineDetail @@ -37,7 +38,7 @@ class TimelineRepositoryImpl @Inject constructor( timelineRemoteDataSource.getNearestTimeline().toDomain() } - override suspend fun postTimeline(enroll: Enroll) = runCatching { - timelineRemoteDataSource.postTimeline(requestTimelineDto = enroll.toTimelineData()) + override suspend fun postTimeline(enroll: Enroll): Result = runCatching { + timelineRemoteDataSource.postTimeline(requestTimelineDto = enroll.toTimelineData()).toDomain() } } diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/EnrollTimelineResult.kt b/app/src/main/java/org/sopt/dateroad/domain/model/EnrollTimelineResult.kt new file mode 100644 index 00000000..7f61470d --- /dev/null +++ b/app/src/main/java/org/sopt/dateroad/domain/model/EnrollTimelineResult.kt @@ -0,0 +1,5 @@ +package org.sopt.dateroad.domain.model + +data class EnrollTimelineResult( + val dateScheduleNum: Long +) diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/TimelineRepository.kt b/app/src/main/java/org/sopt/dateroad/domain/repository/TimelineRepository.kt index 46d1ffe0..0b67d3f3 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/TimelineRepository.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/repository/TimelineRepository.kt @@ -1,6 +1,7 @@ package org.sopt.dateroad.domain.repository import org.sopt.dateroad.domain.model.Enroll +import org.sopt.dateroad.domain.model.EnrollTimelineResult import org.sopt.dateroad.domain.model.NearestTimeline import org.sopt.dateroad.domain.model.Timeline import org.sopt.dateroad.domain.model.TimelineDetail @@ -15,5 +16,5 @@ interface TimelineRepository { suspend fun getNearestTimeline(): Result - suspend fun postTimeline(enroll: Enroll): Result + suspend fun postTimeline(enroll: Enroll): Result } diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostTimelineUseCase.kt b/app/src/main/java/org/sopt/dateroad/domain/usecase/PostTimelineUseCase.kt index 1d13755a..91885b8a 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostTimelineUseCase.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/usecase/PostTimelineUseCase.kt @@ -3,11 +3,12 @@ package org.sopt.dateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton import org.sopt.dateroad.domain.model.Enroll +import org.sopt.dateroad.domain.model.EnrollTimelineResult import org.sopt.dateroad.domain.repository.TimelineRepository @Singleton class PostTimelineUseCase @Inject constructor( private val timelineRepository: TimelineRepository ) { - suspend operator fun invoke(enroll: Enroll): Result = timelineRepository.postTimeline(enroll = enroll) + suspend operator fun invoke(enroll: Enroll): Result = timelineRepository.postTimeline(enroll = enroll) } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollViewModel.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollViewModel.kt index de6cf2a0..e62022ee 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollViewModel.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollViewModel.kt @@ -13,6 +13,7 @@ import org.sopt.dateroad.domain.usecase.PostCourseUseCase import org.sopt.dateroad.domain.usecase.PostTimelineUseCase import org.sopt.dateroad.presentation.type.EnrollScreenType import org.sopt.dateroad.presentation.type.EnrollType +import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.DATE_SCHEDULE_NUM import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_COURSE_COUNT import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_POINT import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils @@ -158,8 +159,9 @@ class EnrollViewModel @Inject constructor( private fun postTimeline() { viewModelScope.launch { setEvent(EnrollContract.EnrollEvent.Enroll(loadState = LoadState.Loading)) - postTimelineUseCase(enroll = currentState.enroll).onSuccess { + postTimelineUseCase(enroll = currentState.enroll).onSuccess { result -> setEvent(EnrollContract.EnrollEvent.Enroll(loadState = LoadState.Success)) + AmplitudeUtils.updateIntUserProperty(propertyName = DATE_SCHEDULE_NUM, propertyValue = result.dateScheduleNum.toInt()) }.onFailure { setEvent(EnrollContract.EnrollEvent.Enroll(loadState = LoadState.Error)) } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index c6894b40..9423a0e4 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -121,5 +121,5 @@ object UserPropertyAmplitude { const val USER_FREE_REMAINED = "user_free_remained" const val USER_PURCHASE_COUNT = "user_purchase_count" const val USER_COURSE_COUNT = "user_course_count" - const val USER_SCHEDULE_NUM = "user_schedule_num" + const val DATE_SCHEDULE_NUM = "date_schedule_num" } From 2bd53d46100182d9c97e2f2d134bbd680ed35959 Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Wed, 25 Sep 2024 18:01:30 +0900 Subject: [PATCH 23/49] [chore] #272 android_cd.yml (AUTH_TOKEN) --- .github/workflows/android_cd.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/android_cd.yml b/.github/workflows/android_cd.yml index 02df1b7f..69e23514 100644 --- a/.github/workflows/android_cd.yml +++ b/.github/workflows/android_cd.yml @@ -63,9 +63,11 @@ jobs: env: DEFAULTS_ORG: ${{ secrets.DEFAULTS_ORG }} DEFAULTS_PROJECT: ${{ secrets.DEFAULTS_PROJECT }} + AUTH_TOKEN: ${{ secrets.AUTH_TOKEN }} run: | echo "defaults.org=$DEFAULTS_ORG" >> sentry.properties echo "defaults.project=$DEFAULTS_PROJECT" >> sentry.properties + echo "auth.token=$AUTH_TOKEN" >> sentry.properties - name: Build Release APK run: | From 5d97ea20905dffb93bd5e36db5ffacaf0521ec6d Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Wed, 25 Sep 2024 18:26:29 +0900 Subject: [PATCH 24/49] =?UTF-8?q?[chore]=20#272=20string=20=EB=A6=AC?= =?UTF-8?q?=EC=86=8C=EC=8A=A4=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dateroad/presentation/type/ProfileType.kt | 4 +- .../component/CourseDetailCost.kt | 2 +- .../presentation/ui/home/HomeScreen.kt | 4 +- .../ui/timeline/TimelineScreen.kt | 2 +- app/src/main/res/values/strings.xml | 101 ++++++++---------- 5 files changed, 52 insertions(+), 61 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/ProfileType.kt b/app/src/main/java/org/sopt/dateroad/presentation/type/ProfileType.kt index bd11b143..529d5ded 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/ProfileType.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/type/ProfileType.kt @@ -9,10 +9,10 @@ enum class ProfileType( ) { ENROLL( topAppBarTitleRes = R.string.profile_enroll_top_bar_title, - buttonTextRes = R.string.enroll_profile_button + buttonTextRes = R.string.profile_enroll_button ), EDIT( topAppBarTitleRes = R.string.profile_edit_top_bar_title, - buttonTextRes = R.string.edit_profile_button + buttonTextRes = R.string.profile_edit_button ) } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailCost.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailCost.kt index 254bd747..c9c024f0 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailCost.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailCost.kt @@ -22,7 +22,7 @@ fun CourseDetailCost( Spacer(modifier = Modifier.height(14.dp)) Text( modifier = Modifier.padding(horizontal = 16.dp), - text = stringResource(id = R.string.course_total_cost_string), + text = stringResource(id = R.string.course_detail_total_cost_string), style = DateRoadTheme.typography.titleBold18, color = DateRoadTheme.colors.black ) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt index d14c9604..318bd431 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt @@ -207,7 +207,7 @@ fun HomeScreen( color = DateRoadTheme.colors.gray400 ) DateRoadTextButton( - textContent = stringResource(id = R.string.button_more), + textContent = stringResource(id = R.string.more), textStyle = DateRoadTheme.typography.bodyBold13, textColor = DateRoadTheme.colors.purple600, paddingHorizontal = 20.dp, @@ -279,7 +279,7 @@ fun HomeScreen( modifier = Modifier.padding(horizontal = 16.dp) ) DateRoadTextButton( - textContent = stringResource(id = R.string.button_more), + textContent = stringResource(id = R.string.more), textStyle = DateRoadTheme.typography.bodyBold13, textColor = DateRoadTheme.colors.purple600, paddingHorizontal = 20.dp, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineScreen.kt index 7f893c44..e08a1d78 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineScreen.kt @@ -185,7 +185,7 @@ fun TimelineScreen( ) { DateRoadFilledButton( isEnabled = true, - textContent = stringResource(id = R.string.button_past_date), + textContent = stringResource(id = R.string.timeline_past_date), onClick = onPastButtonClick, textStyle = DateRoadTheme.typography.bodyBold15, enabledBackgroundColor = DateRoadTheme.colors.gray100, diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 6f92ef7c..4ed1bb58 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -11,8 +11,9 @@ 완료 적용하기 %s시간 + 더보기 - + 취소 확인 확인했어요 @@ -90,23 +91,13 @@ 5만원 이하 3만원 이하 - - 데이트 코스를 등록하면\n 포인트를 얻을 수 있어요 - 내 데이트를 자랑하고 포인트를 받아보세요 - 처음 3번 무료로\n데이트 코스를 열람할 수 있어요 - 무료 찬스로 데이트를 열람하세요 - 쌓인 포인트로\n다양한 데이트 코스를 둘러보세요 - 다른 커플의 데이트, 궁금하지 않으세요? - 모인 포인트는 데이트 장소를\n예약할 때 현금처럼 사용 가능해요 - 추후 만들어질 기능을 기대해주세요 - 데이트로드는 포인트로\n데이트 코스를 열람할 수 있어요 최초 3회 무료 찬스로\n다른 사람의 데이트 코스를 구경하세요! (이후에는 50포인트로 코스를 열람할 수 있어요) 데이트 코스를 등록하면\n100 포인트를 얻을 수 있어요 내 연인과 함께한 데이트 코스를 자랑하고\n포인트를 받아보세요 - + 쌓인 포인트로\n다양한 데이트 코스를 둘러보세요 모인 포인트는 데이트 장소를 예약할 때\n현금처럼 사용 가능해요 (추후 제공될 기능이에요) @@ -176,8 +167,7 @@ 삭제된 코스는 복구하실 수 없어요 신고된 게시물은 운영원칙에 따라 조치할 예정이에요 - - + 포인트 내역 코스 등록하기 일정 등록하기 @@ -195,28 +185,21 @@ 카카오 로그인 카카오톡으로 공유하기 - + %1$d자 / %2$d자 이상 - + %1$s\님의 포인트 %1$d P 포인트 내역 보기 - + 지역을 선택해주세요 적용하기 글 삭제 데이트 일정 설정 - - 내가 등록한 코스 - 포인트 제도 소개 - 문의하기 - 로그아웃 - 탈퇴하기 - - + 나의 데이트 성향 (%1$d/%2$d) 데이트코스와 어울리는 태그를 선택해 주세요 (%1$d/%2$d) @@ -230,7 +213,7 @@ 코스 정보가 궁금하신가요? 코스 타임라인 내 일정에 추가하기 - 전체 비용 + 전체 비용 태그 데이트 코스 설정 글 삭제 @@ -238,22 +221,13 @@ 신고하기 무지출 - + 다가오는 데이트 일정이 없어요 일정을 등록하러 가볼까요? %1$s월 %2$s일 D-%s %s 시작 - - 프로필 등록하기 - 프로필 변경하기 - - - - 프로필 생성하기 - 다음 - 이미지를 삽입해 주세요\n(최소 1장, 최대 10장) 장소명을 입력해주세요 @@ -277,8 +251,37 @@ 데이트 예상 총 비용을 숫자로만 입력해 주세요 완료 - - 지난 데이트 보기 + + %s님, 오늘은\n이런 데이트 코스 어떠세요? + 후기 보장 HOT 데이트 코스 둘러보기 + 새로 올라왔어요 + 가장 최근에 올라온 코스 보러가기 + %d P + %d/%d + + + 내가 등록한 코스 + 포인트 제도 소개 + 문의하기 + 로그아웃 + 탈퇴하기 + + + 프로필 생성하기 + 다음 + + + 포인트 제도 소개 + 데이트로드는 포인트로\n데이트 코스를 열람할 수 있어요. + 포인트는 데이트 코스를 등록하면 얻을 수 있어요. + 데이트 코스를 등록하면\n 포인트를 얻을 수 있어요 + 내 데이트를 자랑하고 포인트를 받아보세요 + 처음 3번 무료로\n데이트 코스를 열람할 수 있어요 + 무료 찬스로 데이트를 열람하세요 + 쌓인 포인트로\n다양한 데이트 코스를 둘러보세요 + 다른 커플의 데이트, 궁금하지 않으세요? + 모인 포인트는 데이트 장소를\n예약할 때 현금처럼 사용 가능해요 + 추후 만들어질 기능을 기대해주세요 내 프로필 @@ -294,32 +297,20 @@ 취소 사진 등록 사진 삭제 - - - 포인트 제도 소개 - 데이트로드는 포인트로\n데이트 코스를 열람할 수 있어요. - 포인트는 데이트 코스를 등록하면 얻을 수 있어요. - - - 데이트 코스 올리고 100P 받기 + 프로필 등록하기 + 프로필 변경하기 %s님이 지금까지\n열람한 데이트 코스\n%d개 %s님,\n아직 열람한\n데이트 코스가 없어요 열람한 코스로 데이트를 짜보세요 - 더보기 - - - %s님, 오늘은\n이런 데이트 코스 어떠세요? - 후기 보장 HOT 데이트 코스 둘러보기 - 새로 올라왔어요 - 가장 최근에 올라온 코스 보러가기 - %d P - %d/%d + + 지난 데이트 보기 데이트 일정 설정 글 삭제 + 데이트 코스 올리고 100P 받기 \ No newline at end of file From 6bf7646b6cf90805a8abd256b1cc711deeb57f79 Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Wed, 25 Sep 2024 18:29:29 +0900 Subject: [PATCH 25/49] [chore] #272 ui theme --- .../java/org/sopt/dateroad/ui/theme/Color.kt | 6 ++++++ .../java/org/sopt/dateroad/ui/theme/Type.kt | 1 - app/src/main/res/font/suit_extralight.ttf | Bin 600412 -> 0 bytes 3 files changed, 6 insertions(+), 1 deletion(-) delete mode 100644 app/src/main/res/font/suit_extralight.ttf diff --git a/app/src/main/java/org/sopt/dateroad/ui/theme/Color.kt b/app/src/main/java/org/sopt/dateroad/ui/theme/Color.kt index f9007a19..bd477e94 100644 --- a/app/src/main/java/org/sopt/dateroad/ui/theme/Color.kt +++ b/app/src/main/java/org/sopt/dateroad/ui/theme/Color.kt @@ -48,6 +48,8 @@ data class DateRoadColors( val purple500: Color, val purple600: Color, val purple700: Color, + + // Sub val pink100: Color, val pink200: Color, val pink300: Color, @@ -82,6 +84,8 @@ val defaultDateRoadColors = DateRoadColors( purple500 = Purple500, purple600 = Purple600, purple700 = Purple700, + + // Sub pink100 = Pink100, pink200 = Pink200, pink300 = Pink300, @@ -102,6 +106,8 @@ val defaultDateRoadColors = DateRoadColors( // Notif alertRed = AlertRed, + + // Kakao kakaoYellow = KakaoYellow ) diff --git a/app/src/main/java/org/sopt/dateroad/ui/theme/Type.kt b/app/src/main/java/org/sopt/dateroad/ui/theme/Type.kt index 160ca124..7cba3106 100644 --- a/app/src/main/java/org/sopt/dateroad/ui/theme/Type.kt +++ b/app/src/main/java/org/sopt/dateroad/ui/theme/Type.kt @@ -10,7 +10,6 @@ import org.sopt.dateroad.R val SuitBold = FontFamily(Font(R.font.suit_bold)) val SuitExtraBold = FontFamily(Font(R.font.suit_extrabold)) -val SuitExtraLight = FontFamily(Font(R.font.suit_extralight)) val SuitMedium = FontFamily(Font(R.font.suit_medium)) val SuitRegular = FontFamily(Font(R.font.suit_regular)) val SuitSemiBold = FontFamily(Font(R.font.suit_semibold)) diff --git a/app/src/main/res/font/suit_extralight.ttf b/app/src/main/res/font/suit_extralight.ttf deleted file mode 100644 index c43b9a50b4ba9454b0e7d278c1921e4f592ed9c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600412 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

I0(FYg!)`b3BKTsQ^>+E>Zf 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%0D=X`)H@11L=YPFzI@?ZX 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 z@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF z@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF z@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF z@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF@;~xF z@;~xF@;~uE@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD z@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD z@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD z@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD z@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD z@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD z@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD z@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD z@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD z@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvlD@jvrF z^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H z^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H z^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H z^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H z^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H z^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H z^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H z^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H z^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H z^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^FQ-H^S|)F@W1fC@W1fC z@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC z@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC z@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC z@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC z@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC z@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC z@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC z@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC z@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC z@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1fC@W1lE^1t%G^1t%G^1t%G^1t%G z^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G z^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G z^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G z^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G z^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G z^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G z^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G z^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G z^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G z^1t%G^1t%G^1t%G^1t%G^1t%G^1t%G^1t!F@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE z@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE z@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE z@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE z@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE z@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE z@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE z@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE z@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE z@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE@xSrE z@xSrE@xSrE@xSrE@xSrE@xSxG^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I z^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I z^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I z^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I z^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I z^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I z^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I z^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I z^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I z^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I^S|@I z^S|@I^S|@I^MCMv@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s z@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s z@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s z@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s z@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s z@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s z@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s z@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s z@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s z@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s@PF`s z@PG1u@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw z@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw z@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw z@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw z@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw z@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw z@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw z@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw z@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw z@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Jw@_+Gv@qh7u z@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u z@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u z@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u z@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u z@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u z@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u z@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u z@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u z@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u z@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@qh7u@&9{>|9}4TfB*aa8R*~p z|K9`k^6&ls@4{Qf`uKYsro{vW^p5C4zf|A+s_@BhR9a!Ga{2E4kbyJvbdYT4Gq(#%MfEx%%JlsWGi*_P$8bz*`^z$A*m z1U!!(tDTXzZN+xTSKNE*Uyt)YRj2Cys&CzD{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji-{!ji- z{!ji-{!ji-{?FxqeEomi|B3Rr{~zUX|3Av({(qFm{r@PB`~OiM_y40j?*B)5-2adA zxc?vJasNNcWW<5zD{)kJ~%)FaIN!fB7G={LBA{W<5zD{)k68ZYf817*fB7G={LBA{W<5zD{)k68ZYf5h@H z|KoO+{LBA{W<5zD{)k68ZYf5h@H|09-v`5(8@W< z5zD{)k68ZYf5h@H|09-v`5&?T%m282C;#$4V)>W<5zD{)k68ZYf5h@H|09-v`5&?T z%m0YwU;f8!L;08g5zD{)k68ZYf5h@H|09-v`5&?T%m0YwU;ald|MEX>SIWQqk68ZY zf5h@H|09-v`5&?T%m0YwU;ald|MEX#`IrB3n^gYgf5h@H|09-v`5&?T%m0YwU;ald z|MEX#`Ir9@%fI}O+q3d7|09-v`5&?T%m0YwU;ald|MEX#`Ir9@%fI}OSpMaI+!mI9 z`5&?T%m0YwU;ald|MEX#`Ir9@%fI}OSpMaI#PToy<94+C%m0YwU;ald|MEX#`Ir9@ z%fI}OSpMaI#PToyBbI;pAGg8fU;ald|MEX#`Ir9@%fI}OSpMaI#PToyBbI;pAF=%W zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2( zPyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(PyA2(&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B) z&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)&-~B)FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3 zFZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3FZ?h3ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4ul%q4 zul%q4ul%q4ul%q4ul%q4ul%q4Z~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~SlkZ~Slk zZ~SlkZ~SlkZ~Slk@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul z@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul z@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul z@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul z@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul z@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul z@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul z@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul z@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul z@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul@BHul z@BHulAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(Ku zAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(Ku zAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(Ku zAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(Ku zAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(Ku zAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(KuAN(Ku zAN(KuAN(KuAN(KuAN(KuAN(K7|M(fw@mzG2$8%Xx9?wNbc|4aDbzVj+|2i+@XIJvC^D<)j*LfMS{Oi1oSpIchMlAn2 zFC&(JotF{Izs}2u1*^iPyW z`=UJhC(5IJQ6Bvh<Dx_SMjSFhi>`o{G; zH*UYWXME-M>#x7GXN*kotp3`#=N7Kue@~gRtrJuO4$f_ZW{QI4;(8aQuAz`AeU@f9LkG&~xizKmIR;bx?WuAf5r}*Iv1C=ark+ zU%!9z-id0|bt zdHuEXW%`=(^6h(HSY!9!c=gs(s@{*u=im3B-Xp&DZlw=}dyPkUB#JNNuB?Wxa9xwf zPv+Nw=sUakDgD}9-~C1W{MFZP+`M`H)t7Jo>RNMsipG!d%j5U%+<57iZSMZ9JV@gx0p==wG@;&njAw~^a+VcWJRw~uX~+%Ej={P};lJ+WPiDcjlEG3UZRy?*Cb zOxw1L@wyQ2SGI4(`x7z#M3kRDmcF(9>zIBemiW+D;x z#DnE8Y*$auoa(8ce(v;-PoF>i;^}uzzZcmqNBnc~9@DnRV(Kq$mtxNEY!^OWXIva4A~$qub@}$F@_ve=>&4TaV%L_IwPNBil1kOFh+i@24K` zE5}~@#RuE__?@U}d;Hg)xVU{{duDHQ4Bt9?`|QhSzkBv(48L^tR=nPhsb7uvx6ghv zUSEA^%Z|;C_{n`F*8KKSz7ykbAG40PeQ$i{-`P9Xiv1KztQz*3o{W0-Xs z;{C079b0tv=6SrA`(O0X-Z$TfHQqY=TCDYElwXeWotVDQ*hsrHYdwucLogEvqm8rgp6T|2Hl5pcRj_a83S8 zXXS&s)+h14hF;tE=zn`KKcZuwKRo5(aea3j9}iD|bo}8S*^i@RSjWxk(eqER{cK&I z|8MOzpZ#XM-i$Nkb4P!FGv4)1FyCjRO(>gcaOjbrNkGvqk- zS4;ltwf6asY|(ks_vzmbdG~9M7bCc^J+^)3h<4c@JAA(!V^_Av<9!$ZYP_D@-m^Wm zy*I7{u5IrN{l7be->+2mH7>=HSKnRY!`nyVy5M``{r%h1+lNEV4{jfd_`@-LB!;KM z_h+|{#+A|c#qja%`?nv6xfi$R;9^W8DNUy)pnyzh_k55#aKa(^)D_)rW_9BsIIwBgBU#nVy8GckNHTJvnw z`O)nMW33;G;mY>IF+9HgNDNOL*EiR;zZJt%$5qa??Qh5Mk>gtD+V*#%-A`>PhVR|- zR${zvE%wuX4RmcAF}(M<61uj%5W{=7PsQ-Q?Z;#I(DoBCeAo7q+oz-LKNZ9GL_d5c z+Wylqd?5Pf#qFun>!&;0)2H7!{YLD)^J~iIw*UMc*OdFG=iZ}xZ(Kh5Ztu4zUwY~0 zz3tPled)%l+kE5J{nxjjzkB1>YuhjE{|wwdzh7@}FUR`}+s(W8U%tD2@$UUM?ry(! zZ(s6XMvWKcybyb1umAG#{#ew%_kFw_V^?GB!Z8-DxUkk)@B8_(&v{R@{wo(g9K#P^ z`1FN)7rt`gzg+n57x&)Y=kM3MGmeCHOzcO*vvEv(BKqTpq91-_d-3$C(~qBi;`EcJ zPoKW;^zqa8pMK!Kc4>Z^q-=pkH_|}t>2Hw_r`vGzvHhw zwC01__VxFAe(UrHr>~s;-Ra-Q`m043w$DWkPe+YE7XA9E=!?1iz3uOBzp!0AwNr`f z1R(P%AY=c_Vj#|FP`S-Qv3KI?IhK8Q`o%bBo{IIKIX!#&=;>n*ZBcB;QFl9iI_i!s zingEEz1C{c)^U3N^uj~?a$jz>=o7KlUdMyA_Fmij=fdf?9;#{oSHQE;A7#IukMSqB nvbX2aB_8UJOYiR22d#NFj)n(4{ct~Dh&d1X@8RBC`(XP&ERi|1 From e614b15a0c9e6d95d31f342b26389233ec8b38c8 Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Wed, 25 Sep 2024 18:42:50 +0900 Subject: [PATCH 26/49] =?UTF-8?q?[chore]=20#272=20util=20=EC=A0=95?= =?UTF-8?q?=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/component/view/DateRoadLoadingView.kt | 6 +- .../dateroad/presentation/util/Constraints.kt | 123 +++++++++--------- .../presentation/util/base/BaseViewModel.kt | 2 +- .../presentation/util/context/ContextExt.kt | 9 -- .../util/draganddrop/DragAndDropListState.kt | 7 +- .../presentation/util/modifier/ModifierExt.kt | 3 +- 6 files changed, 71 insertions(+), 79 deletions(-) delete mode 100644 app/src/main/java/org/sopt/dateroad/presentation/util/context/ContextExt.kt diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadLoadingView.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadLoadingView.kt index a44f2425..dde0fbf4 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadLoadingView.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadLoadingView.kt @@ -16,8 +16,8 @@ import com.airbnb.lottie.compose.LottieCompositionSpec import com.airbnb.lottie.compose.LottieConstants import com.airbnb.lottie.compose.rememberLottieAnimatable import com.airbnb.lottie.compose.rememberLottieComposition -import org.sopt.dateroad.presentation.util.LoadingView.CLIPMAX -import org.sopt.dateroad.presentation.util.LoadingView.CLIPMIN +import org.sopt.dateroad.presentation.util.LoadingView.CLIP_MAX +import org.sopt.dateroad.presentation.util.LoadingView.CLIP_MIN import org.sopt.dateroad.presentation.util.LoadingView.LOTTIE import org.sopt.dateroad.ui.theme.DateRoadTheme @@ -31,7 +31,7 @@ fun DateRoadLoadingView() { LaunchedEffect(composition) { lottieAnimatable.animate( composition = composition, - clipSpec = LottieClipSpec.Frame(CLIPMIN, CLIPMAX), + clipSpec = LottieClipSpec.Frame(CLIP_MIN, CLIP_MAX), initialProgress = 0f, iteration = LottieConstants.IterateForever ) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index c6894b40..929f1abe 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -1,71 +1,13 @@ package org.sopt.dateroad.presentation.util -object PointHistoryTab { - const val GAINED_HISTORY_POSITION = 0 - const val USED_HISTORY_POSITION = 1 -} - -object EnrollScreen { - const val FIRST = 1 - const val SECOND = 2 - const val THIRD = 3 - const val MAX_ITEMS = 10 - const val TITLE_MIN_LENGTH = 5 -} - -object TimePicker { - const val AM = "오전" - const val PM = "오후" -} - -object TotalCostZero { - const val ZERO_COST = "무지출" -} - object DatePicker { const val DATE_PATTERN = "yyyy.MM.dd" } -object WebViewUrl { - const val PRIVACY_POLICY_URL = "https://www.notion.so/hooooooni/04da4aa279ca4b599193784091a52859" - const val REPORT_URL = "https://tally.so/r/w4L1a5" - const val ASK_URL = "https://dateroad.notion.site/1055d2f7bfe94b3fa6c03709448def21?pvs=4" -} - object Default { const val REGION = "지역" -} - -object Point { - const val POINT = 50 - const val POINT_USED = "POINT_USED" - const val POINT_USED_DESCRIPTION = "코스 열람하기" -} - -object Token { - const val BEARER = "Bearer " -} - -object Time { - const val TIME = " 시간" -} -object LoadingView { - const val LOTTIE = "loading.json" - const val CLIPMIN = 0 - const val CLIPMAX = 1200 -} - -object Pattern { - private const val NICKNAME_PATTERN = "^[ㄱ-ㅎ가-힣a-zA-Z0-9]*$" - val NICKNAME_REGEX = Regex(NICKNAME_PATTERN) -} - -object ViewPath { - const val HOME = "홈" - const val TIMELINE = "데이트 일정" - const val MY_COURSE_READ = "내가 열람한 코스" - const val COURSE_DETAIL = "코스 상세" - const val LOOK = "코스 둘러보기" + const val DRAGGED_DISTANCE = 0f + const val CLICKABLE_DELAY = 500L } object EnrollAmplitude { @@ -103,11 +45,45 @@ object EnrollAmplitude { const val COURSE_COST = "course_cost" } +object EnrollScreen { + const val FIRST = 1 + const val SECOND = 2 + const val THIRD = 3 + const val MAX_ITEMS = 10 + const val TITLE_MIN_LENGTH = 5 +} + +object LoadingView { + const val LOTTIE = "loading.json" + const val CLIP_MIN = 0 + const val CLIP_MAX = 1200 +} + object MyCourseAmplitude { const val VIEW_PURCHASED_COURSE = "view_purchased_course" const val CLICK_PURCHASED_BACK = "click_purchased_back" } +object Pattern { + private const val NICKNAME_PATTERN = "^[ㄱ-ㅎ가-힣a-zA-Z0-9]*$" + val NICKNAME_REGEX = Regex(NICKNAME_PATTERN) +} + +object Point { + const val POINT = 50 + const val POINT_USED = "POINT_USED" + const val POINT_USED_DESCRIPTION = "코스 열람하기" +} + +object PointHistoryTab { + const val GAINED_HISTORY_POSITION = 0 + const val USED_HISTORY_POSITION = 1 +} + +object Time { + const val TIME = " 시간" +} + object TimelineAmplitude { const val VIEW_DATE_SCHEDULE = "view_date_schedule" const val COUNT_DATE_SCHEDULE = "count_date_schedule" @@ -115,6 +91,19 @@ object TimelineAmplitude { const val DATE_SCHEDULE_NUM = "date_schedule_num" } +object TimePicker { + const val AM = "오전" + const val PM = "오후" +} + +object Token { + const val BEARER = "Bearer " +} + +object TotalCostZero { + const val ZERO_COST = "무지출" +} + object UserPropertyAmplitude { const val USER_NAME = "user_name" const val USER_POINT = "user_point" @@ -123,3 +112,17 @@ object UserPropertyAmplitude { const val USER_COURSE_COUNT = "user_course_count" const val USER_SCHEDULE_NUM = "user_schedule_num" } + +object ViewPath { + const val HOME = "홈" + const val TIMELINE = "데이트 일정" + const val MY_COURSE_READ = "내가 열람한 코스" + const val COURSE_DETAIL = "코스 상세" + const val LOOK = "코스 둘러보기" +} + +object WebViewUrl { + const val PRIVACY_POLICY_URL = "https://www.notion.so/hooooooni/04da4aa279ca4b599193784091a52859" + const val REPORT_URL = "https://tally.so/r/w4L1a5" + const val ASK_URL = "https://dateroad.notion.site/1055d2f7bfe94b3fa6c03709448def21?pvs=4" +} diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/base/BaseViewModel.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/base/BaseViewModel.kt index f5674374..6c38467f 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/base/BaseViewModel.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/base/BaseViewModel.kt @@ -38,7 +38,7 @@ abstract class BaseViewModel Unit ) { - private var draggedDistance by mutableFloatStateOf(0f) + private var draggedDistance by mutableFloatStateOf(DRAGGED_DISTANCE) private var initiallyDraggedElement by mutableStateOf(null) var currentIndexOfDraggedItem by mutableStateOf(null) private val initialOffsets: Pair? get() = initiallyDraggedElement?.let { Pair(it.offset, it.offsetEnd) } - val elementDisplacement: Float? - get() = currentIndexOfDraggedItem - ?.let { lazyListState.getVisibleItemInfoFor(absoluteIndex = it) } - ?.let { item -> (initiallyDraggedElement?.offset ?: 0f).toFloat() + draggedDistance - item.offset } private val currentElement: LazyListItemInfo? get() = currentIndexOfDraggedItem?.let { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/modifier/ModifierExt.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/modifier/ModifierExt.kt index 8287b1c0..6fe1c886 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/modifier/ModifierExt.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/modifier/ModifierExt.kt @@ -15,6 +15,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch +import org.sopt.dateroad.presentation.util.Default.CLICKABLE_DELAY inline fun Modifier.noRippleClickable( crossinline onClick: () -> Unit = {} @@ -39,7 +40,7 @@ fun Modifier.noRippleDebounceClickable( clickable = false CoroutineScope(Dispatchers.Main).launch { onClick() - delay(500) + delay(CLICKABLE_DELAY) clickable = true } } From 1ee2016ace21740ee080f795d99c92cfd6ffd26a Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Wed, 25 Sep 2024 19:49:14 +0900 Subject: [PATCH 27/49] =?UTF-8?q?[chore]=20#272=20presentation=20layer=20?= =?UTF-8?q?=EC=83=81=EC=88=98=ED=99=94=20=EB=B0=8F=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TwoButtonDialogWithDescriptionType.kt | 6 --- .../ui/coursedetail/CourseDetailScreen.kt | 3 +- .../navigation/CourseDetailNavigation.kt | 1 + .../presentation/ui/enroll/EnrollContract.kt | 25 ++++++--- .../presentation/ui/enroll/EnrollScreen.kt | 8 +-- .../enroll/component/EnrollPlaceInsertBar.kt | 2 +- .../ui/enroll/navigation/EnrollNavigation.kt | 1 + .../presentation/ui/home/HomeScreen.kt | 3 +- .../mycourse/navigation/MyCourseNavigation.kt | 1 + .../presentation/ui/mypage/MyPageScreen.kt | 7 +-- .../ui/mypage/navigation/MyPageNavigation.kt | 5 +- .../ui/navigator/MainNavigator.kt | 28 +++++----- .../ui/navigator/component/MainNavHost.kt | 17 ++---- .../ui/onboarding/OnboardingScreen.kt | 16 ++++-- .../navigation/OnboardingNavigation.kt | 5 +- .../component/DateRoadMyPagePointInfo.kt | 2 +- .../presentation/ui/profile/ProfileScreen.kt | 10 ++-- .../profile/navigation/ProfileNavigation.kt | 54 ++++++++----------- .../presentation/ui/signin/SignInContract.kt | 2 +- .../presentation/ui/signin/SignInScreen.kt | 5 +- .../ui/timelinedetail/TimelineDetailScreen.kt | 2 +- .../timelinedetail/TimelineDetailViewModel.kt | 11 ++-- .../dateroad/presentation/util/Constraints.kt | 48 +++++++++++++++++ 23 files changed, 159 insertions(+), 103 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/TwoButtonDialogWithDescriptionType.kt b/app/src/main/java/org/sopt/dateroad/presentation/type/TwoButtonDialogWithDescriptionType.kt index 0c135f67..2f67f1ad 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/TwoButtonDialogWithDescriptionType.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/type/TwoButtonDialogWithDescriptionType.kt @@ -39,12 +39,6 @@ enum class TwoButtonDialogWithDescriptionType( confirmButtonTextRes = R.string.dialog_delete, dismissButtonTextRes = R.string.dialog_cancel ), - DELETE_PAST( - titleRes = R.string.two_button_dialog_with_description_delete_past_title, - descriptionRes = R.string.dialog_delete_schedule, - confirmButtonTextRes = R.string.dialog_delete, - dismissButtonTextRes = R.string.dialog_cancel - ), WITHDRAWAL( titleRes = R.string.two_button_dialog_with_description_withdrawal_title, descriptionRes = R.string.two_button_dialog_with_description_withdrawal_description, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt index 351966d4..a881d251 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt @@ -45,6 +45,7 @@ import org.sopt.dateroad.presentation.ui.coursedetail.component.CourseDetailBasi import org.sopt.dateroad.presentation.ui.coursedetail.component.CourseDetailBottomBar import org.sopt.dateroad.presentation.ui.coursedetail.component.CourseDetailUnopenedDetail import org.sopt.dateroad.presentation.ui.coursedetail.component.courseDetailOpenedDetail +import org.sopt.dateroad.presentation.util.CourseDetail.POINT_LACK import org.sopt.dateroad.presentation.util.ViewPath.COURSE_DETAIL import org.sopt.dateroad.presentation.util.WebViewUrl.REPORT_URL import org.sopt.dateroad.presentation.util.view.LoadState @@ -270,7 +271,7 @@ fun CourseDetailScreen( onDismissRequest = { dismissDialogLookedByPoint() }, onClickConfirm = { dismissDialogLookedByPoint() - if (courseDetailUiState.courseDetail.totalPoint < 50) { + if (courseDetailUiState.courseDetail.totalPoint < POINT_LACK) { onDialogPointLack() } else { openCourseDetail() diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/navigation/CourseDetailNavigation.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/navigation/CourseDetailNavigation.kt index a01666ff..df15b7ae 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/navigation/CourseDetailNavigation.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/navigation/CourseDetailNavigation.kt @@ -36,5 +36,6 @@ object CourseDetailRoute { private const val ROUTE = "courseDetail" const val ID = "id" const val ROUTE_WITH_ARGUMENT = "$ROUTE/{$ID}" + fun route(courseId: Int) = "$ROUTE/$courseId" } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollContract.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollContract.kt index c9e34e5d..550944ff 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollContract.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollContract.kt @@ -9,7 +9,20 @@ import org.sopt.dateroad.presentation.type.EnrollScreenType import org.sopt.dateroad.presentation.type.EnrollType import org.sopt.dateroad.presentation.ui.component.bottomsheet.model.Picker import org.sopt.dateroad.presentation.ui.component.textfield.model.TextFieldValidateResult +import org.sopt.dateroad.presentation.util.DatePicker.DAY_END +import org.sopt.dateroad.presentation.util.DatePicker.DAY_START +import org.sopt.dateroad.presentation.util.DatePicker.MONTH_END +import org.sopt.dateroad.presentation.util.DatePicker.MONTH_START +import org.sopt.dateroad.presentation.util.DatePicker.YEAR_END +import org.sopt.dateroad.presentation.util.DatePicker.YEAR_START +import org.sopt.dateroad.presentation.util.DatePicker.YEAR_START_INDEX +import org.sopt.dateroad.presentation.util.DurationPicker.DURATION_END +import org.sopt.dateroad.presentation.util.DurationPicker.DURATION_START import org.sopt.dateroad.presentation.util.TimePicker +import org.sopt.dateroad.presentation.util.TimePicker.HOUR_END +import org.sopt.dateroad.presentation.util.TimePicker.HOUR_START +import org.sopt.dateroad.presentation.util.TimePicker.MINUTE_END +import org.sopt.dateroad.presentation.util.TimePicker.MINUTE_START import org.sopt.dateroad.presentation.util.base.UiEvent import org.sopt.dateroad.presentation.util.base.UiSideEffect import org.sopt.dateroad.presentation.util.base.UiState @@ -27,15 +40,15 @@ class EnrollContract { val dateValidateState: TextFieldValidateResult = TextFieldValidateResult.Basic, val isDatePickerBottomSheetOpen: Boolean = false, val datePickers: List = listOf( - Picker(items = (2000..2024).map { it.toString() }, startIndex = 24), - Picker(items = (1..12).map { it.toString() }), - Picker(items = (1..31).map { it.toString() }) + Picker(items = (YEAR_START..YEAR_END).map { it.toString() }, startIndex = YEAR_START_INDEX), + Picker(items = (MONTH_START..MONTH_END).map { it.toString() }), + Picker(items = (DAY_START..DAY_END).map { it.toString() }) ), val isTimePickerBottomSheetOpen: Boolean = false, val timePickers: List = listOf( Picker(items = listOf(TimePicker.AM, TimePicker.PM)), - Picker(items = (1..12).map { it.toString() }), - Picker(items = (0..59).map { it.toString().padStart(2, '0') }) + Picker(items = (HOUR_START..HOUR_END).map { it.toString() }), + Picker(items = (MINUTE_START..MINUTE_END).map { it.toString().padStart(2, '0') }) ), val isRegionBottomSheetOpen: Boolean = false, val onRegionBottomSheetRegionSelected: RegionType? = RegionType.SEOUL, @@ -43,7 +56,7 @@ class EnrollContract { val place: Place = Place(), val isPlaceEditable: Boolean = true, val isDurationBottomSheetOpen: Boolean = false, - val durationPicker: List = listOf(Picker(items = (1..12).map { (it * 0.5).toString() })), + val durationPicker: List = listOf(Picker(items = (DURATION_START..DURATION_END).map { (it * 0.5).toString() })), val isEnrollSuccessDialogOpen: Boolean = false ) : UiState diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollScreen.kt index 52dda626..d25ae3d9 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollScreen.kt @@ -53,6 +53,7 @@ import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView import org.sopt.dateroad.presentation.ui.enroll.component.EnrollPhotos import org.sopt.dateroad.presentation.util.DatePicker +import org.sopt.dateroad.presentation.util.DatePicker.SEPARATOR import org.sopt.dateroad.presentation.util.EnrollAmplitude.CLICK_BRING_COURSE import org.sopt.dateroad.presentation.util.EnrollAmplitude.CLICK_COURSE1_BACK import org.sopt.dateroad.presentation.util.EnrollAmplitude.CLICK_COURSE2_BACK @@ -87,6 +88,7 @@ import org.sopt.dateroad.presentation.util.EnrollAmplitude.VIEW_COURSE1 import org.sopt.dateroad.presentation.util.EnrollAmplitude.VIEW_PATH import org.sopt.dateroad.presentation.util.EnrollScreen.MAX_ITEMS import org.sopt.dateroad.presentation.util.EnrollScreen.TITLE_MIN_LENGTH +import org.sopt.dateroad.presentation.util.GalleryLauncher.INPUT import org.sopt.dateroad.presentation.util.TimePicker import org.sopt.dateroad.presentation.util.TimelineAmplitude.CLICK_ADD_SCHEDULE import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils @@ -258,7 +260,7 @@ fun EnrollRoute( onDurationBottomSheetDismissRequest = { viewModel.setEvent(EnrollContract.EnrollEvent.OnDurationBottomSheetDismissRequest) }, onPhotoButtonClick = { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { - getGalleryLauncher.launch("image/*") + getGalleryLauncher.launch(INPUT) } else { getPhotoPickerLauncher.launch( PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly) @@ -463,7 +465,7 @@ fun EnrollScreen( buttonText = stringResource(id = R.string.apply), onButtonClick = { onDatePickerBottomSheetButtonClick( - enrollUiState.datePickers.joinToString(separator = ".") { it.pickerState.selectedItem.padStart(2, '0') } + enrollUiState.datePickers.joinToString(separator = SEPARATOR) { it.pickerState.selectedItem.padStart(2, '0') } ) }, onDismissRequest = onDatePickerBottomSheetDismissRequest, @@ -534,7 +536,7 @@ fun EnrollScreen( } fun formatTime(time: List): String { - val period = if (time[0] == TimePicker.AM) "AM" else "PM" + val period = if (time[0] == TimePicker.AM) TimePicker.AM_ENG else TimePicker.PM_ENG val hour = time[1].padStart(2, '0') val minute = time[2].padStart(2, '0') return "$hour:$minute $period" diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPlaceInsertBar.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPlaceInsertBar.kt index abd62182..2568b243 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPlaceInsertBar.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPlaceInsertBar.kt @@ -96,7 +96,7 @@ fun EnrollPlaceInsertBarPreview() { var title by remember { mutableStateOf("") } var duration by remember { mutableStateOf("") } var isBottomSheetOpen by rememberSaveable { mutableStateOf(false) } - var pickerItems by remember { + val pickerItems by remember { mutableStateOf(listOf(Picker(items = (1..12).map { (it * 0.5).toString() }))) } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/navigation/EnrollNavigation.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/navigation/EnrollNavigation.kt index e7138d30..73dc3b75 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/navigation/EnrollNavigation.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/navigation/EnrollNavigation.kt @@ -58,5 +58,6 @@ object EnrollRoute { const val VIEW_PATH = "viewPath" const val TIMELINE_ID = "timelineId" const val ROUTE_WITH_ARGUMENT = "$ROUTE/{$ENROLL_TYPE}/{$VIEW_PATH}/{$TIMELINE_ID}" + fun route(enrollType: EnrollType, viewPath: String, courseId: Int?) = "$ROUTE/${enrollType.name}/$viewPath/$courseId" } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt index 318bd431..afb9a00e 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt @@ -55,6 +55,7 @@ import org.sopt.dateroad.presentation.ui.home.component.DateRoadHomeTopBar import org.sopt.dateroad.presentation.ui.home.component.HomeAdvertisement import org.sopt.dateroad.presentation.ui.home.component.HomeHotCourseCard import org.sopt.dateroad.presentation.ui.home.component.HomeTimeLineCard +import org.sopt.dateroad.presentation.util.Home.ADVERTISEMENT_DELAY import org.sopt.dateroad.presentation.util.ViewPath.HOME import org.sopt.dateroad.presentation.util.view.LoadState import org.sopt.dateroad.ui.theme.DateRoadTheme @@ -84,7 +85,7 @@ fun HomeRoute( viewModel.fetchUserPoint() while (true) { - delay(4000) + delay(ADVERTISEMENT_DELAY) coroutineScope.launch { if (uiState.advertisements.isNotEmpty()) { val nextPage = (pagerState.currentPage + 1) % uiState.advertisements.size diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/navigation/MyCourseNavigation.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/navigation/MyCourseNavigation.kt index 3be4c91f..40b56cae 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/navigation/MyCourseNavigation.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/navigation/MyCourseNavigation.kt @@ -41,5 +41,6 @@ object MyCourseRoute { private const val ROUTE = "myCourses" const val ARGUMENT = "myCourseType" const val ROUTE_WITH_ARGUMENT = "$ROUTE/{$ARGUMENT}" + fun route(myCourseType: MyCourseType) = "$ROUTE/${myCourseType.name}" } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageScreen.kt index 8bcdf071..1c729926 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageScreen.kt @@ -42,6 +42,7 @@ import org.sopt.dateroad.domain.model.Profile import org.sopt.dateroad.presentation.type.DateTagType.Companion.getDateTagTypeByName import org.sopt.dateroad.presentation.type.MyCourseType import org.sopt.dateroad.presentation.type.MyPageMenuType +import org.sopt.dateroad.presentation.type.ProfileType import org.sopt.dateroad.presentation.type.TagType import org.sopt.dateroad.presentation.type.TwoButtonDialogType import org.sopt.dateroad.presentation.type.TwoButtonDialogWithDescriptionType @@ -66,11 +67,11 @@ import org.sopt.dateroad.ui.theme.DateRoadTheme fun MyPageRoute( padding: PaddingValues, viewModel: MyPageViewModel = hiltViewModel(), - navigateToEditProfile: () -> Unit, navigateToPointHistory: () -> Unit, navigateToMyCourse: (MyCourseType) -> Unit, navigateToPointGuide: () -> Unit, - navigateToSignIn: () -> Unit + navigateToSignIn: () -> Unit, + navigateToProfile: (ProfileType) -> Unit ) { val uiState by viewModel.uiState.collectAsStateWithLifecycle() val lifecycleOwner = LocalLifecycleOwner.current @@ -83,7 +84,7 @@ fun MyPageRoute( viewModel.sideEffect.flowWithLifecycle(lifecycle = lifecycleOwner.lifecycle) .collect { myPageSideEffect -> when (myPageSideEffect) { - is MyPageContract.MyPageSideEffect.NavigateToEditProfile -> navigateToEditProfile() + is MyPageContract.MyPageSideEffect.NavigateToEditProfile -> navigateToProfile(ProfileType.EDIT) is MyPageContract.MyPageSideEffect.NavigateToPointHistory -> navigateToPointHistory() is MyPageContract.MyPageSideEffect.NavigateToMyCourse -> navigateToMyCourse(MyCourseType.ENROLL) is MyPageContract.MyPageSideEffect.NavigateToPointGuide -> navigateToPointGuide() diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/navigation/MyPageNavigation.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/navigation/MyPageNavigation.kt index 5c97d553..346af9d0 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/navigation/MyPageNavigation.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/navigation/MyPageNavigation.kt @@ -7,6 +7,7 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.composable import org.sopt.dateroad.presentation.model.MainNavigationBarRoute import org.sopt.dateroad.presentation.type.MyCourseType +import org.sopt.dateroad.presentation.type.ProfileType import org.sopt.dateroad.presentation.ui.mypage.MyPageRoute fun NavController.navigationMyPage(navOptions: NavOptions) { @@ -22,7 +23,7 @@ fun NavGraphBuilder.myPageNavGraph( navigateToMyCourse: (MyCourseType) -> Unit, navigateToPointGuide: () -> Unit, navigateToSignIn: () -> Unit, - navigateToEditProfile: () -> Unit + navigateToProfile: (ProfileType) -> Unit ) { composable(route = MainNavigationBarRoute.MyPage::class.simpleName.orEmpty()) { MyPageRoute( @@ -31,7 +32,7 @@ fun NavGraphBuilder.myPageNavGraph( navigateToMyCourse = navigateToMyCourse, navigateToPointGuide = navigateToPointGuide, navigateToSignIn = navigateToSignIn, - navigateToEditProfile = navigateToEditProfile + navigateToProfile = navigateToProfile ) } } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainNavigator.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainNavigator.kt index c84f5a16..d9002019 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainNavigator.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainNavigator.kt @@ -14,6 +14,7 @@ import org.sopt.dateroad.presentation.model.Route import org.sopt.dateroad.presentation.type.EnrollType import org.sopt.dateroad.presentation.type.MainNavigationBarItemType import org.sopt.dateroad.presentation.type.MyCourseType +import org.sopt.dateroad.presentation.type.ProfileType import org.sopt.dateroad.presentation.type.TimelineType import org.sopt.dateroad.presentation.ui.advertisement.navigation.navigationAdvertisement import org.sopt.dateroad.presentation.ui.coursedetail.navigation.navigationCourseDetail @@ -26,8 +27,7 @@ import org.sopt.dateroad.presentation.ui.onboarding.navigation.navigationOnboard import org.sopt.dateroad.presentation.ui.past.navigation.navigationPast import org.sopt.dateroad.presentation.ui.pointguide.navigation.navigationPointGuide import org.sopt.dateroad.presentation.ui.pointhistory.navigation.navigationPointHistory -import org.sopt.dateroad.presentation.ui.profile.navigation.navigationEditProfile -import org.sopt.dateroad.presentation.ui.profile.navigation.navigationEnrollProfile +import org.sopt.dateroad.presentation.ui.profile.navigation.navigationProfile import org.sopt.dateroad.presentation.ui.read.navigation.navigationRead import org.sopt.dateroad.presentation.ui.signin.navigation.SignInRoute import org.sopt.dateroad.presentation.ui.signin.navigation.navigationSignIn @@ -78,8 +78,8 @@ class MainNavigator( navHostController.navigationEnroll(enrollType = enrollType, viewPath = viewPath, courseId = courseId) } - fun navigateToMyPage(navOptions: NavOptions? = null) { - navHostController.navigationMyPage( + fun navigateToHome(navOptions: NavOptions? = null) { + navHostController.navigationHome( navOptions ?: navOptions { popUpTo(navHostController.graph.findStartDestination().id) { inclusive = true @@ -89,8 +89,12 @@ class MainNavigator( ) } - fun navigateToHome(navOptions: NavOptions? = null) { - navHostController.navigationHome( + fun navigateToMyCourse(myCourseType: MyCourseType) { + navHostController.navigateMyCourses(myCourseType = myCourseType) + } + + fun navigateToMyPage(navOptions: NavOptions? = null) { + navHostController.navigationMyPage( navOptions ?: navOptions { popUpTo(navHostController.graph.findStartDestination().id) { inclusive = true @@ -100,10 +104,6 @@ class MainNavigator( ) } - fun navigateToMyCourse(myCourseType: MyCourseType) { - navHostController.navigateMyCourses(myCourseType = myCourseType) - } - fun navigateToOnboarding() { navHostController.navigationOnboarding() } @@ -120,12 +120,8 @@ class MainNavigator( navHostController.navigationPointHistory() } - fun navigateToEnrollProfile() { - navHostController.navigationEnrollProfile() - } - - fun navigateToEditProfile() { - navHostController.navigationEditProfile() + fun navigateToProfile(profileType: ProfileType) { + navHostController.navigationProfile(profileType = profileType) } fun navigateToSignIn() { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt index d2ea98f2..5417321b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt @@ -7,7 +7,6 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.compose.NavHost -import org.sopt.dateroad.presentation.type.ProfileType import org.sopt.dateroad.presentation.ui.advertisement.navigation.advertisementGraph import org.sopt.dateroad.presentation.ui.coursedetail.navigation.courseDetailGraph import org.sopt.dateroad.presentation.ui.enroll.navigation.enrollNavGraph @@ -20,8 +19,7 @@ import org.sopt.dateroad.presentation.ui.onboarding.navigation.onboardingNavGrap import org.sopt.dateroad.presentation.ui.past.navigation.pastNavGraph import org.sopt.dateroad.presentation.ui.pointguide.navigation.pointGuideGraph import org.sopt.dateroad.presentation.ui.pointhistory.navigation.pointHistoryGraph -import org.sopt.dateroad.presentation.ui.profile.navigation.editProfileNavGraph -import org.sopt.dateroad.presentation.ui.profile.navigation.enrollProfileNavGraph +import org.sopt.dateroad.presentation.ui.profile.navigation.profileNavGraph import org.sopt.dateroad.presentation.ui.read.navigation.readNavGraph import org.sopt.dateroad.presentation.ui.signin.navigation.signInGraph import org.sopt.dateroad.presentation.ui.timeline.navigation.timelineNavGraph @@ -87,11 +85,11 @@ fun MainNavHost( navigateToMyCourse = navigator::navigateToMyCourse, navigateToPointGuide = navigator::navigateToPointGuide, navigateToSignIn = navigator::navigateToSignIn, - navigateToEditProfile = navigator::navigateToEditProfile + navigateToProfile = navigator::navigateToProfile ) onboardingNavGraph( - navigateToEnrollProfile = navigator::navigateToEnrollProfile, + navigateToProfile = navigator::navigateToProfile, navigateToSignIn = navigator::navigateToSignIn ) @@ -111,16 +109,9 @@ fun MainNavHost( popBackStack = navigator::popBackStackIfNotHome ) - enrollProfileNavGraph( + profileNavGraph( navigateToHome = navigator::navigateToHome, navigateToMyPage = navigator::navigateToMyPage, - profileType = ProfileType.ENROLL, - popBackStack = navigator::popBackStackIfNotHome - ) - editProfileNavGraph( - navigateToHome = navigator::navigateToHome, - navigateToMyPage = navigator::navigateToMyPage, - profileType = ProfileType.EDIT, popBackStack = navigator::popBackStackIfNotHome ) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnboardingScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnboardingScreen.kt index 945cafde..1610ae74 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnboardingScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnboardingScreen.kt @@ -31,16 +31,20 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch import org.sopt.dateroad.R import org.sopt.dateroad.presentation.type.OnboardingType +import org.sopt.dateroad.presentation.type.ProfileType import org.sopt.dateroad.presentation.ui.component.button.DateRoadFilledButton import org.sopt.dateroad.presentation.ui.component.dotsindicator.DotsIndicator import org.sopt.dateroad.presentation.ui.component.partialcolortext.PartialColorText +import org.sopt.dateroad.presentation.util.Onboarding.FIRST +import org.sopt.dateroad.presentation.util.Onboarding.FIRST_PAGE_KEYWORD +import org.sopt.dateroad.presentation.util.Onboarding.KEYWORD import org.sopt.dateroad.ui.theme.DateRoadTheme @OptIn(ExperimentalPagerApi::class) @Composable fun OnboardingRoute( viewModel: OnBoardingViewModel = hiltViewModel(), - navigateToProfile: () -> Unit, + navigateToProfile: (ProfileType) -> Unit, navigateToSignIn: () -> Unit ) { val lifecycleOwner = LocalLifecycleOwner.current @@ -49,7 +53,7 @@ fun OnboardingRoute( BackHandler { when (pagerState.currentPage) { - 0 -> viewModel.setSideEffect(OnBoardingContract.OnBoardingSideEffect.NavigateToSignIn) + FIRST -> viewModel.setSideEffect(OnBoardingContract.OnBoardingSideEffect.NavigateToSignIn) else -> { coroutineScope.launch { @@ -63,7 +67,7 @@ fun OnboardingRoute( viewModel.sideEffect.flowWithLifecycle(lifecycle = lifecycleOwner.lifecycle) .collect { onBoardingSideEffect -> when (onBoardingSideEffect) { - is OnBoardingContract.OnBoardingSideEffect.NavigateToProfile -> navigateToProfile() + is OnBoardingContract.OnBoardingSideEffect.NavigateToProfile -> navigateToProfile(ProfileType.ENROLL) is OnBoardingContract.OnBoardingSideEffect.NavigateToSignIn -> navigateToSignIn() } } @@ -109,7 +113,11 @@ fun OnboardingScreen( Text( text = PartialColorText( stringResource(id = onboardingType.titleRes), - keywords = if (page == 0) { listOf("포인트", "데이트 코스", "100", "다양한") } else listOf("100 포인트", "다양한"), + keywords = if (page == FIRST) { + FIRST_PAGE_KEYWORD + } else { + KEYWORD + }, color = DateRoadTheme.colors.purple600 ), style = DateRoadTheme.typography.titleExtra24, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/navigation/OnboardingNavigation.kt index df9c2ebd..9d118fad 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/navigation/OnboardingNavigation.kt @@ -3,6 +3,7 @@ package org.sopt.dateroad.presentation.ui.onboarding.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable +import org.sopt.dateroad.presentation.type.ProfileType import org.sopt.dateroad.presentation.ui.onboarding.OnboardingRoute fun NavController.navigationOnboarding() { @@ -12,12 +13,12 @@ fun NavController.navigationOnboarding() { } fun NavGraphBuilder.onboardingNavGraph( - navigateToEnrollProfile: () -> Unit, + navigateToProfile: (ProfileType) -> Unit, navigateToSignIn: () -> Unit ) { composable(route = OnboardingRoute.ROUTE) { OnboardingRoute( - navigateToProfile = navigateToEnrollProfile, + navigateToProfile = navigateToProfile, navigateToSignIn = navigateToSignIn ) } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/component/DateRoadMyPagePointInfo.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/component/DateRoadMyPagePointInfo.kt index 56665304..35001912 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/component/DateRoadMyPagePointInfo.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/component/DateRoadMyPagePointInfo.kt @@ -32,7 +32,7 @@ fun DateRoadMyPagePointInfo(myPagePointInfoType: MyPagePointInfoType) { .clip(RoundedCornerShape(14.dp)) .background(DateRoadTheme.colors.gray100) .padding(14.dp), - verticalAlignment = Alignment.CenterVertically // Aligns items vertically centered + verticalAlignment = Alignment.CenterVertically ) { Image( painter = painterResource(id = myPagePointInfoType.imageRes), diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt index bb961fe0..a7ae155f 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt @@ -49,6 +49,8 @@ import org.sopt.dateroad.presentation.ui.component.textfield.model.TextFieldVali import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadBasicTopBar import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.dateroad.presentation.util.GalleryLauncher.DELETE_IMAGE +import org.sopt.dateroad.presentation.util.GalleryLauncher.INPUT import org.sopt.dateroad.presentation.util.Pattern.NICKNAME_REGEX import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_NAME import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils @@ -112,12 +114,12 @@ fun ProfileRoute( }, selectPhoto = { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { - getGalleryLauncher.launch("image/*") + getGalleryLauncher.launch(input = INPUT) } else { getPhotoPickerLauncher.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)) } }, - deletePhoto = { viewModel.setEvent(ProfileContract.ProfileEvent.SetSignUpImage(image = "")) }, + deletePhoto = { viewModel.setEvent(ProfileContract.ProfileEvent.SetSignUpImage(image = DELETE_IMAGE)) }, popUpBackStack = { Unit } ) @@ -150,12 +152,12 @@ fun ProfileRoute( }, selectPhoto = { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.TIRAMISU) { - getGalleryLauncher.launch("image/*") + getGalleryLauncher.launch(INPUT) } else { getPhotoPickerLauncher.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)) } }, - deletePhoto = { viewModel.setEvent(ProfileContract.ProfileEvent.SetEditProfileImage(image = "")) }, + deletePhoto = { viewModel.setEvent(ProfileContract.ProfileEvent.SetEditProfileImage(image = DELETE_IMAGE)) }, popUpBackStack = { popBackStack() } ) } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/navigation/ProfileNavigation.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/navigation/ProfileNavigation.kt index 013bd7d0..1aa444dd 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/navigation/ProfileNavigation.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/navigation/ProfileNavigation.kt @@ -2,61 +2,51 @@ package org.sopt.dateroad.presentation.ui.profile.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavType import androidx.navigation.compose.composable +import androidx.navigation.navArgument import org.sopt.dateroad.presentation.type.ProfileType import org.sopt.dateroad.presentation.ui.profile.ProfileRoute +import org.sopt.dateroad.presentation.ui.profile.navigation.ProfileRoute.ROUTE_WITH_ARGUMENT -fun NavController.navigationEnrollProfile() { +fun NavController.navigationProfile(profileType: ProfileType) { navigate( - route = EnrollProfileRoute.ROUTE + route = ProfileRoute.route(profileType = profileType) ) } -fun NavController.navigationEditProfile() { - navigate( - route = EditProfileRoute.ROUTE - ) -} - -fun NavGraphBuilder.enrollProfileNavGraph( +fun NavGraphBuilder.profileNavGraph( navigateToHome: () -> Unit, navigateToMyPage: () -> Unit, - profileType: ProfileType, popBackStack: () -> Unit ) { - composable(route = EnrollProfileRoute.ROUTE) { - ProfileRoute( - navigationToHome = navigateToHome, - navigationToMyPage = navigateToMyPage, - profileType = profileType, - popBackStack = popBackStack - + composable( + route = ROUTE_WITH_ARGUMENT, + arguments = listOf( + navArgument(ProfileRoute.ARGUMENT) { + type = NavType.StringType + } ) - } -} + ) { backStackEntry -> + val profileType = backStackEntry.arguments?.getString(ProfileRoute.ARGUMENT)?.let { + ProfileType.valueOf(it) + } ?: ProfileType.EDIT -fun NavGraphBuilder.editProfileNavGraph( - navigateToHome: () -> Unit, - navigateToMyPage: () -> Unit, - profileType: ProfileType, - popBackStack: () -> Unit - -) { - composable(route = EditProfileRoute.ROUTE) { ProfileRoute( navigationToHome = navigateToHome, navigationToMyPage = navigateToMyPage, profileType = profileType, popBackStack = popBackStack + ) } } -object EnrollProfileRoute { - const val ROUTE = "enrollProfile" -} +object ProfileRoute { + const val ROUTE = "Profile" + const val ARGUMENT = "profileType" + const val ROUTE_WITH_ARGUMENT = "$ROUTE/{$ARGUMENT}" -object EditProfileRoute { - const val ROUTE = "editProfile" + fun route(profileType: ProfileType) = "$ROUTE/${profileType.name}" } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInContract.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInContract.kt index 5e4960ff..e979dd20 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInContract.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInContract.kt @@ -9,7 +9,7 @@ class SignInContract { data class SignInUiState( val loadState: LoadState = LoadState.Idle, val authTokenLoadState: LoadState = LoadState.Idle, - var isWebViewOpened: Boolean = false + val isWebViewOpened: Boolean = false ) : UiState sealed interface SignInSideEffect : UiSideEffect { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInScreen.kt index 1e22079c..c2021ddc 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInScreen.kt @@ -28,6 +28,7 @@ import org.sopt.dateroad.domain.model.SignIn import org.sopt.dateroad.presentation.ui.component.button.DateRoadKakaoLoginButton import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView import org.sopt.dateroad.presentation.ui.component.view.DateRoadWebView +import org.sopt.dateroad.presentation.util.SignIn.PLATFORM import org.sopt.dateroad.presentation.util.WebViewUrl.PRIVACY_POLICY_URL import org.sopt.dateroad.presentation.util.modifier.noRippleClickable import org.sopt.dateroad.presentation.util.view.LoadState @@ -51,7 +52,7 @@ fun SignInRoute( val lifecycleOwner = LocalLifecycleOwner.current val context = LocalContext.current - val callback: (OAuthToken?, Throwable?) -> Unit = { oAuthToken, message -> + val callback: (OAuthToken?, Throwable?) -> Unit = { oAuthToken, _ -> if (oAuthToken != null) { viewModel.setKakaoAccessToken(oAuthToken.accessToken) } @@ -73,7 +74,7 @@ fun SignInRoute( LaunchedEffect(uiState.authTokenLoadState) { when (uiState.authTokenLoadState) { - LoadState.Success -> viewModel.postSignIn(signIn = SignIn("KAKAO")) + LoadState.Success -> viewModel.postSignIn(signIn = SignIn(PLATFORM)) else -> Unit } } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt index b2f88b62..8ba3a618 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt @@ -169,7 +169,7 @@ fun TimelineDetailScreen( style = DateRoadTheme.typography.bodyMed15, color = DateRoadTheme.colors.black ) - if (uiState.timelineDetail.dDay != "") { + if (uiState.timelineDetail.dDay.isNotEmpty()) { DateRoadTextTag( textContent = uiState.timelineDetail.dDay, tagContentType = TagType.TIMELINE_D_DAY diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailViewModel.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailViewModel.kt index 2b8e8500..c533b614 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailViewModel.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailViewModel.kt @@ -12,6 +12,9 @@ import org.sopt.dateroad.domain.model.TimelineDetail import org.sopt.dateroad.domain.usecase.DeleteTimelineUseCase import org.sopt.dateroad.domain.usecase.GetNicknameUseCase import org.sopt.dateroad.domain.usecase.GetTimelineDetailUseCase +import org.sopt.dateroad.presentation.util.ShareKakao.START_AT +import org.sopt.dateroad.presentation.util.ShareKakao.TEMPLATE_ID +import org.sopt.dateroad.presentation.util.ShareKakao.USER_NAME import org.sopt.dateroad.presentation.util.base.BaseViewModel import org.sopt.dateroad.presentation.util.view.LoadState @@ -62,8 +65,8 @@ class TimelineDetailViewModel @Inject constructor( val templateId = 109999 val templateArgs = mutableMapOf() - templateArgs["userName"] = getNickNameUseCase() - templateArgs["startAt"] = timelineDetail.startAt + templateArgs[USER_NAME] = getNickNameUseCase() + templateArgs[START_AT] = timelineDetail.startAt timelineDetail.places.forEachIndexed { index, place -> if (index < 5) { @@ -73,13 +76,13 @@ class TimelineDetailViewModel @Inject constructor( } if (ShareClient.instance.isKakaoTalkSharingAvailable(context)) { - ShareClient.instance.shareCustom(context, templateId.toLong(), templateArgs) { sharingResult, error -> + ShareClient.instance.shareCustom(context, TEMPLATE_ID, templateArgs) { sharingResult, error -> if (sharingResult != null) { context.startActivity(sharingResult.intent) } } } else { - val sharerUrl = WebSharerClient.instance.makeCustomUrl(templateId.toLong(), templateArgs) + val sharerUrl = WebSharerClient.instance.makeCustomUrl(TEMPLATE_ID, templateArgs) try { KakaoCustomTabsClient.openWithDefault(context, sharerUrl) } catch (e: UnsupportedOperationException) { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index 929f1abe..23d78547 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -1,7 +1,19 @@ package org.sopt.dateroad.presentation.util +object CourseDetail { + const val POINT_LACK = 50 +} + object DatePicker { const val DATE_PATTERN = "yyyy.MM.dd" + const val YEAR_START = 2000 + const val YEAR_END = 2024 + const val YEAR_START_INDEX = 24 + const val MONTH_START = 1 + const val MONTH_END = 12 + const val DAY_START = 1 + const val DAY_END = 31 + const val SEPARATOR = "." } object Default { @@ -10,6 +22,11 @@ object Default { const val CLICKABLE_DELAY = 500L } +object DurationPicker { + const val DURATION_START = 1 + const val DURATION_END = 12 +} + object EnrollAmplitude { const val VIEW_ADD_SCHEDULE = "view_add_schedule" const val CLICK_SCHEDULE1_BACK = "click_schedule1_back" @@ -53,6 +70,15 @@ object EnrollScreen { const val TITLE_MIN_LENGTH = 5 } +object GalleryLauncher { + const val INPUT = "image/*" + const val DELETE_IMAGE = "" +} + +object Home { + const val ADVERTISEMENT_DELAY = 4000L +} + object LoadingView { const val LOTTIE = "loading.json" const val CLIP_MIN = 0 @@ -64,6 +90,12 @@ object MyCourseAmplitude { const val CLICK_PURCHASED_BACK = "click_purchased_back" } +object Onboarding { + const val FIRST = 0 + val FIRST_PAGE_KEYWORD = listOf("포인트", "데이트 코스", "100", "다양한") + val KEYWORD = listOf("100 포인트", "다양한") +} + object Pattern { private const val NICKNAME_PATTERN = "^[ㄱ-ㅎ가-힣a-zA-Z0-9]*$" val NICKNAME_REGEX = Regex(NICKNAME_PATTERN) @@ -80,6 +112,16 @@ object PointHistoryTab { const val USED_HISTORY_POSITION = 1 } +object ShareKakao { + const val TEMPLATE_ID = 109999L + const val USER_NAME = "userName" + const val START_AT = "startAt" +} + +object SignIn { + const val PLATFORM = "KAKAO" +} + object Time { const val TIME = " 시간" } @@ -94,6 +136,12 @@ object TimelineAmplitude { object TimePicker { const val AM = "오전" const val PM = "오후" + const val AM_ENG = "AM" + const val PM_ENG = "PM" + const val HOUR_START = 1 + const val HOUR_END = 12 + const val MINUTE_START = 0 + const val MINUTE_END = 59 } object Token { From 12d7058133d8e37bb891d1f6289c1a189d48570a Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Wed, 25 Sep 2024 20:03:53 +0900 Subject: [PATCH 28/49] =?UTF-8?q?[chore]=20#272=20di,=20domain=20layer=20?= =?UTF-8?q?=EC=83=81=EC=88=98=ED=99=94=20=EB=B0=8F=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repositoryimpl/TimelineRepositoryImpl.kt | 2 +- .../repositoryimpl/UserPointRepositoryImpl.kt | 2 +- .../org/sopt/dateroad/di/DataSourceModule.kt | 8 +-- .../org/sopt/dateroad/di/RepositoryModule.kt | 16 +++-- .../org/sopt/dateroad/di/ServiceModule.kt | 19 ++---- .../domain/repository/TimelineRepository.kt | 2 +- .../domain/repository/UserInfoRepository.kt | 6 ++ .../domain/repository/UserPointRepository.kt | 2 +- .../sopt/dateroad/domain/type/MonthType.kt | 2 +- .../dateroad/domain/type/TransactionType.kt | 6 -- .../domain/usecase/DeleteTimelineUseCase.kt | 2 +- .../dateroad/domain/usecase/GetUserUseCase.kt | 3 +- .../domain/usecase/PatchEditProfileUseCase.kt | 3 +- .../domain/usecase/PostCourseLikeUseCase.kt | 4 +- .../domain/usecase/PostUsePointUseCase.kt | 4 +- .../sopt/dateroad/domain/util/Constraints.kt | 60 +++++++++---------- 16 files changed, 68 insertions(+), 73 deletions(-) delete mode 100644 app/src/main/java/org/sopt/dateroad/domain/type/TransactionType.kt diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/TimelineRepositoryImpl.kt b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/TimelineRepositoryImpl.kt index 5d9e1452..41bce6d5 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/TimelineRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/TimelineRepositoryImpl.kt @@ -16,7 +16,7 @@ import org.sopt.dateroad.domain.type.TimelineTimeType class TimelineRepositoryImpl @Inject constructor( private val timelineRemoteDataSource: TimelineRemoteDataSource ) : TimelineRepository { - override suspend fun deleteTimeline(timelineId: Int) { + override suspend fun deleteTimeline(timelineId: Int) = runCatching { timelineRemoteDataSource.deleteTimeline(timelineId) } diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserPointRepositoryImpl.kt b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserPointRepositoryImpl.kt index 6bcaa4ad..2cfd42cb 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserPointRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserPointRepositoryImpl.kt @@ -20,7 +20,7 @@ class UserPointRepositoryImpl @Inject constructor( userPointRemoteDataSource.getPointHistory().toDomain() } - override suspend fun postUsePoint(courseId: Int, usePoint: UsePoint) { + override suspend fun postUsePoint(courseId: Int, usePoint: UsePoint) = runCatching { userPointRemoteDataSource.postUsePoint(courseId = courseId, requestUsePointDto = usePoint.toData()) } } diff --git a/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt b/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt index f8aba0fb..5f404e04 100644 --- a/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt +++ b/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt @@ -43,17 +43,17 @@ abstract class DataSourceModule { @Binds @Singleton - abstract fun bindTimelineRemoteDataSource(timelineRemoteDataSourceImpl: TimelineRemoteDataSourceImpl): TimelineRemoteDataSource + abstract fun bindsMyCourseRemoteDataSource(myCourseRemoteDataSourceImpl: MyCourseRemoteDataSourceImpl): MyCourseRemoteDataSource @Binds @Singleton - abstract fun bindsMyCourseRemoteDataSource(myCourseRemoteDataSourceImpl: MyCourseRemoteDataSourceImpl): MyCourseRemoteDataSource + abstract fun bindsProfileDataSource(profileDataSourceImpl: ProfileRemoteDataSourceImpl): ProfileRemoteDataSource @Binds @Singleton - abstract fun bindsUserPointRemoteDataSource(userPointRemoteDataSourceImpl: UserPointRemoteDataSourceImpl): UserPointRemoteDataSource + abstract fun bindTimelineRemoteDataSource(timelineRemoteDataSourceImpl: TimelineRemoteDataSourceImpl): TimelineRemoteDataSource @Binds @Singleton - abstract fun bindsProfileDataSource(profileDataSourceImpl: ProfileRemoteDataSourceImpl): ProfileRemoteDataSource + abstract fun bindsUserPointRemoteDataSource(userPointRemoteDataSourceImpl: UserPointRemoteDataSourceImpl): UserPointRemoteDataSource } diff --git a/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt b/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt index 26c1d508..ed695b92 100644 --- a/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt +++ b/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt @@ -2,15 +2,18 @@ package org.sopt.dateroad.di import dagger.Binds import dagger.Module +import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import javax.inject.Singleton +import org.sopt.dateroad.data.datalocal.datasource.UserInfoLocalDataSource import org.sopt.dateroad.data.repositoryimpl.AdvertisementRepositoryImpl import org.sopt.dateroad.data.repositoryimpl.AuthRepositoryImpl import org.sopt.dateroad.data.repositoryimpl.CourseRepositoryImpl import org.sopt.dateroad.data.repositoryimpl.MyCourseRepositoryImpl import org.sopt.dateroad.data.repositoryimpl.ProfileRepositoryImpl import org.sopt.dateroad.data.repositoryimpl.TimelineRepositoryImpl +import org.sopt.dateroad.data.repositoryimpl.UserInfoRepositoryImpl import org.sopt.dateroad.data.repositoryimpl.UserPointRepositoryImpl import org.sopt.dateroad.domain.repository.AdvertisementRepository import org.sopt.dateroad.domain.repository.AuthRepository @@ -18,6 +21,7 @@ import org.sopt.dateroad.domain.repository.CourseRepository import org.sopt.dateroad.domain.repository.MyCourseRepository import org.sopt.dateroad.domain.repository.ProfileRepository import org.sopt.dateroad.domain.repository.TimelineRepository +import org.sopt.dateroad.domain.repository.UserInfoRepository import org.sopt.dateroad.domain.repository.UserPointRepository @Module @@ -37,17 +41,21 @@ abstract class RepositoryModule { @Binds @Singleton - abstract fun bindsTimelineRepository(timelineRepositoryImpl: TimelineRepositoryImpl): TimelineRepository + abstract fun bindsMyCourseRepository(myCourseRepositoryImpl: MyCourseRepositoryImpl): MyCourseRepository @Binds @Singleton - abstract fun bindsMyCourseRepository(myCourseRepositoryImpl: MyCourseRepositoryImpl): MyCourseRepository + abstract fun bindsProfileRepository(profileRepositoryImpl: ProfileRepositoryImpl): ProfileRepository @Binds @Singleton - abstract fun bindsUserPointRepository(userPointRepositoryImpl: UserPointRepositoryImpl): UserPointRepository + abstract fun bindsTimelineRepository(timelineRepositoryImpl: TimelineRepositoryImpl): TimelineRepository + + @Provides + fun provideUserInfoRepository(userInfoLocalDataSource: UserInfoLocalDataSource): UserInfoRepository = + UserInfoRepositoryImpl(userInfoLocalDataSource) @Binds @Singleton - abstract fun bindsProfileRepository(profileRepositoryImpl: ProfileRepositoryImpl): ProfileRepository + abstract fun bindsUserPointRepository(userPointRepositoryImpl: UserPointRepositoryImpl): UserPointRepository } diff --git a/app/src/main/java/org/sopt/dateroad/di/ServiceModule.kt b/app/src/main/java/org/sopt/dateroad/di/ServiceModule.kt index 7fe17c0f..784ebca8 100644 --- a/app/src/main/java/org/sopt/dateroad/di/ServiceModule.kt +++ b/app/src/main/java/org/sopt/dateroad/di/ServiceModule.kt @@ -4,7 +4,6 @@ import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import org.sopt.dateroad.data.datalocal.datasource.UserInfoLocalDataSource import org.sopt.dateroad.data.dataremote.service.AdvertisementService import org.sopt.dateroad.data.dataremote.service.AuthService import org.sopt.dateroad.data.dataremote.service.CourseService @@ -12,9 +11,7 @@ import org.sopt.dateroad.data.dataremote.service.MyCourseService import org.sopt.dateroad.data.dataremote.service.ProfileService import org.sopt.dateroad.data.dataremote.service.TimelineService import org.sopt.dateroad.data.dataremote.service.UserPointService -import org.sopt.dateroad.data.repositoryimpl.UserInfoRepositoryImpl import org.sopt.dateroad.di.qualifier.DateRoad -import org.sopt.dateroad.domain.repository.UserInfoRepository import retrofit2.Retrofit @Module @@ -32,23 +29,19 @@ object ServiceModule { fun providesCourseService(@DateRoad retrofit: Retrofit): CourseService = retrofit.create(CourseService::class.java) - @Provides - fun provideTimelineService(@DateRoad retrofit: Retrofit): TimelineService = - retrofit.create(TimelineService::class.java) - @Provides fun providesMyCourseService(@DateRoad retrofit: Retrofit): MyCourseService = retrofit.create(MyCourseService::class.java) @Provides - fun providesUserPointService(@DateRoad retrofit: Retrofit): UserPointService = - retrofit.create(UserPointService::class.java) + fun providesProfileService(@DateRoad retrofit: Retrofit): ProfileService = + retrofit.create(ProfileService::class.java) @Provides - fun provideUserInfoRepository(userInfoLocalDataSource: UserInfoLocalDataSource): UserInfoRepository = - UserInfoRepositoryImpl(userInfoLocalDataSource) + fun provideTimelineService(@DateRoad retrofit: Retrofit): TimelineService = + retrofit.create(TimelineService::class.java) @Provides - fun providesProfileService(@DateRoad retrofit: Retrofit): ProfileService = - retrofit.create(ProfileService::class.java) + fun providesUserPointService(@DateRoad retrofit: Retrofit): UserPointService = + retrofit.create(UserPointService::class.java) } diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/TimelineRepository.kt b/app/src/main/java/org/sopt/dateroad/domain/repository/TimelineRepository.kt index 46d1ffe0..b8f98894 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/TimelineRepository.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/repository/TimelineRepository.kt @@ -7,7 +7,7 @@ import org.sopt.dateroad.domain.model.TimelineDetail import org.sopt.dateroad.domain.type.TimelineTimeType interface TimelineRepository { - suspend fun deleteTimeline(timelineId: Int) + suspend fun deleteTimeline(timelineId: Int): Result suspend fun getTimelineDetail(timelineId: Int): Result diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/UserInfoRepository.kt b/app/src/main/java/org/sopt/dateroad/domain/repository/UserInfoRepository.kt index 9cbf7b8b..473d84ca 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/UserInfoRepository.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/repository/UserInfoRepository.kt @@ -2,10 +2,16 @@ package org.sopt.dateroad.domain.repository interface UserInfoRepository { fun setAccessToken(accessToken: String) + fun getAccessToken(): String + fun setRefreshToken(refreshToken: String) + fun getRefreshToken(): String + fun setNickname(nickname: String) + fun getNickname(): String + fun clear() } diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/UserPointRepository.kt b/app/src/main/java/org/sopt/dateroad/domain/repository/UserPointRepository.kt index cbf8e89c..2db650a5 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/UserPointRepository.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/repository/UserPointRepository.kt @@ -9,5 +9,5 @@ interface UserPointRepository { suspend fun getPointHistory(): Result - suspend fun postUsePoint(courseId: Int, usePoint: UsePoint) + suspend fun postUsePoint(courseId: Int, usePoint: UsePoint): Result } diff --git a/app/src/main/java/org/sopt/dateroad/domain/type/MonthType.kt b/app/src/main/java/org/sopt/dateroad/domain/type/MonthType.kt index 44ce5ebc..a647078a 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/type/MonthType.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/type/MonthType.kt @@ -1,6 +1,6 @@ package org.sopt.dateroad.domain.type -import org.sopt.dateroad.data.dataremote.util.Month +import org.sopt.dateroad.domain.util.Month enum class MonthType(val title: String) { JANUARY(title = Month.JANUARY), diff --git a/app/src/main/java/org/sopt/dateroad/domain/type/TransactionType.kt b/app/src/main/java/org/sopt/dateroad/domain/type/TransactionType.kt deleted file mode 100644 index e34f7129..00000000 --- a/app/src/main/java/org/sopt/dateroad/domain/type/TransactionType.kt +++ /dev/null @@ -1,6 +0,0 @@ -package org.sopt.dateroad.domain.type - -enum class TransactionType { - POINT_GAINED, - POINT_USED -} diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteTimelineUseCase.kt b/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteTimelineUseCase.kt index a4570484..9be6a8b1 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteTimelineUseCase.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteTimelineUseCase.kt @@ -8,5 +8,5 @@ import org.sopt.dateroad.domain.repository.TimelineRepository class DeleteTimelineUseCase @Inject constructor( private val timelineRepository: TimelineRepository ) { - suspend operator fun invoke(timelineId: Int): Result = runCatching { timelineRepository.deleteTimeline(timelineId = timelineId) } + suspend operator fun invoke(timelineId: Int): Result = timelineRepository.deleteTimeline(timelineId = timelineId) } diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetUserUseCase.kt b/app/src/main/java/org/sopt/dateroad/domain/usecase/GetUserUseCase.kt index 87df2c3c..9463755a 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetUserUseCase.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/usecase/GetUserUseCase.kt @@ -9,6 +9,5 @@ import org.sopt.dateroad.domain.repository.ProfileRepository class GetUserUseCase @Inject constructor( private val profileRepository: ProfileRepository ) { - suspend operator fun invoke(): Result = - profileRepository.getUsers() + suspend operator fun invoke(): Result = profileRepository.getUsers() } diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PatchEditProfileUseCase.kt b/app/src/main/java/org/sopt/dateroad/domain/usecase/PatchEditProfileUseCase.kt index 9f565bc0..4847f0c4 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PatchEditProfileUseCase.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/usecase/PatchEditProfileUseCase.kt @@ -9,6 +9,5 @@ import org.sopt.dateroad.domain.repository.AuthRepository class PatchEditProfileUseCase @Inject constructor( private val authRepository: AuthRepository ) { - suspend operator fun invoke(editProfile: EditProfile): Result = - authRepository.patchEditProfile(editProfile = editProfile) + suspend operator fun invoke(editProfile: EditProfile): Result = authRepository.patchEditProfile(editProfile = editProfile) } diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseLikeUseCase.kt b/app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseLikeUseCase.kt index 5f3d1d46..7e213407 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseLikeUseCase.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseLikeUseCase.kt @@ -8,7 +8,5 @@ import org.sopt.dateroad.domain.repository.CourseRepository class PostCourseLikeUseCase @Inject constructor( private val courseRepository: CourseRepository ) { - suspend operator fun invoke(courseId: Int): Result = runCatching { - courseRepository.postCourseLike(courseId = courseId) - } + suspend operator fun invoke(courseId: Int): Result = courseRepository.postCourseLike(courseId = courseId) } diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostUsePointUseCase.kt b/app/src/main/java/org/sopt/dateroad/domain/usecase/PostUsePointUseCase.kt index da2f2945..ad6b786f 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostUsePointUseCase.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/usecase/PostUsePointUseCase.kt @@ -9,7 +9,5 @@ import org.sopt.dateroad.domain.repository.UserPointRepository class PostUsePointUseCase @Inject constructor( private val userPointRepository: UserPointRepository ) { - suspend operator fun invoke(courseId: Int, usePoint: UsePoint): Result = runCatching { - userPointRepository.postUsePoint(courseId = courseId, usePoint = usePoint) - } + suspend operator fun invoke(courseId: Int, usePoint: UsePoint): Result = userPointRepository.postUsePoint(courseId = courseId, usePoint = usePoint) } diff --git a/app/src/main/java/org/sopt/dateroad/domain/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/domain/util/Constraints.kt index c346cf10..0b19662f 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/domain/util/Constraints.kt @@ -1,5 +1,12 @@ package org.sopt.dateroad.domain.util +object Advertisement { + const val EDITOR = "에디터 픽" + const val AD = "광고" + const val ABOUT = "ABOUT" + const val HOT = "이달의 HOT" +} + object Cost { const val EXCESS_100000_TITLE = "10만원 초과" const val LESS_THAN_100000_TITLE = "10만원 이하" @@ -7,29 +14,6 @@ object Cost { const val LESS_THAN_30000_TITLE = "3만원 이하" } -object Region { - const val SEOUL = "서울" - const val GYEONGGI = "경기" - const val INCHEON = "인천" -} - -object Seoul { - const val SEOUL_ENTIRE = "서울 전체" - const val GANGNAM_SEOCHO = "강남/서초" - const val JAMSIL_SONGPA_GANGDONG = "잠실/송파/강동" - const val KONDAE_SEONGSU_SEONGDONG = "건대/성수/성동" - const val GWANGIN_JUNGBANG = "광진/중랑" - const val JONGNO_JUNGRO = "종로/중구" - const val EUNPYEONG_SEODAEMUN = "은평/서대문" - const val HONGDAE_HAPJEONG_MAPO = "홍대/합정/마포" - const val YEONGDEUNGPO_YEOUIDO = "영등포/여의도" - const val YONGSAN_ITAEWON_HANNAM = "용산/이태원/한남" - const val YANGCHEON_GANGSEO_GURO = "양천/강서/구로" - const val DONGDAEMUN_SEONGBUK = "동대문/성북" - const val NOWON_DOBONG_GANGBUK = "노원/도봉/강북" - const val GWANAK_DONGJAK_GEUMCHEON = "관악/동작/금천" -} - object Gyeonggi { const val GYEONGGI_ENTIRE = "경기 전체" const val SEONGNAM = "성남" @@ -54,13 +38,6 @@ object Incheon { const val INCHEON_ENTIRE = "인천 전체" } -object Advertisement { - const val EDITOR = "에디터 픽" - const val AD = "광고" - const val ABOUT = "ABOUT" - const val HOT = "이달의 HOT" -} - object Month { const val JANUARY = "January" const val FEBRUARY = "February" @@ -75,3 +52,26 @@ object Month { const val NOVEMBER = "November" const val DECEMBER = "December" } + +object Region { + const val SEOUL = "서울" + const val GYEONGGI = "경기" + const val INCHEON = "인천" +} + +object Seoul { + const val SEOUL_ENTIRE = "서울 전체" + const val GANGNAM_SEOCHO = "강남/서초" + const val JAMSIL_SONGPA_GANGDONG = "잠실/송파/강동" + const val KONDAE_SEONGSU_SEONGDONG = "건대/성수/성동" + const val GWANGIN_JUNGBANG = "광진/중랑" + const val JONGNO_JUNGRO = "종로/중구" + const val EUNPYEONG_SEODAEMUN = "은평/서대문" + const val HONGDAE_HAPJEONG_MAPO = "홍대/합정/마포" + const val YEONGDEUNGPO_YEOUIDO = "영등포/여의도" + const val YONGSAN_ITAEWON_HANNAM = "용산/이태원/한남" + const val YANGCHEON_GANGSEO_GURO = "양천/강서/구로" + const val DONGDAEMUN_SEONGBUK = "동대문/성북" + const val NOWON_DOBONG_GANGBUK = "노원/도봉/강북" + const val GWANAK_DONGJAK_GEUMCHEON = "관악/동작/금천" +} From a97e3cdfd4b30e108da29f9ec6fb0c0dfd9c3b96 Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Thu, 26 Sep 2024 13:36:17 +0900 Subject: [PATCH 29/49] =?UTF-8?q?[chore]=20#272=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0=20?= =?UTF-8?q?=EB=B0=8F=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInfoLocalDataSourceImpl.kt | 7 ++-- .../AdvertisementRemoteDataSource.kt | 1 + .../dataremote/model/base/BaseResponse.kt | 14 -------- .../model/request/RequestSignUpDto.kt | 14 -------- .../data/dataremote/service/AuthService.kt | 3 +- .../data/dataremote/util/Constraints.kt | 34 +++++++------------ .../dataremote/util/ContentUriRequestBody.kt | 2 +- .../data/mapper/toEntity/AreaMapper.kt | 14 -------- .../data/mapper/toEntity/CostMapper.kt | 4 +-- .../data/mapper/toEntity/DurationMapper.kt | 13 +++---- .../data/mapper/toEntity/RegionMapper.kt | 3 ++ .../data/mapper/toEntity/TimelineMapper.kt | 12 +++---- .../repositoryimpl/CourseRepositoryImpl.kt | 10 ++++-- .../dateroad/presentation/util/Constraints.kt | 4 --- 14 files changed, 42 insertions(+), 93 deletions(-) delete mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/model/base/BaseResponse.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestSignUpDto.kt diff --git a/app/src/main/java/org/sopt/dateroad/data/datalocal/datasourceimpl/UserInfoLocalDataSourceImpl.kt b/app/src/main/java/org/sopt/dateroad/data/datalocal/datasourceimpl/UserInfoLocalDataSourceImpl.kt index 50ec5d96..5299fd28 100644 --- a/app/src/main/java/org/sopt/dateroad/data/datalocal/datasourceimpl/UserInfoLocalDataSourceImpl.kt +++ b/app/src/main/java/org/sopt/dateroad/data/datalocal/datasourceimpl/UserInfoLocalDataSourceImpl.kt @@ -32,15 +32,15 @@ class UserInfoLocalDataSourceImpl @Inject constructor( } override var accessToken: String - get() = sharedPreferences.getString(ACCESS_TOKEN, "").toString() + get() = sharedPreferences.getString(ACCESS_TOKEN, INITIAL_VALUE).toString() set(value) = sharedPreferences.edit { putString(ACCESS_TOKEN, value) } override var refreshToken: String - get() = sharedPreferences.getString(REFRESH_TOKEN, "").toString() + get() = sharedPreferences.getString(REFRESH_TOKEN, INITIAL_VALUE).toString() set(value) = sharedPreferences.edit { putString(REFRESH_TOKEN, value) } override var nickname: String - get() = sharedPreferences.getString(NICK_NAME, "").toString() + get() = sharedPreferences.getString(NICK_NAME, INITIAL_VALUE).toString() set(value) = sharedPreferences.edit { putString(NICK_NAME, value) } override fun clear() = sharedPreferences.edit { clear() } @@ -48,5 +48,6 @@ class UserInfoLocalDataSourceImpl @Inject constructor( companion object { const val FILE_NAME = "DateRoadLocalDataSource" const val NICK_NAME = "NickName" + const val INITIAL_VALUE = "" } } diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/AdvertisementRemoteDataSource.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/AdvertisementRemoteDataSource.kt index 47a70603..45c54c29 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/AdvertisementRemoteDataSource.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/AdvertisementRemoteDataSource.kt @@ -5,5 +5,6 @@ import org.sopt.dateroad.data.dataremote.model.response.ResponseAdvertisementsDt interface AdvertisementRemoteDataSource { suspend fun getAdvertisementDetail(advertisementId: Int): ResponseAdvertisementDetailDto + suspend fun getHomeAdvertisements(): ResponseAdvertisementsDto } diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/base/BaseResponse.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/model/base/BaseResponse.kt deleted file mode 100644 index 32f032f8..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/base/BaseResponse.kt +++ /dev/null @@ -1,14 +0,0 @@ -package org.sopt.dateroad.data.dataremote.model.base - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class BaseResponse( - @SerialName("code") - val code: Int, - @SerialName("message") - val message: String, - @SerialName("data") - val data: T -) diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestSignUpDto.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestSignUpDto.kt deleted file mode 100644 index 892b8a50..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestSignUpDto.kt +++ /dev/null @@ -1,14 +0,0 @@ -package org.sopt.dateroad.data.dataremote.model.request - -import kotlinx.serialization.SerialName -import kotlinx.serialization.Serializable - -@Serializable -data class RequestSignUpDto( - @SerialName("userSignUpReq") - val userSignUpReq: RequestUserSignUpInfoDto, - @SerialName("image") - val image: String, - @SerialName("tag") - val tag: List -) diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/AuthService.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/AuthService.kt index 409e445c..684287d2 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/AuthService.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/AuthService.kt @@ -7,6 +7,7 @@ import org.sopt.dateroad.data.dataremote.model.request.RequestWithdrawDto import org.sopt.dateroad.data.dataremote.model.response.ResponseAuthDto import org.sopt.dateroad.data.dataremote.util.ApiConstraints.API import org.sopt.dateroad.data.dataremote.util.ApiConstraints.CHECK +import org.sopt.dateroad.data.dataremote.util.ApiConstraints.DELETE_METHOD import org.sopt.dateroad.data.dataremote.util.ApiConstraints.IS_DEFAULT_IMAGE import org.sopt.dateroad.data.dataremote.util.ApiConstraints.NAME import org.sopt.dateroad.data.dataremote.util.ApiConstraints.SIGNUP @@ -33,7 +34,7 @@ interface AuthService { @DELETE("$API/$VERSION/$USERS/$SIGN_OUT") suspend fun deleteSignOut() - @HTTP(method = "DELETE", hasBody = true, path = "$API/$VERSION/$USERS/$WITHDRAW") + @HTTP(method = DELETE_METHOD, hasBody = true, path = "$API/$VERSION/$USERS/$WITHDRAW") suspend fun deleteWithdraw( @Body requestWithdrawDto: RequestWithdrawDto ) diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/util/Constraints.kt index f9dc93ad..ab0bbb38 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/util/Constraints.kt @@ -38,21 +38,13 @@ object ApiConstraints { const val TIME = "time" const val NEAREST = "nearest" const val IS_DEFAULT_IMAGE = "isDefaultImage" + const val DELETE_METHOD = "DELETE" } object Cost { const val COST = "원" } -object Duration { - const val DURATION = "시간" -} - -object Like { - const val LIKE_MAX = "999+" - const val THRESHOLD = 999 -} - object Date { const val INPUT_FORMAT = "yyyy.MM.dd" const val COURSE_DETAIL_OUTPUT_FORMAT = "yyyy년 M월 d일 방문" @@ -65,23 +57,21 @@ object Date { const val ADVERTISEMENT_DETAIL_OUTPUT_FORMAT = "yyyy년 M월 d일" } +object Duration { + const val DURATION = "시간" +} + +object Like { + const val LIKE_MAX = "999+" + const val THRESHOLD = 999 +} + object Point { const val POINT = " P" const val GAINED = "+" const val USED = "-" } -object Month { - const val JANUARY = "January" - const val FEBRUARY = "February" - const val MARCH = "March" - const val APRIL = "April" - const val MAY = "May" - const val JUNE = "June" - const val JULY = "July" - const val AUGUST = "August" - const val SEPTEMBER = "September" - const val OCTOBER = "October" - const val NOVEMBER = "November" - const val DECEMBER = "December" +object TotalCostZero { + const val ZERO_COST = "무지출" } diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/util/ContentUriRequestBody.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/util/ContentUriRequestBody.kt index 8410e04e..80774f9a 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/util/ContentUriRequestBody.kt +++ b/app/src/main/java/org/sopt/dateroad/data/dataremote/util/ContentUriRequestBody.kt @@ -33,7 +33,7 @@ class ContentUriRequestBody( } } - fun getFileName() = fileName + private fun getFileName() = fileName override fun contentLength(): Long = size diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/AreaMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/AreaMapper.kt index 4a12cfbf..74e51a82 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/AreaMapper.kt +++ b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/AreaMapper.kt @@ -2,16 +2,10 @@ package org.sopt.dateroad.data.mapper.toEntity import org.sopt.dateroad.domain.type.GyeonggiAreaType import org.sopt.dateroad.domain.type.GyeonggiAreaType.Companion.fromTitleToGyeonggiAreaType -import org.sopt.dateroad.domain.type.GyeonggiAreaType.Companion.toGyeonggiAreaTitle -import org.sopt.dateroad.domain.type.GyeonggiAreaType.Companion.toGyeonggiAreaType import org.sopt.dateroad.domain.type.IncheonAreaType import org.sopt.dateroad.domain.type.IncheonAreaType.Companion.fromTitleToIncheonAreaType -import org.sopt.dateroad.domain.type.IncheonAreaType.Companion.toIncheonAreaTitle -import org.sopt.dateroad.domain.type.IncheonAreaType.Companion.toIncheonAreaType import org.sopt.dateroad.domain.type.SeoulAreaType import org.sopt.dateroad.domain.type.SeoulAreaType.Companion.fromTitleToSeoulAreaType -import org.sopt.dateroad.domain.type.SeoulAreaType.Companion.toSeoulAreaTitle -import org.sopt.dateroad.domain.type.SeoulAreaType.Companion.toSeoulAreaType fun Any?.toAreaTitle(): String = when (this) { is SeoulAreaType -> this.title @@ -20,14 +14,6 @@ fun Any?.toAreaTitle(): String = when (this) { else -> "" } -fun String.toAreaType(): Any? = - when { - this.toSeoulAreaTitle().isNotEmpty() -> this.toSeoulAreaType() - this.toGyeonggiAreaTitle().isNotEmpty() -> this.toGyeonggiAreaType() - this.toIncheonAreaTitle().isNotEmpty() -> this.toIncheonAreaType() - else -> this - } - fun String.fromTitleToAreaType(): Any? = when { this.fromTitleToSeoulAreaType() != null -> this.fromTitleToSeoulAreaType() diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/CostMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/CostMapper.kt index 7e6d5ffb..f58dfdd7 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/CostMapper.kt +++ b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/CostMapper.kt @@ -3,10 +3,10 @@ package org.sopt.dateroad.data.mapper.toEntity import java.text.NumberFormat import java.util.Locale import org.sopt.dateroad.data.dataremote.util.Cost -import org.sopt.dateroad.presentation.util.TotalCostZero.ZERO_COST +import org.sopt.dateroad.data.dataremote.util.TotalCostZero.ZERO_COST fun Int.toCost(): String = if (this == 0) { ZERO_COST } else { - "${NumberFormat.getNumberInstance(Locale.KOREA).format(this)}${Cost.COST}" + NumberFormat.getNumberInstance(Locale.KOREA).format(this) + Cost.COST } diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/DurationMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/DurationMapper.kt index 62a47199..a86eb5a4 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/DurationMapper.kt +++ b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/DurationMapper.kt @@ -2,11 +2,8 @@ package org.sopt.dateroad.data.mapper.toEntity import org.sopt.dateroad.data.dataremote.util.Duration -fun Float.toDuration(): String { - val formattedDuration = if (this % 1.0 == 0.0) { - "%.0f".format(this) - } else { - "%.1f".format(this) - } - return "$formattedDuration${Duration.DURATION}" -} +fun Float.toDuration(): String = if (this % 1.0 == 0.0) { + "%.0f".format(this) +} else { + "%.1f".format(this) +} + Duration diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/RegionMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/RegionMapper.kt index e02d9878..68f04b95 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/RegionMapper.kt +++ b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/RegionMapper.kt @@ -7,7 +7,10 @@ import org.sopt.dateroad.domain.type.SeoulAreaType.Companion.fromTitleToSeoulAre fun String.toRegionType(): RegionType? = when { this.fromTitleToSeoulAreaType() != null -> RegionType.SEOUL + this.fromTitleToGyeonggiAreaType() != null -> RegionType.GYEONGGI + this.fromTitleToIncheonAreaType() != null -> RegionType.INCHEON + else -> null } diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/TimelineMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/TimelineMapper.kt index 2f45b921..fa8d1032 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/TimelineMapper.kt +++ b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/TimelineMapper.kt @@ -8,23 +8,21 @@ import org.sopt.dateroad.data.dataremote.model.response.ResponseNearestTimelineD import org.sopt.dateroad.data.dataremote.util.Date import org.sopt.dateroad.domain.type.MonthType -fun String.toCourseDetailDate(): String = SimpleDateFormat(Date.INPUT_FORMAT, Locale.getDefault()).parse(this)?.let { SimpleDateFormat(Date.COURSE_DETAIL_OUTPUT_FORMAT, Locale.getDefault()).format(it) } ?: "" +fun String.toCourseDetailDate(): String = SimpleDateFormat(Date.INPUT_FORMAT, Locale.getDefault()).parse(this)?.let { SimpleDateFormat(Date.COURSE_DETAIL_OUTPUT_FORMAT, Locale.getDefault()).format(it) }.orEmpty() -fun String.toBasicDates(): String = SimpleDateFormat(Date.INPUT_FORMAT, Locale.getDefault()).parse(this)?.let { SimpleDateFormat(Date.DATE_OUTPUT_FORMAT, Locale.getDefault()).format(it) } ?: "" - -fun String.fromCourseDetailToEnrollDate(): String = LocalDate.parse(this, DateTimeFormatter.ofPattern(Date.COURSE_DETAIL_OUTPUT_FORMAT)).format(DateTimeFormatter.ofPattern(Date.INPUT_FORMAT)) +fun String.toBasicDates(): String = SimpleDateFormat(Date.INPUT_FORMAT, Locale.getDefault()).parse(this)?.let { SimpleDateFormat(Date.DATE_OUTPUT_FORMAT, Locale.getDefault()).format(it) }.orEmpty() fun String.fromDateToEnrollDate(): String = LocalDate.parse(this, DateTimeFormatter.ofPattern(Date.DATE_OUTPUT_FORMAT)).format(DateTimeFormatter.ofPattern(Date.INPUT_FORMAT)) fun Int.toDDayString(): String = when { - this > 0 -> "${Date.D_DAY_OUTPUT_FORMAT}$this" + this > 0 -> Date.D_DAY_OUTPUT_FORMAT + this this == 0 -> Date.D_DAY_DEFAULT_LABEL else -> "" } -fun String.toStartAtString(): String = "$this${Date.NEAREST_DATE_START_OUTPUT_FORMAT}" +fun String.toStartAtString(): String = this + Date.NEAREST_DATE_START_OUTPUT_FORMAT -fun String.toAdvertisementDetailDate(): String = SimpleDateFormat(Date.INPUT_FORMAT, Locale.getDefault()).parse(this)?.let { SimpleDateFormat(Date.ADVERTISEMENT_DETAIL_OUTPUT_FORMAT, Locale.getDefault()).format(it) } ?: "" +fun String.toAdvertisementDetailDate(): String = SimpleDateFormat(Date.INPUT_FORMAT, Locale.getDefault()).parse(this)?.let { SimpleDateFormat(Date.ADVERTISEMENT_DETAIL_OUTPUT_FORMAT, Locale.getDefault()).format(it) }.orEmpty() fun ResponseNearestTimelineDto.toFormattedDate(): String = String.format(Date.MAIN_DATE_OUTPUT_FORMAT, this.month, this.day) diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/CourseRepositoryImpl.kt b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/CourseRepositoryImpl.kt index 18946243..7cdb04ca 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/CourseRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/CourseRepositoryImpl.kt @@ -61,13 +61,17 @@ class CourseRepositoryImpl @Inject constructor( override suspend fun postCourse(enroll: Enroll): Result = runCatching { courseRemoteDataSource.postCourse( images = enroll.images.map { image -> ContentUriRequestBody(contentResolver = contentResolver, uri = Uri.parse(image)).toFormData() }, - course = Json.encodeToString(enroll.toCourseData()).toRequestBody("application/json".toMediaType()), - places = Json.encodeToString(enroll.places.mapIndexed { index, place -> place.toData(sequence = index + 1) }).toRequestBody("application/json".toMediaType()), - tags = Json.encodeToString(enroll.tags.map { tag -> tag.toData() }).toRequestBody("application/json".toMediaType()) + course = Json.encodeToString(enroll.toCourseData()).toRequestBody(APPLICATION_JSON.toMediaType()), + places = Json.encodeToString(enroll.places.mapIndexed { index, place -> place.toData(sequence = index + 1) }).toRequestBody(APPLICATION_JSON.toMediaType()), + tags = Json.encodeToString(enroll.tags.map { tag -> tag.toData() }).toRequestBody(APPLICATION_JSON.toMediaType()) ) } override suspend fun postCourseLike(courseId: Int): Result = runCatching { courseRemoteDataSource.postCourseLike(courseId = courseId) } + + companion object { + const val APPLICATION_JSON = "application/json" + } } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index 23d78547..71195980 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -148,10 +148,6 @@ object Token { const val BEARER = "Bearer " } -object TotalCostZero { - const val ZERO_COST = "무지출" -} - object UserPropertyAmplitude { const val USER_NAME = "user_name" const val USER_POINT = "user_point" From 94fbd127cabdaf29b18412d5f80a9ce01921ae37 Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Thu, 26 Sep 2024 13:45:25 +0900 Subject: [PATCH 30/49] =?UTF-8?q?[chore]=20#272=20di=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt | 2 ++ app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt b/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt index 5f404e04..066e6b3d 100644 --- a/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt +++ b/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt @@ -21,6 +21,8 @@ import org.sopt.dateroad.data.dataremote.datasourceimpl.MyCourseRemoteDataSource import org.sopt.dateroad.data.dataremote.datasourceimpl.ProfileRemoteDataSourceImpl import org.sopt.dateroad.data.dataremote.datasourceimpl.TimelineRemoteDataSourceImpl import org.sopt.dateroad.data.dataremote.datasourceimpl.UserPointRemoteDataSourceImpl +import org.sopt.dateroad.data.repositoryimpl.UserInfoRepositoryImpl +import org.sopt.dateroad.domain.repository.UserInfoRepository @Module @InstallIn(SingletonComponent::class) diff --git a/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt b/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt index ed695b92..f4380949 100644 --- a/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt +++ b/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt @@ -7,6 +7,7 @@ import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import javax.inject.Singleton import org.sopt.dateroad.data.datalocal.datasource.UserInfoLocalDataSource +import org.sopt.dateroad.data.datalocal.datasourceimpl.UserInfoLocalDataSourceImpl import org.sopt.dateroad.data.repositoryimpl.AdvertisementRepositoryImpl import org.sopt.dateroad.data.repositoryimpl.AuthRepositoryImpl import org.sopt.dateroad.data.repositoryimpl.CourseRepositoryImpl @@ -51,9 +52,9 @@ abstract class RepositoryModule { @Singleton abstract fun bindsTimelineRepository(timelineRepositoryImpl: TimelineRepositoryImpl): TimelineRepository - @Provides - fun provideUserInfoRepository(userInfoLocalDataSource: UserInfoLocalDataSource): UserInfoRepository = - UserInfoRepositoryImpl(userInfoLocalDataSource) + @Binds + @Singleton + abstract fun bindsUserInfoRepository(userInfoRepositoryImpl: UserInfoRepositoryImpl): UserInfoRepository @Binds @Singleton From d3abdd876bb4c68968fd23de43ddc0ae1508e036 Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Thu, 26 Sep 2024 13:46:23 +0900 Subject: [PATCH 31/49] [chore] #272 ktlintFormat --- app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt | 2 -- app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt | 3 --- 2 files changed, 5 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt b/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt index 066e6b3d..5f404e04 100644 --- a/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt +++ b/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt @@ -21,8 +21,6 @@ import org.sopt.dateroad.data.dataremote.datasourceimpl.MyCourseRemoteDataSource import org.sopt.dateroad.data.dataremote.datasourceimpl.ProfileRemoteDataSourceImpl import org.sopt.dateroad.data.dataremote.datasourceimpl.TimelineRemoteDataSourceImpl import org.sopt.dateroad.data.dataremote.datasourceimpl.UserPointRemoteDataSourceImpl -import org.sopt.dateroad.data.repositoryimpl.UserInfoRepositoryImpl -import org.sopt.dateroad.domain.repository.UserInfoRepository @Module @InstallIn(SingletonComponent::class) diff --git a/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt b/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt index f4380949..4959bf55 100644 --- a/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt +++ b/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt @@ -2,12 +2,9 @@ package org.sopt.dateroad.di import dagger.Binds import dagger.Module -import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import javax.inject.Singleton -import org.sopt.dateroad.data.datalocal.datasource.UserInfoLocalDataSource -import org.sopt.dateroad.data.datalocal.datasourceimpl.UserInfoLocalDataSourceImpl import org.sopt.dateroad.data.repositoryimpl.AdvertisementRepositoryImpl import org.sopt.dateroad.data.repositoryimpl.AuthRepositoryImpl import org.sopt.dateroad.data.repositoryimpl.CourseRepositoryImpl From 5876765608a28c1580128f9d0f2791c1a6d4a0e6 Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Thu, 26 Sep 2024 14:22:37 +0900 Subject: [PATCH 32/49] [docs] #272 update README.md --- README.md | 193 ++++++++++++++++++++++++++---------------------------- 1 file changed, 94 insertions(+), 99 deletions(-) diff --git a/README.md b/README.md index 899c0a21..df11d669 100644 --- a/README.md +++ b/README.md @@ -1,53 +1,104 @@ # 쉽고 빠른 데이트로 가는 지름길, 데이트로드 👩🏻‍❤️‍👨🏻 -![50](https://github.com/user-attachments/assets/3e0c4678-25de-4e48-8939-581733a9ec5b) -데이트로드는 ‘장소 중심’이 아닌 ‘코스 중심’ 데이트 공유 서비스로 사용자가 직접 데이트 코스를 등록하고 공유합니다. +커플들이 직접 공유하는 ‘장소 중심’이 아닌 ‘코스 중심’ 데이트 코스 공유 서비스 데이트로드입니다. +
+![DateRoad](https://github.com/user-attachments/assets/3e0c4678-25de-4e48-8939-581733a9ec5b) -## 💟 Contributors +### 🩷 프로젝트 설명 +

-| ![데이트 일정](https://github.com/user-attachments/assets/59469c43-75af-419c-a2b7-e7a08bfabaf2) | ![마이페이지](https://github.com/user-attachments/assets/4281f19e-5cba-486e-be17-14977b56d557) | -|:------------------------:|:--------------------------:| -| `데이트 일정` | `마이페이지` | +### 📝 문제상황 정의 +![6](https://github.com/user-attachments/assets/c856fdaf-86f2-4f6d-bc20-3109eb072bdf) +- 기존 앱은 코스가 아닌 장소 중심, 이로 인해 데이트 코스를 찾기 위해 여러 앱을 쓰며 피로감을 느낌 +- 광고가 아닌 직접 방문한 사람의 후기를 기반으로 데이트 코스를 짜고 싶어 하는 니즈 존재 +### 🎯 핵심 타겟 +- 센스 있게 데이트 코스를 짜고 싶은 여자/남자친구 +- 색다른 데이트 코스를 찾기 위해 인스타그램 등을 탐색하는 커플 +- 네이버 블로그, 인스타그램을 통해 여러 번 데이트 장소의 후기를 얻는 커플 -## 👋 커밋 컨벤션 -[Git Convention & Branch Strategy](https://www.notion.so/hooooooni/Git-Convention-Branch-Strategy-fdcac833649d41beaea4fc5c4f7250a8) +### 📍 주요 기능 +#### 1️⃣ 코스 등록하기 및 열람 + +|![Instagram_post_-_4](https://github.com/user-attachments/assets/6232fd24-f906-49a8-9ea0-16d296545931)|![Instagram_post_-_5](https://github.com/user-attachments/assets/0d648884-0d06-4043-9d31-03df52d434b9)| +|---|---| +- 내가 한 데이트 코스를 등록하고 포인트를 획득할 수 있습니다. +- 다른 커플들이 한 데이트를 포인트를 사용해 열람할 수 있습니다. +- 코스 상세 페이지에서 ‘내 일정에 추가하기’ 버튼을 눌러 내 데이트 일정으로 불러올 수 있습니다. + +#### 2️⃣ 일정 등록하기 및 열람 + +|![Instagram_post_-_10](https://github.com/user-attachments/assets/8e3a627f-e567-4ad5-ac11-63e560a09b67)|![Instagram_post_-_6](https://github.com/user-attachments/assets/e9accf21-1c6c-4fb5-9ad8-f834ab5750fa)| +|---|---| + +- 내 데이트 일정을 등록할 수 있습니다. +- 내 데이트 일정을 확인할 수 있습니다. +- 지난 데이트는 코스 등록하기로 연동해 등록하고 포인트를 받을 수 있습니다. +- 카카오톡 공유하기를 통해 데이트 일정을 연인에게 공유할 수 있습니다. +## 💰 비즈니스 모델 -## 👋 코드 컨벤션 -[Android Coding Convention](https://www.notion.so/hooooooni/Android-Coding-Convention-019d81b86cdb44cf8ab3ffa55c10c64d) +> **포인트를 통한 수익 모델** +> +- 유저들은 데이트 코스를 등록하고 포인트를 획득해 제휴 매장에 할인받아 방문합니다. +- 구글 애드센스를 연결하여 광고를 시청하면 포인트를 획득할 수 있습니다. 데이트로드는 광고 수익을 얻을 수 있습니다. +> **입점처를 통한 수익 모델** +> +- 입점 가게는 매장을 홍보하고 유저 방문으로 매출을 증가시키며, 광고주는 유저에게 광고를 노출하여 제품이나 서비스를 홍보합니다. 데이트로드는 이를 통해 수익을 창출하고, 모든 참여자가 상호 이익을 얻는 생태계를 구축합니다. -## 👋 브랜치전략 -**브랜치 유형** -- **main** : 완성된 버전의 코드를 저장하는 브랜치 -- **develop** : 개발이 진행되는 동안 완성된 코드를 저장하는 브랜치 -- **feature** : 작은 단위의 작업이 진행되는 브랜치 -- **hotfix** : 긴급한 오류를 해결하는 브랜치 +

-- 해당 작업을 위한 브랜치를 파서 작업합니다. -- 작업 완료 후 PR을 날리고 팀원들에게 크로스체크 후 머지합니다. +## 💟 *****Contributors***** -예시) +| [🐸 배지현 Lead](https://github.com/jihyunniiii) | [신민석](https://github.com/t1nm1ksun) | [이현진](https://github.com/2hyunjinn) | +|:-------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------:| +| | | | +| `포인트내역`
`열람한 코스`
`코스둘러보기`
`코스등록하기+일정등록하기`
`마이페이지`
`지난 데이트` | `스플래시`
`로그인/온보딩`
`프로필 등록하기`
`코스상세 + 관리자 아카이빙`
`포인트 제도 소개`
`프로필 수정하기` | `홈`
`데이트 일정`
`데이트 일정 상세`
`내가 등록한 코스`
`내가 열람한 코스`
`카카오톡 공유하기` -- dev/feat-main-view -- dev/add-font-res +--- +## 📷 *****ScreenShot***** +| | | | +|:-------------------------:|:-------------------------:|:-------------------------:| +| `로그인/온보딩` | `프로필 등록하기` | `홈` | +| | | +| `코스 둘러보기` | `데이트 일정` | `지난 데이트` | +| | | +| `코스 등록하기` | `일정 등록하기` | `열람한 코스` | +| | | +| `마이페이지` | `프로필 수정` | `포인트 내역` | + + +## 👩🏻‍💻 ***𝙏𝙚𝙘𝙝 𝙎𝙩𝙖𝙘𝙠*** + +| Title | Content | +|-------------------------|-------------------------------------------------------------------------------| +| Architecture | Clean Architecture, MVI, Single Activity Architecture | +| Design Pattern | Repository Pattern, Delegation Pattern | +| UI | Jetpack Compose | +| Jetpack Components | encryptedsharedpreferences, Lifecycle, ViewModel, Navigation | +| Dependency Injection | Hilt | +| Network | Retrofit, OkHttp, MultiPart | +| Asynchronous Processing | Coroutine | +| Third Party Library | Coil, Firebase, Timber, kotlinSerialization, sentry, Amplitude, Lottie, Kakao | +| Strategy | Git Flow | +| CI | GitHub Action(KtLint, Complie Check) | +| CD | GitHub Action | +| Other Tool | Slack, Notion, Figma, Postman, Discord | + +
## 📁 *****Foldering***** ``` @@ -65,7 +116,6 @@ ┃ ┃ ┃ ┃ ┣ 📂 datasourceimpl ┃ ┃ ┃ ┃ ┣ 📂 interceptor ┃ ┃ ┃ ┃ ┣ 📂 model -┃ ┃ ┃ ┃ ┃ ┣ 📂 base ┃ ┃ ┃ ┃ ┃ ┣ 📂 request ┃ ┃ ┃ ┃ ┃ ┣ 📂 response ┃ ┃ ┃ ┃ ┣ 📂 service @@ -86,6 +136,7 @@ ┃ ┃ ┃ ┣ 📂 model ┃ ┃ ┃ ┣ 📂 type ┃ ┃ ┃ ┣ 📂 ui +┃ ┃ ┃ ┃ ┣ 📂 advertisement ┃ ┃ ┃ ┃ ┣ 📂 component ┃ ┃ ┃ ┃ ┃ 📂 coursedetail ┃ ┃ ┃ ┃ ┣ 📂 enroll @@ -110,77 +161,21 @@ ``` +
+## ➿ *****Convention***** -## 목차 - ---- - -## 🩷 프로젝트 설명 - ---- - -장소 중심이 아닌 코스 중심의 데이트 코스 공유 서비스 데이트로드입니다. - -데이트로드에서는 다른 커플들의 실제 데이트 코스 후기를 포인트를 통해 열람할 수 있습니다. - -코스 둘러보기를 통해 마음에 드는 코스를 클릭하고 미리보기를 통해 사전정보를 획득할 수 있습니다. - -포인트가 없다고 걱정하지 마세요. 최초 3회는 무료로 데이트 코스를 열람할 수 있습니다. 해당 코스대로 데이트를 떠나고 싶다면 내 일정에 추가하기 버튼을 눌러 내 데이트 일정으로 등록할 수도 있습니다. - -## 📝 문제상황 정의 - ---- - -![6](https://github.com/user-attachments/assets/b489f192-ae95-40b0-9694-fdc121ffe192) - - -- 기존 앱은 코스가 아닌 장소 중심, 이로 인해 데이트 코스를 찾기 위해 여러 앱을 쓰며 피로감을 느낌 -- 광고가 아닌 직접 방문한 사람의 후기를 기반으로 데이트 코스를 짜고 싶어 하는 니즈 존재 - -## 🎯 핵심 타겟 - ---- - -- 센스 있게 데이트 코스를 짜고 싶은 여자/남자친구 -- 색다른 데이트 코스를 찾기 위해 인스타그램 등을 탐색하는 커플 -- 네이버 블로그, 인스타그램을 통해 여러 번 데이트 장소의 후기를 얻는 커플 - -## 📍 주요 기능 - ---- - -### 1️⃣ 코스 등록하기 및 열람 - -![Instagram_post_-_4](https://github.com/user-attachments/assets/bc81ceda-fc99-4156-af11-e73f3d2b7396) +[ABC의 깃 컨벤션과 브랜치 전략이 궁금하다면? click ✔️](https://hooooooni.notion.site/Git-Convention-Branch-Strategy-fdcac833649d41beaea4fc5c4f7250a8?pvs=4) +
-![Instagram_post_-_5](https://github.com/user-attachments/assets/3a30183c-a625-4a18-b7e3-685e2f01bc2c) +[ABC의 코드 컨벤션이 궁금하다면? click ✔️](https://hooooooni.notion.site/Android-Coding-Convention-019d81b86cdb44cf8ab3ffa55c10c64d?pvs=4) +
+[ABC의 ISSUE, PR 컨벤션이 궁금하다면? click ✔️](https://hooooooni.notion.site/ISSUE-PR-Convention-c5718ebddba64678a001339cd5e148b2?pvs=4) +
-- 내가 한 데이트 코스를 등록하고 포인트를 획득할 수 있습니다. -- 다른 커플들이 한 데이트를 포인트를 사용해 열람할 수 있습니다. -- 코스 상세 페이지에서 ‘내 일정에 추가하기’ 버튼을 눌러 내 데이트 일정으로 불러올 수 있습니다. - -### 2️⃣ 일정 등록하기 및 열람 - -![Instagram_post_-_10](https://github.com/user-attachments/assets/4698b585-7369-4cb8-b3ca-6ebde11e5586) - -![Instagram_post_-_6](https://github.com/user-attachments/assets/c5666dee-da05-41b9-8934-739e50de6498) - -- 내 데이트 일정을 등록할 수 있습니다. -- 내 데이트 일정을 확인할 수 있습니다. -- 지난 데이트는 코스 등록하기로 연동해 등록하고 포인트를 받을 수 있습니다. -- 카카오톡 공유하기를 통해 데이트 일정을 연인에게 공유할 수 있습니다. +[ABC의 칸반보드가 궁금하다면? click ✔️](https://hooooooni.notion.site/ROLE-e46dd81ac93e47d999c2bb4147069ce6?pvs=4) +
-## 💰 비즈니스 모델 - ---- - -> **포인트를 통한 수익 모델** -> -- 유저들은 데이트 코스를 등록하고 포인트를 획득해 제휴 매장에 할인받아 방문합니다. -- 구글 애드센스를 연결하여 광고를 시청하면 포인트를 획득할 수 있습니다. 데이트로드는 광고 수익을 얻을 수 있습니다. - -> **입점처를 통한 수익 모델** -> -- 입점 가게는 매장을 홍보하고 유저 방문으로 매출을 증가시키며, 광고주는 유저에게 광고를 노출하여 제품이나 서비스를 홍보합니다. 데이트로드는 이를 통해 수익을 창출하고, 모든 참여자가 상호 이익을 얻는 생태계를 구축합니다. +[ABC의 Github Project가 궁금하다면? click ✔️](https://github.com/orgs/TeamDATEROAD/projects/1) +
\ No newline at end of file From 6ed7222ef6ba1a22aec632ed000753c27d130225 Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Thu, 26 Sep 2024 15:15:39 +0900 Subject: [PATCH 33/49] =?UTF-8?q?[chore]=20#272=20mapper=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/sopt/dateroad/data/mapper/toEntity/DurationMapper.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/DurationMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/DurationMapper.kt index a86eb5a4..42927949 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/DurationMapper.kt +++ b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/DurationMapper.kt @@ -6,4 +6,4 @@ fun Float.toDuration(): String = if (this % 1.0 == 0.0) { "%.0f".format(this) } else { "%.1f".format(this) -} + Duration +} + Duration.DURATION From 9c2a4d82e45ee61ba31eb05fa29886ee3777213c Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Fri, 27 Sep 2024 00:49:57 +0900 Subject: [PATCH 34/49] [docs] #272 update README.md --- README.md | 127 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 66 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index df11d669..a151be0b 100644 --- a/README.md +++ b/README.md @@ -6,59 +6,7 @@ ![DateRoad](https://github.com/user-attachments/assets/3e0c4678-25de-4e48-8939-581733a9ec5b) -### 🩷 프로젝트 설명 - - -### 📝 문제상황 정의 -![6](https://github.com/user-attachments/assets/c856fdaf-86f2-4f6d-bc20-3109eb072bdf) - -- 기존 앱은 코스가 아닌 장소 중심, 이로 인해 데이트 코스를 찾기 위해 여러 앱을 쓰며 피로감을 느낌 -- 광고가 아닌 직접 방문한 사람의 후기를 기반으로 데이트 코스를 짜고 싶어 하는 니즈 존재 - -### 🎯 핵심 타겟 -- 센스 있게 데이트 코스를 짜고 싶은 여자/남자친구 -- 색다른 데이트 코스를 찾기 위해 인스타그램 등을 탐색하는 커플 -- 네이버 블로그, 인스타그램을 통해 여러 번 데이트 장소의 후기를 얻는 커플 - -### 📍 주요 기능 -#### 1️⃣ 코스 등록하기 및 열람 - -|![Instagram_post_-_4](https://github.com/user-attachments/assets/6232fd24-f906-49a8-9ea0-16d296545931)|![Instagram_post_-_5](https://github.com/user-attachments/assets/0d648884-0d06-4043-9d31-03df52d434b9)| -|---|---| -- 내가 한 데이트 코스를 등록하고 포인트를 획득할 수 있습니다. -- 다른 커플들이 한 데이트를 포인트를 사용해 열람할 수 있습니다. -- 코스 상세 페이지에서 ‘내 일정에 추가하기’ 버튼을 눌러 내 데이트 일정으로 불러올 수 있습니다. - -#### 2️⃣ 일정 등록하기 및 열람 - -|![Instagram_post_-_10](https://github.com/user-attachments/assets/8e3a627f-e567-4ad5-ac11-63e560a09b67)|![Instagram_post_-_6](https://github.com/user-attachments/assets/e9accf21-1c6c-4fb5-9ad8-f834ab5750fa)| -|---|---| - -- 내 데이트 일정을 등록할 수 있습니다. -- 내 데이트 일정을 확인할 수 있습니다. -- 지난 데이트는 코스 등록하기로 연동해 등록하고 포인트를 받을 수 있습니다. -- 카카오톡 공유하기를 통해 데이트 일정을 연인에게 공유할 수 있습니다. - -## 💰 비즈니스 모델 - -> **포인트를 통한 수익 모델** -> -- 유저들은 데이트 코스를 등록하고 포인트를 획득해 제휴 매장에 할인받아 방문합니다. -- 구글 애드센스를 연결하여 광고를 시청하면 포인트를 획득할 수 있습니다. 데이트로드는 광고 수익을 얻을 수 있습니다. - -> **입점처를 통한 수익 모델** -> -- 입점 가게는 매장을 홍보하고 유저 방문으로 매출을 증가시키며, 광고주는 유저에게 광고를 노출하여 제품이나 서비스를 홍보합니다. 데이트로드는 이를 통해 수익을 창출하고, 모든 참여자가 상호 이익을 얻는 생태계를 구축합니다. - -

+--- ## 💟 *****Contributors***** @@ -67,19 +15,18 @@ | | | | | `포인트내역`
`열람한 코스`
`코스둘러보기`
`코스등록하기+일정등록하기`
`마이페이지`
`지난 데이트` | `스플래시`
`로그인/온보딩`
`프로필 등록하기`
`코스상세 + 관리자 아카이빙`
`포인트 제도 소개`
`프로필 수정하기` | `홈`
`데이트 일정`
`데이트 일정 상세`
`내가 등록한 코스`
`내가 열람한 코스`
`카카오톡 공유하기` - ---- ## 📷 *****ScreenShot***** -| | | | +| | | | |:-------------------------:|:-------------------------:|:-------------------------:| | `로그인/온보딩` | `프로필 등록하기` | `홈` | -| | | +| | | | `코스 둘러보기` | `데이트 일정` | `지난 데이트` | -| | | +| | | | `코스 등록하기` | `일정 등록하기` | `열람한 코스` | -| | | +| | | | `마이페이지` | `프로필 수정` | `포인트 내역` | - +| | | +| `데이트 일정 상세 - 무료 열람 기회` | `데이트 일정 상세 - 포인트 사용` | `데이트 일정 상세 - 내가 쓴 글` | ## 👩🏻‍💻 ***𝙏𝙚𝙘𝙝 𝙎𝙩𝙖𝙘𝙠*** @@ -178,4 +125,62 @@
[ABC의 Github Project가 궁금하다면? click ✔️](https://github.com/orgs/TeamDATEROAD/projects/1) -
\ No newline at end of file +
+ +--- + +## 💡 *****About Project***** + +### 🩷 프로젝트 설명 + + +### 📝 문제상황 정의 +![6](https://github.com/user-attachments/assets/c856fdaf-86f2-4f6d-bc20-3109eb072bdf) + +- 기존 앱은 코스가 아닌 장소 중심, 이로 인해 데이트 코스를 찾기 위해 여러 앱을 쓰며 피로감을 느낌 +- 광고가 아닌 직접 방문한 사람의 후기를 기반으로 데이트 코스를 짜고 싶어 하는 니즈 존재 + +### 🎯 핵심 타겟 +- 센스 있게 데이트 코스를 짜고 싶은 여자/남자친구 +- 색다른 데이트 코스를 찾기 위해 인스타그램 등을 탐색하는 커플 +- 네이버 블로그, 인스타그램을 통해 여러 번 데이트 장소의 후기를 얻는 커플 + +### 📍 주요 기능 +#### 1️⃣ 코스 등록하기 및 열람 + +|![Instagram_post_-_4](https://github.com/user-attachments/assets/6232fd24-f906-49a8-9ea0-16d296545931)|![Instagram_post_-_5](https://github.com/user-attachments/assets/0d648884-0d06-4043-9d31-03df52d434b9)| +|---|---| +- 내가 한 데이트 코스를 등록하고 포인트를 획득할 수 있습니다. +- 다른 커플들이 한 데이트를 포인트를 사용해 열람할 수 있습니다. +- 코스 상세 페이지에서 ‘내 일정에 추가하기’ 버튼을 눌러 내 데이트 일정으로 불러올 수 있습니다. + +#### 2️⃣ 일정 등록하기 및 열람 + +|![Instagram_post_-_10](https://github.com/user-attachments/assets/8e3a627f-e567-4ad5-ac11-63e560a09b67)|![Instagram_post_-_6](https://github.com/user-attachments/assets/e9accf21-1c6c-4fb5-9ad8-f834ab5750fa)| +|---|---| + +- 내 데이트 일정을 등록할 수 있습니다. +- 내 데이트 일정을 확인할 수 있습니다. +- 지난 데이트는 코스 등록하기로 연동해 등록하고 포인트를 받을 수 있습니다. +- 카카오톡 공유하기를 통해 데이트 일정을 연인에게 공유할 수 있습니다. + +## 💰 비즈니스 모델 + +> **포인트를 통한 수익 모델** +> +- 유저들은 데이트 코스를 등록하고 포인트를 획득해 제휴 매장에 할인받아 방문합니다. +- 구글 애드센스를 연결하여 광고를 시청하면 포인트를 획득할 수 있습니다. 데이트로드는 광고 수익을 얻을 수 있습니다. + +> **입점처를 통한 수익 모델** +> +- 입점 가게는 매장을 홍보하고 유저 방문으로 매출을 증가시키며, 광고주는 유저에게 광고를 노출하여 제품이나 서비스를 홍보합니다. 데이트로드는 이를 통해 수익을 창출하고, 모든 참여자가 상호 이익을 얻는 생태계를 구축합니다. + +

\ No newline at end of file From 276ffd356e92eca4e899dacff422e96171836e15 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Fri, 27 Sep 2024 18:23:22 +0900 Subject: [PATCH 35/49] [chore] #234 ktlintFormat --- .../java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt index 07e9df5d..cae9923b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt @@ -64,8 +64,8 @@ import org.sopt.dateroad.presentation.util.HomeAmplitude.NEW import org.sopt.dateroad.presentation.util.HomeAmplitude.USER_NAME import org.sopt.dateroad.presentation.util.HomeAmplitude.USER_POINT import org.sopt.dateroad.presentation.util.HomeAmplitude.VIEW_MAIN -import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils import org.sopt.dateroad.presentation.util.ViewPath.HOME +import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils import org.sopt.dateroad.presentation.util.view.LoadState import org.sopt.dateroad.ui.theme.DateRoadTheme From 49dbac91e80d6e8bbdc91c58dae6f608f69da491 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Sun, 29 Sep 2024 20:18:35 +0900 Subject: [PATCH 36/49] =?UTF-8?q?[chore]=20#263=20=EC=84=9C=EB=B2=84?= =?UTF-8?q?=ED=86=B5=EC=8B=A0=20=EC=84=B1=EA=B3=B5=EC=8B=9C=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/ui/coursedetail/CourseDetailScreen.kt | 1 - .../presentation/ui/coursedetail/CourseDetailViewModel.kt | 7 +++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt index 811231ba..8d98a487 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt @@ -122,7 +122,6 @@ fun CourseDetailRoute( true -> viewModel.deleteCourseLike(courseId = courseId) false -> viewModel.postCourseLike(courseId = courseId) } - AmplitudeUtils.trackEventWithProperty(eventName = CLICK_COURSE_LIKES, propertyName = COURSE_LIST_LIKE, propertyValue = uiState.courseDetail.isUserLiked) }, onDeleteButtonClicked = { viewModel.deleteCourse(courseId = courseId) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt index 973067c6..32a42242 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt @@ -10,7 +10,10 @@ import org.sopt.dateroad.domain.usecase.DeleteCourseUseCase import org.sopt.dateroad.domain.usecase.GetCourseDetailUseCase import org.sopt.dateroad.domain.usecase.PostCourseLikeUseCase import org.sopt.dateroad.domain.usecase.PostUsePointUseCase +import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_LIKES +import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_LIKE import org.sopt.dateroad.presentation.util.Point +import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils import org.sopt.dateroad.presentation.util.base.BaseViewModel import org.sopt.dateroad.presentation.util.view.LoadState @@ -80,6 +83,8 @@ class CourseDetailViewModel @Inject constructor( ) postCourseLikeUseCase(courseId = courseId).onSuccess { setEvent(CourseDetailContract.CourseDetailEvent.PostCourseLike(courseDetail = currentState.courseDetail.copy(isUserLiked = true, like = currentState.courseDetail.like + 1))) + AmplitudeUtils.trackEventWithProperty(eventName = CLICK_COURSE_LIKES, propertyName = COURSE_LIST_LIKE, propertyValue = currentState.courseDetail.isUserLiked) + }.onFailure { setEvent(CourseDetailContract.CourseDetailEvent.PostCourseLike(courseDetail = currentState.courseDetail)) } @@ -91,6 +96,8 @@ class CourseDetailViewModel @Inject constructor( setEvent(CourseDetailContract.CourseDetailEvent.PostUsePoint(usePointLoadState = LoadState.Loading, isAccess = currentState.courseDetail.isAccess)) postUsePointUseCase(courseId = courseId, usePoint = UsePoint(Point.POINT, Point.POINT_USED, Point.POINT_USED_DESCRIPTION)).onSuccess { setEvent(CourseDetailContract.CourseDetailEvent.PostUsePoint(usePointLoadState = LoadState.Success, isAccess = true)) + AmplitudeUtils.trackEventWithProperty(eventName = CLICK_COURSE_LIKES, propertyName = COURSE_LIST_LIKE, propertyValue = currentState.courseDetail.isUserLiked) + }.onFailure { setEvent(CourseDetailContract.CourseDetailEvent.PostUsePoint(usePointLoadState = LoadState.Error, isAccess = currentState.courseDetail.isAccess)) } From 084f43652c85d5901c7b17f1087555a0c8308cac Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Sun, 29 Sep 2024 20:23:35 +0900 Subject: [PATCH 37/49] =?UTF-8?q?[chore]=20#263=20uiState.courseDetail=20?= =?UTF-8?q?=EB=B0=98=EB=B3=B5=20->=20with=20=EB=AC=B8=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ui/coursedetail/CourseDetailScreen.kt | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt index 8d98a487..5e2f10f3 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt @@ -85,14 +85,17 @@ fun CourseDetailRoute( LaunchedEffect(uiState.loadState, lifecycleOwner) { if (uiState.loadState == LoadState.Success) { - AmplitudeUtils.trackEventWithProperties( - eventName = VIEW_COURSE_DETAILS, - mapOf( - COURSE_LIST_ID to uiState.courseDetail.courseId, - COURSE_LIST_TITLE to uiState.courseDetail.title + with(uiState.courseDetail) { + AmplitudeUtils.trackEventWithProperties( + eventName = VIEW_COURSE_DETAILS, + mapOf( + COURSE_LIST_ID to courseId, + COURSE_LIST_TITLE to title + ) ) - ) + } } + } when (uiState.loadState) { From 517426c82752c709e0486826790331b0a52218c0 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Sun, 29 Sep 2024 20:27:46 +0900 Subject: [PATCH 38/49] =?UTF-8?q?[chore]=20#263=20named=20parameter=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt index 5e2f10f3..291ae2de 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt @@ -138,7 +138,7 @@ fun CourseDetailRoute( viewModel.setSideEffect(CourseDetailContract.CourseDetailSideEffect.PopBackStack) AmplitudeUtils.trackEventWithProperties( eventName = CLICK_COURSE_BACK, - mapOf( + properties = mapOf( CLICK_COURSE_PURCHASE to uiState.hasDialogOpened, PURCHASE_SUCCESS to uiState.courseDetail.isAccess ) From 6e462ea911e25082567a9f96b8fbe9ab9e654e96 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Sun, 29 Sep 2024 20:35:36 +0900 Subject: [PATCH 39/49] =?UTF-8?q?[chore]=20#263=20state=20=EC=9D=B4?= =?UTF-8?q?=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/ui/coursedetail/CourseDetailContract.kt | 2 +- .../presentation/ui/coursedetail/CourseDetailScreen.kt | 5 +---- .../presentation/ui/coursedetail/CourseDetailViewModel.kt | 4 +--- 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailContract.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailContract.kt index 94235726..124b9f0b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailContract.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailContract.kt @@ -24,7 +24,7 @@ class CourseDetailContract { val usePointLoadState: LoadState = LoadState.Idle, val deleteLoadState: LoadState = LoadState.Idle, var isWebViewOpened: Boolean = false, - var hasDialogOpened: Boolean = false + var hasPointReadDialogOpened: Boolean = false ) : UiState sealed interface CourseDetailSideEffect : UiSideEffect { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt index 291ae2de..0a124592 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt @@ -46,10 +46,8 @@ import org.sopt.dateroad.presentation.ui.coursedetail.component.CourseDetailBott import org.sopt.dateroad.presentation.ui.coursedetail.component.CourseDetailUnopenedDetail import org.sopt.dateroad.presentation.ui.coursedetail.component.courseDetailOpenedDetail import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_BACK -import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_LIKES import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_PURCHASE import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_ID -import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_LIKE import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_TITLE import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.PURCHASE_SUCCESS import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.VIEW_COURSE_DETAILS @@ -95,7 +93,6 @@ fun CourseDetailRoute( ) } } - } when (uiState.loadState) { @@ -139,7 +136,7 @@ fun CourseDetailRoute( AmplitudeUtils.trackEventWithProperties( eventName = CLICK_COURSE_BACK, properties = mapOf( - CLICK_COURSE_PURCHASE to uiState.hasDialogOpened, + CLICK_COURSE_PURCHASE to uiState.hasPointReadDialogOpened, PURCHASE_SUCCESS to uiState.courseDetail.isAccess ) ) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt index 32a42242..9e574f68 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt @@ -37,7 +37,7 @@ class CourseDetailViewModel @Inject constructor( is CourseDetailContract.CourseDetailEvent.DismissDialogDeleteCourse -> setState { copy(isDeleteCourseDialogOpen = false) } is CourseDetailContract.CourseDetailEvent.OnDialogReportCourse -> setState { copy(isReportCourseDialogOpen = true) } is CourseDetailContract.CourseDetailEvent.DismissDialogReportCourse -> setState { copy(isReportCourseDialogOpen = false) } - is CourseDetailContract.CourseDetailEvent.OnDialogLookedByPoint -> setState { copy(isPointReadDialogOpen = true, hasDialogOpened = true) } + is CourseDetailContract.CourseDetailEvent.OnDialogLookedByPoint -> setState { copy(isPointReadDialogOpen = true, hasPointReadDialogOpened = true) } is CourseDetailContract.CourseDetailEvent.DismissDialogLookedByPoint -> setState { copy(isPointReadDialogOpen = false) } is CourseDetailContract.CourseDetailEvent.OnLikeButtonClicked -> setState { copy(isLikedButtonChecked = !isLikedButtonChecked) } is CourseDetailContract.CourseDetailEvent.OnDeleteCourseBottomSheet -> setState { copy(isDeleteCourseBottomSheetOpen = true) } @@ -84,7 +84,6 @@ class CourseDetailViewModel @Inject constructor( postCourseLikeUseCase(courseId = courseId).onSuccess { setEvent(CourseDetailContract.CourseDetailEvent.PostCourseLike(courseDetail = currentState.courseDetail.copy(isUserLiked = true, like = currentState.courseDetail.like + 1))) AmplitudeUtils.trackEventWithProperty(eventName = CLICK_COURSE_LIKES, propertyName = COURSE_LIST_LIKE, propertyValue = currentState.courseDetail.isUserLiked) - }.onFailure { setEvent(CourseDetailContract.CourseDetailEvent.PostCourseLike(courseDetail = currentState.courseDetail)) } @@ -97,7 +96,6 @@ class CourseDetailViewModel @Inject constructor( postUsePointUseCase(courseId = courseId, usePoint = UsePoint(Point.POINT, Point.POINT_USED, Point.POINT_USED_DESCRIPTION)).onSuccess { setEvent(CourseDetailContract.CourseDetailEvent.PostUsePoint(usePointLoadState = LoadState.Success, isAccess = true)) AmplitudeUtils.trackEventWithProperty(eventName = CLICK_COURSE_LIKES, propertyName = COURSE_LIST_LIKE, propertyValue = currentState.courseDetail.isUserLiked) - }.onFailure { setEvent(CourseDetailContract.CourseDetailEvent.PostUsePoint(usePointLoadState = LoadState.Error, isAccess = currentState.courseDetail.isAccess)) } From a5b8a4cb62b0d89c4e7ef846cd41e0457075e8a2 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Mon, 30 Sep 2024 14:43:28 +0900 Subject: [PATCH 40/49] =?UTF-8?q?[chore]=20#263=20=EC=A2=8B=EC=95=84?= =?UTF-8?q?=EC=9A=94,=20=EC=A2=8B=EC=95=84=EC=9A=94=20=ED=95=B4=EC=A0=9C?= =?UTF-8?q?=20=EC=95=B0=ED=94=8C=20=EB=A1=9C=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/ui/coursedetail/CourseDetailViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt index 9e574f68..40a93b92 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt @@ -59,6 +59,7 @@ class CourseDetailViewModel @Inject constructor( setEvent(CourseDetailContract.CourseDetailEvent.DeleteCourseLike(courseDetail = currentState.courseDetail)) deleteCourseLikeUseCase(courseId = courseId).onSuccess { setEvent(CourseDetailContract.CourseDetailEvent.DeleteCourseLike(courseDetail = currentState.courseDetail.copy(isUserLiked = false, like = currentState.courseDetail.like - 1))) + AmplitudeUtils.trackEventWithProperty(eventName = CLICK_COURSE_LIKES, propertyName = COURSE_LIST_LIKE, propertyValue = currentState.courseDetail.isUserLiked) }.onFailure { setEvent(CourseDetailContract.CourseDetailEvent.DeleteCourseLike(courseDetail = currentState.courseDetail)) } @@ -95,7 +96,6 @@ class CourseDetailViewModel @Inject constructor( setEvent(CourseDetailContract.CourseDetailEvent.PostUsePoint(usePointLoadState = LoadState.Loading, isAccess = currentState.courseDetail.isAccess)) postUsePointUseCase(courseId = courseId, usePoint = UsePoint(Point.POINT, Point.POINT_USED, Point.POINT_USED_DESCRIPTION)).onSuccess { setEvent(CourseDetailContract.CourseDetailEvent.PostUsePoint(usePointLoadState = LoadState.Success, isAccess = true)) - AmplitudeUtils.trackEventWithProperty(eventName = CLICK_COURSE_LIKES, propertyName = COURSE_LIST_LIKE, propertyValue = currentState.courseDetail.isUserLiked) }.onFailure { setEvent(CourseDetailContract.CourseDetailEvent.PostUsePoint(usePointLoadState = LoadState.Error, isAccess = currentState.courseDetail.isAccess)) } From b212fff63f18e51b8e37b8c172ca3282d45bad8e Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Mon, 30 Sep 2024 15:23:58 +0900 Subject: [PATCH 41/49] [chore] #263 ktlintFormat --- .../presentation/ui/coursedetail/CourseDetailViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt index ce0861c5..e672944c 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt @@ -13,10 +13,10 @@ import org.sopt.dateroad.domain.usecase.PostUsePointUseCase import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_LIKES import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_LIKE import org.sopt.dateroad.presentation.util.Point -import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_FREE_REMAINED import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_POINT import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_PURCHASE_COUNT +import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils import org.sopt.dateroad.presentation.util.base.BaseViewModel import org.sopt.dateroad.presentation.util.view.LoadState From 9598ba4834e50d823e1846f2f8371dab36b5d597 Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Mon, 30 Sep 2024 16:27:19 +0900 Subject: [PATCH 42/49] =?UTF-8?q?[chore]=20#256=20string=20=EC=B6=94?= =?UTF-8?q?=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/ui/navigator/component/MainNavHost.kt | 2 +- .../presentation/ui/timelinedetail/TimelineDetailScreen.kt | 7 ++++--- .../timelinedetail/navigation/TimelineDetailNavigation.kt | 4 ---- .../org/sopt/dateroad/presentation/util/Constraints.kt | 2 ++ 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt index 1f0d17ad..ab92b950 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt @@ -154,7 +154,7 @@ fun MainNavHost( timelineDetailGraph( popBackStack = navigator::popBackStackIfNotHome, - viewPath= previousView + viewPath = previousView ) } } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt index 6815f5e9..fa37996a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt @@ -54,6 +54,7 @@ import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadBasicTopBar import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView import org.sopt.dateroad.presentation.ui.component.view.DateRoadIdleView import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.dateroad.presentation.util.TimelineAmplitude.DURATION import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.CLICK_CLOSE_KAKAO import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.CLICK_KAKAO_SHARE import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.CLICK_OPEN_KAKAO @@ -120,7 +121,7 @@ fun TimelineDetailRoute( mapOf( DATE_COURSE_NUM to uiState.timelineDetail.places.size, DATE_TOTAL_DURATION to uiState.timelineDetail.places.sumOf { place -> - place.duration.replace("시간", "").trim().toIntOrNull() ?: 0 + durationToInt(place.duration) } ) ) @@ -335,7 +336,7 @@ fun TimelineDetailScreen( mapOf( DATE_COURSE_NUM to uiState.timelineDetail.places.size, DATE_TOTAL_DURATION to uiState.timelineDetail.places.sumOf { place -> - place.duration.replace("시간", "").trim().toIntOrNull() ?: 0 + durationToInt(place.duration) } ) ) @@ -412,5 +413,5 @@ fun TimelineDetailScreenPreview() { } fun durationToInt(duration: String): Int { - return duration.replace("시간", "").trim().toIntOrNull() ?: 0 + return duration.replace(DURATION, "").trim().toIntOrNull() ?: 0 } diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt index 21dd3f23..117af5b8 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt @@ -8,8 +8,6 @@ import androidx.navigation.compose.composable import androidx.navigation.navArgument import org.sopt.dateroad.presentation.type.TimelineType import org.sopt.dateroad.presentation.ui.timelinedetail.TimelineDetailRoute -import org.sopt.dateroad.presentation.util.ViewPath.HOME -import org.sopt.dateroad.presentation.util.ViewPath.TIMELINE fun NavController.navigateToTimelineDetail(timelineType: TimelineType, timelineId: Int, navOptions: NavOptions? = null) { navigate(TimelineDetailRoutes.route(timelineType, timelineId), navOptions) @@ -29,8 +27,6 @@ fun NavGraphBuilder.timelineDetailGraph( val timelineType = TimelineType.valueOf(backStackEntry.arguments?.getString(TimelineDetailRoutes.TIMELINE_TYPE) ?: TimelineType.PINK.name) val timelineId = backStackEntry.arguments?.getInt(TimelineDetailRoutes.TIMELINE_ID) ?: 1 - - TimelineDetailRoute( popBackStack = popBackStack, timelineId = timelineId, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index c7614534..73293cc3 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -49,6 +49,7 @@ object Token { object Time { const val TIME = " 시간" } + object LoadingView { const val LOTTIE = "loading.json" const val CLIPMIN = 0 @@ -113,6 +114,7 @@ object TimelineAmplitude { const val COUNT_DATE_SCHEDULE = "count_date_schedule" const val CLICK_ADD_SCHEDULE = "click_add_schedule" const val DATE_SCHEDULE_NUM = "date_schedule_num" + const val DURATION = "시간" } object UserPropertyAmplitude { From cd3874fdad6bd08da7751b6e5877fc39ddc52c94 Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Sun, 13 Oct 2024 20:01:34 +0900 Subject: [PATCH 43/49] [chore] #272 conflict solve --- .../dateroad/presentation/util/Constraints.kt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt index 04430597..0ab8b7da 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt @@ -4,6 +4,17 @@ object CourseDetail { const val POINT_LACK = 50 } +object CourseDetailAmplitude { + const val VIEW_COURSE_DETAILS = "view_course_details" + const val CLICK_COURSE_BACK = "click_course_back" + const val CLICK_COURSE_LIKES = "click_course_likes" + const val COURSE_LIST_ID = "course_list_id" + const val COURSE_LIST_TITLE = "course_list_title" + const val CLICK_COURSE_PURCHASE = "click_course_purchase" + const val PURCHASE_SUCCESS = "purchase_success" + const val COURSE_LIST_LIKE = "course_list_like" +} + object DatePicker { const val DATE_PATTERN = "yyyy.MM.dd" const val YEAR_START = 2000 @@ -79,6 +90,18 @@ object Home { const val ADVERTISEMENT_DELAY = 4000L } +object HomeAmplitude { + const val VIEW_MAIN = "view_main" + const val USER_NAME = "user_name" + const val USER_POINT = "user_point" + const val COURSE_LIST_ID = "course_list_id" + const val COURSE_LIST_TITLE = "course_list_title" + const val COURSE_LIST_LOCATION = "course_list_location" + const val COURSE_LIST_COST = "course_list_cost" + const val HOT = "Hot: " + const val NEW = " / New: " +} + object LoadingView { const val LOTTIE = "loading.json" const val CLIP_MIN = 0 @@ -131,6 +154,7 @@ object TimelineAmplitude { const val COUNT_DATE_SCHEDULE = "count_date_schedule" const val CLICK_ADD_SCHEDULE = "click_add_schedule" const val DATE_SCHEDULE_NUM = "date_schedule_num" + const val DURATION = "시간" } object TimelineDetailAmplitude { From 89dfb4cf03bdadd6dc540d4224829d3a48766ff3 Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Tue, 15 Oct 2024 09:41:15 +0900 Subject: [PATCH 44/49] =?UTF-8?q?[chore]=20#278=20=ED=8C=A8=ED=82=A4?= =?UTF-8?q?=EC=A7=80=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 4 +- .../ExampleInstrumentedTest.kt | 2 +- .../AdvertisementRemoteDataSource.kt | 10 -- .../datasource/ProfileRemoteDataSource.kt | 7 - .../datasource/TimelineRemoteDataSource.kt | 19 --- .../datasource/UserPointRemoteDataSource.kt | 14 -- .../ProfileRemoteDataSourceImpl.kt | 14 -- .../service/AdvertisementService.kt | 20 --- .../dataremote/service/MyCourseService.kt | 17 --- .../data/dataremote/service/ProfileService.kt | 12 -- .../dataremote/service/TimelineService.kt | 44 ------ .../dataremote/service/UserPointService.kt | 32 ----- .../data/mapper/toEntity/RegionMapper.kt | 16 --- .../data/mapper/todata/PlaceMapper.kt | 11 -- .../data/mapper/todata/ProfileMapper.kt | 10 -- .../data/mapper/todata/SignInMapper.kt | 8 -- .../dateroad/data/mapper/todata/TagMapper.kt | 5 - .../dateroad/data/mapper/todata/TagsMapper.kt | 7 - .../data/mapper/todata/UsePointMapper.kt | 10 -- .../mapper/todata/UserSignUpInfoMapper.kt | 9 -- .../ResponseAdvertisementDtoMapper.kt | 9 -- .../ResponseAdvertisementsDtoMapper.kt | 6 - .../mapper/todomain/ResponseAuthDtoMapper.kt | 9 -- .../todomain/ResponseCourseDtoMapper.kt | 17 --- .../todomain/ResponseCoursesDtoMapper.kt | 6 - .../todomain/ResponseEnrollCourseDtoMapper.kt | 9 -- .../ResponseEnrollTimelineDtoMapper.kt | 8 -- .../ResponseNearestTimelineDtoMapper.kt | 15 -- .../mapper/todomain/ResponsePlaceDtoMapper.kt | 10 -- .../todomain/ResponsePointHistoryDtoMapper.kt | 9 -- .../todomain/ResponseProfileDtoMapper.kt | 12 -- .../mapper/todomain/ResponseTagDtoMapper.kt | 6 - .../todomain/ResponseUserPointDtoMapper.kt | 11 -- .../repositoryimpl/ProfileRepositoryImpl.kt | 16 --- .../domain/repository/ProfileRepository.kt | 7 - .../domain/repository/UserPointRepository.kt | 14 -- .../ui/component/bottomsheet/model/Picker.kt | 9 -- .../presentation/util/base/UiEvent.kt | 3 - .../presentation/util/base/UiSideEffect.kt | 3 - .../presentation/util/base/UiState.kt | 3 - .../{dateroad => teamdateroad}/DateRoadApp.kt | 6 +- .../datasource/UserInfoLocalDataSource.kt | 2 +- .../UserInfoLocalDataSourceImpl.kt | 6 +- .../AdvertisementRemoteDataSource.kt | 10 ++ .../datasource/AuthRemoteDataSource.kt | 8 +- .../datasource/CourseRemoteDataSource.kt | 8 +- .../datasource/MyCourseRemoteDataSource.kt | 4 +- .../datasource/ProfileRemoteDataSource.kt | 7 + .../datasource/TimelineRemoteDataSource.kt | 19 +++ .../datasource/UserPointRemoteDataSource.kt | 14 ++ .../AdvertisementRemoteDataSourceImpl.kt | 10 +- .../AuthRemoteDataSourceImpl.kt | 12 +- .../CourseRemoteDataSourceImpl.kt | 12 +- .../MyCourseRemoteDataSourceImpl.kt | 8 +- .../ProfileRemoteDataSourceImpl.kt | 14 ++ .../TimelineRemoteDataSourceImpl.kt | 16 +-- .../UserPointRemoteDataSourceImpl.kt | 14 +- .../dataremote/interceptor/AuthInterceptor.kt | 16 +-- .../model/request/RequestCourseDto.kt | 2 +- .../model/request/RequestPlaceDto.kt | 2 +- .../model/request/RequestSignInDto.kt | 2 +- .../dataremote/model/request/RequestTagDto.kt | 2 +- .../model/request/RequestTagsDto.kt | 2 +- .../model/request/RequestTimelineDto.kt | 2 +- .../model/request/RequestUsePointDto.kt | 2 +- .../model/request/RequestUserSignUpInfoDto.kt | 2 +- .../model/request/RequestWithdrawDto.kt | 2 +- .../ResponseAdvertisementDetailDto.kt | 2 +- .../response/ResponseAdvertisementDto.kt | 2 +- .../response/ResponseAdvertisementsDto.kt | 2 +- .../model/response/ResponseAuthDto.kt | 2 +- .../model/response/ResponseCourseDetailDto.kt | 2 +- .../model/response/ResponseCourseDto.kt | 2 +- .../model/response/ResponseCoursesDto.kt | 2 +- .../model/response/ResponseEnrollCourseDto.kt | 2 +- .../response/ResponseEnrollTimelineDto.kt | 2 +- .../model/response/ResponseImageDto.kt | 2 +- .../response/ResponseNearestTimelineDto.kt | 2 +- .../model/response/ResponsePlaceDto.kt | 2 +- .../model/response/ResponsePointDto.kt | 2 +- .../model/response/ResponsePointHistoryDto.kt | 2 +- .../model/response/ResponsePointsDto.kt | 2 +- .../model/response/ResponseProfileDto.kt | 2 +- .../model/response/ResponseRefreshTokenDto.kt | 2 +- .../model/response/ResponseTagDto.kt | 2 +- .../response/ResponseTimelineDetailDto.kt | 2 +- .../model/response/ResponseTimelineDto.kt | 2 +- .../model/response/ResponseTimelinesDto.kt | 2 +- .../model/response/ResponseUserPointDto.kt | 2 +- .../model/response/ResponseUserUsePointDto.kt | 2 +- .../service/AdvertisementService.kt | 20 +++ .../data/dataremote/service/AuthService.kt | 36 ++--- .../data/dataremote/service/CourseService.kt | 34 ++--- .../dataremote/service/MyCourseService.kt | 17 +++ .../data/dataremote/service/ProfileService.kt | 12 ++ .../dataremote/service/TimelineService.kt | 44 ++++++ .../dataremote/service/UserPointService.kt | 32 +++++ .../data/dataremote/util/Constraints.kt | 2 +- .../dataremote/util/ContentUriRequestBody.kt | 2 +- .../data/mapper/toEntity/AreaMapper.kt | 14 +- .../data/mapper/toEntity/CostMapper.kt | 6 +- .../mapper/toEntity/CourseDetailMapper.kt | 6 +- .../data/mapper/toEntity/DurationMapper.kt | 4 +- .../data/mapper/toEntity/LikeMapper.kt | 4 +- .../data/mapper/toEntity/PointMapper.kt | 4 +- .../data/mapper/toEntity/RegionMapper.kt | 16 +++ .../mapper/toEntity/TimelineDetailMapper.kt | 6 +- .../data/mapper/toEntity/TimelineMapper.kt | 8 +- .../data/mapper/todata/EnrollMapper.kt | 10 +- .../data/mapper/todata/PlaceMapper.kt | 11 ++ .../data/mapper/todata/ProfileMapper.kt | 10 ++ .../data/mapper/todata/SignInMapper.kt | 8 ++ .../data/mapper/todata/TagMapper.kt | 5 + .../data/mapper/todata/TagsMapper.kt | 7 + .../data/mapper/todata/UsePointMapper.kt | 10 ++ .../mapper/todata/UserSignUpInfoMapper.kt | 9 ++ .../ResponseAdvertisementDetailDtoMapper.kt | 10 +- .../ResponseAdvertisementDtoMapper.kt | 9 ++ .../ResponseAdvertisementsDtoMapper.kt | 6 + .../mapper/todomain/ResponseAuthDtoMapper.kt | 9 ++ .../todomain/ResponseCourseDetailDtoMapper.kt | 16 +-- .../todomain/ResponseCourseDtoMapper.kt | 17 +++ .../todomain/ResponseCoursesDtoMapper.kt | 6 + .../todomain/ResponseEnrollCourseDtoMapper.kt | 9 ++ .../ResponseEnrollTimelineDtoMapper.kt | 8 ++ .../ResponseNearestTimelineDtoMapper.kt | 15 ++ .../mapper/todomain/ResponsePlaceDtoMapper.kt | 10 ++ .../mapper/todomain/ResponsePointDtoMapper.kt | 10 +- .../todomain/ResponsePointHistoryDtoMapper.kt | 9 ++ .../todomain/ResponsePointsDtoMapper.kt | 6 +- .../todomain/ResponseProfileDtoMapper.kt | 12 ++ .../mapper/todomain/ResponseTagDtoMapper.kt | 6 + .../ResponseTimelineDetailDtoMapper.kt | 12 +- .../todomain/ResponseTimelineDtoMapper.kt | 12 +- .../todomain/ResponseUserPointDtoMapper.kt | 11 ++ .../todomain/ResponseUserUsePointDtoMapper.kt | 6 +- .../AdvertisementRepositoryImpl.kt | 12 +- .../data/repositoryimpl/AuthRepositoryImpl.kt | 28 ++-- .../repositoryimpl/CourseRepositoryImpl.kt | 34 ++--- .../repositoryimpl/MyCourseRepositoryImpl.kt | 10 +- .../repositoryimpl/ProfileRepositoryImpl.kt | 16 +++ .../repositoryimpl/TimelineRepositoryImpl.kt | 26 ++-- .../repositoryimpl/UserInfoRepositoryImpl.kt | 6 +- .../repositoryimpl/UserPointRepositoryImpl.kt | 18 +-- .../di/ContentResolverModule.kt | 2 +- .../di/DataSourceModule.kt | 34 ++--- .../di/NetworkModule.kt | 12 +- .../di/RepositoryModule.kt | 34 ++--- .../di/ServiceModule.kt | 18 +-- .../di/qualifier/Qualifier.kt | 2 +- .../domain/model/Advertisement.kt | 2 +- .../domain/model/AdvertisementDetail.kt | 2 +- .../domain/model/Auth.kt | 2 +- .../domain/model/Course.kt | 2 +- .../domain/model/CourseDetail.kt | 2 +- .../domain/model/EditProfile.kt | 2 +- .../domain/model/Enroll.kt | 4 +- .../domain/model/EnrollCourseResult.kt | 2 +- .../domain/model/EnrollTimelineResult.kt | 2 +- .../domain/model/NearestTimeline.kt | 2 +- .../domain/model/Place.kt | 2 +- .../domain/model/Point.kt | 2 +- .../domain/model/PointHistory.kt | 2 +- .../domain/model/PointUseResult.kt | 2 +- .../domain/model/Profile.kt | 2 +- .../domain/model/SignIn.kt | 2 +- .../domain/model/SignUp.kt | 2 +- .../domain/model/Timeline.kt | 4 +- .../domain/model/TimelineDetail.kt | 2 +- .../domain/model/UsePoint.kt | 2 +- .../domain/model/UserPoint.kt | 2 +- .../domain/model/UserSignUpInfo.kt | 2 +- .../repository/AdvertisementRepository.kt | 6 +- .../domain/repository/AuthRepository.kt | 10 +- .../domain/repository/CourseRepository.kt | 18 +-- .../domain/repository/MyCourseRepository.kt | 4 +- .../domain/repository/ProfileRepository.kt | 7 + .../domain/repository/TimelineRepository.kt | 14 +- .../domain/repository/UserInfoRepository.kt | 2 +- .../domain/repository/UserPointRepository.kt | 14 ++ .../domain/type/AdvertisementTagType.kt | 4 +- .../domain/type/GyeonggiAreaType.kt | 4 +- .../domain/type/IncheonAreaType.kt | 4 +- .../domain/type/MoneyTagType.kt | 4 +- .../domain/type/MonthType.kt | 4 +- .../domain/type/RegionType.kt | 4 +- .../domain/type/SeoulAreaType.kt | 4 +- .../domain/type/SortByType.kt | 2 +- .../domain/type/TimelineTimeType.kt | 2 +- .../domain/usecase/ClearUserInfoUseCase.kt | 4 +- .../domain/usecase/DeleteCourseLikeUseCase.kt | 4 +- .../domain/usecase/DeleteCourseUseCase.kt | 4 +- .../domain/usecase/DeleteSignOutUseCase.kt | 4 +- .../domain/usecase/DeleteTimelineUseCase.kt | 4 +- .../domain/usecase/DeleteWithdrawUseCase.kt | 4 +- .../domain/usecase/GetAccessTokenUseCase.kt | 4 +- .../usecase/GetAdvertisementDetailUseCase.kt | 6 +- .../usecase/GetAdvertisementsUseCase.kt | 6 +- .../domain/usecase/GetCourseDetailUseCase.kt | 4 +- .../domain/usecase/GetFilteredCourses.kt | 10 +- .../usecase/GetMyCourseEnrollUseCase.kt | 6 +- .../domain/usecase/GetMyCourseReadUseCase.kt | 6 +- .../usecase/GetNearestTimelineUseCase.kt | 6 +- .../domain/usecase/GetNicknameCheckUseCase.kt | 4 +- .../domain/usecase/GetNicknameUseCase.kt | 4 +- .../domain/usecase/GetPointHistoryUseCase.kt | 6 +- .../domain/usecase/GetRefreshTokenUseCase.kt | 4 +- .../domain/usecase/GetSortedCoursesUseCase.kt | 8 +- .../usecase/GetTimelineDetailUseCase.kt | 6 +- .../domain/usecase/GetTimelinesUseCase.kt | 8 +- .../domain/usecase/GetUserPointUseCase.kt | 6 +- .../domain/usecase/GetUserUseCase.kt | 6 +- .../domain/usecase/PatchEditProfileUseCase.kt | 6 +- .../domain/usecase/PostCourseLikeUseCase.kt | 4 +- .../domain/usecase/PostCourseUseCase.kt | 8 +- .../domain/usecase/PostSignInUseCase.kt | 8 +- .../domain/usecase/PostSignUpUseCase.kt | 8 +- .../domain/usecase/PostTimelineUseCase.kt | 8 +- .../domain/usecase/PostUsePointUseCase.kt | 8 +- .../domain/usecase/SetAccessTokenUseCase.kt | 4 +- .../domain/usecase/SetNicknameUseCase.kt | 4 +- .../domain/usecase/SetRefreshTokenUseCase.kt | 4 +- .../domain/util/Constraints.kt | 2 +- .../presentation/model/RouteModel.kt | 2 +- .../presentation/type/ChipType.kt | 14 +- .../type/CourseDetailUnopenedDetailType.kt | 4 +- .../presentation/type/DateChipGroupType.kt | 6 +- .../type/DateRoadRegionBottomSheetType.kt | 2 +- .../presentation/type/DateTagType.kt | 4 +- .../presentation/type/EmptyViewType.kt | 4 +- .../presentation/type/EnrollScreenType.kt | 4 +- .../presentation/type/EnrollType.kt | 4 +- .../type/MainNavigationBarItemType.kt | 8 +- .../presentation/type/MyCourseType.kt | 4 +- .../presentation/type/MyPageMenuType.kt | 4 +- .../presentation/type/MyPagePointInfoType.kt | 4 +- .../presentation/type/OnboardingType.kt | 4 +- .../presentation/type/OneButtonDialogType.kt | 4 +- .../OneButtonDialogWithDescriptionType.kt | 4 +- .../presentation/type/PlaceCardType.kt | 4 +- .../presentation/type/PointHistoryTabType.kt | 8 +- .../presentation/type/PointSystemType.kt | 4 +- .../presentation/type/ProfileType.kt | 4 +- .../presentation/type/TagType.kt | 6 +- .../presentation/type/TimelineType.kt | 4 +- .../presentation/type/TwoButtonDialogType.kt | 4 +- .../TwoButtonDialogWithDescriptionType.kt | 4 +- .../ui/advertisement/AdvertisementContract.kt | 12 +- .../ui/advertisement/AdvertisementScreen.kt | 18 +-- .../advertisement/AdvertisementViewModel.kt | 8 +- .../component/AdvertisementDetail.kt | 8 +- .../navigation/AdvertisementNavigation.kt | 4 +- .../bottomsheet/DateRoadBasicBottomSheet.kt | 8 +- .../bottomsheet/DateRoadBottomSheet.kt | 9 +- .../bottomsheet/DateRoadPickerBottomSheet.kt | 8 +- .../bottomsheet/DateRoadRegionBottomSheet.kt | 22 +-- .../ui/component/bottomsheet/model/Picker.kt | 9 ++ .../ui/component/button/DateRoadAreaButton.kt | 8 +- .../component/button/DateRoadBasicButton.kt | 6 +- .../ui/component/button/DateRoadButton.kt | 4 +- .../component/button/DateRoadFilledButton.kt | 6 +- .../component/button/DateRoadImageButton.kt | 8 +- .../button/DateRoadKakaoLoginButton.kt | 8 +- .../button/DateRoadOutlinedButton.kt | 6 +- .../ui/component/button/DateRoadTextButton.kt | 6 +- .../ui/component/card/DateRoadCourseCard.kt | 14 +- .../ui/component/card/DateRoadPlaceCard.kt | 14 +- .../ui/component/chip/DateRoadChip.kt | 6 +- .../ui/component/chip/DateRoadImageChip.kt | 6 +- .../ui/component/chip/DateRoadTextChip.kt | 4 +- .../chipgroup/DateRoadDateChipGroup.kt | 14 +- .../ui/component/dialog/DateRoadDialog.kt | 10 +- .../dialog/DateRoadOneButtonDialog.kt | 8 +- .../DateRoadOneButtonDialogWithDescription.kt | 8 +- .../dialog/DateRoadTwoButtonDialog.kt | 8 +- .../DateRoadTwoButtonDialogWithDescription.kt | 8 +- .../component/dotsindicator/DotsIndicator.kt | 4 +- .../numberpicker/DateRoadNumberPicker.kt | 10 +- .../numberpicker/state/PickerState.kt | 2 +- .../ui/component/pager/DateRoadImagePager.kt | 10 +- .../partialcolortext/PartialColorText.kt | 2 +- .../ui/component/tabbar/DateRoadTabBar.kt | 8 +- .../ui/component/tag/DateRoadImageTag.kt | 10 +- .../ui/component/tag/DateRoadPointTag.kt | 10 +- .../ui/component/tag/DateRoadTag.kt | 4 +- .../ui/component/tag/DateRoadTextTag.kt | 6 +- .../textfield/DateRoadBasicTextField.kt | 10 +- .../component/textfield/DateRoadTextArea.kt | 8 +- .../textfield/DateRoadTextFieldWithButton.kt | 12 +- .../model/TextFieldValidateResult.kt | 2 +- .../component/topbar/DateRoadBasicTopBar.kt | 10 +- .../topbar/DateRoadLeftTitleTopBar.kt | 6 +- .../topbar/DateRoadScrollResponsiveTopBar.kt | 8 +- .../ui/component/view/DataRoadIdeView.kt | 4 +- .../ui/component/view/DateRoadEmptyView.kt | 8 +- .../ui/component/view/DateRoadErrorView.kt | 8 +- .../ui/component/view/DateRoadLoadingView.kt | 10 +- .../ui/component/view/DateRoadWebView.kt | 2 +- .../ui/coursedetail/CourseDetailContract.kt | 14 +- .../ui/coursedetail/CourseDetailScreen.kt | 66 ++++----- .../ui/coursedetail/CourseDetailViewModel.kt | 32 ++--- .../component/CourseDetailBasicInfo.kt | 4 +- .../component/CourseDetailBottomBar.kt | 10 +- .../component/CourseDetailCost.kt | 6 +- .../component/CourseDetailInfoBar.kt | 6 +- .../component/CourseDetailOpenedDetail.kt | 8 +- .../coursedetail/component/CourseDetailTag.kt | 12 +- .../component/CourseDetailTimeline.kt | 12 +- .../component/CourseDetailUnopenedDetail.kt | 10 +- .../navigation/CourseDetailNavigation.kt | 6 +- .../presentation/ui/enroll/EnrollContract.kt | 56 ++++---- .../ui/enroll/EnrollFirstScreen.kt | 24 ++-- .../presentation/ui/enroll/EnrollScreen.kt | 130 +++++++++--------- .../ui/enroll/EnrollSecondScreen.kt | 24 ++-- .../ui/enroll/EnrollThirdScreen.kt | 12 +- .../presentation/ui/enroll/EnrollViewModel.kt | 32 ++--- .../enroll/component/EnrollAddPhotoButton.kt | 10 +- .../component/EnrollPhotoPreviewCard.kt | 10 +- .../ui/enroll/component/EnrollPhotos.kt | 14 +- .../enroll/component/EnrollPlaceInsertBar.kt | 18 +-- .../ui/enroll/navigation/EnrollNavigation.kt | 10 +- .../presentation/ui/home/HomeContract.kt | 22 +-- .../presentation/ui/home/HomeScreen.kt | 68 ++++----- .../presentation/ui/home/HomeViewModel.kt | 20 +-- .../ui/home/component/HomeAdvertisement.kt | 6 +- .../ui/home/component/HomeHotCourseCard.kt | 14 +- .../ui/home/component/HomeTimeLineCard.kt | 14 +- .../ui/home/component/HomeTopBar.kt | 8 +- .../ui/home/navigation/HomeNavigation.kt | 12 +- .../presentation/ui/look/LookContract.kt | 16 +-- .../presentation/ui/look/LookScreen.kt | 50 +++---- .../presentation/ui/look/LookViewModel.kt | 12 +- .../ui/look/component/LookCourseCard.kt | 16 +-- .../ui/look/navigation/LookNavigation.kt | 8 +- .../ui/mycourse/MyCourseContract.kt | 14 +- .../ui/mycourse/MyCourseScreen.kt | 38 ++--- .../ui/mycourse/MyCourseViewModel.kt | 10 +- .../mycourse/navigation/MyCourseNavigation.kt | 10 +- .../presentation/ui/mypage/MyPageContract.kt | 12 +- .../presentation/ui/mypage/MyPageScreen.kt | 54 ++++---- .../presentation/ui/mypage/MyPageViewModel.kt | 14 +- .../ui/mypage/component/MyPageButton.kt | 8 +- .../ui/mypage/component/MyPagePointBox.kt | 10 +- .../ui/mypage/navigation/MyPageNavigation.kt | 10 +- .../presentation/ui/navigator/MainActivity.kt | 6 +- .../ui/navigator/MainNavigator.kt | 50 +++---- .../presentation/ui/navigator/MainScreen.kt | 10 +- .../ui/navigator/component/MainBottomBar.kt | 16 +-- .../ui/navigator/component/MainNavHost.kt | 42 +++--- .../ui/onboarding/OnBoardingContract.kt | 8 +- .../ui/onboarding/OnBoardingViewModel.kt | 4 +- .../ui/onboarding/OnboardingScreen.kt | 22 +-- .../navigation/OnboardingNavigation.kt | 6 +- .../presentation/ui/past/PastContract.kt | 14 +- .../presentation/ui/past/PastScreen.kt | 28 ++-- .../presentation/ui/past/PastViewModel.kt | 10 +- .../ui/past/component/PastCard.kt | 20 +-- .../ui/past/navigation/PastNavigation.kt | 6 +- .../ui/pointguide/PointGuideScreen.kt | 14 +- .../component/DateRoadMyPagePointInfo.kt | 6 +- .../navigation/PointGuideNavigation.kt | 4 +- .../ui/pointhistory/PointHistoryContract.kt | 16 +-- .../ui/pointhistory/PointHistoryScreen.kt | 38 ++--- .../ui/pointhistory/PointHistoryViewModel.kt | 10 +- .../component/PointHistoryCard.kt | 8 +- .../component/PointHistoryPointBox.kt | 8 +- .../navigation/PointHistoryNavigation.kt | 4 +- .../ui/profile/ProfileContract.kt | 20 +-- .../presentation/ui/profile/ProfileScreen.kt | 56 ++++---- .../ui/profile/ProfileViewModel.kt | 30 ++-- .../profile/navigation/ProfileNavigation.kt | 8 +- .../presentation/ui/read/ReadContract.kt | 12 +- .../presentation/ui/read/ReadScreen.kt | 30 ++-- .../presentation/ui/read/ReadViewModel.kt | 10 +- .../ui/read/navigation/ReadNavigation.kt | 8 +- .../presentation/ui/signin/SignInContract.kt | 10 +- .../presentation/ui/signin/SignInScreen.kt | 22 +-- .../presentation/ui/signin/SignInViewModel.kt | 20 +-- .../ui/signin/navigation/SignInNavigation.kt | 4 +- .../presentation/ui/splash/SplashScreen.kt | 6 +- .../ui/timeline/TimelineContract.kt | 14 +- .../ui/timeline/TimelineScreen.kt | 50 +++---- .../ui/timeline/TimelineViewModel.kt | 10 +- .../ui/timeline/component/TimelineCard.kt | 22 +-- .../timeline/navigation/TimelineNavigation.kt | 10 +- .../timelinedetail/TimelineDetailContract.kt | 12 +- .../ui/timelinedetail/TimelineDetailScreen.kt | 66 ++++----- .../timelinedetail/TimelineDetailViewModel.kt | 20 +-- .../navigation/TimelineDetailNavigation.kt | 6 +- .../presentation/util/Constraints.kt | 2 +- .../util/amplitude/AmplitudeUtils.kt | 4 +- .../presentation/util/base/BaseViewModel.kt | 2 +- .../presentation/util/base/UiEvent.kt | 3 + .../presentation/util/base/UiSideEffect.kt | 3 + .../presentation/util/base/UiState.kt | 3 + .../util/draganddrop/DragAndDropListState.kt | 8 +- .../presentation/util/lazylist/LazyListExt.kt | 2 +- .../presentation/util/modifier/ModifierExt.kt | 4 +- .../util/mutablelist/MutableListExt.kt | 2 +- .../presentation/util/view/LoadState.kt | 2 +- .../ui/theme/Color.kt | 2 +- .../ui/theme/Theme.kt | 2 +- .../ui/theme/Type.kt | 4 +- .../ExampleUnitTest.kt | 2 +- 404 files changed, 2086 insertions(+), 2087 deletions(-) rename app/src/androidTest/java/org/sopt/{dateroad => teamdateroad}/ExampleInstrumentedTest.kt (95%) delete mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/AdvertisementRemoteDataSource.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/ProfileRemoteDataSource.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/TimelineRemoteDataSource.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/UserPointRemoteDataSource.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/ProfileRemoteDataSourceImpl.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/service/AdvertisementService.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/service/MyCourseService.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/service/ProfileService.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/service/TimelineService.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/dataremote/service/UserPointService.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/RegionMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todata/PlaceMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todata/ProfileMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todata/SignInMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todata/TagMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todata/TagsMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todata/UsePointMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todata/UserSignUpInfoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAdvertisementDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAdvertisementsDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAuthDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseCourseDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseCoursesDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollCourseDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollTimelineDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseNearestTimelineDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePlaceDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePointHistoryDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseProfileDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseTagDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseUserPointDtoMapper.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/data/repositoryimpl/ProfileRepositoryImpl.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/domain/repository/ProfileRepository.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/domain/repository/UserPointRepository.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/model/Picker.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/presentation/util/base/UiEvent.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/presentation/util/base/UiSideEffect.kt delete mode 100644 app/src/main/java/org/sopt/dateroad/presentation/util/base/UiState.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/DateRoadApp.kt (79%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/datalocal/datasource/UserInfoLocalDataSource.kt (70%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/datalocal/datasourceimpl/UserInfoLocalDataSourceImpl.kt (91%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/AdvertisementRemoteDataSource.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/datasource/AuthRemoteDataSource.kt (67%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/datasource/CourseRemoteDataSource.kt (67%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/datasource/MyCourseRemoteDataSource.kt (52%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/ProfileRemoteDataSource.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/TimelineRemoteDataSource.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/UserPointRemoteDataSource.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/datasourceimpl/AdvertisementRemoteDataSourceImpl.kt (55%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/datasourceimpl/AuthRemoteDataSourceImpl.kt (73%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/datasourceimpl/CourseRemoteDataSourceImpl.kt (73%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/datasourceimpl/MyCourseRemoteDataSourceImpl.kt (56%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/ProfileRemoteDataSourceImpl.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/datasourceimpl/TimelineRemoteDataSourceImpl.kt (58%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/datasourceimpl/UserPointRemoteDataSourceImpl.kt (52%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/interceptor/AuthInterceptor.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/request/RequestCourseDto.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/request/RequestPlaceDto.kt (82%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/request/RequestSignInDto.kt (74%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/request/RequestTagDto.kt (73%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/request/RequestTagsDto.kt (74%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/request/RequestTimelineDto.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/request/RequestUsePointDto.kt (82%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/request/RequestUserSignUpInfoDto.kt (79%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/request/RequestWithdrawDto.kt (76%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseAdvertisementDetailDto.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseAdvertisementDto.kt (80%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseAdvertisementsDto.kt (79%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseAuthDto.kt (82%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseCourseDetailDto.kt (94%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseCourseDto.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseCoursesDto.kt (76%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseEnrollCourseDto.kt (80%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseEnrollTimelineDto.kt (76%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseImageDto.kt (79%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseNearestTimelineDto.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponsePlaceDto.kt (82%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponsePointDto.kt (82%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponsePointHistoryDto.kt (80%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponsePointsDto.kt (76%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseProfileDto.kt (84%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseRefreshTokenDto.kt (82%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseTagDto.kt (73%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseTimelineDetailDto.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseTimelineDto.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseTimelinesDto.kt (76%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseUserPointDto.kt (81%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/model/response/ResponseUserUsePointDto.kt (84%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/AdvertisementService.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/service/AuthService.kt (51%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/service/CourseService.kt (54%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/MyCourseService.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/ProfileService.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/TimelineService.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/UserPointService.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/util/Constraints.kt (97%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/dataremote/util/ContentUriRequestBody.kt (96%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/toEntity/AreaMapper.kt (50%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/toEntity/CostMapper.kt (52%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/toEntity/CourseDetailMapper.kt (59%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/toEntity/DurationMapper.kt (55%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/toEntity/LikeMapper.kt (50%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/toEntity/PointMapper.kt (64%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/RegionMapper.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/toEntity/TimelineDetailMapper.kt (63%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/toEntity/TimelineMapper.kt (85%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/todata/EnrollMapper.kt (67%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/PlaceMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/ProfileMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/SignInMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/TagMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/TagsMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/UsePointMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/UserSignUpInfoMapper.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/todomain/ResponseAdvertisementDetailDtoMapper.kt (53%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAdvertisementDtoMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAdvertisementsDtoMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAuthDtoMapper.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/todomain/ResponseCourseDetailDtoMapper.kt (64%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseCourseDtoMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseCoursesDtoMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseEnrollCourseDtoMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseEnrollTimelineDtoMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseNearestTimelineDtoMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePlaceDtoMapper.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/todomain/ResponsePointDtoMapper.kt (51%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePointHistoryDtoMapper.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/todomain/ResponsePointsDtoMapper.kt (61%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseProfileDtoMapper.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseTagDtoMapper.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/todomain/ResponseTimelineDetailDtoMapper.kt (53%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/todomain/ResponseTimelineDtoMapper.kt (59%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseUserPointDtoMapper.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/mapper/todomain/ResponseUserUsePointDtoMapper.kt (51%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/repositoryimpl/AdvertisementRepositoryImpl.kt (60%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/repositoryimpl/AuthRepositoryImpl.kt (73%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/repositoryimpl/CourseRepositoryImpl.kt (73%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/repositoryimpl/MyCourseRepositoryImpl.kt (60%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/ProfileRepositoryImpl.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/repositoryimpl/TimelineRepositoryImpl.kt (61%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/repositoryimpl/UserInfoRepositoryImpl.kt (81%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/data/repositoryimpl/UserPointRepositoryImpl.kt (57%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/di/ContentResolverModule.kt (93%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/di/DataSourceModule.kt (53%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/di/NetworkModule.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/di/RepositoryModule.kt (54%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/di/ServiceModule.kt (69%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/di/qualifier/Qualifier.kt (70%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/Advertisement.kt (66%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/AdvertisementDetail.kt (83%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/Auth.kt (64%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/Course.kt (81%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/CourseDetail.kt (93%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/EditProfile.kt (73%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/Enroll.kt (78%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/EnrollCourseResult.kt (67%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/EnrollTimelineResult.kt (60%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/NearestTimeline.kt (80%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/Place.kt (64%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/Point.kt (69%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/PointHistory.kt (70%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/PointUseResult.kt (73%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/Profile.kt (77%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/SignIn.kt (52%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/SignUp.kt (77%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/Timeline.kt (66%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/TimelineDetail.kt (86%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/UsePoint.kt (68%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/UserPoint.kt (72%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/model/UserSignUpInfo.kt (68%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/repository/AdvertisementRepository.kt (54%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/repository/AuthRepository.kt (62%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/repository/CourseRepository.kt (56%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/repository/MyCourseRepository.kt (60%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/domain/repository/ProfileRepository.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/repository/TimelineRepository.kt (51%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/repository/UserInfoRepository.kt (85%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/domain/repository/UserPointRepository.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/type/AdvertisementTagType.kt (78%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/type/GyeonggiAreaType.kt (94%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/type/IncheonAreaType.kt (82%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/type/MoneyTagType.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/type/MonthType.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/type/RegionType.kt (69%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/type/SeoulAreaType.kt (94%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/type/SortByType.kt (54%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/type/TimelineTimeType.kt (56%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/ClearUserInfoUseCase.kt (67%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/DeleteCourseLikeUseCase.kt (73%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/DeleteCourseUseCase.kt (72%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/DeleteSignOutUseCase.kt (70%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/DeleteTimelineUseCase.kt (73%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/DeleteWithdrawUseCase.kt (72%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetAccessTokenUseCase.kt (68%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetAdvertisementDetailUseCase.kt (67%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetAdvertisementsUseCase.kt (64%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetCourseDetailUseCase.kt (71%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetFilteredCourses.kt (58%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetMyCourseEnrollUseCase.kt (63%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetMyCourseReadUseCase.kt (63%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetNearestTimelineUseCase.kt (59%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetNicknameCheckUseCase.kt (71%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetNicknameUseCase.kt (68%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetPointHistoryUseCase.kt (62%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetRefreshTokenUseCase.kt (68%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetSortedCoursesUseCase.kt (59%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetTimelineDetailUseCase.kt (62%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetTimelinesUseCase.kt (57%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetUserPointUseCase.kt (58%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/GetUserUseCase.kt (61%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/PatchEditProfileUseCase.kt (65%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/PostCourseLikeUseCase.kt (72%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/PostCourseUseCase.kt (57%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/PostSignInUseCase.kt (62%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/PostSignUpUseCase.kt (58%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/PostTimelineUseCase.kt (57%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/PostUsePointUseCase.kt (61%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/SetAccessTokenUseCase.kt (72%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/SetNicknameUseCase.kt (71%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/usecase/SetRefreshTokenUseCase.kt (72%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/domain/util/Constraints.kt (98%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/model/RouteModel.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/ChipType.kt (84%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/CourseDetailUnopenedDetailType.kt (86%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/DateChipGroupType.kt (78%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/DateRoadRegionBottomSheetType.kt (58%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/DateTagType.kt (95%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/EmptyViewType.kt (93%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/EnrollScreenType.kt (67%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/EnrollType.kt (77%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/MainNavigationBarItemType.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/MyCourseType.kt (77%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/MyPageMenuType.kt (86%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/MyPagePointInfoType.kt (92%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/OnboardingType.kt (93%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/OneButtonDialogType.kt (79%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/OneButtonDialogWithDescriptionType.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/PlaceCardType.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/PointHistoryTabType.kt (60%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/PointSystemType.kt (92%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/ProfileType.kt (84%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/TagType.kt (96%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/TimelineType.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/TwoButtonDialogType.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/type/TwoButtonDialogWithDescriptionType.kt (96%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/advertisement/AdvertisementContract.kt (59%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/advertisement/AdvertisementScreen.kt (85%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/advertisement/AdvertisementViewModel.kt (86%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/advertisement/component/AdvertisementDetail.kt (85%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/advertisement/navigation/AdvertisementNavigation.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/bottomsheet/DateRoadBasicBottomSheet.kt (93%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/bottomsheet/DateRoadBottomSheet.kt (94%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/bottomsheet/DateRoadPickerBottomSheet.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/bottomsheet/DateRoadRegionBottomSheet.kt (93%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/model/Picker.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/button/DateRoadAreaButton.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/button/DateRoadBasicButton.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/button/DateRoadButton.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/button/DateRoadFilledButton.kt (95%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/button/DateRoadImageButton.kt (92%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/button/DateRoadKakaoLoginButton.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/button/DateRoadOutlinedButton.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/button/DateRoadTextButton.kt (93%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/card/DateRoadCourseCard.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/card/DateRoadPlaceCard.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/chip/DateRoadChip.kt (84%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/chip/DateRoadImageChip.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/chip/DateRoadTextChip.kt (93%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/chipgroup/DateRoadDateChipGroup.kt (86%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/dialog/DateRoadDialog.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/dialog/DateRoadOneButtonDialog.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/dialog/DateRoadOneButtonDialogWithDescription.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/dialog/DateRoadTwoButtonDialog.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/dialog/DateRoadTwoButtonDialogWithDescription.kt (92%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/dotsindicator/DotsIndicator.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/numberpicker/DateRoadNumberPicker.kt (92%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/numberpicker/state/PickerState.kt (82%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/pager/DateRoadImagePager.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/partialcolortext/PartialColorText.kt (94%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/tabbar/DateRoadTabBar.kt (95%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/tag/DateRoadImageTag.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/tag/DateRoadPointTag.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/tag/DateRoadTag.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/tag/DateRoadTextTag.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/textfield/DateRoadBasicTextField.kt (95%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/textfield/DateRoadTextArea.kt (95%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/textfield/DateRoadTextFieldWithButton.kt (95%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/textfield/model/TextFieldValidateResult.kt (78%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/topbar/DateRoadBasicTopBar.kt (94%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/topbar/DateRoadLeftTitleTopBar.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/topbar/DateRoadScrollResponsiveTopBar.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/view/DataRoadIdeView.kt (79%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/view/DateRoadEmptyView.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/view/DateRoadErrorView.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/view/DateRoadLoadingView.kt (84%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/component/view/DateRoadWebView.kt (96%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/coursedetail/CourseDetailContract.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/coursedetail/CourseDetailScreen.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/coursedetail/CourseDetailViewModel.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/coursedetail/component/CourseDetailBasicInfo.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/coursedetail/component/CourseDetailBottomBar.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/coursedetail/component/CourseDetailCost.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/coursedetail/component/CourseDetailInfoBar.kt (94%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/coursedetail/component/CourseDetailOpenedDetail.kt (81%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/coursedetail/component/CourseDetailTag.kt (81%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/coursedetail/component/CourseDetailTimeline.kt (80%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/coursedetail/component/CourseDetailUnopenedDetail.kt (92%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/coursedetail/navigation/CourseDetailNavigation.kt (84%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/enroll/EnrollContract.kt (72%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/enroll/EnrollFirstScreen.kt (82%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/enroll/EnrollScreen.kt (84%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/enroll/EnrollSecondScreen.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/enroll/EnrollThirdScreen.kt (85%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/enroll/EnrollViewModel.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/enroll/component/EnrollAddPhotoButton.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/enroll/component/EnrollPhotoPreviewCard.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/enroll/component/EnrollPhotos.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/enroll/component/EnrollPlaceInsertBar.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/enroll/navigation/EnrollNavigation.kt (86%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/home/HomeContract.kt (74%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/home/HomeScreen.kt (85%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/home/HomeViewModel.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/home/component/HomeAdvertisement.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/home/component/HomeHotCourseCard.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/home/component/HomeTimeLineCard.kt (94%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/home/component/HomeTopBar.kt (86%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/home/navigation/HomeNavigation.kt (76%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/look/LookContract.kt (74%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/look/LookScreen.kt (85%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/look/LookViewModel.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/look/component/LookCourseCard.kt (92%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/look/navigation/LookNavigation.kt (75%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/mycourse/MyCourseContract.kt (67%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/mycourse/MyCourseScreen.kt (85%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/mycourse/MyCourseViewModel.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/mycourse/navigation/MyCourseNavigation.kt (80%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/mypage/MyPageContract.kt (80%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/mypage/MyPageScreen.kt (86%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/mypage/MyPageViewModel.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/mypage/component/MyPageButton.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/mypage/component/MyPagePointBox.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/mypage/navigation/MyPageNavigation.kt (77%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/navigator/MainActivity.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/navigator/MainNavigator.kt (71%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/navigator/MainScreen.kt (77%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/navigator/component/MainBottomBar.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/navigator/component/MainNavHost.kt (74%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/onboarding/OnBoardingContract.kt (55%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/onboarding/OnBoardingViewModel.kt (79%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/onboarding/OnboardingScreen.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/onboarding/navigation/OnboardingNavigation.kt (75%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/past/PastContract.kt (57%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/past/PastScreen.kt (82%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/past/PastViewModel.kt (81%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/past/component/PastCard.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/past/navigation/PastNavigation.kt (79%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/pointguide/PointGuideScreen.kt (85%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/pointguide/component/DateRoadMyPagePointInfo.kt (93%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/pointguide/navigation/PointGuideNavigation.kt (81%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/pointhistory/PointHistoryContract.kt (63%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/pointhistory/PointHistoryScreen.kt (83%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/pointhistory/PointHistoryViewModel.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/pointhistory/component/PointHistoryCard.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/pointhistory/component/PointHistoryPointBox.kt (89%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/pointhistory/navigation/PointHistoryNavigation.kt (80%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/profile/ProfileContract.kt (78%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/profile/ProfileScreen.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/profile/ProfileViewModel.kt (90%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/profile/navigation/ProfileNavigation.kt (82%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/read/ReadContract.kt (63%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/read/ReadScreen.kt (84%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/read/ReadViewModel.kt (84%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/read/navigation/ReadNavigation.kt (76%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/signin/SignInContract.kt (70%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/signin/SignInScreen.kt (86%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/signin/SignInViewModel.kt (78%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/signin/navigation/SignInNavigation.kt (83%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/splash/SplashScreen.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/timeline/TimelineContract.kt (67%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/timeline/TimelineScreen.kt (82%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/timeline/TimelineViewModel.kt (84%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/timeline/component/TimelineCard.kt (92%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/timeline/navigation/TimelineNavigation.kt (74%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/timelinedetail/TimelineDetailContract.kt (79%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/timelinedetail/TimelineDetailScreen.kt (86%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/timelinedetail/TimelineDetailViewModel.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt (88%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/util/Constraints.kt (99%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/util/amplitude/AmplitudeUtils.kt (92%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/util/base/BaseViewModel.kt (96%) create mode 100644 app/src/main/java/org/sopt/teamdateroad/presentation/util/base/UiEvent.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/presentation/util/base/UiSideEffect.kt create mode 100644 app/src/main/java/org/sopt/teamdateroad/presentation/util/base/UiState.kt rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/util/draganddrop/DragAndDropListState.kt (92%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/util/lazylist/LazyListExt.kt (87%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/util/modifier/ModifierExt.kt (91%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/util/mutablelist/MutableListExt.kt (74%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/presentation/util/view/LoadState.kt (57%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/ui/theme/Color.kt (98%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/ui/theme/Theme.kt (97%) rename app/src/main/java/org/sopt/{dateroad => teamdateroad}/ui/theme/Type.kt (98%) rename app/src/test/java/org/sopt/{dateroad => teamdateroad}/ExampleUnitTest.kt (91%) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 851bb4df..1b96dd12 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -17,11 +17,11 @@ val properties = Properties().apply { } android { - namespace = "org.sopt.dateroad" + namespace = "org.sopt.teamdateroad" compileSdk = libs.versions.compileSdk.get().toInt() defaultConfig { - applicationId = "org.sopt.dateroad" + applicationId = "org.sopt.teamdateroad" minSdk = libs.versions.minSdk.get().toInt() targetSdk = libs.versions.targetSdk.get().toInt() versionCode = libs.versions.versionCode.get().toInt() diff --git a/app/src/androidTest/java/org/sopt/dateroad/ExampleInstrumentedTest.kt b/app/src/androidTest/java/org/sopt/teamdateroad/ExampleInstrumentedTest.kt similarity index 95% rename from app/src/androidTest/java/org/sopt/dateroad/ExampleInstrumentedTest.kt rename to app/src/androidTest/java/org/sopt/teamdateroad/ExampleInstrumentedTest.kt index 4f17cfda..f0c140db 100644 --- a/app/src/androidTest/java/org/sopt/dateroad/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/org/sopt/teamdateroad/ExampleInstrumentedTest.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad +package org.sopt.teamdateroad import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.platform.app.InstrumentationRegistry diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/AdvertisementRemoteDataSource.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/AdvertisementRemoteDataSource.kt deleted file mode 100644 index 45c54c29..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/AdvertisementRemoteDataSource.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.sopt.dateroad.data.dataremote.datasource - -import org.sopt.dateroad.data.dataremote.model.response.ResponseAdvertisementDetailDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseAdvertisementsDto - -interface AdvertisementRemoteDataSource { - suspend fun getAdvertisementDetail(advertisementId: Int): ResponseAdvertisementDetailDto - - suspend fun getHomeAdvertisements(): ResponseAdvertisementsDto -} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/ProfileRemoteDataSource.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/ProfileRemoteDataSource.kt deleted file mode 100644 index 42f1836d..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/ProfileRemoteDataSource.kt +++ /dev/null @@ -1,7 +0,0 @@ -package org.sopt.dateroad.data.dataremote.datasource - -import org.sopt.dateroad.data.dataremote.model.response.ResponseProfileDto - -interface ProfileRemoteDataSource { - suspend fun getProfile(): ResponseProfileDto -} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/TimelineRemoteDataSource.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/TimelineRemoteDataSource.kt deleted file mode 100644 index b24f5591..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/TimelineRemoteDataSource.kt +++ /dev/null @@ -1,19 +0,0 @@ -package org.sopt.dateroad.data.dataremote.datasource - -import org.sopt.dateroad.data.dataremote.model.request.RequestTimelineDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollTimelineDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseNearestTimelineDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelineDetailDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelinesDto - -interface TimelineRemoteDataSource { - suspend fun deleteTimeline(timelineId: Int) - - suspend fun getTimelineDetail(timelineId: Int): ResponseTimelineDetailDto - - suspend fun getTimelines(timelineTimeType: String): ResponseTimelinesDto - - suspend fun getNearestTimeline(): ResponseNearestTimelineDto - - suspend fun postTimeline(requestTimelineDto: RequestTimelineDto): ResponseEnrollTimelineDto -} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/UserPointRemoteDataSource.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/UserPointRemoteDataSource.kt deleted file mode 100644 index 7a9b6329..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/UserPointRemoteDataSource.kt +++ /dev/null @@ -1,14 +0,0 @@ -package org.sopt.dateroad.data.dataremote.datasource - -import org.sopt.dateroad.data.dataremote.model.request.RequestUsePointDto -import org.sopt.dateroad.data.dataremote.model.response.ResponsePointHistoryDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseUserPointDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseUserUsePointDto - -interface UserPointRemoteDataSource { - suspend fun getUserPoint(): ResponseUserPointDto - - suspend fun getPointHistory(): ResponsePointHistoryDto - - suspend fun postUsePoint(courseId: Int, requestUsePointDto: RequestUsePointDto): ResponseUserUsePointDto -} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/ProfileRemoteDataSourceImpl.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/ProfileRemoteDataSourceImpl.kt deleted file mode 100644 index 856cd756..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/ProfileRemoteDataSourceImpl.kt +++ /dev/null @@ -1,14 +0,0 @@ -package org.sopt.dateroad.data.dataremote.datasourceimpl - -import javax.inject.Inject -import org.sopt.dateroad.data.dataremote.datasource.ProfileRemoteDataSource -import org.sopt.dateroad.data.dataremote.model.response.ResponseProfileDto -import org.sopt.dateroad.data.dataremote.service.ProfileService - -class ProfileRemoteDataSourceImpl @Inject constructor( - private val profileService: ProfileService -) : ProfileRemoteDataSource { - - override suspend fun getProfile(): ResponseProfileDto = - profileService.getProfile() -} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/AdvertisementService.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/AdvertisementService.kt deleted file mode 100644 index 4e900595..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/AdvertisementService.kt +++ /dev/null @@ -1,20 +0,0 @@ -package org.sopt.dateroad.data.dataremote.service - -import org.sopt.dateroad.data.dataremote.model.response.ResponseAdvertisementDetailDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseAdvertisementsDto -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.ADVERTISEMENTS -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.ADVERTISEMENT_ID -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.API -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.VERSION -import retrofit2.http.GET -import retrofit2.http.Path - -interface AdvertisementService { - @GET("$API/$VERSION/$ADVERTISEMENTS/{$ADVERTISEMENT_ID}") - suspend fun getAdvertisementDetail( - @Path(ADVERTISEMENT_ID) advertisementId: Int - ): ResponseAdvertisementDetailDto - - @GET("$API/$VERSION/$ADVERTISEMENTS") - suspend fun getHomeAdvertisements(): ResponseAdvertisementsDto -} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/MyCourseService.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/MyCourseService.kt deleted file mode 100644 index f750f7ff..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/MyCourseService.kt +++ /dev/null @@ -1,17 +0,0 @@ -package org.sopt.dateroad.data.dataremote.service - -import org.sopt.dateroad.data.dataremote.model.response.ResponseCoursesDto -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.API -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.COURSES -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.DATE_ACCESS -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.USERS -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.VERSION -import retrofit2.http.GET - -interface MyCourseService { - @GET("$API/$VERSION/$COURSES/$USERS") - suspend fun getMyCourseEnroll(): ResponseCoursesDto - - @GET("$API/$VERSION/$COURSES/$DATE_ACCESS") - suspend fun getMyCourseRead(): ResponseCoursesDto -} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/ProfileService.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/ProfileService.kt deleted file mode 100644 index ed4dc9eb..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/ProfileService.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.sopt.dateroad.data.dataremote.service - -import org.sopt.dateroad.data.dataremote.model.response.ResponseProfileDto -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.API -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.USERS -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.VERSION -import retrofit2.http.GET - -interface ProfileService { - @GET("$API/$VERSION/$USERS") - suspend fun getProfile(): ResponseProfileDto -} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/TimelineService.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/TimelineService.kt deleted file mode 100644 index 107e25bd..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/TimelineService.kt +++ /dev/null @@ -1,44 +0,0 @@ -package org.sopt.dateroad.data.dataremote.service - -import org.sopt.dateroad.data.dataremote.model.request.RequestTimelineDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollTimelineDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseNearestTimelineDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelineDetailDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelinesDto -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.API -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.DATES -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.DATE_ID -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.NEAREST -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.TIME -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.VERSION -import retrofit2.http.Body -import retrofit2.http.DELETE -import retrofit2.http.GET -import retrofit2.http.POST -import retrofit2.http.Path -import retrofit2.http.Query - -interface TimelineService { - @DELETE("$API/$VERSION/$DATES/{$DATE_ID}") - suspend fun deleteTimeline( - @Path(DATE_ID) timelineId: Int - ) - - @GET("$API/$VERSION/$DATES/{$DATE_ID}") - suspend fun getTimelineDetail( - @Path(DATE_ID) timelineId: Int - ): ResponseTimelineDetailDto - - @GET("$API/$VERSION/$DATES") - suspend fun getTimelines( - @Query(TIME) timelineTimeType: String - ): ResponseTimelinesDto - - @GET("$API/$VERSION/$DATES/$NEAREST") - suspend fun getNearestTimeline(): ResponseNearestTimelineDto - - @POST("$API/$VERSION/$DATES") - suspend fun postTimeline( - @Body requestTimelineDto: RequestTimelineDto - ): ResponseEnrollTimelineDto -} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/UserPointService.kt b/app/src/main/java/org/sopt/dateroad/data/dataremote/service/UserPointService.kt deleted file mode 100644 index b18baf54..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/UserPointService.kt +++ /dev/null @@ -1,32 +0,0 @@ -package org.sopt.dateroad.data.dataremote.service - -import org.sopt.dateroad.data.dataremote.model.request.RequestUsePointDto -import org.sopt.dateroad.data.dataremote.model.response.ResponsePointHistoryDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseUserPointDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseUserUsePointDto -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.API -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.COURSES -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.COURSE_ID -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.DATE_ACCESS -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.MAIN -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.POINTS -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.USERS -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.VERSION -import retrofit2.http.Body -import retrofit2.http.GET -import retrofit2.http.POST -import retrofit2.http.Path - -interface UserPointService { - @GET("$API/$VERSION/$USERS/$MAIN") - suspend fun getUserPoint(): ResponseUserPointDto - - @GET("$API/$VERSION/$POINTS") - suspend fun getPointHistory(): ResponsePointHistoryDto - - @POST("$API/$VERSION/$COURSES/{$COURSE_ID}/$DATE_ACCESS") - suspend fun postUsePoint( - @Path(COURSE_ID) courseId: Int, - @Body requestUsePointDto: RequestUsePointDto - ): ResponseUserUsePointDto -} diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/RegionMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/RegionMapper.kt deleted file mode 100644 index 68f04b95..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/RegionMapper.kt +++ /dev/null @@ -1,16 +0,0 @@ -package org.sopt.dateroad.data.mapper.toEntity - -import org.sopt.dateroad.domain.type.GyeonggiAreaType.Companion.fromTitleToGyeonggiAreaType -import org.sopt.dateroad.domain.type.IncheonAreaType.Companion.fromTitleToIncheonAreaType -import org.sopt.dateroad.domain.type.RegionType -import org.sopt.dateroad.domain.type.SeoulAreaType.Companion.fromTitleToSeoulAreaType - -fun String.toRegionType(): RegionType? = when { - this.fromTitleToSeoulAreaType() != null -> RegionType.SEOUL - - this.fromTitleToGyeonggiAreaType() != null -> RegionType.GYEONGGI - - this.fromTitleToIncheonAreaType() != null -> RegionType.INCHEON - - else -> null -} diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/PlaceMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todata/PlaceMapper.kt deleted file mode 100644 index 23b1add9..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/PlaceMapper.kt +++ /dev/null @@ -1,11 +0,0 @@ -package org.sopt.dateroad.data.mapper.todata - -import org.sopt.dateroad.data.dataremote.model.request.RequestPlaceDto -import org.sopt.dateroad.data.dataremote.util.Duration.DURATION -import org.sopt.dateroad.domain.model.Place - -fun Place.toData(sequence: Int): RequestPlaceDto = RequestPlaceDto( - sequence = sequence, - title = this.title, - duration = duration.substringBefore(DURATION).toFloat() -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/ProfileMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todata/ProfileMapper.kt deleted file mode 100644 index 05cb5cfe..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/ProfileMapper.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.sopt.dateroad.data.mapper.todata - -import org.sopt.dateroad.domain.model.EditProfile -import org.sopt.dateroad.domain.model.Profile - -fun Profile.toEditProfile(): EditProfile = EditProfile( - name = this.name, - tags = this.tag, - image = this.imageUrl -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/SignInMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todata/SignInMapper.kt deleted file mode 100644 index 2eab91b4..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/SignInMapper.kt +++ /dev/null @@ -1,8 +0,0 @@ -package org.sopt.dateroad.data.mapper.todata - -import org.sopt.dateroad.data.dataremote.model.request.RequestSignInDto -import org.sopt.dateroad.domain.model.SignIn - -fun SignIn.toData(): RequestSignInDto = RequestSignInDto( - platform = this.platform -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/TagMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todata/TagMapper.kt deleted file mode 100644 index 7ad5b412..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/TagMapper.kt +++ /dev/null @@ -1,5 +0,0 @@ -package org.sopt.dateroad.data.mapper.todata - -import org.sopt.dateroad.data.dataremote.model.request.RequestTagDto - -fun String.toData() = RequestTagDto(tag = this) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/TagsMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todata/TagsMapper.kt deleted file mode 100644 index a8142bce..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/TagsMapper.kt +++ /dev/null @@ -1,7 +0,0 @@ -package org.sopt.dateroad.data.mapper.todata - -import org.sopt.dateroad.data.dataremote.model.request.RequestTagsDto - -fun List.toData(): RequestTagsDto = RequestTagsDto( - tag = this -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/UsePointMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todata/UsePointMapper.kt deleted file mode 100644 index 462f8913..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/UsePointMapper.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.sopt.dateroad.data.mapper.todata - -import org.sopt.dateroad.data.dataremote.model.request.RequestUsePointDto -import org.sopt.dateroad.domain.model.UsePoint - -fun UsePoint.toData(): RequestUsePointDto = RequestUsePointDto( - point = this.point, - type = this.type, - description = this.description -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/UserSignUpInfoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todata/UserSignUpInfoMapper.kt deleted file mode 100644 index b647aaea..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/UserSignUpInfoMapper.kt +++ /dev/null @@ -1,9 +0,0 @@ -package org.sopt.dateroad.data.mapper.todata - -import org.sopt.dateroad.data.dataremote.model.request.RequestUserSignUpInfoDto -import org.sopt.dateroad.domain.model.UserSignUpInfo - -fun UserSignUpInfo.toData(): RequestUserSignUpInfoDto = RequestUserSignUpInfoDto( - name = this.name, - platform = this.platform -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAdvertisementDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAdvertisementDtoMapper.kt deleted file mode 100644 index 16b850da..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAdvertisementDtoMapper.kt +++ /dev/null @@ -1,9 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponseAdvertisementDto -import org.sopt.dateroad.domain.model.Advertisement - -fun ResponseAdvertisementDto.toDomain(): Advertisement = Advertisement( - advertisementId = this.advertisementId, - thumbnail = this.thumbnail -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAdvertisementsDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAdvertisementsDtoMapper.kt deleted file mode 100644 index fe210848..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAdvertisementsDtoMapper.kt +++ /dev/null @@ -1,6 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponseAdvertisementsDto -import org.sopt.dateroad.domain.model.Advertisement - -fun ResponseAdvertisementsDto.toDomain(): List = this.advertisements.map { responseAdvertisementDto -> responseAdvertisementDto.toDomain() } diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAuthDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAuthDtoMapper.kt deleted file mode 100644 index 49882874..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAuthDtoMapper.kt +++ /dev/null @@ -1,9 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponseAuthDto -import org.sopt.dateroad.domain.model.Auth - -fun ResponseAuthDto.toDomain(): Auth = Auth( - accessToken = this.accessToken, - refreshToken = this.refreshToken -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseCourseDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseCourseDtoMapper.kt deleted file mode 100644 index fd0e3ac2..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseCourseDtoMapper.kt +++ /dev/null @@ -1,17 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponseCourseDto -import org.sopt.dateroad.data.mapper.toEntity.toDuration -import org.sopt.dateroad.data.mapper.toEntity.toLike -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.domain.type.MoneyTagType.Companion.toCostTagTitle - -fun ResponseCourseDto.toDomain(): Course = Course( - courseId = this.courseId, - thumbnail = this.thumbnail, - title = this.title, - city = this.city, - cost = this.cost.toCostTagTitle(), - duration = this.duration.toDuration(), - like = this.like.toLike() -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseCoursesDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseCoursesDtoMapper.kt deleted file mode 100644 index 11f27385..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseCoursesDtoMapper.kt +++ /dev/null @@ -1,6 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponseCoursesDto -import org.sopt.dateroad.domain.model.Course - -fun ResponseCoursesDto.toDomain(): List = this.courses.map { course -> course.toDomain() } diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollCourseDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollCourseDtoMapper.kt deleted file mode 100644 index 182cabfc..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollCourseDtoMapper.kt +++ /dev/null @@ -1,9 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollCourseDto -import org.sopt.dateroad.domain.model.EnrollCourseResult - -fun ResponseEnrollCourseDto.toDomain(): EnrollCourseResult = EnrollCourseResult( - userPoint = this.userPoint, - userCourseCount = this.userCourseCount -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollTimelineDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollTimelineDtoMapper.kt deleted file mode 100644 index 59fe1341..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseEnrollTimelineDtoMapper.kt +++ /dev/null @@ -1,8 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollTimelineDto -import org.sopt.dateroad.domain.model.EnrollTimelineResult - -fun ResponseEnrollTimelineDto.toDomain(): EnrollTimelineResult = EnrollTimelineResult( - dateScheduleNum = this.dateScheduleNum -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseNearestTimelineDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseNearestTimelineDtoMapper.kt deleted file mode 100644 index 444e5697..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseNearestTimelineDtoMapper.kt +++ /dev/null @@ -1,15 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponseNearestTimelineDto -import org.sopt.dateroad.data.mapper.toEntity.toDDayString -import org.sopt.dateroad.data.mapper.toEntity.toFormattedDate -import org.sopt.dateroad.data.mapper.toEntity.toStartAtString -import org.sopt.dateroad.domain.model.NearestTimeline - -fun ResponseNearestTimelineDto.toDomain(): NearestTimeline = NearestTimeline( - timelineId = this.timelineId, - dDay = this.dDay.toDDayString(), - dateName = this.dateName, - date = toFormattedDate(), - startAt = this.startAt.toStartAtString() -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePlaceDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePlaceDtoMapper.kt deleted file mode 100644 index 063510b4..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePlaceDtoMapper.kt +++ /dev/null @@ -1,10 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponsePlaceDto -import org.sopt.dateroad.data.mapper.toEntity.toDuration -import org.sopt.dateroad.domain.model.Place - -fun ResponsePlaceDto.toDomain() = Place( - title = this.title, - duration = this.duration.toDuration() -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePointHistoryDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePointHistoryDtoMapper.kt deleted file mode 100644 index bb7a4e57..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePointHistoryDtoMapper.kt +++ /dev/null @@ -1,9 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponsePointHistoryDto -import org.sopt.dateroad.domain.model.PointHistory - -fun ResponsePointHistoryDto.toDomain(): PointHistory = PointHistory( - gained = this.gained.toGainedPointDomain(), - used = this.used.toUsedPointDomain() -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseProfileDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseProfileDtoMapper.kt deleted file mode 100644 index cdc89005..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseProfileDtoMapper.kt +++ /dev/null @@ -1,12 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponseProfileDto -import org.sopt.dateroad.data.mapper.toEntity.toPoint -import org.sopt.dateroad.domain.model.Profile - -fun ResponseProfileDto.toDomain(): Profile = Profile( - name = this.name, - tag = this.tags, - point = this.point.toPoint(), - imageUrl = this.imageUrl -) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseTagDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseTagDtoMapper.kt deleted file mode 100644 index df287c66..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseTagDtoMapper.kt +++ /dev/null @@ -1,6 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponseTagDto -import org.sopt.dateroad.presentation.type.DateTagType - -fun ResponseTagDto.toDomain(): DateTagType = DateTagType.valueOf(this.tag) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseUserPointDtoMapper.kt b/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseUserPointDtoMapper.kt deleted file mode 100644 index dc2f1dde..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseUserPointDtoMapper.kt +++ /dev/null @@ -1,11 +0,0 @@ -package org.sopt.dateroad.data.mapper.todomain - -import org.sopt.dateroad.data.dataremote.model.response.ResponseUserPointDto -import org.sopt.dateroad.data.mapper.toEntity.toPoint -import org.sopt.dateroad.domain.model.UserPoint - -fun ResponseUserPointDto.toDomain(): UserPoint = UserPoint( - name = this.name, - point = this.point.toPoint(), - imageUrl = this.image -) diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/ProfileRepositoryImpl.kt b/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/ProfileRepositoryImpl.kt deleted file mode 100644 index 91b18e4d..00000000 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/ProfileRepositoryImpl.kt +++ /dev/null @@ -1,16 +0,0 @@ - -package org.sopt.dateroad.data.repositoryimpl - -import javax.inject.Inject -import org.sopt.dateroad.data.dataremote.datasource.ProfileRemoteDataSource -import org.sopt.dateroad.data.mapper.todomain.toDomain -import org.sopt.dateroad.domain.model.Profile -import org.sopt.dateroad.domain.repository.ProfileRepository - -class ProfileRepositoryImpl @Inject constructor( - private val profileDataSource: ProfileRemoteDataSource -) : ProfileRepository { - override suspend fun getUsers(): Result = runCatching { - profileDataSource.getProfile().toDomain() - } -} diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/ProfileRepository.kt b/app/src/main/java/org/sopt/dateroad/domain/repository/ProfileRepository.kt deleted file mode 100644 index 215060a5..00000000 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/ProfileRepository.kt +++ /dev/null @@ -1,7 +0,0 @@ -package org.sopt.dateroad.domain.repository - -import org.sopt.dateroad.domain.model.Profile - -interface ProfileRepository { - suspend fun getUsers(): Result -} diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/UserPointRepository.kt b/app/src/main/java/org/sopt/dateroad/domain/repository/UserPointRepository.kt deleted file mode 100644 index 6da30ebe..00000000 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/UserPointRepository.kt +++ /dev/null @@ -1,14 +0,0 @@ -package org.sopt.dateroad.domain.repository - -import org.sopt.dateroad.domain.model.PointHistory -import org.sopt.dateroad.domain.model.PointUseResult -import org.sopt.dateroad.domain.model.UsePoint -import org.sopt.dateroad.domain.model.UserPoint - -interface UserPointRepository { - suspend fun getUserPoint(): Result - - suspend fun getPointHistory(): Result - - suspend fun postUsePoint(courseId: Int, usePoint: UsePoint): Result -} diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/model/Picker.kt b/app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/model/Picker.kt deleted file mode 100644 index f45054a5..00000000 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/model/Picker.kt +++ /dev/null @@ -1,9 +0,0 @@ -package org.sopt.dateroad.presentation.ui.component.bottomsheet.model - -import org.sopt.dateroad.presentation.ui.component.numberpicker.state.PickerState - -data class Picker( - val items: List, - val startIndex: Int = 0, - val pickerState: PickerState = PickerState() -) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/base/UiEvent.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/base/UiEvent.kt deleted file mode 100644 index ef1246c2..00000000 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/base/UiEvent.kt +++ /dev/null @@ -1,3 +0,0 @@ -package org.sopt.dateroad.presentation.util.base - -interface UiEvent diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/base/UiSideEffect.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/base/UiSideEffect.kt deleted file mode 100644 index a869c3c3..00000000 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/base/UiSideEffect.kt +++ /dev/null @@ -1,3 +0,0 @@ -package org.sopt.dateroad.presentation.util.base - -interface UiSideEffect diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/base/UiState.kt b/app/src/main/java/org/sopt/dateroad/presentation/util/base/UiState.kt deleted file mode 100644 index f2f1b45b..00000000 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/base/UiState.kt +++ /dev/null @@ -1,3 +0,0 @@ -package org.sopt.dateroad.presentation.util.base - -interface UiState diff --git a/app/src/main/java/org/sopt/dateroad/DateRoadApp.kt b/app/src/main/java/org/sopt/teamdateroad/DateRoadApp.kt similarity index 79% rename from app/src/main/java/org/sopt/dateroad/DateRoadApp.kt rename to app/src/main/java/org/sopt/teamdateroad/DateRoadApp.kt index 245a42e3..29aeb173 100644 --- a/app/src/main/java/org/sopt/dateroad/DateRoadApp.kt +++ b/app/src/main/java/org/sopt/teamdateroad/DateRoadApp.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad +package org.sopt.teamdateroad import android.app.Application import androidx.appcompat.app.AppCompatDelegate import com.kakao.sdk.common.KakaoSdk import dagger.hilt.android.HiltAndroidApp -import org.sopt.dateroad.BuildConfig.KAKAO_NATIVE_APP_KEY -import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils.initAmplitude +import org.sopt.teamdateroad.BuildConfig.KAKAO_NATIVE_APP_KEY +import org.sopt.teamdateroad.presentation.util.amplitude.AmplitudeUtils.initAmplitude import timber.log.Timber @HiltAndroidApp diff --git a/app/src/main/java/org/sopt/dateroad/data/datalocal/datasource/UserInfoLocalDataSource.kt b/app/src/main/java/org/sopt/teamdateroad/data/datalocal/datasource/UserInfoLocalDataSource.kt similarity index 70% rename from app/src/main/java/org/sopt/dateroad/data/datalocal/datasource/UserInfoLocalDataSource.kt rename to app/src/main/java/org/sopt/teamdateroad/data/datalocal/datasource/UserInfoLocalDataSource.kt index 954932f8..a8613266 100644 --- a/app/src/main/java/org/sopt/dateroad/data/datalocal/datasource/UserInfoLocalDataSource.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/datalocal/datasource/UserInfoLocalDataSource.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.datalocal.datasource +package org.sopt.teamdateroad.data.datalocal.datasource interface UserInfoLocalDataSource { var accessToken: String diff --git a/app/src/main/java/org/sopt/dateroad/data/datalocal/datasourceimpl/UserInfoLocalDataSourceImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/datalocal/datasourceimpl/UserInfoLocalDataSourceImpl.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/data/datalocal/datasourceimpl/UserInfoLocalDataSourceImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/datalocal/datasourceimpl/UserInfoLocalDataSourceImpl.kt index 5299fd28..38794f24 100644 --- a/app/src/main/java/org/sopt/dateroad/data/datalocal/datasourceimpl/UserInfoLocalDataSourceImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/datalocal/datasourceimpl/UserInfoLocalDataSourceImpl.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.datalocal.datasourceimpl +package org.sopt.teamdateroad.data.datalocal.datasourceimpl import android.content.Context import android.content.SharedPreferences @@ -9,8 +9,8 @@ import com.kakao.sdk.auth.Constants.ACCESS_TOKEN import com.kakao.sdk.auth.Constants.REFRESH_TOKEN import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject -import org.sopt.dateroad.BuildConfig -import org.sopt.dateroad.data.datalocal.datasource.UserInfoLocalDataSource +import org.sopt.teamdateroad.BuildConfig +import org.sopt.teamdateroad.data.datalocal.datasource.UserInfoLocalDataSource class UserInfoLocalDataSourceImpl @Inject constructor( @ApplicationContext context: Context diff --git a/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/AdvertisementRemoteDataSource.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/AdvertisementRemoteDataSource.kt new file mode 100644 index 00000000..0ebbc678 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/AdvertisementRemoteDataSource.kt @@ -0,0 +1,10 @@ +package org.sopt.teamdateroad.data.dataremote.datasource + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAdvertisementDetailDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAdvertisementsDto + +interface AdvertisementRemoteDataSource { + suspend fun getAdvertisementDetail(advertisementId: Int): ResponseAdvertisementDetailDto + + suspend fun getHomeAdvertisements(): ResponseAdvertisementsDto +} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/AuthRemoteDataSource.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/AuthRemoteDataSource.kt similarity index 67% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/AuthRemoteDataSource.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/AuthRemoteDataSource.kt index 8819d33d..3e3e7016 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/AuthRemoteDataSource.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/AuthRemoteDataSource.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.data.dataremote.datasource +package org.sopt.teamdateroad.data.dataremote.datasource import okhttp3.MultipartBody import okhttp3.RequestBody -import org.sopt.dateroad.data.dataremote.model.request.RequestSignInDto -import org.sopt.dateroad.data.dataremote.model.request.RequestWithdrawDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseAuthDto +import org.sopt.teamdateroad.data.dataremote.model.request.RequestSignInDto +import org.sopt.teamdateroad.data.dataremote.model.request.RequestWithdrawDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAuthDto interface AuthRemoteDataSource { suspend fun deleteSignOut() diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/CourseRemoteDataSource.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/CourseRemoteDataSource.kt similarity index 67% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/CourseRemoteDataSource.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/CourseRemoteDataSource.kt index 1781a033..e0b1d679 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/CourseRemoteDataSource.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/CourseRemoteDataSource.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.data.dataremote.datasource +package org.sopt.teamdateroad.data.dataremote.datasource import okhttp3.MultipartBody import okhttp3.RequestBody -import org.sopt.dateroad.data.dataremote.model.response.ResponseCourseDetailDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseCoursesDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollCourseDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseCourseDetailDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseCoursesDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseEnrollCourseDto interface CourseRemoteDataSource { suspend fun deleteCourse(courseId: Int) diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/MyCourseRemoteDataSource.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/MyCourseRemoteDataSource.kt similarity index 52% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/MyCourseRemoteDataSource.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/MyCourseRemoteDataSource.kt index f97d4666..99b28295 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasource/MyCourseRemoteDataSource.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/MyCourseRemoteDataSource.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.data.dataremote.datasource +package org.sopt.teamdateroad.data.dataremote.datasource -import org.sopt.dateroad.data.dataremote.model.response.ResponseCoursesDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseCoursesDto interface MyCourseRemoteDataSource { suspend fun getMyCourseEnroll(): ResponseCoursesDto diff --git a/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/ProfileRemoteDataSource.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/ProfileRemoteDataSource.kt new file mode 100644 index 00000000..16201e4b --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/ProfileRemoteDataSource.kt @@ -0,0 +1,7 @@ +package org.sopt.teamdateroad.data.dataremote.datasource + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseProfileDto + +interface ProfileRemoteDataSource { + suspend fun getProfile(): ResponseProfileDto +} diff --git a/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/TimelineRemoteDataSource.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/TimelineRemoteDataSource.kt new file mode 100644 index 00000000..31a22bf2 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/TimelineRemoteDataSource.kt @@ -0,0 +1,19 @@ +package org.sopt.teamdateroad.data.dataremote.datasource + +import org.sopt.teamdateroad.data.dataremote.model.request.RequestTimelineDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseEnrollTimelineDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseNearestTimelineDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseTimelineDetailDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseTimelinesDto + +interface TimelineRemoteDataSource { + suspend fun deleteTimeline(timelineId: Int) + + suspend fun getTimelineDetail(timelineId: Int): ResponseTimelineDetailDto + + suspend fun getTimelines(timelineTimeType: String): ResponseTimelinesDto + + suspend fun getNearestTimeline(): ResponseNearestTimelineDto + + suspend fun postTimeline(requestTimelineDto: RequestTimelineDto): ResponseEnrollTimelineDto +} diff --git a/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/UserPointRemoteDataSource.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/UserPointRemoteDataSource.kt new file mode 100644 index 00000000..3e6d5820 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasource/UserPointRemoteDataSource.kt @@ -0,0 +1,14 @@ +package org.sopt.teamdateroad.data.dataremote.datasource + +import org.sopt.teamdateroad.data.dataremote.model.request.RequestUsePointDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponsePointHistoryDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseUserPointDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseUserUsePointDto + +interface UserPointRemoteDataSource { + suspend fun getUserPoint(): ResponseUserPointDto + + suspend fun getPointHistory(): ResponsePointHistoryDto + + suspend fun postUsePoint(courseId: Int, requestUsePointDto: RequestUsePointDto): ResponseUserUsePointDto +} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/AdvertisementRemoteDataSourceImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/AdvertisementRemoteDataSourceImpl.kt similarity index 55% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/AdvertisementRemoteDataSourceImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/AdvertisementRemoteDataSourceImpl.kt index 90615fe7..27739c13 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/AdvertisementRemoteDataSourceImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/AdvertisementRemoteDataSourceImpl.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.data.dataremote.datasourceimpl +package org.sopt.teamdateroad.data.dataremote.datasourceimpl import javax.inject.Inject -import org.sopt.dateroad.data.dataremote.datasource.AdvertisementRemoteDataSource -import org.sopt.dateroad.data.dataremote.model.response.ResponseAdvertisementDetailDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseAdvertisementsDto -import org.sopt.dateroad.data.dataremote.service.AdvertisementService +import org.sopt.teamdateroad.data.dataremote.datasource.AdvertisementRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAdvertisementDetailDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAdvertisementsDto +import org.sopt.teamdateroad.data.dataremote.service.AdvertisementService class AdvertisementRemoteDataSourceImpl @Inject constructor( private val advertisementService: AdvertisementService diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/AuthRemoteDataSourceImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/AuthRemoteDataSourceImpl.kt similarity index 73% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/AuthRemoteDataSourceImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/AuthRemoteDataSourceImpl.kt index e36ddc3d..28c7ccca 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/AuthRemoteDataSourceImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/AuthRemoteDataSourceImpl.kt @@ -1,13 +1,13 @@ -package org.sopt.dateroad.data.dataremote.datasourceimpl +package org.sopt.teamdateroad.data.dataremote.datasourceimpl import javax.inject.Inject import okhttp3.MultipartBody import okhttp3.RequestBody -import org.sopt.dateroad.data.dataremote.datasource.AuthRemoteDataSource -import org.sopt.dateroad.data.dataremote.model.request.RequestSignInDto -import org.sopt.dateroad.data.dataremote.model.request.RequestWithdrawDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseAuthDto -import org.sopt.dateroad.data.dataremote.service.AuthService +import org.sopt.teamdateroad.data.dataremote.datasource.AuthRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.model.request.RequestSignInDto +import org.sopt.teamdateroad.data.dataremote.model.request.RequestWithdrawDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAuthDto +import org.sopt.teamdateroad.data.dataremote.service.AuthService class AuthRemoteDataSourceImpl @Inject constructor( private val authService: AuthService diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/CourseRemoteDataSourceImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/CourseRemoteDataSourceImpl.kt similarity index 73% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/CourseRemoteDataSourceImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/CourseRemoteDataSourceImpl.kt index a8d43b15..59d723a4 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/CourseRemoteDataSourceImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/CourseRemoteDataSourceImpl.kt @@ -1,13 +1,13 @@ -package org.sopt.dateroad.data.dataremote.datasourceimpl +package org.sopt.teamdateroad.data.dataremote.datasourceimpl import javax.inject.Inject import okhttp3.MultipartBody import okhttp3.RequestBody -import org.sopt.dateroad.data.dataremote.datasource.CourseRemoteDataSource -import org.sopt.dateroad.data.dataremote.model.response.ResponseCourseDetailDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseCoursesDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollCourseDto -import org.sopt.dateroad.data.dataremote.service.CourseService +import org.sopt.teamdateroad.data.dataremote.datasource.CourseRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseCourseDetailDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseCoursesDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseEnrollCourseDto +import org.sopt.teamdateroad.data.dataremote.service.CourseService class CourseRemoteDataSourceImpl @Inject constructor( private val courseService: CourseService diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/MyCourseRemoteDataSourceImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/MyCourseRemoteDataSourceImpl.kt similarity index 56% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/MyCourseRemoteDataSourceImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/MyCourseRemoteDataSourceImpl.kt index b8490c0d..cd6a29c9 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/MyCourseRemoteDataSourceImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/MyCourseRemoteDataSourceImpl.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.data.dataremote.datasourceimpl +package org.sopt.teamdateroad.data.dataremote.datasourceimpl import javax.inject.Inject -import org.sopt.dateroad.data.dataremote.datasource.MyCourseRemoteDataSource -import org.sopt.dateroad.data.dataremote.model.response.ResponseCoursesDto -import org.sopt.dateroad.data.dataremote.service.MyCourseService +import org.sopt.teamdateroad.data.dataremote.datasource.MyCourseRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseCoursesDto +import org.sopt.teamdateroad.data.dataremote.service.MyCourseService class MyCourseRemoteDataSourceImpl @Inject constructor( private val myCourseService: MyCourseService diff --git a/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/ProfileRemoteDataSourceImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/ProfileRemoteDataSourceImpl.kt new file mode 100644 index 00000000..d5b54011 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/ProfileRemoteDataSourceImpl.kt @@ -0,0 +1,14 @@ +package org.sopt.teamdateroad.data.dataremote.datasourceimpl + +import javax.inject.Inject +import org.sopt.teamdateroad.data.dataremote.datasource.ProfileRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseProfileDto +import org.sopt.teamdateroad.data.dataremote.service.ProfileService + +class ProfileRemoteDataSourceImpl @Inject constructor( + private val profileService: ProfileService +) : ProfileRemoteDataSource { + + override suspend fun getProfile(): ResponseProfileDto = + profileService.getProfile() +} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/TimelineRemoteDataSourceImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/TimelineRemoteDataSourceImpl.kt similarity index 58% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/TimelineRemoteDataSourceImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/TimelineRemoteDataSourceImpl.kt index e98ab11e..e2fae4b6 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/TimelineRemoteDataSourceImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/TimelineRemoteDataSourceImpl.kt @@ -1,13 +1,13 @@ -package org.sopt.dateroad.data.dataremote.datasourceimpl +package org.sopt.teamdateroad.data.dataremote.datasourceimpl import javax.inject.Inject -import org.sopt.dateroad.data.dataremote.datasource.TimelineRemoteDataSource -import org.sopt.dateroad.data.dataremote.model.request.RequestTimelineDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollTimelineDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseNearestTimelineDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelineDetailDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelinesDto -import org.sopt.dateroad.data.dataremote.service.TimelineService +import org.sopt.teamdateroad.data.dataremote.datasource.TimelineRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.model.request.RequestTimelineDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseEnrollTimelineDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseNearestTimelineDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseTimelineDetailDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseTimelinesDto +import org.sopt.teamdateroad.data.dataremote.service.TimelineService class TimelineRemoteDataSourceImpl @Inject constructor( private val timelineService: TimelineService diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/UserPointRemoteDataSourceImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/UserPointRemoteDataSourceImpl.kt similarity index 52% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/UserPointRemoteDataSourceImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/UserPointRemoteDataSourceImpl.kt index 03c877d8..4b877b50 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/datasourceimpl/UserPointRemoteDataSourceImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/datasourceimpl/UserPointRemoteDataSourceImpl.kt @@ -1,12 +1,12 @@ -package org.sopt.dateroad.data.dataremote.datasourceimpl +package org.sopt.teamdateroad.data.dataremote.datasourceimpl import javax.inject.Inject -import org.sopt.dateroad.data.dataremote.datasource.UserPointRemoteDataSource -import org.sopt.dateroad.data.dataremote.model.request.RequestUsePointDto -import org.sopt.dateroad.data.dataremote.model.response.ResponsePointHistoryDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseUserPointDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseUserUsePointDto -import org.sopt.dateroad.data.dataremote.service.UserPointService +import org.sopt.teamdateroad.data.dataremote.datasource.UserPointRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.model.request.RequestUsePointDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponsePointHistoryDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseUserPointDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseUserUsePointDto +import org.sopt.teamdateroad.data.dataremote.service.UserPointService class UserPointRemoteDataSourceImpl @Inject constructor( private val userPointService: UserPointService diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/interceptor/AuthInterceptor.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/interceptor/AuthInterceptor.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/interceptor/AuthInterceptor.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/interceptor/AuthInterceptor.kt index 6aeb44c3..3a45f110 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/interceptor/AuthInterceptor.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/interceptor/AuthInterceptor.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.interceptor +package org.sopt.teamdateroad.data.dataremote.interceptor import android.app.Application import android.content.Intent @@ -14,13 +14,13 @@ import okhttp3.Interceptor import okhttp3.Request import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.Response -import org.sopt.dateroad.BuildConfig -import org.sopt.dateroad.data.datalocal.datasource.UserInfoLocalDataSource -import org.sopt.dateroad.data.dataremote.model.response.ResponseRefreshTokenDto -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.API -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.REISSUE -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.USERS -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.VERSION +import org.sopt.teamdateroad.BuildConfig +import org.sopt.teamdateroad.data.datalocal.datasource.UserInfoLocalDataSource +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseRefreshTokenDto +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.API +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.REISSUE +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.USERS +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.VERSION class AuthInterceptor @Inject constructor( private val json: Json, diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestCourseDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestCourseDto.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestCourseDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestCourseDto.kt index 9202191a..ce858231 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestCourseDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestCourseDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.request +package org.sopt.teamdateroad.data.dataremote.model.request import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestPlaceDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestPlaceDto.kt similarity index 82% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestPlaceDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestPlaceDto.kt index 16d48c8a..4c57c7a5 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestPlaceDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestPlaceDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.request +package org.sopt.teamdateroad.data.dataremote.model.request import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestSignInDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestSignInDto.kt similarity index 74% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestSignInDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestSignInDto.kt index 44e5c7bb..c8b44113 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestSignInDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestSignInDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.request +package org.sopt.teamdateroad.data.dataremote.model.request import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestTagDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestTagDto.kt similarity index 73% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestTagDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestTagDto.kt index 096d865e..5ee4c8ca 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestTagDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestTagDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.request +package org.sopt.teamdateroad.data.dataremote.model.request import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestTagsDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestTagsDto.kt similarity index 74% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestTagsDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestTagsDto.kt index d3fb8107..a4df3cf9 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestTagsDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestTagsDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.request +package org.sopt.teamdateroad.data.dataremote.model.request import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestTimelineDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestTimelineDto.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestTimelineDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestTimelineDto.kt index 8b95c217..e284785c 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestTimelineDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestTimelineDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.request +package org.sopt.teamdateroad.data.dataremote.model.request import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestUsePointDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestUsePointDto.kt similarity index 82% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestUsePointDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestUsePointDto.kt index 2f88c19d..86261727 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestUsePointDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestUsePointDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.request +package org.sopt.teamdateroad.data.dataremote.model.request import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestUserSignUpInfoDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestUserSignUpInfoDto.kt similarity index 79% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestUserSignUpInfoDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestUserSignUpInfoDto.kt index 0284125c..3da582e7 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestUserSignUpInfoDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestUserSignUpInfoDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.request +package org.sopt.teamdateroad.data.dataremote.model.request import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestWithdrawDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestWithdrawDto.kt similarity index 76% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestWithdrawDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestWithdrawDto.kt index ff9d2c29..68c0b65a 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/request/RequestWithdrawDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/request/RequestWithdrawDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.request +package org.sopt.teamdateroad.data.dataremote.model.request import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseAdvertisementDetailDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseAdvertisementDetailDto.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseAdvertisementDetailDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseAdvertisementDetailDto.kt index f8334742..cb159969 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseAdvertisementDetailDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseAdvertisementDetailDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseAdvertisementDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseAdvertisementDto.kt similarity index 80% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseAdvertisementDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseAdvertisementDto.kt index f5ac2ca0..d681e1c9 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseAdvertisementDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseAdvertisementDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseAdvertisementsDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseAdvertisementsDto.kt similarity index 79% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseAdvertisementsDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseAdvertisementsDto.kt index b416efb9..7b4d9d83 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseAdvertisementsDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseAdvertisementsDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseAuthDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseAuthDto.kt similarity index 82% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseAuthDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseAuthDto.kt index 23eb755d..8dc5fc9b 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseAuthDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseAuthDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseCourseDetailDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseCourseDetailDto.kt similarity index 94% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseCourseDetailDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseCourseDetailDto.kt index acc67424..947b1358 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseCourseDetailDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseCourseDetailDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseCourseDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseCourseDto.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseCourseDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseCourseDto.kt index 37ab0d23..1c17fcaa 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseCourseDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseCourseDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseCoursesDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseCoursesDto.kt similarity index 76% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseCoursesDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseCoursesDto.kt index 3772ef75..47fc5506 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseCoursesDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseCoursesDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollCourseDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseEnrollCourseDto.kt similarity index 80% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollCourseDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseEnrollCourseDto.kt index e58b9c3c..b987723d 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollCourseDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseEnrollCourseDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollTimelineDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseEnrollTimelineDto.kt similarity index 76% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollTimelineDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseEnrollTimelineDto.kt index 8779af0a..5edd522f 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseEnrollTimelineDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseEnrollTimelineDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseImageDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseImageDto.kt similarity index 79% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseImageDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseImageDto.kt index 8499aa7b..81259252 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseImageDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseImageDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseNearestTimelineDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseNearestTimelineDto.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseNearestTimelineDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseNearestTimelineDto.kt index 1955fffd..1d876d46 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseNearestTimelineDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseNearestTimelineDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponsePlaceDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponsePlaceDto.kt similarity index 82% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponsePlaceDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponsePlaceDto.kt index 06a6a601..5a9e437e 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponsePlaceDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponsePlaceDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponsePointDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponsePointDto.kt similarity index 82% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponsePointDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponsePointDto.kt index afcb8a1e..96dbf272 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponsePointDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponsePointDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponsePointHistoryDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponsePointHistoryDto.kt similarity index 80% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponsePointHistoryDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponsePointHistoryDto.kt index a54bbe2a..c847febe 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponsePointHistoryDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponsePointHistoryDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponsePointsDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponsePointsDto.kt similarity index 76% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponsePointsDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponsePointsDto.kt index 164d4c9c..bca9d042 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponsePointsDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponsePointsDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseProfileDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseProfileDto.kt similarity index 84% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseProfileDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseProfileDto.kt index ce9b8b89..96e89679 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseProfileDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseProfileDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseRefreshTokenDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseRefreshTokenDto.kt similarity index 82% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseRefreshTokenDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseRefreshTokenDto.kt index df2d33d6..b154ae76 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseRefreshTokenDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseRefreshTokenDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseTagDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseTagDto.kt similarity index 73% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseTagDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseTagDto.kt index 9a0f4788..1316bccd 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseTagDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseTagDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseTimelineDetailDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseTimelineDetailDto.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseTimelineDetailDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseTimelineDetailDto.kt index 1bcb40f9..f5305c6f 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseTimelineDetailDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseTimelineDetailDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseTimelineDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseTimelineDto.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseTimelineDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseTimelineDto.kt index 7f64a8a1..d277c241 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseTimelineDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseTimelineDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseTimelinesDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseTimelinesDto.kt similarity index 76% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseTimelinesDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseTimelinesDto.kt index bd9cc434..a92ed3ff 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseTimelinesDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseTimelinesDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseUserPointDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseUserPointDto.kt similarity index 81% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseUserPointDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseUserPointDto.kt index b66e1937..1480f3e2 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseUserPointDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseUserPointDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseUserUsePointDto.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseUserUsePointDto.kt similarity index 84% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseUserUsePointDto.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseUserUsePointDto.kt index c67218c1..9ad23726 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/model/response/ResponseUserUsePointDto.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/model/response/ResponseUserUsePointDto.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.model.response +package org.sopt.teamdateroad.data.dataremote.model.response import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable diff --git a/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/AdvertisementService.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/AdvertisementService.kt new file mode 100644 index 00000000..5418be91 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/AdvertisementService.kt @@ -0,0 +1,20 @@ +package org.sopt.teamdateroad.data.dataremote.service + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAdvertisementDetailDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAdvertisementsDto +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.ADVERTISEMENTS +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.ADVERTISEMENT_ID +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.API +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.VERSION +import retrofit2.http.GET +import retrofit2.http.Path + +interface AdvertisementService { + @GET("$API/$VERSION/$ADVERTISEMENTS/{$ADVERTISEMENT_ID}") + suspend fun getAdvertisementDetail( + @Path(ADVERTISEMENT_ID) advertisementId: Int + ): ResponseAdvertisementDetailDto + + @GET("$API/$VERSION/$ADVERTISEMENTS") + suspend fun getHomeAdvertisements(): ResponseAdvertisementsDto +} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/AuthService.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/AuthService.kt similarity index 51% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/service/AuthService.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/AuthService.kt index 684287d2..be6db09c 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/AuthService.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/AuthService.kt @@ -1,24 +1,24 @@ -package org.sopt.dateroad.data.dataremote.service +package org.sopt.teamdateroad.data.dataremote.service import okhttp3.MultipartBody import okhttp3.RequestBody -import org.sopt.dateroad.data.dataremote.model.request.RequestSignInDto -import org.sopt.dateroad.data.dataremote.model.request.RequestWithdrawDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseAuthDto -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.API -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.CHECK -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.DELETE_METHOD -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.IS_DEFAULT_IMAGE -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.NAME -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.SIGNUP -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.SIGN_IN -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.SIGN_OUT -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.TAG -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.TAGS -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.USERS -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.USER_SIGN_UP_DATA -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.VERSION -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.WITHDRAW +import org.sopt.teamdateroad.data.dataremote.model.request.RequestSignInDto +import org.sopt.teamdateroad.data.dataremote.model.request.RequestWithdrawDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAuthDto +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.API +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.CHECK +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.DELETE_METHOD +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.IS_DEFAULT_IMAGE +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.NAME +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.SIGNUP +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.SIGN_IN +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.SIGN_OUT +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.TAG +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.TAGS +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.USERS +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.USER_SIGN_UP_DATA +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.VERSION +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.WITHDRAW import retrofit2.Response import retrofit2.http.Body import retrofit2.http.DELETE diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/CourseService.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/CourseService.kt similarity index 54% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/service/CourseService.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/CourseService.kt index 8cdc4ccb..f6379e75 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/service/CourseService.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/CourseService.kt @@ -1,23 +1,23 @@ -package org.sopt.dateroad.data.dataremote.service +package org.sopt.teamdateroad.data.dataremote.service import okhttp3.MultipartBody import okhttp3.RequestBody -import org.sopt.dateroad.data.dataremote.model.response.ResponseCourseDetailDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseCoursesDto -import org.sopt.dateroad.data.dataremote.model.response.ResponseEnrollCourseDto -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.API -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.CITY -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.COST -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.COUNTRY -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.COURSE -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.COURSES -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.COURSE_ID -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.LIKES -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.PLACES -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.SORT -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.SORT_BY -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.TAGS -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.VERSION +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseCourseDetailDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseCoursesDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseEnrollCourseDto +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.API +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.CITY +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.COST +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.COUNTRY +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.COURSE +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.COURSES +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.COURSE_ID +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.LIKES +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.PLACES +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.SORT +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.SORT_BY +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.TAGS +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.VERSION import retrofit2.http.DELETE import retrofit2.http.GET import retrofit2.http.Multipart diff --git a/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/MyCourseService.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/MyCourseService.kt new file mode 100644 index 00000000..a274fec2 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/MyCourseService.kt @@ -0,0 +1,17 @@ +package org.sopt.teamdateroad.data.dataremote.service + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseCoursesDto +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.API +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.COURSES +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.DATE_ACCESS +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.USERS +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.VERSION +import retrofit2.http.GET + +interface MyCourseService { + @GET("$API/$VERSION/$COURSES/$USERS") + suspend fun getMyCourseEnroll(): ResponseCoursesDto + + @GET("$API/$VERSION/$COURSES/$DATE_ACCESS") + suspend fun getMyCourseRead(): ResponseCoursesDto +} diff --git a/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/ProfileService.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/ProfileService.kt new file mode 100644 index 00000000..c84ac6e3 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/ProfileService.kt @@ -0,0 +1,12 @@ +package org.sopt.teamdateroad.data.dataremote.service + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseProfileDto +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.API +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.USERS +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.VERSION +import retrofit2.http.GET + +interface ProfileService { + @GET("$API/$VERSION/$USERS") + suspend fun getProfile(): ResponseProfileDto +} diff --git a/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/TimelineService.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/TimelineService.kt new file mode 100644 index 00000000..904283c2 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/TimelineService.kt @@ -0,0 +1,44 @@ +package org.sopt.teamdateroad.data.dataremote.service + +import org.sopt.teamdateroad.data.dataremote.model.request.RequestTimelineDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseEnrollTimelineDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseNearestTimelineDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseTimelineDetailDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseTimelinesDto +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.API +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.DATES +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.DATE_ID +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.NEAREST +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.TIME +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.VERSION +import retrofit2.http.Body +import retrofit2.http.DELETE +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.Path +import retrofit2.http.Query + +interface TimelineService { + @DELETE("$API/$VERSION/$DATES/{$DATE_ID}") + suspend fun deleteTimeline( + @Path(DATE_ID) timelineId: Int + ) + + @GET("$API/$VERSION/$DATES/{$DATE_ID}") + suspend fun getTimelineDetail( + @Path(DATE_ID) timelineId: Int + ): ResponseTimelineDetailDto + + @GET("$API/$VERSION/$DATES") + suspend fun getTimelines( + @Query(TIME) timelineTimeType: String + ): ResponseTimelinesDto + + @GET("$API/$VERSION/$DATES/$NEAREST") + suspend fun getNearestTimeline(): ResponseNearestTimelineDto + + @POST("$API/$VERSION/$DATES") + suspend fun postTimeline( + @Body requestTimelineDto: RequestTimelineDto + ): ResponseEnrollTimelineDto +} diff --git a/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/UserPointService.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/UserPointService.kt new file mode 100644 index 00000000..cb252257 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/service/UserPointService.kt @@ -0,0 +1,32 @@ +package org.sopt.teamdateroad.data.dataremote.service + +import org.sopt.teamdateroad.data.dataremote.model.request.RequestUsePointDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponsePointHistoryDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseUserPointDto +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseUserUsePointDto +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.API +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.COURSES +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.COURSE_ID +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.DATE_ACCESS +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.MAIN +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.POINTS +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.USERS +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.VERSION +import retrofit2.http.Body +import retrofit2.http.GET +import retrofit2.http.POST +import retrofit2.http.Path + +interface UserPointService { + @GET("$API/$VERSION/$USERS/$MAIN") + suspend fun getUserPoint(): ResponseUserPointDto + + @GET("$API/$VERSION/$POINTS") + suspend fun getPointHistory(): ResponsePointHistoryDto + + @POST("$API/$VERSION/$COURSES/{$COURSE_ID}/$DATE_ACCESS") + suspend fun postUsePoint( + @Path(COURSE_ID) courseId: Int, + @Body requestUsePointDto: RequestUsePointDto + ): ResponseUserUsePointDto +} diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/util/Constraints.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/util/Constraints.kt similarity index 97% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/util/Constraints.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/util/Constraints.kt index ab0bbb38..5e2f2270 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/util/Constraints.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/util/Constraints.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.util +package org.sopt.teamdateroad.data.dataremote.util object ApiConstraints { const val PROFILE_FORM_DATA_IMAGE = "image" diff --git a/app/src/main/java/org/sopt/dateroad/data/dataremote/util/ContentUriRequestBody.kt b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/util/ContentUriRequestBody.kt similarity index 96% rename from app/src/main/java/org/sopt/dateroad/data/dataremote/util/ContentUriRequestBody.kt rename to app/src/main/java/org/sopt/teamdateroad/data/dataremote/util/ContentUriRequestBody.kt index 80774f9a..5333f411 100644 --- a/app/src/main/java/org/sopt/dateroad/data/dataremote/util/ContentUriRequestBody.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/dataremote/util/ContentUriRequestBody.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.dataremote.util +package org.sopt.teamdateroad.data.dataremote.util import android.content.ContentResolver import android.net.Uri diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/AreaMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/AreaMapper.kt similarity index 50% rename from app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/AreaMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/AreaMapper.kt index 74e51a82..47741b49 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/AreaMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/AreaMapper.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.data.mapper.toEntity +package org.sopt.teamdateroad.data.mapper.toEntity -import org.sopt.dateroad.domain.type.GyeonggiAreaType -import org.sopt.dateroad.domain.type.GyeonggiAreaType.Companion.fromTitleToGyeonggiAreaType -import org.sopt.dateroad.domain.type.IncheonAreaType -import org.sopt.dateroad.domain.type.IncheonAreaType.Companion.fromTitleToIncheonAreaType -import org.sopt.dateroad.domain.type.SeoulAreaType -import org.sopt.dateroad.domain.type.SeoulAreaType.Companion.fromTitleToSeoulAreaType +import org.sopt.teamdateroad.domain.type.GyeonggiAreaType +import org.sopt.teamdateroad.domain.type.GyeonggiAreaType.Companion.fromTitleToGyeonggiAreaType +import org.sopt.teamdateroad.domain.type.IncheonAreaType +import org.sopt.teamdateroad.domain.type.IncheonAreaType.Companion.fromTitleToIncheonAreaType +import org.sopt.teamdateroad.domain.type.SeoulAreaType +import org.sopt.teamdateroad.domain.type.SeoulAreaType.Companion.fromTitleToSeoulAreaType fun Any?.toAreaTitle(): String = when (this) { is SeoulAreaType -> this.title diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/CostMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/CostMapper.kt similarity index 52% rename from app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/CostMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/CostMapper.kt index f58dfdd7..2ef10da3 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/CostMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/CostMapper.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.data.mapper.toEntity +package org.sopt.teamdateroad.data.mapper.toEntity import java.text.NumberFormat import java.util.Locale -import org.sopt.dateroad.data.dataremote.util.Cost -import org.sopt.dateroad.data.dataremote.util.TotalCostZero.ZERO_COST +import org.sopt.teamdateroad.data.dataremote.util.Cost +import org.sopt.teamdateroad.data.dataremote.util.TotalCostZero.ZERO_COST fun Int.toCost(): String = if (this == 0) { ZERO_COST diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/CourseDetailMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/CourseDetailMapper.kt similarity index 59% rename from app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/CourseDetailMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/CourseDetailMapper.kt index 6e9b5e2f..a7997253 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/CourseDetailMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/CourseDetailMapper.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.data.mapper.toEntity +package org.sopt.teamdateroad.data.mapper.toEntity -import org.sopt.dateroad.domain.model.CourseDetail -import org.sopt.dateroad.domain.model.Enroll +import org.sopt.teamdateroad.domain.model.CourseDetail +import org.sopt.teamdateroad.domain.model.Enroll fun CourseDetail.toEnroll() = Enroll( title = this.title, diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/DurationMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/DurationMapper.kt similarity index 55% rename from app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/DurationMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/DurationMapper.kt index 42927949..87bd53f9 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/DurationMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/DurationMapper.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.data.mapper.toEntity +package org.sopt.teamdateroad.data.mapper.toEntity -import org.sopt.dateroad.data.dataremote.util.Duration +import org.sopt.teamdateroad.data.dataremote.util.Duration fun Float.toDuration(): String = if (this % 1.0 == 0.0) { "%.0f".format(this) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/LikeMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/LikeMapper.kt similarity index 50% rename from app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/LikeMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/LikeMapper.kt index cbff53cb..3d6cc5fb 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/LikeMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/LikeMapper.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.data.mapper.toEntity +package org.sopt.teamdateroad.data.mapper.toEntity -import org.sopt.dateroad.data.dataremote.util.Like +import org.sopt.teamdateroad.data.dataremote.util.Like fun Int.toLike(): String = when { this < Like.THRESHOLD -> this.toString() diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/PointMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/PointMapper.kt similarity index 64% rename from app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/PointMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/PointMapper.kt index 89082d36..71c3db3e 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/PointMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/PointMapper.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.data.mapper.toEntity +package org.sopt.teamdateroad.data.mapper.toEntity -import org.sopt.dateroad.data.dataremote.util.Point +import org.sopt.teamdateroad.data.dataremote.util.Point fun Int.toPoint(): String = this.toString() + Point.POINT diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/RegionMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/RegionMapper.kt new file mode 100644 index 00000000..709052f6 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/RegionMapper.kt @@ -0,0 +1,16 @@ +package org.sopt.teamdateroad.data.mapper.toEntity + +import org.sopt.teamdateroad.domain.type.GyeonggiAreaType.Companion.fromTitleToGyeonggiAreaType +import org.sopt.teamdateroad.domain.type.IncheonAreaType.Companion.fromTitleToIncheonAreaType +import org.sopt.teamdateroad.domain.type.RegionType +import org.sopt.teamdateroad.domain.type.SeoulAreaType.Companion.fromTitleToSeoulAreaType + +fun String.toRegionType(): RegionType? = when { + this.fromTitleToSeoulAreaType() != null -> RegionType.SEOUL + + this.fromTitleToGyeonggiAreaType() != null -> RegionType.GYEONGGI + + this.fromTitleToIncheonAreaType() != null -> RegionType.INCHEON + + else -> null +} diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/TimelineDetailMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/TimelineDetailMapper.kt similarity index 63% rename from app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/TimelineDetailMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/TimelineDetailMapper.kt index 87ddadab..3cc4e5b8 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/TimelineDetailMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/TimelineDetailMapper.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.data.mapper.toEntity +package org.sopt.teamdateroad.data.mapper.toEntity -import org.sopt.dateroad.domain.model.Enroll -import org.sopt.dateroad.domain.model.TimelineDetail +import org.sopt.teamdateroad.domain.model.Enroll +import org.sopt.teamdateroad.domain.model.TimelineDetail fun TimelineDetail.toEnroll() = Enroll( title = this.title, diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/TimelineMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/TimelineMapper.kt similarity index 85% rename from app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/TimelineMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/TimelineMapper.kt index fa8d1032..6ada6d3d 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/toEntity/TimelineMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/toEntity/TimelineMapper.kt @@ -1,12 +1,12 @@ -package org.sopt.dateroad.data.mapper.toEntity +package org.sopt.teamdateroad.data.mapper.toEntity import java.text.SimpleDateFormat import java.time.LocalDate import java.time.format.DateTimeFormatter import java.util.Locale -import org.sopt.dateroad.data.dataremote.model.response.ResponseNearestTimelineDto -import org.sopt.dateroad.data.dataremote.util.Date -import org.sopt.dateroad.domain.type.MonthType +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseNearestTimelineDto +import org.sopt.teamdateroad.data.dataremote.util.Date +import org.sopt.teamdateroad.domain.type.MonthType fun String.toCourseDetailDate(): String = SimpleDateFormat(Date.INPUT_FORMAT, Locale.getDefault()).parse(this)?.let { SimpleDateFormat(Date.COURSE_DETAIL_OUTPUT_FORMAT, Locale.getDefault()).format(it) }.orEmpty() diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/EnrollMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/EnrollMapper.kt similarity index 67% rename from app/src/main/java/org/sopt/dateroad/data/mapper/todata/EnrollMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/EnrollMapper.kt index 5ff7ff0b..e5577fe1 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todata/EnrollMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/EnrollMapper.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.data.mapper.todata +package org.sopt.teamdateroad.data.mapper.todata -import org.sopt.dateroad.data.dataremote.model.request.RequestCourseDto -import org.sopt.dateroad.data.dataremote.model.request.RequestTimelineDto -import org.sopt.dateroad.data.mapper.toEntity.toAreaTitle -import org.sopt.dateroad.domain.model.Enroll +import org.sopt.teamdateroad.data.dataremote.model.request.RequestCourseDto +import org.sopt.teamdateroad.data.dataremote.model.request.RequestTimelineDto +import org.sopt.teamdateroad.data.mapper.toEntity.toAreaTitle +import org.sopt.teamdateroad.domain.model.Enroll fun Enroll.toTimelineData(): RequestTimelineDto = RequestTimelineDto( title = this.title, diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/PlaceMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/PlaceMapper.kt new file mode 100644 index 00000000..01b76352 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/PlaceMapper.kt @@ -0,0 +1,11 @@ +package org.sopt.teamdateroad.data.mapper.todata + +import org.sopt.teamdateroad.data.dataremote.model.request.RequestPlaceDto +import org.sopt.teamdateroad.data.dataremote.util.Duration.DURATION +import org.sopt.teamdateroad.domain.model.Place + +fun Place.toData(sequence: Int): RequestPlaceDto = RequestPlaceDto( + sequence = sequence, + title = this.title, + duration = duration.substringBefore(DURATION).toFloat() +) diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/ProfileMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/ProfileMapper.kt new file mode 100644 index 00000000..d8a550ec --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/ProfileMapper.kt @@ -0,0 +1,10 @@ +package org.sopt.teamdateroad.data.mapper.todata + +import org.sopt.teamdateroad.domain.model.EditProfile +import org.sopt.teamdateroad.domain.model.Profile + +fun Profile.toEditProfile(): EditProfile = EditProfile( + name = this.name, + tags = this.tag, + image = this.imageUrl +) diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/SignInMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/SignInMapper.kt new file mode 100644 index 00000000..f0d88a3b --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/SignInMapper.kt @@ -0,0 +1,8 @@ +package org.sopt.teamdateroad.data.mapper.todata + +import org.sopt.teamdateroad.data.dataremote.model.request.RequestSignInDto +import org.sopt.teamdateroad.domain.model.SignIn + +fun SignIn.toData(): RequestSignInDto = RequestSignInDto( + platform = this.platform +) diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/TagMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/TagMapper.kt new file mode 100644 index 00000000..81bc2e25 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/TagMapper.kt @@ -0,0 +1,5 @@ +package org.sopt.teamdateroad.data.mapper.todata + +import org.sopt.teamdateroad.data.dataremote.model.request.RequestTagDto + +fun String.toData() = RequestTagDto(tag = this) diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/TagsMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/TagsMapper.kt new file mode 100644 index 00000000..c874a739 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/TagsMapper.kt @@ -0,0 +1,7 @@ +package org.sopt.teamdateroad.data.mapper.todata + +import org.sopt.teamdateroad.data.dataremote.model.request.RequestTagsDto + +fun List.toData(): RequestTagsDto = RequestTagsDto( + tag = this +) diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/UsePointMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/UsePointMapper.kt new file mode 100644 index 00000000..cf08c72f --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/UsePointMapper.kt @@ -0,0 +1,10 @@ +package org.sopt.teamdateroad.data.mapper.todata + +import org.sopt.teamdateroad.data.dataremote.model.request.RequestUsePointDto +import org.sopt.teamdateroad.domain.model.UsePoint + +fun UsePoint.toData(): RequestUsePointDto = RequestUsePointDto( + point = this.point, + type = this.type, + description = this.description +) diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/UserSignUpInfoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/UserSignUpInfoMapper.kt new file mode 100644 index 00000000..7773d792 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todata/UserSignUpInfoMapper.kt @@ -0,0 +1,9 @@ +package org.sopt.teamdateroad.data.mapper.todata + +import org.sopt.teamdateroad.data.dataremote.model.request.RequestUserSignUpInfoDto +import org.sopt.teamdateroad.domain.model.UserSignUpInfo + +fun UserSignUpInfo.toData(): RequestUserSignUpInfoDto = RequestUserSignUpInfoDto( + name = this.name, + platform = this.platform +) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAdvertisementDetailDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAdvertisementDetailDtoMapper.kt similarity index 53% rename from app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAdvertisementDetailDtoMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAdvertisementDetailDtoMapper.kt index a0822e48..02c50ef1 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseAdvertisementDetailDtoMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAdvertisementDetailDtoMapper.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.data.mapper.todomain +package org.sopt.teamdateroad.data.mapper.todomain -import org.sopt.dateroad.data.dataremote.model.response.ResponseAdvertisementDetailDto -import org.sopt.dateroad.data.mapper.toEntity.toAdvertisementDetailDate -import org.sopt.dateroad.domain.model.AdvertisementDetail -import org.sopt.dateroad.domain.type.AdvertisementTagType.Companion.toAdvertisementTagTitle +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAdvertisementDetailDto +import org.sopt.teamdateroad.data.mapper.toEntity.toAdvertisementDetailDate +import org.sopt.teamdateroad.domain.model.AdvertisementDetail +import org.sopt.teamdateroad.domain.type.AdvertisementTagType.Companion.toAdvertisementTagTitle fun ResponseAdvertisementDetailDto.toDomain(): AdvertisementDetail = AdvertisementDetail( images = this.images.sortedBy { responseImageDto -> responseImageDto.sequence }.map { responseImageDto -> responseImageDto.imageUrl }, diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAdvertisementDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAdvertisementDtoMapper.kt new file mode 100644 index 00000000..84eac532 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAdvertisementDtoMapper.kt @@ -0,0 +1,9 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAdvertisementDto +import org.sopt.teamdateroad.domain.model.Advertisement + +fun ResponseAdvertisementDto.toDomain(): Advertisement = Advertisement( + advertisementId = this.advertisementId, + thumbnail = this.thumbnail +) diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAdvertisementsDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAdvertisementsDtoMapper.kt new file mode 100644 index 00000000..822892f8 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAdvertisementsDtoMapper.kt @@ -0,0 +1,6 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAdvertisementsDto +import org.sopt.teamdateroad.domain.model.Advertisement + +fun ResponseAdvertisementsDto.toDomain(): List = this.advertisements.map { responseAdvertisementDto -> responseAdvertisementDto.toDomain() } diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAuthDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAuthDtoMapper.kt new file mode 100644 index 00000000..9e942840 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseAuthDtoMapper.kt @@ -0,0 +1,9 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseAuthDto +import org.sopt.teamdateroad.domain.model.Auth + +fun ResponseAuthDto.toDomain(): Auth = Auth( + accessToken = this.accessToken, + refreshToken = this.refreshToken +) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseCourseDetailDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseCourseDetailDtoMapper.kt similarity index 64% rename from app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseCourseDetailDtoMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseCourseDetailDtoMapper.kt index 0563ead3..88c78f96 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseCourseDetailDtoMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseCourseDetailDtoMapper.kt @@ -1,12 +1,12 @@ -package org.sopt.dateroad.data.mapper.todomain +package org.sopt.teamdateroad.data.mapper.todomain -import org.sopt.dateroad.data.dataremote.model.response.ResponseCourseDetailDto -import org.sopt.dateroad.data.mapper.toEntity.toCost -import org.sopt.dateroad.data.mapper.toEntity.toCourseDetailDate -import org.sopt.dateroad.data.mapper.toEntity.toDuration -import org.sopt.dateroad.data.mapper.toEntity.toStartAtString -import org.sopt.dateroad.domain.model.CourseDetail -import org.sopt.dateroad.domain.type.MoneyTagType.Companion.toCostTagTitle +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseCourseDetailDto +import org.sopt.teamdateroad.data.mapper.toEntity.toCost +import org.sopt.teamdateroad.data.mapper.toEntity.toCourseDetailDate +import org.sopt.teamdateroad.data.mapper.toEntity.toDuration +import org.sopt.teamdateroad.data.mapper.toEntity.toStartAtString +import org.sopt.teamdateroad.domain.model.CourseDetail +import org.sopt.teamdateroad.domain.type.MoneyTagType.Companion.toCostTagTitle fun ResponseCourseDetailDto.toDomain(): CourseDetail = CourseDetail( courseId = this.courseId, diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseCourseDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseCourseDtoMapper.kt new file mode 100644 index 00000000..cf983d78 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseCourseDtoMapper.kt @@ -0,0 +1,17 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseCourseDto +import org.sopt.teamdateroad.data.mapper.toEntity.toDuration +import org.sopt.teamdateroad.data.mapper.toEntity.toLike +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.domain.type.MoneyTagType.Companion.toCostTagTitle + +fun ResponseCourseDto.toDomain(): Course = Course( + courseId = this.courseId, + thumbnail = this.thumbnail, + title = this.title, + city = this.city, + cost = this.cost.toCostTagTitle(), + duration = this.duration.toDuration(), + like = this.like.toLike() +) diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseCoursesDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseCoursesDtoMapper.kt new file mode 100644 index 00000000..7eb532bb --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseCoursesDtoMapper.kt @@ -0,0 +1,6 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseCoursesDto +import org.sopt.teamdateroad.domain.model.Course + +fun ResponseCoursesDto.toDomain(): List = this.courses.map { course -> course.toDomain() } diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseEnrollCourseDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseEnrollCourseDtoMapper.kt new file mode 100644 index 00000000..f56595ee --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseEnrollCourseDtoMapper.kt @@ -0,0 +1,9 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseEnrollCourseDto +import org.sopt.teamdateroad.domain.model.EnrollCourseResult + +fun ResponseEnrollCourseDto.toDomain(): EnrollCourseResult = EnrollCourseResult( + userPoint = this.userPoint, + userCourseCount = this.userCourseCount +) diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseEnrollTimelineDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseEnrollTimelineDtoMapper.kt new file mode 100644 index 00000000..48a9cdc1 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseEnrollTimelineDtoMapper.kt @@ -0,0 +1,8 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseEnrollTimelineDto +import org.sopt.teamdateroad.domain.model.EnrollTimelineResult + +fun ResponseEnrollTimelineDto.toDomain(): EnrollTimelineResult = EnrollTimelineResult( + dateScheduleNum = this.dateScheduleNum +) diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseNearestTimelineDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseNearestTimelineDtoMapper.kt new file mode 100644 index 00000000..f4c35f26 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseNearestTimelineDtoMapper.kt @@ -0,0 +1,15 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseNearestTimelineDto +import org.sopt.teamdateroad.data.mapper.toEntity.toDDayString +import org.sopt.teamdateroad.data.mapper.toEntity.toFormattedDate +import org.sopt.teamdateroad.data.mapper.toEntity.toStartAtString +import org.sopt.teamdateroad.domain.model.NearestTimeline + +fun ResponseNearestTimelineDto.toDomain(): NearestTimeline = NearestTimeline( + timelineId = this.timelineId, + dDay = this.dDay.toDDayString(), + dateName = this.dateName, + date = toFormattedDate(), + startAt = this.startAt.toStartAtString() +) diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePlaceDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePlaceDtoMapper.kt new file mode 100644 index 00000000..5f4bac9d --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePlaceDtoMapper.kt @@ -0,0 +1,10 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponsePlaceDto +import org.sopt.teamdateroad.data.mapper.toEntity.toDuration +import org.sopt.teamdateroad.domain.model.Place + +fun ResponsePlaceDto.toDomain() = Place( + title = this.title, + duration = this.duration.toDuration() +) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePointDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePointDtoMapper.kt similarity index 51% rename from app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePointDtoMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePointDtoMapper.kt index e074ef98..b3bc6f22 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePointDtoMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePointDtoMapper.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.data.mapper.todomain +package org.sopt.teamdateroad.data.mapper.todomain -import org.sopt.dateroad.data.dataremote.model.response.ResponsePointDto -import org.sopt.dateroad.data.mapper.toEntity.toGainedPoint -import org.sopt.dateroad.data.mapper.toEntity.toUsedPoint -import org.sopt.dateroad.domain.model.Point +import org.sopt.teamdateroad.data.dataremote.model.response.ResponsePointDto +import org.sopt.teamdateroad.data.mapper.toEntity.toGainedPoint +import org.sopt.teamdateroad.data.mapper.toEntity.toUsedPoint +import org.sopt.teamdateroad.domain.model.Point fun ResponsePointDto.toGainedPointDomain() = Point( point = this.point.toGainedPoint(), diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePointHistoryDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePointHistoryDtoMapper.kt new file mode 100644 index 00000000..72c82281 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePointHistoryDtoMapper.kt @@ -0,0 +1,9 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponsePointHistoryDto +import org.sopt.teamdateroad.domain.model.PointHistory + +fun ResponsePointHistoryDto.toDomain(): PointHistory = PointHistory( + gained = this.gained.toGainedPointDomain(), + used = this.used.toUsedPointDomain() +) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePointsDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePointsDtoMapper.kt similarity index 61% rename from app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePointsDtoMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePointsDtoMapper.kt index 50dcb1f1..43e8ca1a 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponsePointsDtoMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponsePointsDtoMapper.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.data.mapper.todomain +package org.sopt.teamdateroad.data.mapper.todomain -import org.sopt.dateroad.data.dataremote.model.response.ResponsePointsDto -import org.sopt.dateroad.domain.model.Point +import org.sopt.teamdateroad.data.dataremote.model.response.ResponsePointsDto +import org.sopt.teamdateroad.domain.model.Point fun ResponsePointsDto.toGainedPointDomain(): List = this.points.map { responsePointDto -> responsePointDto.toGainedPointDomain() diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseProfileDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseProfileDtoMapper.kt new file mode 100644 index 00000000..633d97a7 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseProfileDtoMapper.kt @@ -0,0 +1,12 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseProfileDto +import org.sopt.teamdateroad.data.mapper.toEntity.toPoint +import org.sopt.teamdateroad.domain.model.Profile + +fun ResponseProfileDto.toDomain(): Profile = Profile( + name = this.name, + tag = this.tags, + point = this.point.toPoint(), + imageUrl = this.imageUrl +) diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseTagDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseTagDtoMapper.kt new file mode 100644 index 00000000..38455dc5 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseTagDtoMapper.kt @@ -0,0 +1,6 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseTagDto +import org.sopt.teamdateroad.presentation.type.DateTagType + +fun ResponseTagDto.toDomain(): DateTagType = DateTagType.valueOf(this.tag) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseTimelineDetailDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseTimelineDetailDtoMapper.kt similarity index 53% rename from app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseTimelineDetailDtoMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseTimelineDetailDtoMapper.kt index 65fe05a1..cbb52b6c 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseTimelineDetailDtoMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseTimelineDetailDtoMapper.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.data.mapper.todomain +package org.sopt.teamdateroad.data.mapper.todomain -import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelineDetailDto -import org.sopt.dateroad.data.mapper.toEntity.toBasicDates -import org.sopt.dateroad.data.mapper.toEntity.toDDayString -import org.sopt.dateroad.data.mapper.toEntity.toStartAtString -import org.sopt.dateroad.domain.model.TimelineDetail +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseTimelineDetailDto +import org.sopt.teamdateroad.data.mapper.toEntity.toBasicDates +import org.sopt.teamdateroad.data.mapper.toEntity.toDDayString +import org.sopt.teamdateroad.data.mapper.toEntity.toStartAtString +import org.sopt.teamdateroad.domain.model.TimelineDetail fun ResponseTimelineDetailDto.toDomain(): TimelineDetail = TimelineDetail( timelineId = this.timelineId, diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseTimelineDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseTimelineDtoMapper.kt similarity index 59% rename from app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseTimelineDtoMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseTimelineDtoMapper.kt index 2835a0ae..95f9c7fa 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseTimelineDtoMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseTimelineDtoMapper.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.data.mapper.todomain +package org.sopt.teamdateroad.data.mapper.todomain -import org.sopt.dateroad.data.dataremote.model.response.ResponseTimelineDto -import org.sopt.dateroad.data.mapper.toEntity.toBasicDates -import org.sopt.dateroad.data.mapper.toEntity.toDDayString -import org.sopt.dateroad.data.mapper.toEntity.toFormattedDate -import org.sopt.dateroad.domain.model.Timeline +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseTimelineDto +import org.sopt.teamdateroad.data.mapper.toEntity.toBasicDates +import org.sopt.teamdateroad.data.mapper.toEntity.toDDayString +import org.sopt.teamdateroad.data.mapper.toEntity.toFormattedDate +import org.sopt.teamdateroad.domain.model.Timeline fun ResponseTimelineDto.toFutureTimelineDomain(): Timeline = Timeline( timelineId = this.timelineId, diff --git a/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseUserPointDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseUserPointDtoMapper.kt new file mode 100644 index 00000000..b7d7c598 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseUserPointDtoMapper.kt @@ -0,0 +1,11 @@ +package org.sopt.teamdateroad.data.mapper.todomain + +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseUserPointDto +import org.sopt.teamdateroad.data.mapper.toEntity.toPoint +import org.sopt.teamdateroad.domain.model.UserPoint + +fun ResponseUserPointDto.toDomain(): UserPoint = UserPoint( + name = this.name, + point = this.point.toPoint(), + imageUrl = this.image +) diff --git a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseUserUsePointDtoMapper.kt b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseUserUsePointDtoMapper.kt similarity index 51% rename from app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseUserUsePointDtoMapper.kt rename to app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseUserUsePointDtoMapper.kt index 3e92e338..86a10170 100644 --- a/app/src/main/java/org/sopt/dateroad/data/mapper/todomain/ResponseUserUsePointDtoMapper.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/mapper/todomain/ResponseUserUsePointDtoMapper.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.data.mapper.todomain +package org.sopt.teamdateroad.data.mapper.todomain -import org.sopt.dateroad.data.dataremote.model.response.ResponseUserUsePointDto -import org.sopt.dateroad.domain.model.PointUseResult +import org.sopt.teamdateroad.data.dataremote.model.response.ResponseUserUsePointDto +import org.sopt.teamdateroad.domain.model.PointUseResult fun ResponseUserUsePointDto.toDomain(): PointUseResult = PointUseResult( userPoint = this.userPoint, diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/AdvertisementRepositoryImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/AdvertisementRepositoryImpl.kt similarity index 60% rename from app/src/main/java/org/sopt/dateroad/data/repositoryimpl/AdvertisementRepositoryImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/AdvertisementRepositoryImpl.kt index f938425b..3049d202 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/AdvertisementRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/AdvertisementRepositoryImpl.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.data.repositoryimpl +package org.sopt.teamdateroad.data.repositoryimpl import javax.inject.Inject -import org.sopt.dateroad.data.dataremote.datasource.AdvertisementRemoteDataSource -import org.sopt.dateroad.data.mapper.todomain.toDomain -import org.sopt.dateroad.domain.model.Advertisement -import org.sopt.dateroad.domain.model.AdvertisementDetail -import org.sopt.dateroad.domain.repository.AdvertisementRepository +import org.sopt.teamdateroad.data.dataremote.datasource.AdvertisementRemoteDataSource +import org.sopt.teamdateroad.data.mapper.todomain.toDomain +import org.sopt.teamdateroad.domain.model.Advertisement +import org.sopt.teamdateroad.domain.model.AdvertisementDetail +import org.sopt.teamdateroad.domain.repository.AdvertisementRepository class AdvertisementRepositoryImpl @Inject constructor( private val advertisementRemoteDataSource: AdvertisementRemoteDataSource diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/AuthRepositoryImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/AuthRepositoryImpl.kt similarity index 73% rename from app/src/main/java/org/sopt/dateroad/data/repositoryimpl/AuthRepositoryImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/AuthRepositoryImpl.kt index 97bc64d0..297a4981 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/AuthRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/AuthRepositoryImpl.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.repositoryimpl +package org.sopt.teamdateroad.data.repositoryimpl import android.content.ContentResolver import android.net.Uri @@ -7,19 +7,19 @@ import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import okhttp3.MediaType.Companion.toMediaType import okhttp3.RequestBody.Companion.toRequestBody -import org.sopt.dateroad.data.dataremote.datasource.AuthRemoteDataSource -import org.sopt.dateroad.data.dataremote.model.request.RequestWithdrawDto -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.APPLICATION_JSON -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.HTTPS -import org.sopt.dateroad.data.dataremote.util.ApiConstraints.PROFILE_FORM_DATA_IMAGE -import org.sopt.dateroad.data.dataremote.util.ContentUriRequestBody -import org.sopt.dateroad.data.mapper.todata.toData -import org.sopt.dateroad.data.mapper.todomain.toDomain -import org.sopt.dateroad.domain.model.Auth -import org.sopt.dateroad.domain.model.EditProfile -import org.sopt.dateroad.domain.model.SignIn -import org.sopt.dateroad.domain.model.SignUp -import org.sopt.dateroad.domain.repository.AuthRepository +import org.sopt.teamdateroad.data.dataremote.datasource.AuthRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.model.request.RequestWithdrawDto +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.APPLICATION_JSON +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.HTTPS +import org.sopt.teamdateroad.data.dataremote.util.ApiConstraints.PROFILE_FORM_DATA_IMAGE +import org.sopt.teamdateroad.data.dataremote.util.ContentUriRequestBody +import org.sopt.teamdateroad.data.mapper.todata.toData +import org.sopt.teamdateroad.data.mapper.todomain.toDomain +import org.sopt.teamdateroad.domain.model.Auth +import org.sopt.teamdateroad.domain.model.EditProfile +import org.sopt.teamdateroad.domain.model.SignIn +import org.sopt.teamdateroad.domain.model.SignUp +import org.sopt.teamdateroad.domain.repository.AuthRepository class AuthRepositoryImpl @Inject constructor( private val contentResolver: ContentResolver, diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/CourseRepositoryImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/CourseRepositoryImpl.kt similarity index 73% rename from app/src/main/java/org/sopt/dateroad/data/repositoryimpl/CourseRepositoryImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/CourseRepositoryImpl.kt index c5cd18b6..53063c05 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/CourseRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/CourseRepositoryImpl.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.data.repositoryimpl +package org.sopt.teamdateroad.data.repositoryimpl import android.content.ContentResolver import android.net.Uri @@ -7,22 +7,22 @@ import kotlinx.serialization.encodeToString import kotlinx.serialization.json.Json import okhttp3.MediaType.Companion.toMediaType import okhttp3.RequestBody.Companion.toRequestBody -import org.sopt.dateroad.data.dataremote.datasource.CourseRemoteDataSource -import org.sopt.dateroad.data.dataremote.util.ContentUriRequestBody -import org.sopt.dateroad.data.mapper.todata.toCourseData -import org.sopt.dateroad.data.mapper.todata.toData -import org.sopt.dateroad.data.mapper.todomain.toDomain -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.domain.model.CourseDetail -import org.sopt.dateroad.domain.model.Enroll -import org.sopt.dateroad.domain.model.EnrollCourseResult -import org.sopt.dateroad.domain.repository.CourseRepository -import org.sopt.dateroad.domain.type.GyeonggiAreaType -import org.sopt.dateroad.domain.type.IncheonAreaType -import org.sopt.dateroad.domain.type.MoneyTagType -import org.sopt.dateroad.domain.type.RegionType -import org.sopt.dateroad.domain.type.SeoulAreaType -import org.sopt.dateroad.domain.type.SortByType +import org.sopt.teamdateroad.data.dataremote.datasource.CourseRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.util.ContentUriRequestBody +import org.sopt.teamdateroad.data.mapper.todata.toCourseData +import org.sopt.teamdateroad.data.mapper.todata.toData +import org.sopt.teamdateroad.data.mapper.todomain.toDomain +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.domain.model.CourseDetail +import org.sopt.teamdateroad.domain.model.Enroll +import org.sopt.teamdateroad.domain.model.EnrollCourseResult +import org.sopt.teamdateroad.domain.repository.CourseRepository +import org.sopt.teamdateroad.domain.type.GyeonggiAreaType +import org.sopt.teamdateroad.domain.type.IncheonAreaType +import org.sopt.teamdateroad.domain.type.MoneyTagType +import org.sopt.teamdateroad.domain.type.RegionType +import org.sopt.teamdateroad.domain.type.SeoulAreaType +import org.sopt.teamdateroad.domain.type.SortByType class CourseRepositoryImpl @Inject constructor( private val contentResolver: ContentResolver, diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/MyCourseRepositoryImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/MyCourseRepositoryImpl.kt similarity index 60% rename from app/src/main/java/org/sopt/dateroad/data/repositoryimpl/MyCourseRepositoryImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/MyCourseRepositoryImpl.kt index 638dc178..4eb472f6 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/MyCourseRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/MyCourseRepositoryImpl.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.data.repositoryimpl +package org.sopt.teamdateroad.data.repositoryimpl import javax.inject.Inject -import org.sopt.dateroad.data.dataremote.datasource.MyCourseRemoteDataSource -import org.sopt.dateroad.data.mapper.todomain.toDomain -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.domain.repository.MyCourseRepository +import org.sopt.teamdateroad.data.dataremote.datasource.MyCourseRemoteDataSource +import org.sopt.teamdateroad.data.mapper.todomain.toDomain +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.domain.repository.MyCourseRepository class MyCourseRepositoryImpl @Inject constructor( private val myCourseRemoteDataSource: MyCourseRemoteDataSource diff --git a/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/ProfileRepositoryImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/ProfileRepositoryImpl.kt new file mode 100644 index 00000000..a1643bbd --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/ProfileRepositoryImpl.kt @@ -0,0 +1,16 @@ + +package org.sopt.teamdateroad.data.repositoryimpl + +import javax.inject.Inject +import org.sopt.teamdateroad.data.dataremote.datasource.ProfileRemoteDataSource +import org.sopt.teamdateroad.data.mapper.todomain.toDomain +import org.sopt.teamdateroad.domain.model.Profile +import org.sopt.teamdateroad.domain.repository.ProfileRepository + +class ProfileRepositoryImpl @Inject constructor( + private val profileDataSource: ProfileRemoteDataSource +) : ProfileRepository { + override suspend fun getUsers(): Result = runCatching { + profileDataSource.getProfile().toDomain() + } +} diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/TimelineRepositoryImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/TimelineRepositoryImpl.kt similarity index 61% rename from app/src/main/java/org/sopt/dateroad/data/repositoryimpl/TimelineRepositoryImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/TimelineRepositoryImpl.kt index bbdf1914..0d780915 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/TimelineRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/TimelineRepositoryImpl.kt @@ -1,18 +1,18 @@ -package org.sopt.dateroad.data.repositoryimpl +package org.sopt.teamdateroad.data.repositoryimpl import javax.inject.Inject -import org.sopt.dateroad.data.dataremote.datasource.TimelineRemoteDataSource -import org.sopt.dateroad.data.mapper.todata.toTimelineData -import org.sopt.dateroad.data.mapper.todomain.toDomain -import org.sopt.dateroad.data.mapper.todomain.toFutureTimelineDomain -import org.sopt.dateroad.data.mapper.todomain.toPastTimelineDomain -import org.sopt.dateroad.domain.model.Enroll -import org.sopt.dateroad.domain.model.EnrollTimelineResult -import org.sopt.dateroad.domain.model.NearestTimeline -import org.sopt.dateroad.domain.model.Timeline -import org.sopt.dateroad.domain.model.TimelineDetail -import org.sopt.dateroad.domain.repository.TimelineRepository -import org.sopt.dateroad.domain.type.TimelineTimeType +import org.sopt.teamdateroad.data.dataremote.datasource.TimelineRemoteDataSource +import org.sopt.teamdateroad.data.mapper.todata.toTimelineData +import org.sopt.teamdateroad.data.mapper.todomain.toDomain +import org.sopt.teamdateroad.data.mapper.todomain.toFutureTimelineDomain +import org.sopt.teamdateroad.data.mapper.todomain.toPastTimelineDomain +import org.sopt.teamdateroad.domain.model.Enroll +import org.sopt.teamdateroad.domain.model.EnrollTimelineResult +import org.sopt.teamdateroad.domain.model.NearestTimeline +import org.sopt.teamdateroad.domain.model.Timeline +import org.sopt.teamdateroad.domain.model.TimelineDetail +import org.sopt.teamdateroad.domain.repository.TimelineRepository +import org.sopt.teamdateroad.domain.type.TimelineTimeType class TimelineRepositoryImpl @Inject constructor( private val timelineRemoteDataSource: TimelineRemoteDataSource diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserInfoRepositoryImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/UserInfoRepositoryImpl.kt similarity index 81% rename from app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserInfoRepositoryImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/UserInfoRepositoryImpl.kt index 0ea6797c..32424910 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserInfoRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/UserInfoRepositoryImpl.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.data.repositoryimpl +package org.sopt.teamdateroad.data.repositoryimpl import javax.inject.Inject -import org.sopt.dateroad.data.datalocal.datasource.UserInfoLocalDataSource -import org.sopt.dateroad.domain.repository.UserInfoRepository +import org.sopt.teamdateroad.data.datalocal.datasource.UserInfoLocalDataSource +import org.sopt.teamdateroad.domain.repository.UserInfoRepository class UserInfoRepositoryImpl @Inject constructor( private val userInfoLocalDataSource: UserInfoLocalDataSource diff --git a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserPointRepositoryImpl.kt b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/UserPointRepositoryImpl.kt similarity index 57% rename from app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserPointRepositoryImpl.kt rename to app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/UserPointRepositoryImpl.kt index 459178fc..f6ddaa85 100644 --- a/app/src/main/java/org/sopt/dateroad/data/repositoryimpl/UserPointRepositoryImpl.kt +++ b/app/src/main/java/org/sopt/teamdateroad/data/repositoryimpl/UserPointRepositoryImpl.kt @@ -1,14 +1,14 @@ -package org.sopt.dateroad.data.repositoryimpl +package org.sopt.teamdateroad.data.repositoryimpl import javax.inject.Inject -import org.sopt.dateroad.data.dataremote.datasource.UserPointRemoteDataSource -import org.sopt.dateroad.data.mapper.todata.toData -import org.sopt.dateroad.data.mapper.todomain.toDomain -import org.sopt.dateroad.domain.model.PointHistory -import org.sopt.dateroad.domain.model.PointUseResult -import org.sopt.dateroad.domain.model.UsePoint -import org.sopt.dateroad.domain.model.UserPoint -import org.sopt.dateroad.domain.repository.UserPointRepository +import org.sopt.teamdateroad.data.dataremote.datasource.UserPointRemoteDataSource +import org.sopt.teamdateroad.data.mapper.todata.toData +import org.sopt.teamdateroad.data.mapper.todomain.toDomain +import org.sopt.teamdateroad.domain.model.PointHistory +import org.sopt.teamdateroad.domain.model.PointUseResult +import org.sopt.teamdateroad.domain.model.UsePoint +import org.sopt.teamdateroad.domain.model.UserPoint +import org.sopt.teamdateroad.domain.repository.UserPointRepository class UserPointRepositoryImpl @Inject constructor( private val userPointRemoteDataSource: UserPointRemoteDataSource diff --git a/app/src/main/java/org/sopt/dateroad/di/ContentResolverModule.kt b/app/src/main/java/org/sopt/teamdateroad/di/ContentResolverModule.kt similarity index 93% rename from app/src/main/java/org/sopt/dateroad/di/ContentResolverModule.kt rename to app/src/main/java/org/sopt/teamdateroad/di/ContentResolverModule.kt index db59fd77..50a8bdd7 100644 --- a/app/src/main/java/org/sopt/dateroad/di/ContentResolverModule.kt +++ b/app/src/main/java/org/sopt/teamdateroad/di/ContentResolverModule.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.di +package org.sopt.teamdateroad.di import android.content.ContentResolver import android.content.Context diff --git a/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt b/app/src/main/java/org/sopt/teamdateroad/di/DataSourceModule.kt similarity index 53% rename from app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt rename to app/src/main/java/org/sopt/teamdateroad/di/DataSourceModule.kt index 5f404e04..072b5b67 100644 --- a/app/src/main/java/org/sopt/dateroad/di/DataSourceModule.kt +++ b/app/src/main/java/org/sopt/teamdateroad/di/DataSourceModule.kt @@ -1,26 +1,26 @@ -package org.sopt.dateroad.di +package org.sopt.teamdateroad.di import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import javax.inject.Singleton -import org.sopt.dateroad.data.datalocal.datasource.UserInfoLocalDataSource -import org.sopt.dateroad.data.datalocal.datasourceimpl.UserInfoLocalDataSourceImpl -import org.sopt.dateroad.data.dataremote.datasource.AdvertisementRemoteDataSource -import org.sopt.dateroad.data.dataremote.datasource.AuthRemoteDataSource -import org.sopt.dateroad.data.dataremote.datasource.CourseRemoteDataSource -import org.sopt.dateroad.data.dataremote.datasource.MyCourseRemoteDataSource -import org.sopt.dateroad.data.dataremote.datasource.ProfileRemoteDataSource -import org.sopt.dateroad.data.dataremote.datasource.TimelineRemoteDataSource -import org.sopt.dateroad.data.dataremote.datasource.UserPointRemoteDataSource -import org.sopt.dateroad.data.dataremote.datasourceimpl.AdvertisementRemoteDataSourceImpl -import org.sopt.dateroad.data.dataremote.datasourceimpl.AuthRemoteDataSourceImpl -import org.sopt.dateroad.data.dataremote.datasourceimpl.CourseRemoteDataSourceImpl -import org.sopt.dateroad.data.dataremote.datasourceimpl.MyCourseRemoteDataSourceImpl -import org.sopt.dateroad.data.dataremote.datasourceimpl.ProfileRemoteDataSourceImpl -import org.sopt.dateroad.data.dataremote.datasourceimpl.TimelineRemoteDataSourceImpl -import org.sopt.dateroad.data.dataremote.datasourceimpl.UserPointRemoteDataSourceImpl +import org.sopt.teamdateroad.data.datalocal.datasource.UserInfoLocalDataSource +import org.sopt.teamdateroad.data.datalocal.datasourceimpl.UserInfoLocalDataSourceImpl +import org.sopt.teamdateroad.data.dataremote.datasource.AdvertisementRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.datasource.AuthRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.datasource.CourseRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.datasource.MyCourseRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.datasource.ProfileRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.datasource.TimelineRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.datasource.UserPointRemoteDataSource +import org.sopt.teamdateroad.data.dataremote.datasourceimpl.AdvertisementRemoteDataSourceImpl +import org.sopt.teamdateroad.data.dataremote.datasourceimpl.AuthRemoteDataSourceImpl +import org.sopt.teamdateroad.data.dataremote.datasourceimpl.CourseRemoteDataSourceImpl +import org.sopt.teamdateroad.data.dataremote.datasourceimpl.MyCourseRemoteDataSourceImpl +import org.sopt.teamdateroad.data.dataremote.datasourceimpl.ProfileRemoteDataSourceImpl +import org.sopt.teamdateroad.data.dataremote.datasourceimpl.TimelineRemoteDataSourceImpl +import org.sopt.teamdateroad.data.dataremote.datasourceimpl.UserPointRemoteDataSourceImpl @Module @InstallIn(SingletonComponent::class) diff --git a/app/src/main/java/org/sopt/dateroad/di/NetworkModule.kt b/app/src/main/java/org/sopt/teamdateroad/di/NetworkModule.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/di/NetworkModule.kt rename to app/src/main/java/org/sopt/teamdateroad/di/NetworkModule.kt index 9c73fd05..e2639802 100644 --- a/app/src/main/java/org/sopt/dateroad/di/NetworkModule.kt +++ b/app/src/main/java/org/sopt/teamdateroad/di/NetworkModule.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.di +package org.sopt.teamdateroad.di import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory import dagger.Module @@ -13,11 +13,11 @@ import okhttp3.Interceptor import okhttp3.MediaType.Companion.toMediaTypeOrNull import okhttp3.OkHttpClient import okhttp3.logging.HttpLoggingInterceptor -import org.sopt.dateroad.BuildConfig -import org.sopt.dateroad.BuildConfig.DEBUG -import org.sopt.dateroad.data.dataremote.interceptor.AuthInterceptor -import org.sopt.dateroad.di.qualifier.Auth -import org.sopt.dateroad.di.qualifier.DateRoad +import org.sopt.teamdateroad.BuildConfig +import org.sopt.teamdateroad.BuildConfig.DEBUG +import org.sopt.teamdateroad.data.dataremote.interceptor.AuthInterceptor +import org.sopt.teamdateroad.di.qualifier.Auth +import org.sopt.teamdateroad.di.qualifier.DateRoad import retrofit2.Retrofit @Module diff --git a/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt b/app/src/main/java/org/sopt/teamdateroad/di/RepositoryModule.kt similarity index 54% rename from app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt rename to app/src/main/java/org/sopt/teamdateroad/di/RepositoryModule.kt index 4959bf55..7a35d9cd 100644 --- a/app/src/main/java/org/sopt/dateroad/di/RepositoryModule.kt +++ b/app/src/main/java/org/sopt/teamdateroad/di/RepositoryModule.kt @@ -1,26 +1,26 @@ -package org.sopt.dateroad.di +package org.sopt.teamdateroad.di import dagger.Binds import dagger.Module import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import javax.inject.Singleton -import org.sopt.dateroad.data.repositoryimpl.AdvertisementRepositoryImpl -import org.sopt.dateroad.data.repositoryimpl.AuthRepositoryImpl -import org.sopt.dateroad.data.repositoryimpl.CourseRepositoryImpl -import org.sopt.dateroad.data.repositoryimpl.MyCourseRepositoryImpl -import org.sopt.dateroad.data.repositoryimpl.ProfileRepositoryImpl -import org.sopt.dateroad.data.repositoryimpl.TimelineRepositoryImpl -import org.sopt.dateroad.data.repositoryimpl.UserInfoRepositoryImpl -import org.sopt.dateroad.data.repositoryimpl.UserPointRepositoryImpl -import org.sopt.dateroad.domain.repository.AdvertisementRepository -import org.sopt.dateroad.domain.repository.AuthRepository -import org.sopt.dateroad.domain.repository.CourseRepository -import org.sopt.dateroad.domain.repository.MyCourseRepository -import org.sopt.dateroad.domain.repository.ProfileRepository -import org.sopt.dateroad.domain.repository.TimelineRepository -import org.sopt.dateroad.domain.repository.UserInfoRepository -import org.sopt.dateroad.domain.repository.UserPointRepository +import org.sopt.teamdateroad.data.repositoryimpl.AdvertisementRepositoryImpl +import org.sopt.teamdateroad.data.repositoryimpl.AuthRepositoryImpl +import org.sopt.teamdateroad.data.repositoryimpl.CourseRepositoryImpl +import org.sopt.teamdateroad.data.repositoryimpl.MyCourseRepositoryImpl +import org.sopt.teamdateroad.data.repositoryimpl.ProfileRepositoryImpl +import org.sopt.teamdateroad.data.repositoryimpl.TimelineRepositoryImpl +import org.sopt.teamdateroad.data.repositoryimpl.UserInfoRepositoryImpl +import org.sopt.teamdateroad.data.repositoryimpl.UserPointRepositoryImpl +import org.sopt.teamdateroad.domain.repository.AdvertisementRepository +import org.sopt.teamdateroad.domain.repository.AuthRepository +import org.sopt.teamdateroad.domain.repository.CourseRepository +import org.sopt.teamdateroad.domain.repository.MyCourseRepository +import org.sopt.teamdateroad.domain.repository.ProfileRepository +import org.sopt.teamdateroad.domain.repository.TimelineRepository +import org.sopt.teamdateroad.domain.repository.UserInfoRepository +import org.sopt.teamdateroad.domain.repository.UserPointRepository @Module @InstallIn(SingletonComponent::class) diff --git a/app/src/main/java/org/sopt/dateroad/di/ServiceModule.kt b/app/src/main/java/org/sopt/teamdateroad/di/ServiceModule.kt similarity index 69% rename from app/src/main/java/org/sopt/dateroad/di/ServiceModule.kt rename to app/src/main/java/org/sopt/teamdateroad/di/ServiceModule.kt index 784ebca8..5af0fafc 100644 --- a/app/src/main/java/org/sopt/dateroad/di/ServiceModule.kt +++ b/app/src/main/java/org/sopt/teamdateroad/di/ServiceModule.kt @@ -1,17 +1,17 @@ -package org.sopt.dateroad.di +package org.sopt.teamdateroad.di import dagger.Module import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent -import org.sopt.dateroad.data.dataremote.service.AdvertisementService -import org.sopt.dateroad.data.dataremote.service.AuthService -import org.sopt.dateroad.data.dataremote.service.CourseService -import org.sopt.dateroad.data.dataremote.service.MyCourseService -import org.sopt.dateroad.data.dataremote.service.ProfileService -import org.sopt.dateroad.data.dataremote.service.TimelineService -import org.sopt.dateroad.data.dataremote.service.UserPointService -import org.sopt.dateroad.di.qualifier.DateRoad +import org.sopt.teamdateroad.data.dataremote.service.AdvertisementService +import org.sopt.teamdateroad.data.dataremote.service.AuthService +import org.sopt.teamdateroad.data.dataremote.service.CourseService +import org.sopt.teamdateroad.data.dataremote.service.MyCourseService +import org.sopt.teamdateroad.data.dataremote.service.ProfileService +import org.sopt.teamdateroad.data.dataremote.service.TimelineService +import org.sopt.teamdateroad.data.dataremote.service.UserPointService +import org.sopt.teamdateroad.di.qualifier.DateRoad import retrofit2.Retrofit @Module diff --git a/app/src/main/java/org/sopt/dateroad/di/qualifier/Qualifier.kt b/app/src/main/java/org/sopt/teamdateroad/di/qualifier/Qualifier.kt similarity index 70% rename from app/src/main/java/org/sopt/dateroad/di/qualifier/Qualifier.kt rename to app/src/main/java/org/sopt/teamdateroad/di/qualifier/Qualifier.kt index 73672ec9..4a103a50 100644 --- a/app/src/main/java/org/sopt/dateroad/di/qualifier/Qualifier.kt +++ b/app/src/main/java/org/sopt/teamdateroad/di/qualifier/Qualifier.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.di.qualifier +package org.sopt.teamdateroad.di.qualifier import javax.inject.Qualifier diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/Advertisement.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/Advertisement.kt similarity index 66% rename from app/src/main/java/org/sopt/dateroad/domain/model/Advertisement.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/Advertisement.kt index cde88ba3..04630b55 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/Advertisement.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/Advertisement.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class Advertisement( val advertisementId: Int, diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/AdvertisementDetail.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/AdvertisementDetail.kt similarity index 83% rename from app/src/main/java/org/sopt/dateroad/domain/model/AdvertisementDetail.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/AdvertisementDetail.kt index 1f8c242a..aa27c869 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/AdvertisementDetail.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/AdvertisementDetail.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class AdvertisementDetail( val images: List = listOf(), diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/Auth.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/Auth.kt similarity index 64% rename from app/src/main/java/org/sopt/dateroad/domain/model/Auth.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/Auth.kt index c74b2927..b2fe3dc6 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/Auth.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/Auth.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class Auth( val accessToken: String, diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/Course.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/Course.kt similarity index 81% rename from app/src/main/java/org/sopt/dateroad/domain/model/Course.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/Course.kt index 78cb95e6..9a763bed 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/Course.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/Course.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class Course( val courseId: Int, diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/CourseDetail.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/CourseDetail.kt similarity index 93% rename from app/src/main/java/org/sopt/dateroad/domain/model/CourseDetail.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/CourseDetail.kt index 7cfcab67..5cdd85aa 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/CourseDetail.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/CourseDetail.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class CourseDetail( val courseId: Int = 0, diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/EditProfile.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/EditProfile.kt similarity index 73% rename from app/src/main/java/org/sopt/dateroad/domain/model/EditProfile.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/EditProfile.kt index 6a09be0f..5efd99b1 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/EditProfile.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/EditProfile.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class EditProfile( val name: String = "", diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/Enroll.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/Enroll.kt similarity index 78% rename from app/src/main/java/org/sopt/dateroad/domain/model/Enroll.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/Enroll.kt index 5e71969d..b42ccb29 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/Enroll.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/Enroll.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model -import org.sopt.dateroad.domain.type.RegionType +import org.sopt.teamdateroad.domain.type.RegionType data class Enroll( val images: List = listOf(), diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/EnrollCourseResult.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/EnrollCourseResult.kt similarity index 67% rename from app/src/main/java/org/sopt/dateroad/domain/model/EnrollCourseResult.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/EnrollCourseResult.kt index dcd3f596..9b73225b 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/EnrollCourseResult.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/EnrollCourseResult.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class EnrollCourseResult( val userPoint: Int, diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/EnrollTimelineResult.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/EnrollTimelineResult.kt similarity index 60% rename from app/src/main/java/org/sopt/dateroad/domain/model/EnrollTimelineResult.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/EnrollTimelineResult.kt index 7f61470d..1c8e602a 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/EnrollTimelineResult.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/EnrollTimelineResult.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class EnrollTimelineResult( val dateScheduleNum: Long diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/NearestTimeline.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/NearestTimeline.kt similarity index 80% rename from app/src/main/java/org/sopt/dateroad/domain/model/NearestTimeline.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/NearestTimeline.kt index a24bbd82..98e9918c 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/NearestTimeline.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/NearestTimeline.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class NearestTimeline( val timelineId: Int = 0, diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/Place.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/Place.kt similarity index 64% rename from app/src/main/java/org/sopt/dateroad/domain/model/Place.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/Place.kt index 1f956010..60f8b9a0 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/Place.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/Place.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class Place( val title: String = "", diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/Point.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/Point.kt similarity index 69% rename from app/src/main/java/org/sopt/dateroad/domain/model/Point.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/Point.kt index 1f693396..1263b06e 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/Point.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/Point.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class Point( val point: String, diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/PointHistory.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/PointHistory.kt similarity index 70% rename from app/src/main/java/org/sopt/dateroad/domain/model/PointHistory.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/PointHistory.kt index ef7cb3f7..3d2e6549 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/PointHistory.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/PointHistory.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class PointHistory( val gained: List = listOf(), diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/PointUseResult.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/PointUseResult.kt similarity index 73% rename from app/src/main/java/org/sopt/dateroad/domain/model/PointUseResult.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/PointUseResult.kt index b2fa449c..07973cf8 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/PointUseResult.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/PointUseResult.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class PointUseResult( val userPoint: Int, diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/Profile.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/Profile.kt similarity index 77% rename from app/src/main/java/org/sopt/dateroad/domain/model/Profile.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/Profile.kt index 16605667..e5188930 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/Profile.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/Profile.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class Profile( val name: String = "", diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/SignIn.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/SignIn.kt similarity index 52% rename from app/src/main/java/org/sopt/dateroad/domain/model/SignIn.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/SignIn.kt index a30dca24..3fd5246f 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/SignIn.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/SignIn.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class SignIn( val platform: String diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/SignUp.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/SignUp.kt similarity index 77% rename from app/src/main/java/org/sopt/dateroad/domain/model/SignUp.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/SignUp.kt index c2804fe6..b61ea5b0 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/SignUp.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/SignUp.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class SignUp( val userSignUpInfo: UserSignUpInfo = UserSignUpInfo(), diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/Timeline.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/Timeline.kt similarity index 66% rename from app/src/main/java/org/sopt/dateroad/domain/model/Timeline.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/Timeline.kt index 8ab1469a..58d82557 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/Timeline.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/Timeline.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model -import org.sopt.dateroad.presentation.type.DateTagType +import org.sopt.teamdateroad.presentation.type.DateTagType data class Timeline( val timelineId: Int = 0, diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/TimelineDetail.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/TimelineDetail.kt similarity index 86% rename from app/src/main/java/org/sopt/dateroad/domain/model/TimelineDetail.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/TimelineDetail.kt index a43e7e3c..d55dd849 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/TimelineDetail.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/TimelineDetail.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class TimelineDetail( val timelineId: Int = 0, diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/UsePoint.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/UsePoint.kt similarity index 68% rename from app/src/main/java/org/sopt/dateroad/domain/model/UsePoint.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/UsePoint.kt index 80562846..be628637 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/UsePoint.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/UsePoint.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class UsePoint( val point: Int, diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/UserPoint.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/UserPoint.kt similarity index 72% rename from app/src/main/java/org/sopt/dateroad/domain/model/UserPoint.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/UserPoint.kt index b8adea83..f9dbfc0c 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/UserPoint.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/UserPoint.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class UserPoint( val name: String = "", diff --git a/app/src/main/java/org/sopt/dateroad/domain/model/UserSignUpInfo.kt b/app/src/main/java/org/sopt/teamdateroad/domain/model/UserSignUpInfo.kt similarity index 68% rename from app/src/main/java/org/sopt/dateroad/domain/model/UserSignUpInfo.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/model/UserSignUpInfo.kt index d78a1956..c02db8d3 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/model/UserSignUpInfo.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/model/UserSignUpInfo.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.model +package org.sopt.teamdateroad.domain.model data class UserSignUpInfo( val name: String = "", diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/AdvertisementRepository.kt b/app/src/main/java/org/sopt/teamdateroad/domain/repository/AdvertisementRepository.kt similarity index 54% rename from app/src/main/java/org/sopt/dateroad/domain/repository/AdvertisementRepository.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/repository/AdvertisementRepository.kt index 369bd0b1..83ce2096 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/AdvertisementRepository.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/repository/AdvertisementRepository.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.domain.repository +package org.sopt.teamdateroad.domain.repository -import org.sopt.dateroad.domain.model.Advertisement -import org.sopt.dateroad.domain.model.AdvertisementDetail +import org.sopt.teamdateroad.domain.model.Advertisement +import org.sopt.teamdateroad.domain.model.AdvertisementDetail interface AdvertisementRepository { suspend fun getAdvertisementDetail(advertisementId: Int): Result diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/AuthRepository.kt b/app/src/main/java/org/sopt/teamdateroad/domain/repository/AuthRepository.kt similarity index 62% rename from app/src/main/java/org/sopt/dateroad/domain/repository/AuthRepository.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/repository/AuthRepository.kt index 2be2cc4d..d009d970 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/AuthRepository.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/repository/AuthRepository.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.domain.repository +package org.sopt.teamdateroad.domain.repository -import org.sopt.dateroad.domain.model.Auth -import org.sopt.dateroad.domain.model.EditProfile -import org.sopt.dateroad.domain.model.SignIn -import org.sopt.dateroad.domain.model.SignUp +import org.sopt.teamdateroad.domain.model.Auth +import org.sopt.teamdateroad.domain.model.EditProfile +import org.sopt.teamdateroad.domain.model.SignIn +import org.sopt.teamdateroad.domain.model.SignUp interface AuthRepository { suspend fun deleteSignOut(): Result diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/CourseRepository.kt b/app/src/main/java/org/sopt/teamdateroad/domain/repository/CourseRepository.kt similarity index 56% rename from app/src/main/java/org/sopt/dateroad/domain/repository/CourseRepository.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/repository/CourseRepository.kt index 8969c20d..d86864bb 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/CourseRepository.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/repository/CourseRepository.kt @@ -1,12 +1,12 @@ -package org.sopt.dateroad.domain.repository - -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.domain.model.CourseDetail -import org.sopt.dateroad.domain.model.Enroll -import org.sopt.dateroad.domain.model.EnrollCourseResult -import org.sopt.dateroad.domain.type.MoneyTagType -import org.sopt.dateroad.domain.type.RegionType -import org.sopt.dateroad.domain.type.SortByType +package org.sopt.teamdateroad.domain.repository + +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.domain.model.CourseDetail +import org.sopt.teamdateroad.domain.model.Enroll +import org.sopt.teamdateroad.domain.model.EnrollCourseResult +import org.sopt.teamdateroad.domain.type.MoneyTagType +import org.sopt.teamdateroad.domain.type.RegionType +import org.sopt.teamdateroad.domain.type.SortByType interface CourseRepository { suspend fun deleteCourse(courseId: Int): Result diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/MyCourseRepository.kt b/app/src/main/java/org/sopt/teamdateroad/domain/repository/MyCourseRepository.kt similarity index 60% rename from app/src/main/java/org/sopt/dateroad/domain/repository/MyCourseRepository.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/repository/MyCourseRepository.kt index cc6c62b9..0ee8b96b 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/MyCourseRepository.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/repository/MyCourseRepository.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.domain.repository +package org.sopt.teamdateroad.domain.repository -import org.sopt.dateroad.domain.model.Course +import org.sopt.teamdateroad.domain.model.Course interface MyCourseRepository { suspend fun getMyCourseEnroll(): Result> diff --git a/app/src/main/java/org/sopt/teamdateroad/domain/repository/ProfileRepository.kt b/app/src/main/java/org/sopt/teamdateroad/domain/repository/ProfileRepository.kt new file mode 100644 index 00000000..49557c9d --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/domain/repository/ProfileRepository.kt @@ -0,0 +1,7 @@ +package org.sopt.teamdateroad.domain.repository + +import org.sopt.teamdateroad.domain.model.Profile + +interface ProfileRepository { + suspend fun getUsers(): Result +} diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/TimelineRepository.kt b/app/src/main/java/org/sopt/teamdateroad/domain/repository/TimelineRepository.kt similarity index 51% rename from app/src/main/java/org/sopt/dateroad/domain/repository/TimelineRepository.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/repository/TimelineRepository.kt index 9208d9bc..38e700e6 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/TimelineRepository.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/repository/TimelineRepository.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.domain.repository +package org.sopt.teamdateroad.domain.repository -import org.sopt.dateroad.domain.model.Enroll -import org.sopt.dateroad.domain.model.EnrollTimelineResult -import org.sopt.dateroad.domain.model.NearestTimeline -import org.sopt.dateroad.domain.model.Timeline -import org.sopt.dateroad.domain.model.TimelineDetail -import org.sopt.dateroad.domain.type.TimelineTimeType +import org.sopt.teamdateroad.domain.model.Enroll +import org.sopt.teamdateroad.domain.model.EnrollTimelineResult +import org.sopt.teamdateroad.domain.model.NearestTimeline +import org.sopt.teamdateroad.domain.model.Timeline +import org.sopt.teamdateroad.domain.model.TimelineDetail +import org.sopt.teamdateroad.domain.type.TimelineTimeType interface TimelineRepository { suspend fun deleteTimeline(timelineId: Int): Result diff --git a/app/src/main/java/org/sopt/dateroad/domain/repository/UserInfoRepository.kt b/app/src/main/java/org/sopt/teamdateroad/domain/repository/UserInfoRepository.kt similarity index 85% rename from app/src/main/java/org/sopt/dateroad/domain/repository/UserInfoRepository.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/repository/UserInfoRepository.kt index 473d84ca..b759c33e 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/repository/UserInfoRepository.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/repository/UserInfoRepository.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.repository +package org.sopt.teamdateroad.domain.repository interface UserInfoRepository { fun setAccessToken(accessToken: String) diff --git a/app/src/main/java/org/sopt/teamdateroad/domain/repository/UserPointRepository.kt b/app/src/main/java/org/sopt/teamdateroad/domain/repository/UserPointRepository.kt new file mode 100644 index 00000000..b95e0697 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/domain/repository/UserPointRepository.kt @@ -0,0 +1,14 @@ +package org.sopt.teamdateroad.domain.repository + +import org.sopt.teamdateroad.domain.model.PointHistory +import org.sopt.teamdateroad.domain.model.PointUseResult +import org.sopt.teamdateroad.domain.model.UsePoint +import org.sopt.teamdateroad.domain.model.UserPoint + +interface UserPointRepository { + suspend fun getUserPoint(): Result + + suspend fun getPointHistory(): Result + + suspend fun postUsePoint(courseId: Int, usePoint: UsePoint): Result +} diff --git a/app/src/main/java/org/sopt/dateroad/domain/type/AdvertisementTagType.kt b/app/src/main/java/org/sopt/teamdateroad/domain/type/AdvertisementTagType.kt similarity index 78% rename from app/src/main/java/org/sopt/dateroad/domain/type/AdvertisementTagType.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/type/AdvertisementTagType.kt index c444bff0..fec93e23 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/type/AdvertisementTagType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/type/AdvertisementTagType.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.domain.type +package org.sopt.teamdateroad.domain.type -import org.sopt.dateroad.domain.util.Advertisement +import org.sopt.teamdateroad.domain.util.Advertisement enum class AdvertisementTagType( val title: String diff --git a/app/src/main/java/org/sopt/dateroad/domain/type/GyeonggiAreaType.kt b/app/src/main/java/org/sopt/teamdateroad/domain/type/GyeonggiAreaType.kt similarity index 94% rename from app/src/main/java/org/sopt/dateroad/domain/type/GyeonggiAreaType.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/type/GyeonggiAreaType.kt index 8668ae3f..2bf0b406 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/type/GyeonggiAreaType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/type/GyeonggiAreaType.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.domain.type +package org.sopt.teamdateroad.domain.type -import org.sopt.dateroad.domain.util.Gyeonggi +import org.sopt.teamdateroad.domain.util.Gyeonggi enum class GyeonggiAreaType( val title: String diff --git a/app/src/main/java/org/sopt/dateroad/domain/type/IncheonAreaType.kt b/app/src/main/java/org/sopt/teamdateroad/domain/type/IncheonAreaType.kt similarity index 82% rename from app/src/main/java/org/sopt/dateroad/domain/type/IncheonAreaType.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/type/IncheonAreaType.kt index 1fb0a468..f243dc69 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/type/IncheonAreaType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/type/IncheonAreaType.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.domain.type +package org.sopt.teamdateroad.domain.type -import org.sopt.dateroad.domain.util.Incheon +import org.sopt.teamdateroad.domain.util.Incheon enum class IncheonAreaType( val title: String diff --git a/app/src/main/java/org/sopt/dateroad/domain/type/MoneyTagType.kt b/app/src/main/java/org/sopt/teamdateroad/domain/type/MoneyTagType.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/domain/type/MoneyTagType.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/type/MoneyTagType.kt index f812171a..1e6d3c19 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/type/MoneyTagType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/type/MoneyTagType.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.domain.type +package org.sopt.teamdateroad.domain.type -import org.sopt.dateroad.domain.util.Cost +import org.sopt.teamdateroad.domain.util.Cost enum class MoneyTagType( val title: String, diff --git a/app/src/main/java/org/sopt/dateroad/domain/type/MonthType.kt b/app/src/main/java/org/sopt/teamdateroad/domain/type/MonthType.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/domain/type/MonthType.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/type/MonthType.kt index a647078a..0390d5d1 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/type/MonthType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/type/MonthType.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.domain.type +package org.sopt.teamdateroad.domain.type -import org.sopt.dateroad.domain.util.Month +import org.sopt.teamdateroad.domain.util.Month enum class MonthType(val title: String) { JANUARY(title = Month.JANUARY), diff --git a/app/src/main/java/org/sopt/dateroad/domain/type/RegionType.kt b/app/src/main/java/org/sopt/teamdateroad/domain/type/RegionType.kt similarity index 69% rename from app/src/main/java/org/sopt/dateroad/domain/type/RegionType.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/type/RegionType.kt index 17fcb5f1..ba2d0530 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/type/RegionType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/type/RegionType.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.domain.type +package org.sopt.teamdateroad.domain.type -import org.sopt.dateroad.domain.util.Region +import org.sopt.teamdateroad.domain.util.Region enum class RegionType( val title: String diff --git a/app/src/main/java/org/sopt/dateroad/domain/type/SeoulAreaType.kt b/app/src/main/java/org/sopt/teamdateroad/domain/type/SeoulAreaType.kt similarity index 94% rename from app/src/main/java/org/sopt/dateroad/domain/type/SeoulAreaType.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/type/SeoulAreaType.kt index c45000de..37f7eb9a 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/type/SeoulAreaType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/type/SeoulAreaType.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.domain.type +package org.sopt.teamdateroad.domain.type -import org.sopt.dateroad.domain.util.Seoul +import org.sopt.teamdateroad.domain.util.Seoul enum class SeoulAreaType( val title: String diff --git a/app/src/main/java/org/sopt/dateroad/domain/type/SortByType.kt b/app/src/main/java/org/sopt/teamdateroad/domain/type/SortByType.kt similarity index 54% rename from app/src/main/java/org/sopt/dateroad/domain/type/SortByType.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/type/SortByType.kt index 3915a46f..4f87c7b2 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/type/SortByType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/type/SortByType.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.type +package org.sopt.teamdateroad.domain.type enum class SortByType { POPULAR, diff --git a/app/src/main/java/org/sopt/dateroad/domain/type/TimelineTimeType.kt b/app/src/main/java/org/sopt/teamdateroad/domain/type/TimelineTimeType.kt similarity index 56% rename from app/src/main/java/org/sopt/dateroad/domain/type/TimelineTimeType.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/type/TimelineTimeType.kt index cd901aae..41179005 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/type/TimelineTimeType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/type/TimelineTimeType.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.type +package org.sopt.teamdateroad.domain.type enum class TimelineTimeType { FUTURE, diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/ClearUserInfoUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/ClearUserInfoUseCase.kt similarity index 67% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/ClearUserInfoUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/ClearUserInfoUseCase.kt index df7c3e14..43162b58 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/ClearUserInfoUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/ClearUserInfoUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.UserInfoRepository +import org.sopt.teamdateroad.domain.repository.UserInfoRepository @Singleton class ClearUserInfoUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteCourseLikeUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteCourseLikeUseCase.kt similarity index 73% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteCourseLikeUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteCourseLikeUseCase.kt index d2e3361d..d8aa127c 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteCourseLikeUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteCourseLikeUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.CourseRepository +import org.sopt.teamdateroad.domain.repository.CourseRepository @Singleton class DeleteCourseLikeUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteCourseUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteCourseUseCase.kt similarity index 72% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteCourseUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteCourseUseCase.kt index 6549d2bf..84b06146 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteCourseUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteCourseUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.CourseRepository +import org.sopt.teamdateroad.domain.repository.CourseRepository @Singleton class DeleteCourseUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteSignOutUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteSignOutUseCase.kt similarity index 70% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteSignOutUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteSignOutUseCase.kt index 52080e68..3f28f655 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteSignOutUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteSignOutUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.AuthRepository +import org.sopt.teamdateroad.domain.repository.AuthRepository @Singleton class DeleteSignOutUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteTimelineUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteTimelineUseCase.kt similarity index 73% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteTimelineUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteTimelineUseCase.kt index 9be6a8b1..4128a4e3 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteTimelineUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteTimelineUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.TimelineRepository +import org.sopt.teamdateroad.domain.repository.TimelineRepository @Singleton class DeleteTimelineUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteWithdrawUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteWithdrawUseCase.kt similarity index 72% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteWithdrawUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteWithdrawUseCase.kt index 2681c713..10837a7a 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/DeleteWithdrawUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/DeleteWithdrawUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.AuthRepository +import org.sopt.teamdateroad.domain.repository.AuthRepository @Singleton class DeleteWithdrawUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetAccessTokenUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetAccessTokenUseCase.kt similarity index 68% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetAccessTokenUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetAccessTokenUseCase.kt index 6b86d00b..d98bba2b 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetAccessTokenUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetAccessTokenUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.UserInfoRepository +import org.sopt.teamdateroad.domain.repository.UserInfoRepository @Singleton class GetAccessTokenUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetAdvertisementDetailUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetAdvertisementDetailUseCase.kt similarity index 67% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetAdvertisementDetailUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetAdvertisementDetailUseCase.kt index a0037af5..6224f5b1 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetAdvertisementDetailUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetAdvertisementDetailUseCase.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.AdvertisementDetail -import org.sopt.dateroad.domain.repository.AdvertisementRepository +import org.sopt.teamdateroad.domain.model.AdvertisementDetail +import org.sopt.teamdateroad.domain.repository.AdvertisementRepository @Singleton class GetAdvertisementDetailUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetAdvertisementsUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetAdvertisementsUseCase.kt similarity index 64% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetAdvertisementsUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetAdvertisementsUseCase.kt index 2c90e073..59b34312 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetAdvertisementsUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetAdvertisementsUseCase.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.Advertisement -import org.sopt.dateroad.domain.repository.AdvertisementRepository +import org.sopt.teamdateroad.domain.model.Advertisement +import org.sopt.teamdateroad.domain.repository.AdvertisementRepository @Singleton class GetAdvertisementsUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetCourseDetailUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetCourseDetailUseCase.kt similarity index 71% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetCourseDetailUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetCourseDetailUseCase.kt index afafc501..4f89fc56 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetCourseDetailUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetCourseDetailUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.CourseRepository +import org.sopt.teamdateroad.domain.repository.CourseRepository @Singleton class GetCourseDetailUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetFilteredCourses.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetFilteredCourses.kt similarity index 58% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetFilteredCourses.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetFilteredCourses.kt index 520dcd3e..36c42107 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetFilteredCourses.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetFilteredCourses.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.domain.repository.CourseRepository -import org.sopt.dateroad.domain.type.MoneyTagType -import org.sopt.dateroad.domain.type.RegionType +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.domain.repository.CourseRepository +import org.sopt.teamdateroad.domain.type.MoneyTagType +import org.sopt.teamdateroad.domain.type.RegionType @Singleton class GetFilteredCourses @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetMyCourseEnrollUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetMyCourseEnrollUseCase.kt similarity index 63% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetMyCourseEnrollUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetMyCourseEnrollUseCase.kt index 28b7bc99..8d3a6a10 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetMyCourseEnrollUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetMyCourseEnrollUseCase.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.domain.repository.MyCourseRepository +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.domain.repository.MyCourseRepository @Singleton class GetMyCourseEnrollUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetMyCourseReadUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetMyCourseReadUseCase.kt similarity index 63% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetMyCourseReadUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetMyCourseReadUseCase.kt index 9d08a440..feff904e 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetMyCourseReadUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetMyCourseReadUseCase.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.domain.repository.MyCourseRepository +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.domain.repository.MyCourseRepository @Singleton class GetMyCourseReadUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetNearestTimelineUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetNearestTimelineUseCase.kt similarity index 59% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetNearestTimelineUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetNearestTimelineUseCase.kt index 1e2a4df2..a141ac94 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetNearestTimelineUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetNearestTimelineUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject -import org.sopt.dateroad.domain.model.NearestTimeline -import org.sopt.dateroad.domain.repository.TimelineRepository +import org.sopt.teamdateroad.domain.model.NearestTimeline +import org.sopt.teamdateroad.domain.repository.TimelineRepository class GetNearestTimelineUseCase @Inject constructor( private val timelineRepository: TimelineRepository diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetNicknameCheckUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetNicknameCheckUseCase.kt similarity index 71% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetNicknameCheckUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetNicknameCheckUseCase.kt index b83c5844..8f7d5708 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetNicknameCheckUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetNicknameCheckUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.AuthRepository +import org.sopt.teamdateroad.domain.repository.AuthRepository @Singleton class GetNicknameCheckUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetNicknameUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetNicknameUseCase.kt similarity index 68% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetNicknameUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetNicknameUseCase.kt index 57809d2f..27a35c18 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetNicknameUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetNicknameUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.UserInfoRepository +import org.sopt.teamdateroad.domain.repository.UserInfoRepository @Singleton class GetNicknameUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetPointHistoryUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetPointHistoryUseCase.kt similarity index 62% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetPointHistoryUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetPointHistoryUseCase.kt index 509d13bc..4f1a87d1 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetPointHistoryUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetPointHistoryUseCase.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.PointHistory -import org.sopt.dateroad.domain.repository.UserPointRepository +import org.sopt.teamdateroad.domain.model.PointHistory +import org.sopt.teamdateroad.domain.repository.UserPointRepository @Singleton class GetPointHistoryUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetRefreshTokenUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetRefreshTokenUseCase.kt similarity index 68% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetRefreshTokenUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetRefreshTokenUseCase.kt index 3a97408d..d72c5986 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetRefreshTokenUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetRefreshTokenUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.UserInfoRepository +import org.sopt.teamdateroad.domain.repository.UserInfoRepository @Singleton class GetRefreshTokenUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetSortedCoursesUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetSortedCoursesUseCase.kt similarity index 59% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetSortedCoursesUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetSortedCoursesUseCase.kt index 6df3b141..f0fb655f 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetSortedCoursesUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetSortedCoursesUseCase.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.domain.repository.CourseRepository -import org.sopt.dateroad.domain.type.SortByType +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.domain.repository.CourseRepository +import org.sopt.teamdateroad.domain.type.SortByType @Singleton class GetSortedCoursesUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetTimelineDetailUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetTimelineDetailUseCase.kt similarity index 62% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetTimelineDetailUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetTimelineDetailUseCase.kt index 24f8cf8b..26c389c5 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetTimelineDetailUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetTimelineDetailUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject -import org.sopt.dateroad.domain.model.TimelineDetail -import org.sopt.dateroad.domain.repository.TimelineRepository +import org.sopt.teamdateroad.domain.model.TimelineDetail +import org.sopt.teamdateroad.domain.repository.TimelineRepository class GetTimelineDetailUseCase @Inject constructor( private val timelineRepository: TimelineRepository diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetTimelinesUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetTimelinesUseCase.kt similarity index 57% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetTimelinesUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetTimelinesUseCase.kt index 7e479622..6ad25025 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetTimelinesUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetTimelinesUseCase.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject -import org.sopt.dateroad.domain.model.Timeline -import org.sopt.dateroad.domain.repository.TimelineRepository -import org.sopt.dateroad.domain.type.TimelineTimeType +import org.sopt.teamdateroad.domain.model.Timeline +import org.sopt.teamdateroad.domain.repository.TimelineRepository +import org.sopt.teamdateroad.domain.type.TimelineTimeType class GetTimelinesUseCase @Inject constructor( private val timelineRepository: TimelineRepository diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetUserPointUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetUserPointUseCase.kt similarity index 58% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetUserPointUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetUserPointUseCase.kt index 36124f11..7898a847 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetUserPointUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetUserPointUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject -import org.sopt.dateroad.domain.model.UserPoint -import org.sopt.dateroad.domain.repository.UserPointRepository +import org.sopt.teamdateroad.domain.model.UserPoint +import org.sopt.teamdateroad.domain.repository.UserPointRepository class GetUserPointUseCase @Inject constructor( private val userPointRepository: UserPointRepository diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetUserUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetUserUseCase.kt similarity index 61% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/GetUserUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetUserUseCase.kt index 9463755a..6fd64e85 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/GetUserUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/GetUserUseCase.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.Profile -import org.sopt.dateroad.domain.repository.ProfileRepository +import org.sopt.teamdateroad.domain.model.Profile +import org.sopt.teamdateroad.domain.repository.ProfileRepository @Singleton class GetUserUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PatchEditProfileUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PatchEditProfileUseCase.kt similarity index 65% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/PatchEditProfileUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/PatchEditProfileUseCase.kt index 4847f0c4..fc520f89 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PatchEditProfileUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PatchEditProfileUseCase.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.EditProfile -import org.sopt.dateroad.domain.repository.AuthRepository +import org.sopt.teamdateroad.domain.model.EditProfile +import org.sopt.teamdateroad.domain.repository.AuthRepository @Singleton class PatchEditProfileUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseLikeUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostCourseLikeUseCase.kt similarity index 72% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseLikeUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostCourseLikeUseCase.kt index 7e213407..23782a45 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseLikeUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostCourseLikeUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.CourseRepository +import org.sopt.teamdateroad.domain.repository.CourseRepository @Singleton class PostCourseLikeUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostCourseUseCase.kt similarity index 57% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostCourseUseCase.kt index 3fb4981c..aa0d22ad 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostCourseUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostCourseUseCase.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.Enroll -import org.sopt.dateroad.domain.model.EnrollCourseResult -import org.sopt.dateroad.domain.repository.CourseRepository +import org.sopt.teamdateroad.domain.model.Enroll +import org.sopt.teamdateroad.domain.model.EnrollCourseResult +import org.sopt.teamdateroad.domain.repository.CourseRepository @Singleton class PostCourseUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostSignInUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostSignInUseCase.kt similarity index 62% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/PostSignInUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostSignInUseCase.kt index 7db32724..076e0865 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostSignInUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostSignInUseCase.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.Auth -import org.sopt.dateroad.domain.model.SignIn -import org.sopt.dateroad.domain.repository.AuthRepository +import org.sopt.teamdateroad.domain.model.Auth +import org.sopt.teamdateroad.domain.model.SignIn +import org.sopt.teamdateroad.domain.repository.AuthRepository @Singleton class PostSignInUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostSignUpUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostSignUpUseCase.kt similarity index 58% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/PostSignUpUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostSignUpUseCase.kt index f5ba86e9..b3cce309 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostSignUpUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostSignUpUseCase.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.Auth -import org.sopt.dateroad.domain.model.SignUp -import org.sopt.dateroad.domain.repository.AuthRepository +import org.sopt.teamdateroad.domain.model.Auth +import org.sopt.teamdateroad.domain.model.SignUp +import org.sopt.teamdateroad.domain.repository.AuthRepository @Singleton class PostSignUpUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostTimelineUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostTimelineUseCase.kt similarity index 57% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/PostTimelineUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostTimelineUseCase.kt index 91885b8a..5cfc0ed3 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostTimelineUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostTimelineUseCase.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.Enroll -import org.sopt.dateroad.domain.model.EnrollTimelineResult -import org.sopt.dateroad.domain.repository.TimelineRepository +import org.sopt.teamdateroad.domain.model.Enroll +import org.sopt.teamdateroad.domain.model.EnrollTimelineResult +import org.sopt.teamdateroad.domain.repository.TimelineRepository @Singleton class PostTimelineUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostUsePointUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostUsePointUseCase.kt similarity index 61% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/PostUsePointUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostUsePointUseCase.kt index d1dfe0f9..b3d02890 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/PostUsePointUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/PostUsePointUseCase.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.model.PointUseResult -import org.sopt.dateroad.domain.model.UsePoint -import org.sopt.dateroad.domain.repository.UserPointRepository +import org.sopt.teamdateroad.domain.model.PointUseResult +import org.sopt.teamdateroad.domain.model.UsePoint +import org.sopt.teamdateroad.domain.repository.UserPointRepository @Singleton class PostUsePointUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/SetAccessTokenUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/SetAccessTokenUseCase.kt similarity index 72% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/SetAccessTokenUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/SetAccessTokenUseCase.kt index 51ef3b2f..d321b529 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/SetAccessTokenUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/SetAccessTokenUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.UserInfoRepository +import org.sopt.teamdateroad.domain.repository.UserInfoRepository @Singleton class SetAccessTokenUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/SetNicknameUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/SetNicknameUseCase.kt similarity index 71% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/SetNicknameUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/SetNicknameUseCase.kt index 7bf17e50..41fe02a3 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/SetNicknameUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/SetNicknameUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.UserInfoRepository +import org.sopt.teamdateroad.domain.repository.UserInfoRepository @Singleton class SetNicknameUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/usecase/SetRefreshTokenUseCase.kt b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/SetRefreshTokenUseCase.kt similarity index 72% rename from app/src/main/java/org/sopt/dateroad/domain/usecase/SetRefreshTokenUseCase.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/usecase/SetRefreshTokenUseCase.kt index 7fd376a0..e52b2348 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/usecase/SetRefreshTokenUseCase.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/usecase/SetRefreshTokenUseCase.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.domain.usecase +package org.sopt.teamdateroad.domain.usecase import javax.inject.Inject import javax.inject.Singleton -import org.sopt.dateroad.domain.repository.UserInfoRepository +import org.sopt.teamdateroad.domain.repository.UserInfoRepository @Singleton class SetRefreshTokenUseCase @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/domain/util/Constraints.kt b/app/src/main/java/org/sopt/teamdateroad/domain/util/Constraints.kt similarity index 98% rename from app/src/main/java/org/sopt/dateroad/domain/util/Constraints.kt rename to app/src/main/java/org/sopt/teamdateroad/domain/util/Constraints.kt index 0b19662f..c6a91c23 100644 --- a/app/src/main/java/org/sopt/dateroad/domain/util/Constraints.kt +++ b/app/src/main/java/org/sopt/teamdateroad/domain/util/Constraints.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.domain.util +package org.sopt.teamdateroad.domain.util object Advertisement { const val EDITOR = "에디터 픽" diff --git a/app/src/main/java/org/sopt/dateroad/presentation/model/RouteModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/model/RouteModel.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/presentation/model/RouteModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/model/RouteModel.kt index ae3bf7df..10c7493b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/model/RouteModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/model/RouteModel.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.model +package org.sopt.teamdateroad.presentation.model sealed interface Route diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/ChipType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/ChipType.kt similarity index 84% rename from app/src/main/java/org/sopt/dateroad/presentation/type/ChipType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/ChipType.kt index eae9dd39..8381bd1c 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/ChipType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/ChipType.kt @@ -1,15 +1,15 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.sopt.dateroad.ui.theme.Black -import org.sopt.dateroad.ui.theme.Gray100 -import org.sopt.dateroad.ui.theme.Gray400 -import org.sopt.dateroad.ui.theme.Purple600 -import org.sopt.dateroad.ui.theme.White -import org.sopt.dateroad.ui.theme.defaultDateRoadTypography +import org.sopt.teamdateroad.ui.theme.Black +import org.sopt.teamdateroad.ui.theme.Gray100 +import org.sopt.teamdateroad.ui.theme.Gray400 +import org.sopt.teamdateroad.ui.theme.Purple600 +import org.sopt.teamdateroad.ui.theme.White +import org.sopt.teamdateroad.ui.theme.defaultDateRoadTypography enum class ChipType( val selectedBackgroundColor: Color, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/CourseDetailUnopenedDetailType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/CourseDetailUnopenedDetailType.kt similarity index 86% rename from app/src/main/java/org/sopt/dateroad/presentation/type/CourseDetailUnopenedDetailType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/CourseDetailUnopenedDetailType.kt index d854a940..ec032a94 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/CourseDetailUnopenedDetailType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/CourseDetailUnopenedDetailType.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class CourseDetailUnopenedDetailType( @StringRes val descriptionStringRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/DateChipGroupType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/DateChipGroupType.kt similarity index 78% rename from app/src/main/java/org/sopt/dateroad/presentation/type/DateChipGroupType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/DateChipGroupType.kt index d9465328..9d0c0dcf 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/DateChipGroupType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/DateChipGroupType.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.StringRes import androidx.compose.ui.text.TextStyle -import org.sopt.dateroad.R -import org.sopt.dateroad.ui.theme.defaultDateRoadTypography +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.ui.theme.defaultDateRoadTypography enum class DateChipGroupType( @StringRes val titleRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/DateRoadRegionBottomSheetType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/DateRoadRegionBottomSheetType.kt similarity index 58% rename from app/src/main/java/org/sopt/dateroad/presentation/type/DateRoadRegionBottomSheetType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/DateRoadRegionBottomSheetType.kt index 111163c8..3c6eb962 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/DateRoadRegionBottomSheetType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/DateRoadRegionBottomSheetType.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type enum class DateRoadRegionBottomSheetType { ENROLL, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/DateTagType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/DateTagType.kt similarity index 95% rename from app/src/main/java/org/sopt/dateroad/presentation/type/DateTagType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/DateTagType.kt index 8b4df2da..a5ae1f61 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/DateTagType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/DateTagType.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class DateTagType( @StringRes val titleRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/EmptyViewType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/EmptyViewType.kt similarity index 93% rename from app/src/main/java/org/sopt/dateroad/presentation/type/EmptyViewType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/EmptyViewType.kt index 1e9be1de..edb08246 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/EmptyViewType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/EmptyViewType.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class EmptyViewType( @StringRes val titleRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/EnrollScreenType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/EnrollScreenType.kt similarity index 67% rename from app/src/main/java/org/sopt/dateroad/presentation/type/EnrollScreenType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/EnrollScreenType.kt index e9e63bc7..3ae23dbb 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/EnrollScreenType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/EnrollScreenType.kt @@ -1,6 +1,6 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type -import org.sopt.dateroad.presentation.util.EnrollScreen +import org.sopt.teamdateroad.presentation.util.EnrollScreen enum class EnrollScreenType( val position: Int diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/EnrollType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/EnrollType.kt similarity index 77% rename from app/src/main/java/org/sopt/dateroad/presentation/type/EnrollType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/EnrollType.kt index c4402e87..cf2f1889 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/EnrollType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/EnrollType.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class EnrollType( @StringRes val topBarTitleRes: Int diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/MainNavigationBarItemType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/MainNavigationBarItemType.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/presentation/type/MainNavigationBarItemType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/MainNavigationBarItemType.kt index 185b1587..a278eacc 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/MainNavigationBarItemType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/MainNavigationBarItemType.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.DrawableRes import androidx.annotation.StringRes import androidx.compose.runtime.Composable -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.model.MainNavigationBarRoute -import org.sopt.dateroad.presentation.model.Route +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.model.MainNavigationBarRoute +import org.sopt.teamdateroad.presentation.model.Route enum class MainNavigationBarItemType( @DrawableRes val iconRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/MyCourseType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/MyCourseType.kt similarity index 77% rename from app/src/main/java/org/sopt/dateroad/presentation/type/MyCourseType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/MyCourseType.kt index 5008d21a..41276a7c 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/MyCourseType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/MyCourseType.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class MyCourseType( @StringRes val topBarTitleRes: Int diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/MyPageMenuType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/MyPageMenuType.kt similarity index 86% rename from app/src/main/java/org/sopt/dateroad/presentation/type/MyPageMenuType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/MyPageMenuType.kt index 744dd66f..7eb7dc7c 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/MyPageMenuType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/MyPageMenuType.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class MyPageMenuType( @StringRes val titleRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/MyPagePointInfoType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/MyPagePointInfoType.kt similarity index 92% rename from app/src/main/java/org/sopt/dateroad/presentation/type/MyPagePointInfoType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/MyPagePointInfoType.kt index 73ce9226..9701b5a7 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/MyPagePointInfoType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/MyPagePointInfoType.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class MyPagePointInfoType( @StringRes val titleRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/OnboardingType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/OnboardingType.kt similarity index 93% rename from app/src/main/java/org/sopt/dateroad/presentation/type/OnboardingType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/OnboardingType.kt index aedc1cb3..5bbe4820 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/OnboardingType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/OnboardingType.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class OnboardingType( @StringRes val titleRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/OneButtonDialogType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/OneButtonDialogType.kt similarity index 79% rename from app/src/main/java/org/sopt/dateroad/presentation/type/OneButtonDialogType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/OneButtonDialogType.kt index 208a7726..f58c25dc 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/OneButtonDialogType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/OneButtonDialogType.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class OneButtonDialogType( @StringRes val titleRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/OneButtonDialogWithDescriptionType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/OneButtonDialogWithDescriptionType.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/type/OneButtonDialogWithDescriptionType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/OneButtonDialogWithDescriptionType.kt index 212578e5..bf97509b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/OneButtonDialogWithDescriptionType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/OneButtonDialogWithDescriptionType.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class OneButtonDialogWithDescriptionType( @StringRes val titleRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/PlaceCardType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/PlaceCardType.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/type/PlaceCardType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/PlaceCardType.kt index db8d9ee7..0e74b705 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/PlaceCardType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/PlaceCardType.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.DrawableRes import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class PlaceCardType( @DrawableRes val iconRes: Int? = null, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/PointHistoryTabType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/PointHistoryTabType.kt similarity index 60% rename from app/src/main/java/org/sopt/dateroad/presentation/type/PointHistoryTabType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/PointHistoryTabType.kt index e96d753b..150e2b4a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/PointHistoryTabType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/PointHistoryTabType.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.StringRes -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.util.PointHistoryTab.GAINED_HISTORY_POSITION -import org.sopt.dateroad.presentation.util.PointHistoryTab.USED_HISTORY_POSITION +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.util.PointHistoryTab.GAINED_HISTORY_POSITION +import org.sopt.teamdateroad.presentation.util.PointHistoryTab.USED_HISTORY_POSITION enum class PointHistoryTabType( val position: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/PointSystemType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/PointSystemType.kt similarity index 92% rename from app/src/main/java/org/sopt/dateroad/presentation/type/PointSystemType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/PointSystemType.kt index 3957832d..739b2271 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/PointSystemType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/PointSystemType.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.DrawableRes import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class PointSystemType( @StringRes val titleRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/ProfileType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/ProfileType.kt similarity index 84% rename from app/src/main/java/org/sopt/dateroad/presentation/type/ProfileType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/ProfileType.kt index 529d5ded..a0e5681e 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/ProfileType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/ProfileType.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class ProfileType( @StringRes val topAppBarTitleRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/TagType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/TagType.kt similarity index 96% rename from app/src/main/java/org/sopt/dateroad/presentation/type/TagType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/TagType.kt index 15a74ea6..438b1c95 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/TagType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/TagType.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.TextStyle -import org.sopt.dateroad.ui.theme.defaultDateRoadColors -import org.sopt.dateroad.ui.theme.defaultDateRoadTypography +import org.sopt.teamdateroad.ui.theme.defaultDateRoadColors +import org.sopt.teamdateroad.ui.theme.defaultDateRoadTypography enum class TagType( val backgroundColor: Color, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/TimelineType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/TimelineType.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/presentation/type/TimelineType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/TimelineType.kt index 3ba2fd80..e8ba9b8f 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/TimelineType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/TimelineType.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.ColorRes import androidx.compose.ui.graphics.Color -import org.sopt.dateroad.ui.theme.defaultDateRoadColors +import org.sopt.teamdateroad.ui.theme.defaultDateRoadColors enum class TimelineType( val index: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/TwoButtonDialogType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/TwoButtonDialogType.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/type/TwoButtonDialogType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/TwoButtonDialogType.kt index b91457d5..7fb5209c 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/TwoButtonDialogType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/TwoButtonDialogType.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class TwoButtonDialogType( @StringRes val titleRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/type/TwoButtonDialogWithDescriptionType.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/type/TwoButtonDialogWithDescriptionType.kt similarity index 96% rename from app/src/main/java/org/sopt/dateroad/presentation/type/TwoButtonDialogWithDescriptionType.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/type/TwoButtonDialogWithDescriptionType.kt index 2f67f1ad..7741e9df 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/type/TwoButtonDialogWithDescriptionType.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/type/TwoButtonDialogWithDescriptionType.kt @@ -1,7 +1,7 @@ -package org.sopt.dateroad.presentation.type +package org.sopt.teamdateroad.presentation.type import androidx.annotation.StringRes -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R enum class TwoButtonDialogWithDescriptionType( @StringRes val titleRes: Int, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/AdvertisementContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/AdvertisementContract.kt similarity index 59% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/AdvertisementContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/AdvertisementContract.kt index 76196a92..2628199a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/AdvertisementContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/AdvertisementContract.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.presentation.ui.advertisement +package org.sopt.teamdateroad.presentation.ui.advertisement -import org.sopt.dateroad.domain.model.AdvertisementDetail -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.AdvertisementDetail +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class AdvertisementContract { data class AdvertisementUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/AdvertisementScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/AdvertisementScreen.kt similarity index 85% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/AdvertisementScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/AdvertisementScreen.kt index acea7706..84eca842 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/AdvertisementScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/AdvertisementScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.advertisement +package org.sopt.teamdateroad.presentation.ui.advertisement import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -20,14 +20,14 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle import com.google.accompanist.pager.ExperimentalPagerApi import com.google.accompanist.pager.PagerState -import org.sopt.dateroad.presentation.ui.advertisement.component.AdvertisementDetail -import org.sopt.dateroad.presentation.ui.component.pager.DateRoadImagePager -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadScrollResponsiveTopBar -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadIdleView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.ui.advertisement.component.AdvertisementDetail +import org.sopt.teamdateroad.presentation.ui.component.pager.DateRoadImagePager +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadScrollResponsiveTopBar +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadIdleView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun AdvertisementRoute( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/AdvertisementViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/AdvertisementViewModel.kt similarity index 86% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/AdvertisementViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/AdvertisementViewModel.kt index 6a09f4d9..9b535479 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/AdvertisementViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/AdvertisementViewModel.kt @@ -1,12 +1,12 @@ -package org.sopt.dateroad.presentation.ui.advertisement +package org.sopt.teamdateroad.presentation.ui.advertisement import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.domain.usecase.GetAdvertisementDetailUseCase -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.usecase.GetAdvertisementDetailUseCase +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class AdvertisementViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/component/AdvertisementDetail.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/component/AdvertisementDetail.kt similarity index 85% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/component/AdvertisementDetail.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/component/AdvertisementDetail.kt index 743c6199..f2987140 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/component/AdvertisementDetail.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/component/AdvertisementDetail.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.advertisement.component +package org.sopt.teamdateroad.presentation.ui.advertisement.component import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -8,9 +8,9 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadTextTag -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadTextTag +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun AdvertisementDetail( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/navigation/AdvertisementNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/navigation/AdvertisementNavigation.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/navigation/AdvertisementNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/navigation/AdvertisementNavigation.kt index 377ac936..e099e464 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/advertisement/navigation/AdvertisementNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/advertisement/navigation/AdvertisementNavigation.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.presentation.ui.advertisement.navigation +package org.sopt.teamdateroad.presentation.ui.advertisement.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument -import org.sopt.dateroad.presentation.ui.advertisement.AdvertisementRoute +import org.sopt.teamdateroad.presentation.ui.advertisement.AdvertisementRoute fun NavController.navigationAdvertisement(advertisementId: Int) { this.navigate(route = AdvertisementRoute.route(advertisementId = advertisementId)) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/DateRoadBasicBottomSheet.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/DateRoadBasicBottomSheet.kt similarity index 93% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/DateRoadBasicBottomSheet.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/DateRoadBasicBottomSheet.kt index d03d95fb..d69fde67 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/DateRoadBasicBottomSheet.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/DateRoadBasicBottomSheet.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.bottomsheet +package org.sopt.teamdateroad.presentation.ui.component.bottomsheet import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -19,9 +19,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/DateRoadBottomSheet.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/DateRoadBottomSheet.kt similarity index 94% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/DateRoadBottomSheet.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/DateRoadBottomSheet.kt index b2708ae9..31cb5dee 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/DateRoadBottomSheet.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/DateRoadBottomSheet.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.bottomsheet +package org.sopt.teamdateroad.presentation.ui.component.bottomsheet import android.annotation.SuppressLint import androidx.compose.foundation.layout.Column @@ -25,11 +25,10 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch -import org.sopt.dateroad.presentation.ui.component.button.DateRoadBasicButton -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadBasicButton +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @SuppressLint("CoroutineCreationDuringComposition") @OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/DateRoadPickerBottomSheet.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/DateRoadPickerBottomSheet.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/DateRoadPickerBottomSheet.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/DateRoadPickerBottomSheet.kt index 843d6ade..770fd303 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/DateRoadPickerBottomSheet.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/DateRoadPickerBottomSheet.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.bottomsheet +package org.sopt.teamdateroad.presentation.ui.component.bottomsheet import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -18,9 +18,9 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.ui.component.bottomsheet.model.Picker -import org.sopt.dateroad.presentation.ui.component.numberpicker.DateRoadNumberPicker -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.ui.component.bottomsheet.model.Picker +import org.sopt.teamdateroad.presentation.ui.component.numberpicker.DateRoadNumberPicker +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/DateRoadRegionBottomSheet.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/DateRoadRegionBottomSheet.kt similarity index 93% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/DateRoadRegionBottomSheet.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/DateRoadRegionBottomSheet.kt index a8a38b25..5a36e582 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/bottomsheet/DateRoadRegionBottomSheet.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/DateRoadRegionBottomSheet.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.bottomsheet +package org.sopt.teamdateroad.presentation.ui.component.bottomsheet import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement @@ -32,16 +32,16 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.type.GyeonggiAreaType -import org.sopt.dateroad.domain.type.IncheonAreaType -import org.sopt.dateroad.domain.type.RegionType -import org.sopt.dateroad.domain.type.SeoulAreaType -import org.sopt.dateroad.presentation.type.ChipType -import org.sopt.dateroad.presentation.type.DateRoadRegionBottomSheetType -import org.sopt.dateroad.presentation.ui.component.chip.DateRoadTextChip -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.type.GyeonggiAreaType +import org.sopt.teamdateroad.domain.type.IncheonAreaType +import org.sopt.teamdateroad.domain.type.RegionType +import org.sopt.teamdateroad.domain.type.SeoulAreaType +import org.sopt.teamdateroad.presentation.type.ChipType +import org.sopt.teamdateroad.presentation.type.DateRoadRegionBottomSheetType +import org.sopt.teamdateroad.presentation.ui.component.chip.DateRoadTextChip +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) @Composable diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/model/Picker.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/model/Picker.kt new file mode 100644 index 00000000..8ccae52f --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/bottomsheet/model/Picker.kt @@ -0,0 +1,9 @@ +package org.sopt.teamdateroad.presentation.ui.component.bottomsheet.model + +import org.sopt.teamdateroad.presentation.ui.component.numberpicker.state.PickerState + +data class Picker( + val items: List, + val startIndex: Int = 0, + val pickerState: PickerState = PickerState() +) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadAreaButton.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadAreaButton.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadAreaButton.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadAreaButton.kt index 31f21f39..85afa594 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadAreaButton.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadAreaButton.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.button +package org.sopt.teamdateroad.presentation.ui.component.button import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer @@ -12,9 +12,9 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadAreaButton( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadBasicButton.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadBasicButton.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadBasicButton.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadBasicButton.kt index 7d3c01de..148ec5fd 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadBasicButton.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadBasicButton.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.button +package org.sopt.teamdateroad.presentation.ui.component.button import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth @@ -7,8 +7,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadBasicButton( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadButton.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadButton.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadButton.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadButton.kt index 3e5cbccb..1363f528 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadButton.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadButton.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.button +package org.sopt.teamdateroad.presentation.ui.component.button import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -12,7 +12,7 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.Color import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.util.modifier.noRippleDebounceClickable +import org.sopt.teamdateroad.presentation.util.modifier.noRippleDebounceClickable @Composable fun DateRoadButton( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadFilledButton.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadFilledButton.kt similarity index 95% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadFilledButton.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadFilledButton.kt index a0cd6416..2a17c8a1 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadFilledButton.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadFilledButton.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.button +package org.sopt.teamdateroad.presentation.ui.component.button import androidx.compose.foundation.layout.Column import androidx.compose.material3.Text @@ -10,8 +10,8 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadFilledButton( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadImageButton.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadImageButton.kt similarity index 92% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadImageButton.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadImageButton.kt index f45a9426..7b562d4a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadImageButton.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadImageButton.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.button +package org.sopt.teamdateroad.presentation.ui.component.button import androidx.compose.foundation.layout.Column import androidx.compose.material3.Icon @@ -9,9 +9,9 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadImageButton( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadKakaoLoginButton.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadKakaoLoginButton.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadKakaoLoginButton.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadKakaoLoginButton.kt index 9b92a774..150f2f0b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadKakaoLoginButton.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadKakaoLoginButton.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.button +package org.sopt.teamdateroad.presentation.ui.component.button import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Row @@ -20,9 +20,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.em import androidx.compose.ui.unit.sp -import org.sopt.dateroad.R -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadKakaoLoginButton( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadOutlinedButton.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadOutlinedButton.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadOutlinedButton.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadOutlinedButton.kt index 13a005d4..87a9b3f0 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadOutlinedButton.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadOutlinedButton.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.button +package org.sopt.teamdateroad.presentation.ui.component.button import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.material3.Text @@ -10,8 +10,8 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadOutlinedButton( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadTextButton.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadTextButton.kt similarity index 93% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadTextButton.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadTextButton.kt index 02fb905c..047fd9dc 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/button/DateRoadTextButton.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/button/DateRoadTextButton.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.button +package org.sopt.teamdateroad.presentation.ui.component.button import androidx.compose.foundation.layout.Column import androidx.compose.material3.Text @@ -9,8 +9,8 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadTextButton( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/card/DateRoadCourseCard.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/card/DateRoadCourseCard.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/card/DateRoadCourseCard.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/card/DateRoadCourseCard.kt index 53f8de4e..fc1f9c1e 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/card/DateRoadCourseCard.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/card/DateRoadCourseCard.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.card +package org.sopt.teamdateroad.presentation.ui.component.card import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -24,12 +24,12 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import coil.request.ImageRequest -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadImageTag -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadImageTag +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadCourseCard( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/card/DateRoadPlaceCard.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/card/DateRoadPlaceCard.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/card/DateRoadPlaceCard.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/card/DateRoadPlaceCard.kt index ba0028ef..263fc0d8 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/card/DateRoadPlaceCard.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/card/DateRoadPlaceCard.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.card +package org.sopt.teamdateroad.presentation.ui.component.card import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -20,12 +20,12 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.domain.model.Place -import org.sopt.dateroad.presentation.type.PlaceCardType -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadTextTag -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.domain.model.Place +import org.sopt.teamdateroad.presentation.type.PlaceCardType +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadTextTag +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadPlaceCard( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/chip/DateRoadChip.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/chip/DateRoadChip.kt similarity index 84% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/chip/DateRoadChip.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/chip/DateRoadChip.kt index 301a3bc9..ca53c880 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/chip/DateRoadChip.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/chip/DateRoadChip.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.chip +package org.sopt.teamdateroad.presentation.ui.component.chip import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -8,8 +8,8 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import org.sopt.dateroad.presentation.type.ChipType -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.presentation.type.ChipType +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable @Composable fun DateRoadChip( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/chip/DateRoadImageChip.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/chip/DateRoadImageChip.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/chip/DateRoadImageChip.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/chip/DateRoadImageChip.kt index 3bd5426b..4491bbee 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/chip/DateRoadImageChip.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/chip/DateRoadImageChip.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.chip +package org.sopt.teamdateroad.presentation.ui.component.chip import androidx.annotation.DrawableRes import androidx.annotation.StringRes @@ -15,8 +15,8 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.ChipType -import org.sopt.dateroad.presentation.type.DateTagType +import org.sopt.teamdateroad.presentation.type.ChipType +import org.sopt.teamdateroad.presentation.type.DateTagType @Composable fun DateRoadImageChip( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/chip/DateRoadTextChip.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/chip/DateRoadTextChip.kt similarity index 93% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/chip/DateRoadTextChip.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/chip/DateRoadTextChip.kt index 625ce023..351cc774 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/chip/DateRoadTextChip.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/chip/DateRoadTextChip.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.chip +package org.sopt.teamdateroad.presentation.ui.component.chip import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -9,7 +9,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.ChipType +import org.sopt.teamdateroad.presentation.type.ChipType @Composable fun DateRoadTextChip( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/chipgroup/DateRoadDateChipGroup.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/chipgroup/DateRoadDateChipGroup.kt similarity index 86% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/chipgroup/DateRoadDateChipGroup.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/chipgroup/DateRoadDateChipGroup.kt index 32967c01..ab62d948 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/chipgroup/DateRoadDateChipGroup.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/chipgroup/DateRoadDateChipGroup.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.chipgroup +package org.sopt.teamdateroad.presentation.ui.component.chipgroup import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -17,12 +17,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.ChipType -import org.sopt.dateroad.presentation.type.DateChipGroupType -import org.sopt.dateroad.presentation.type.DateTagType -import org.sopt.dateroad.presentation.ui.component.chip.DateRoadImageChip -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.type.ChipType +import org.sopt.teamdateroad.presentation.type.DateChipGroupType +import org.sopt.teamdateroad.presentation.type.DateTagType +import org.sopt.teamdateroad.presentation.ui.component.chip.DateRoadImageChip +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @OptIn(ExperimentalLayoutApi::class) @Composable diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadDialog.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadDialog.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadDialog.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadDialog.kt index f693d21d..dd6f3311 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadDialog.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadDialog.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.dialog +package org.sopt.teamdateroad.presentation.ui.component.dialog import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -16,10 +16,10 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog -import org.sopt.dateroad.presentation.type.OneButtonDialogType -import org.sopt.dateroad.presentation.type.OneButtonDialogWithDescriptionType -import org.sopt.dateroad.presentation.type.TwoButtonDialogType -import org.sopt.dateroad.presentation.type.TwoButtonDialogWithDescriptionType +import org.sopt.teamdateroad.presentation.type.OneButtonDialogType +import org.sopt.teamdateroad.presentation.type.OneButtonDialogWithDescriptionType +import org.sopt.teamdateroad.presentation.type.TwoButtonDialogType +import org.sopt.teamdateroad.presentation.type.TwoButtonDialogWithDescriptionType @Composable fun DateRoadDialog( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadOneButtonDialog.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadOneButtonDialog.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadOneButtonDialog.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadOneButtonDialog.kt index c5b3e648..84a68d14 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadOneButtonDialog.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadOneButtonDialog.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.dialog +package org.sopt.teamdateroad.presentation.ui.component.dialog import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -15,9 +15,9 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.OneButtonDialogType -import org.sopt.dateroad.presentation.ui.component.button.DateRoadBasicButton -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.type.OneButtonDialogType +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadBasicButton +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadOneButtonDialog( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadOneButtonDialogWithDescription.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadOneButtonDialogWithDescription.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadOneButtonDialogWithDescription.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadOneButtonDialogWithDescription.kt index 33682f02..ce5bb778 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadOneButtonDialogWithDescription.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadOneButtonDialogWithDescription.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.dialog +package org.sopt.teamdateroad.presentation.ui.component.dialog import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -15,9 +15,9 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.OneButtonDialogWithDescriptionType -import org.sopt.dateroad.presentation.ui.component.button.DateRoadBasicButton -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.type.OneButtonDialogWithDescriptionType +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadBasicButton +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadOneButtonDialogWithDescription( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadTwoButtonDialog.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadTwoButtonDialog.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadTwoButtonDialog.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadTwoButtonDialog.kt index 6ea96679..155d7635 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadTwoButtonDialog.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadTwoButtonDialog.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.dialog +package org.sopt.teamdateroad.presentation.ui.component.dialog import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -17,9 +17,9 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.TwoButtonDialogType -import org.sopt.dateroad.presentation.ui.component.button.DateRoadBasicButton -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.type.TwoButtonDialogType +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadBasicButton +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadTwoButtonDialog( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadTwoButtonDialogWithDescription.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadTwoButtonDialogWithDescription.kt similarity index 92% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadTwoButtonDialogWithDescription.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadTwoButtonDialogWithDescription.kt index d003950b..f65b8db1 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/dialog/DateRoadTwoButtonDialogWithDescription.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dialog/DateRoadTwoButtonDialogWithDescription.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.dialog +package org.sopt.teamdateroad.presentation.ui.component.dialog import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -17,9 +17,9 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.TwoButtonDialogWithDescriptionType -import org.sopt.dateroad.presentation.ui.component.button.DateRoadBasicButton -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.type.TwoButtonDialogWithDescriptionType +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadBasicButton +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadTwoButtonDialogWithDescription( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/dotsindicator/DotsIndicator.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dotsindicator/DotsIndicator.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/dotsindicator/DotsIndicator.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dotsindicator/DotsIndicator.kt index d0ecbca7..adfc59cd 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/dotsindicator/DotsIndicator.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/dotsindicator/DotsIndicator.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.dotsindicator +package org.sopt.teamdateroad.presentation.ui.component.dotsindicator import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -11,7 +11,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DotsIndicator(totalDots: Int, selectedIndex: Int, modifier: Modifier = Modifier, indicatorSize: Dp) { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/numberpicker/DateRoadNumberPicker.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/numberpicker/DateRoadNumberPicker.kt similarity index 92% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/numberpicker/DateRoadNumberPicker.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/numberpicker/DateRoadNumberPicker.kt index 979a8fc1..09c42f23 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/numberpicker/DateRoadNumberPicker.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/numberpicker/DateRoadNumberPicker.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.numberpicker +package org.sopt.teamdateroad.presentation.ui.component.numberpicker import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.gestures.snapping.rememberSnapFlingBehavior @@ -31,10 +31,10 @@ import androidx.compose.ui.unit.IntSize import androidx.compose.ui.unit.dp import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map -import org.sopt.dateroad.presentation.ui.component.numberpicker.state.PickerState -import org.sopt.dateroad.presentation.ui.component.numberpicker.state.rememberPickerState -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.ui.component.numberpicker.state.PickerState +import org.sopt.teamdateroad.presentation.ui.component.numberpicker.state.rememberPickerState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @OptIn(ExperimentalFoundationApi::class) @Composable diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/numberpicker/state/PickerState.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/numberpicker/state/PickerState.kt similarity index 82% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/numberpicker/state/PickerState.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/numberpicker/state/PickerState.kt index 7c3fc7ed..f096c833 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/numberpicker/state/PickerState.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/numberpicker/state/PickerState.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.numberpicker.state +package org.sopt.teamdateroad.presentation.ui.component.numberpicker.state import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/pager/DateRoadImagePager.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/pager/DateRoadImagePager.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/pager/DateRoadImagePager.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/pager/DateRoadImagePager.kt index de6c7ecc..e0ab66cc 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/pager/DateRoadImagePager.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/pager/DateRoadImagePager.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.pager +package org.sopt.teamdateroad.presentation.ui.component.pager import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.aspectRatio @@ -16,10 +16,10 @@ import coil.request.ImageRequest import com.google.accompanist.pager.ExperimentalPagerApi import com.google.accompanist.pager.HorizontalPager import com.google.accompanist.pager.PagerState -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadImageTag -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadTextTag +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadImageTag +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadTextTag @OptIn(ExperimentalPagerApi::class) @Composable diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/partialcolortext/PartialColorText.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/partialcolortext/PartialColorText.kt similarity index 94% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/partialcolortext/PartialColorText.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/partialcolortext/PartialColorText.kt index 54935865..3a18300c 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/partialcolortext/PartialColorText.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/partialcolortext/PartialColorText.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.partialcolortext +package org.sopt.teamdateroad.presentation.ui.component.partialcolortext import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/tabbar/DateRoadTabBar.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tabbar/DateRoadTabBar.kt similarity index 95% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/tabbar/DateRoadTabBar.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tabbar/DateRoadTabBar.kt index d806a4aa..1eb2ba99 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/tabbar/DateRoadTabBar.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tabbar/DateRoadTabBar.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.tabbar +package org.sopt.teamdateroad.presentation.ui.component.tabbar import androidx.compose.animation.core.AnimationSpec import androidx.compose.animation.core.FastOutSlowInEasing @@ -30,9 +30,9 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.Constraints import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme enum class SubComposeID { HEIGHT, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/tag/DateRoadImageTag.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tag/DateRoadImageTag.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/tag/DateRoadImageTag.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tag/DateRoadImageTag.kt index 0847a514..e779e5f3 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/tag/DateRoadImageTag.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tag/DateRoadImageTag.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.tag +package org.sopt.teamdateroad.presentation.ui.component.tag import androidx.annotation.DrawableRes import androidx.compose.foundation.Image @@ -14,10 +14,10 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.type.DateTagType -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.type.DateTagType +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.ui.theme.DATEROADTheme @Composable fun DateRoadImageTag( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/tag/DateRoadPointTag.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tag/DateRoadPointTag.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/tag/DateRoadPointTag.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tag/DateRoadPointTag.kt index 1fbdb95e..96de7b58 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/tag/DateRoadPointTag.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tag/DateRoadPointTag.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.tag +package org.sopt.teamdateroad.presentation.ui.component.tag import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -21,10 +21,10 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import coil.request.ImageRequest -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadPointTag( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/tag/DateRoadTag.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tag/DateRoadTag.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/tag/DateRoadTag.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tag/DateRoadTag.kt index a0d9e888..a132a213 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/tag/DateRoadTag.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tag/DateRoadTag.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.tag +package org.sopt.teamdateroad.presentation.ui.component.tag import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -8,7 +8,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.type.TagType @Composable fun DateRoadTag( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/tag/DateRoadTextTag.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tag/DateRoadTextTag.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/tag/DateRoadTextTag.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tag/DateRoadTextTag.kt index 02356d1a..cdf360da 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/tag/DateRoadTextTag.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/tag/DateRoadTextTag.kt @@ -1,12 +1,12 @@ -package org.sopt.dateroad.presentation.ui.component.tag +package org.sopt.teamdateroad.presentation.ui.component.tag import androidx.compose.foundation.layout.Column import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.ui.theme.DATEROADTheme @Composable fun DateRoadTextTag( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/textfield/DateRoadBasicTextField.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/textfield/DateRoadBasicTextField.kt similarity index 95% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/textfield/DateRoadBasicTextField.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/textfield/DateRoadBasicTextField.kt index 164d6808..01d42850 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/textfield/DateRoadBasicTextField.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/textfield/DateRoadBasicTextField.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.textfield +package org.sopt.teamdateroad.presentation.ui.component.textfield import androidx.annotation.DrawableRes import androidx.compose.foundation.background @@ -31,10 +31,10 @@ import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.ui.component.textfield.model.TextFieldValidateResult -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.ui.component.textfield.model.TextFieldValidateResult +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadBasicTextField( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/textfield/DateRoadTextArea.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/textfield/DateRoadTextArea.kt similarity index 95% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/textfield/DateRoadTextArea.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/textfield/DateRoadTextArea.kt index bb49dfe5..5cf95930 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/textfield/DateRoadTextArea.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/textfield/DateRoadTextArea.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.textfield +package org.sopt.teamdateroad.presentation.ui.component.textfield import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -24,9 +24,9 @@ import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadTextArea( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/textfield/DateRoadTextFieldWithButton.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/textfield/DateRoadTextFieldWithButton.kt similarity index 95% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/textfield/DateRoadTextFieldWithButton.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/textfield/DateRoadTextFieldWithButton.kt index bf7289e1..14f9350b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/textfield/DateRoadTextFieldWithButton.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/textfield/DateRoadTextFieldWithButton.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.textfield +package org.sopt.teamdateroad.presentation.ui.component.textfield import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -26,11 +26,11 @@ import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.ui.component.button.DateRoadFilledButton -import org.sopt.dateroad.presentation.ui.component.textfield.model.TextFieldValidateResult -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadFilledButton +import org.sopt.teamdateroad.presentation.ui.component.textfield.model.TextFieldValidateResult +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadTextFieldWithButton( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/textfield/model/TextFieldValidateResult.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/textfield/model/TextFieldValidateResult.kt similarity index 78% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/textfield/model/TextFieldValidateResult.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/textfield/model/TextFieldValidateResult.kt index 153372e1..f753ddcc 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/textfield/model/TextFieldValidateResult.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/textfield/model/TextFieldValidateResult.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.textfield.model +package org.sopt.teamdateroad.presentation.ui.component.textfield.model sealed class TextFieldValidateResult { data object Basic : TextFieldValidateResult() diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/topbar/DateRoadBasicTopBar.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/topbar/DateRoadBasicTopBar.kt similarity index 94% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/topbar/DateRoadBasicTopBar.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/topbar/DateRoadBasicTopBar.kt index c81f763f..527d14b4 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/topbar/DateRoadBasicTopBar.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/topbar/DateRoadBasicTopBar.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.topbar +package org.sopt.teamdateroad.presentation.ui.component.topbar import androidx.annotation.DrawableRes import androidx.compose.foundation.background @@ -23,10 +23,10 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.ui.component.button.DateRoadFilledButton -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadFilledButton +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadBasicTopBar( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/topbar/DateRoadLeftTitleTopBar.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/topbar/DateRoadLeftTitleTopBar.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/topbar/DateRoadLeftTitleTopBar.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/topbar/DateRoadLeftTitleTopBar.kt index b5208f8f..3465d1cf 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/topbar/DateRoadLeftTitleTopBar.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/topbar/DateRoadLeftTitleTopBar.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.topbar +package org.sopt.teamdateroad.presentation.ui.component.topbar import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -13,8 +13,8 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.ui.component.button.DateRoadImageButton -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadImageButton +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadLeftTitleTopBar( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/topbar/DateRoadScrollResponsiveTopBar.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/topbar/DateRoadScrollResponsiveTopBar.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/topbar/DateRoadScrollResponsiveTopBar.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/topbar/DateRoadScrollResponsiveTopBar.kt index afdd33ec..48416b9d 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/topbar/DateRoadScrollResponsiveTopBar.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/topbar/DateRoadScrollResponsiveTopBar.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.topbar +package org.sopt.teamdateroad.presentation.ui.component.topbar import androidx.annotation.DrawableRes import androidx.compose.foundation.background @@ -10,9 +10,9 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadScrollResponsiveTopBar( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DataRoadIdeView.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DataRoadIdeView.kt similarity index 79% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DataRoadIdeView.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DataRoadIdeView.kt index aa87d367..05d3b708 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DataRoadIdeView.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DataRoadIdeView.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.presentation.ui.component.view +package org.sopt.teamdateroad.presentation.ui.component.view import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadIdleView( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadEmptyView.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadEmptyView.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadEmptyView.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadEmptyView.kt index 8238daa2..459f5bc1 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadEmptyView.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadEmptyView.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.view +package org.sopt.teamdateroad.presentation.ui.component.view import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement @@ -15,9 +15,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.EmptyViewType -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.type.EmptyViewType +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadEmptyView( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadErrorView.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadErrorView.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadErrorView.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadErrorView.kt index e01d78e6..bf2991f7 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadErrorView.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadErrorView.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.view +package org.sopt.teamdateroad.presentation.ui.component.view import androidx.activity.compose.LocalOnBackPressedDispatcherOwner import androidx.compose.foundation.Image @@ -17,9 +17,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadBasicTopBar -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadBasicTopBar +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadErrorView() { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadLoadingView.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadLoadingView.kt similarity index 84% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadLoadingView.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadLoadingView.kt index dde0fbf4..3b088a72 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadLoadingView.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadLoadingView.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.view +package org.sopt.teamdateroad.presentation.ui.component.view import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -16,10 +16,10 @@ import com.airbnb.lottie.compose.LottieCompositionSpec import com.airbnb.lottie.compose.LottieConstants import com.airbnb.lottie.compose.rememberLottieAnimatable import com.airbnb.lottie.compose.rememberLottieComposition -import org.sopt.dateroad.presentation.util.LoadingView.CLIP_MAX -import org.sopt.dateroad.presentation.util.LoadingView.CLIP_MIN -import org.sopt.dateroad.presentation.util.LoadingView.LOTTIE -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.util.LoadingView.CLIP_MAX +import org.sopt.teamdateroad.presentation.util.LoadingView.CLIP_MIN +import org.sopt.teamdateroad.presentation.util.LoadingView.LOTTIE +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadLoadingView() { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadWebView.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadWebView.kt similarity index 96% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadWebView.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadWebView.kt index 3364e6d2..13e65bb8 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/component/view/DateRoadWebView.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/component/view/DateRoadWebView.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.component.view +package org.sopt.teamdateroad.presentation.ui.component.view import android.webkit.WebViewClient import androidx.activity.compose.BackHandler diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/CourseDetailContract.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/CourseDetailContract.kt index 6f5842eb..0b0c8071 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/CourseDetailContract.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.presentation.ui.coursedetail +package org.sopt.teamdateroad.presentation.ui.coursedetail -import org.sopt.dateroad.domain.model.CourseDetail -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.CourseDetail +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class CourseDetailContract { data class CourseDetailUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/CourseDetailScreen.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/CourseDetailScreen.kt index 0d19125d..a8c22b97 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/CourseDetailScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.coursedetail +package org.sopt.teamdateroad.presentation.ui.coursedetail import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -26,38 +26,38 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle import com.google.accompanist.pager.ExperimentalPagerApi import com.google.accompanist.pager.PagerState -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.CourseDetail -import org.sopt.dateroad.domain.model.Place -import org.sopt.dateroad.presentation.type.CourseDetailUnopenedDetailType -import org.sopt.dateroad.presentation.type.DateTagType.Companion.getDateTagTypeByName -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.type.TwoButtonDialogWithDescriptionType -import org.sopt.dateroad.presentation.ui.component.bottomsheet.DateRoadBasicBottomSheet -import org.sopt.dateroad.presentation.ui.component.dialog.DateRoadTwoButtonDialogWithDescription -import org.sopt.dateroad.presentation.ui.component.pager.DateRoadImagePager -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadScrollResponsiveTopBar -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadIdleView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadWebView -import org.sopt.dateroad.presentation.ui.coursedetail.component.CourseDetailBasicInfo -import org.sopt.dateroad.presentation.ui.coursedetail.component.CourseDetailBottomBar -import org.sopt.dateroad.presentation.ui.coursedetail.component.CourseDetailUnopenedDetail -import org.sopt.dateroad.presentation.ui.coursedetail.component.courseDetailOpenedDetail -import org.sopt.dateroad.presentation.util.CourseDetail.POINT_LACK -import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_BACK -import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_PURCHASE -import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_ID -import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_TITLE -import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.PURCHASE_SUCCESS -import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.VIEW_COURSE_DETAILS -import org.sopt.dateroad.presentation.util.ViewPath.COURSE_DETAIL -import org.sopt.dateroad.presentation.util.WebViewUrl.REPORT_URL -import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.CourseDetail +import org.sopt.teamdateroad.domain.model.Place +import org.sopt.teamdateroad.presentation.type.CourseDetailUnopenedDetailType +import org.sopt.teamdateroad.presentation.type.DateTagType.Companion.getDateTagTypeByName +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.type.TwoButtonDialogWithDescriptionType +import org.sopt.teamdateroad.presentation.ui.component.bottomsheet.DateRoadBasicBottomSheet +import org.sopt.teamdateroad.presentation.ui.component.dialog.DateRoadTwoButtonDialogWithDescription +import org.sopt.teamdateroad.presentation.ui.component.pager.DateRoadImagePager +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadScrollResponsiveTopBar +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadIdleView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadWebView +import org.sopt.teamdateroad.presentation.ui.coursedetail.component.CourseDetailBasicInfo +import org.sopt.teamdateroad.presentation.ui.coursedetail.component.CourseDetailBottomBar +import org.sopt.teamdateroad.presentation.ui.coursedetail.component.CourseDetailUnopenedDetail +import org.sopt.teamdateroad.presentation.ui.coursedetail.component.courseDetailOpenedDetail +import org.sopt.teamdateroad.presentation.util.CourseDetail.POINT_LACK +import org.sopt.teamdateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_BACK +import org.sopt.teamdateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_PURCHASE +import org.sopt.teamdateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_ID +import org.sopt.teamdateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_TITLE +import org.sopt.teamdateroad.presentation.util.CourseDetailAmplitude.PURCHASE_SUCCESS +import org.sopt.teamdateroad.presentation.util.CourseDetailAmplitude.VIEW_COURSE_DETAILS +import org.sopt.teamdateroad.presentation.util.ViewPath.COURSE_DETAIL +import org.sopt.teamdateroad.presentation.util.WebViewUrl.REPORT_URL +import org.sopt.teamdateroad.presentation.util.amplitude.AmplitudeUtils +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun CourseDetailRoute( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt index e672944c..d922ec44 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/CourseDetailViewModel.kt @@ -1,24 +1,24 @@ -package org.sopt.dateroad.presentation.ui.coursedetail +package org.sopt.teamdateroad.presentation.ui.coursedetail import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.domain.model.UsePoint -import org.sopt.dateroad.domain.usecase.DeleteCourseLikeUseCase -import org.sopt.dateroad.domain.usecase.DeleteCourseUseCase -import org.sopt.dateroad.domain.usecase.GetCourseDetailUseCase -import org.sopt.dateroad.domain.usecase.PostCourseLikeUseCase -import org.sopt.dateroad.domain.usecase.PostUsePointUseCase -import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_LIKES -import org.sopt.dateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_LIKE -import org.sopt.dateroad.presentation.util.Point -import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_FREE_REMAINED -import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_POINT -import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_PURCHASE_COUNT -import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.UsePoint +import org.sopt.teamdateroad.domain.usecase.DeleteCourseLikeUseCase +import org.sopt.teamdateroad.domain.usecase.DeleteCourseUseCase +import org.sopt.teamdateroad.domain.usecase.GetCourseDetailUseCase +import org.sopt.teamdateroad.domain.usecase.PostCourseLikeUseCase +import org.sopt.teamdateroad.domain.usecase.PostUsePointUseCase +import org.sopt.teamdateroad.presentation.util.CourseDetailAmplitude.CLICK_COURSE_LIKES +import org.sopt.teamdateroad.presentation.util.CourseDetailAmplitude.COURSE_LIST_LIKE +import org.sopt.teamdateroad.presentation.util.Point +import org.sopt.teamdateroad.presentation.util.UserPropertyAmplitude.USER_FREE_REMAINED +import org.sopt.teamdateroad.presentation.util.UserPropertyAmplitude.USER_POINT +import org.sopt.teamdateroad.presentation.util.UserPropertyAmplitude.USER_PURCHASE_COUNT +import org.sopt.teamdateroad.presentation.util.amplitude.AmplitudeUtils +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class CourseDetailViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailBasicInfo.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailBasicInfo.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailBasicInfo.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailBasicInfo.kt index adb335cc..fc236fd0 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailBasicInfo.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailBasicInfo.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.coursedetail.component +package org.sopt.teamdateroad.presentation.ui.coursedetail.component import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -8,7 +8,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun CourseDetailBasicInfo( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailBottomBar.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailBottomBar.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailBottomBar.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailBottomBar.kt index d5750d66..554195a3 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailBottomBar.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailBottomBar.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.coursedetail.component +package org.sopt.teamdateroad.presentation.ui.coursedetail.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -20,10 +20,10 @@ import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.ui.component.button.DateRoadBasicButton -import org.sopt.dateroad.presentation.ui.component.button.DateRoadImageButton -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadBasicButton +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadImageButton +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun CourseDetailBottomBar( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailCost.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailCost.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailCost.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailCost.kt index c9c024f0..cbba7497 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailCost.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailCost.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.coursedetail.component +package org.sopt.teamdateroad.presentation.ui.coursedetail.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Spacer @@ -12,8 +12,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun CourseDetailCost( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailInfoBar.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailInfoBar.kt similarity index 94% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailInfoBar.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailInfoBar.kt index b5b7430f..56fa387f 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailInfoBar.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailInfoBar.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.coursedetail.component +package org.sopt.teamdateroad.presentation.ui.coursedetail.component import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Row @@ -12,8 +12,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun CourseDetailInfoBar( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailOpenedDetail.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailOpenedDetail.kt similarity index 81% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailOpenedDetail.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailOpenedDetail.kt index 53d808d5..4a46c941 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailOpenedDetail.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailOpenedDetail.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.coursedetail.component +package org.sopt.teamdateroad.presentation.ui.coursedetail.component import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height @@ -7,9 +7,9 @@ import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.material3.Text import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp -import org.sopt.dateroad.domain.model.Place -import org.sopt.dateroad.presentation.type.DateTagType -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.domain.model.Place +import org.sopt.teamdateroad.presentation.type.DateTagType +import org.sopt.teamdateroad.ui.theme.DateRoadTheme fun LazyListScope.courseDetailOpenedDetail( description: String, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailTag.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailTag.kt similarity index 81% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailTag.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailTag.kt index f0b01c96..2c2fbd36 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailTag.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailTag.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.coursedetail.component +package org.sopt.teamdateroad.presentation.ui.coursedetail.component import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -13,11 +13,11 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.type.ChipType -import org.sopt.dateroad.presentation.type.DateTagType -import org.sopt.dateroad.presentation.ui.component.chip.DateRoadImageChip -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.type.ChipType +import org.sopt.teamdateroad.presentation.type.DateTagType +import org.sopt.teamdateroad.presentation.ui.component.chip.DateRoadImageChip +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun CourseDetailTag( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailTimeline.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailTimeline.kt similarity index 80% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailTimeline.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailTimeline.kt index 0cbdb6b1..9141bf5e 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailTimeline.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailTimeline.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.coursedetail.component +package org.sopt.teamdateroad.presentation.ui.coursedetail.component import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.height @@ -8,11 +8,11 @@ import androidx.compose.material3.Text import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.Place -import org.sopt.dateroad.presentation.type.PlaceCardType -import org.sopt.dateroad.presentation.ui.component.card.DateRoadPlaceCard -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.Place +import org.sopt.teamdateroad.presentation.type.PlaceCardType +import org.sopt.teamdateroad.presentation.ui.component.card.DateRoadPlaceCard +import org.sopt.teamdateroad.ui.theme.DateRoadTheme fun LazyListScope.courseDetailTimeline( startAt: String, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailUnopenedDetail.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailUnopenedDetail.kt similarity index 92% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailUnopenedDetail.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailUnopenedDetail.kt index 1c288ea6..4274c68d 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/component/CourseDetailUnopenedDetail.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/component/CourseDetailUnopenedDetail.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.coursedetail.component +package org.sopt.teamdateroad.presentation.ui.coursedetail.component import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -17,10 +17,10 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.type.CourseDetailUnopenedDetailType -import org.sopt.dateroad.presentation.ui.component.button.DateRoadFilledButton -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.type.CourseDetailUnopenedDetailType +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadFilledButton +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun CourseDetailUnopenedDetail( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/navigation/CourseDetailNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/navigation/CourseDetailNavigation.kt similarity index 84% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/navigation/CourseDetailNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/navigation/CourseDetailNavigation.kt index df15b7ae..aa054abb 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/coursedetail/navigation/CourseDetailNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/coursedetail/navigation/CourseDetailNavigation.kt @@ -1,12 +1,12 @@ -package org.sopt.dateroad.presentation.ui.coursedetail.navigation +package org.sopt.teamdateroad.presentation.ui.coursedetail.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.ui.coursedetail.CourseDetailRoute +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.ui.coursedetail.CourseDetailRoute fun NavController.navigationCourseDetail(courseId: Int) { this.navigate(route = CourseDetailRoute.route(courseId = courseId)) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollContract.kt similarity index 72% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollContract.kt index 550944ff..e1a6261a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollContract.kt @@ -1,32 +1,32 @@ -package org.sopt.dateroad.presentation.ui.enroll +package org.sopt.teamdateroad.presentation.ui.enroll -import org.sopt.dateroad.domain.model.CourseDetail -import org.sopt.dateroad.domain.model.Enroll -import org.sopt.dateroad.domain.model.Place -import org.sopt.dateroad.domain.model.TimelineDetail -import org.sopt.dateroad.domain.type.RegionType -import org.sopt.dateroad.presentation.type.EnrollScreenType -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.ui.component.bottomsheet.model.Picker -import org.sopt.dateroad.presentation.ui.component.textfield.model.TextFieldValidateResult -import org.sopt.dateroad.presentation.util.DatePicker.DAY_END -import org.sopt.dateroad.presentation.util.DatePicker.DAY_START -import org.sopt.dateroad.presentation.util.DatePicker.MONTH_END -import org.sopt.dateroad.presentation.util.DatePicker.MONTH_START -import org.sopt.dateroad.presentation.util.DatePicker.YEAR_END -import org.sopt.dateroad.presentation.util.DatePicker.YEAR_START -import org.sopt.dateroad.presentation.util.DatePicker.YEAR_START_INDEX -import org.sopt.dateroad.presentation.util.DurationPicker.DURATION_END -import org.sopt.dateroad.presentation.util.DurationPicker.DURATION_START -import org.sopt.dateroad.presentation.util.TimePicker -import org.sopt.dateroad.presentation.util.TimePicker.HOUR_END -import org.sopt.dateroad.presentation.util.TimePicker.HOUR_START -import org.sopt.dateroad.presentation.util.TimePicker.MINUTE_END -import org.sopt.dateroad.presentation.util.TimePicker.MINUTE_START -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.CourseDetail +import org.sopt.teamdateroad.domain.model.Enroll +import org.sopt.teamdateroad.domain.model.Place +import org.sopt.teamdateroad.domain.model.TimelineDetail +import org.sopt.teamdateroad.domain.type.RegionType +import org.sopt.teamdateroad.presentation.type.EnrollScreenType +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.ui.component.bottomsheet.model.Picker +import org.sopt.teamdateroad.presentation.ui.component.textfield.model.TextFieldValidateResult +import org.sopt.teamdateroad.presentation.util.DatePicker.DAY_END +import org.sopt.teamdateroad.presentation.util.DatePicker.DAY_START +import org.sopt.teamdateroad.presentation.util.DatePicker.MONTH_END +import org.sopt.teamdateroad.presentation.util.DatePicker.MONTH_START +import org.sopt.teamdateroad.presentation.util.DatePicker.YEAR_END +import org.sopt.teamdateroad.presentation.util.DatePicker.YEAR_START +import org.sopt.teamdateroad.presentation.util.DatePicker.YEAR_START_INDEX +import org.sopt.teamdateroad.presentation.util.DurationPicker.DURATION_END +import org.sopt.teamdateroad.presentation.util.DurationPicker.DURATION_START +import org.sopt.teamdateroad.presentation.util.TimePicker +import org.sopt.teamdateroad.presentation.util.TimePicker.HOUR_END +import org.sopt.teamdateroad.presentation.util.TimePicker.HOUR_START +import org.sopt.teamdateroad.presentation.util.TimePicker.MINUTE_END +import org.sopt.teamdateroad.presentation.util.TimePicker.MINUTE_START +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class EnrollContract { data class EnrollUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollFirstScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollFirstScreen.kt similarity index 82% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollFirstScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollFirstScreen.kt index ab73e040..ff31161b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollFirstScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollFirstScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.enroll +package org.sopt.teamdateroad.presentation.ui.enroll import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -12,17 +12,17 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.type.GyeonggiAreaType -import org.sopt.dateroad.domain.type.IncheonAreaType -import org.sopt.dateroad.domain.type.SeoulAreaType -import org.sopt.dateroad.presentation.type.DateChipGroupType -import org.sopt.dateroad.presentation.type.DateTagType -import org.sopt.dateroad.presentation.type.DateTagType.Companion.getDateTagTypeByName -import org.sopt.dateroad.presentation.ui.component.chipgroup.DateRoadDateChipGroup -import org.sopt.dateroad.presentation.ui.component.textfield.DateRoadBasicTextField -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.type.GyeonggiAreaType +import org.sopt.teamdateroad.domain.type.IncheonAreaType +import org.sopt.teamdateroad.domain.type.SeoulAreaType +import org.sopt.teamdateroad.presentation.type.DateChipGroupType +import org.sopt.teamdateroad.presentation.type.DateTagType +import org.sopt.teamdateroad.presentation.type.DateTagType.Companion.getDateTagTypeByName +import org.sopt.teamdateroad.presentation.ui.component.chipgroup.DateRoadDateChipGroup +import org.sopt.teamdateroad.presentation.ui.component.textfield.DateRoadBasicTextField +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme @Composable fun EnrollFirstScreen( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollScreen.kt similarity index 84% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollScreen.kt index d25ae3d9..be4f7693 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.enroll +package org.sopt.teamdateroad.presentation.ui.enroll import android.net.Uri import android.os.Build @@ -31,70 +31,70 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle import java.time.LocalDate import java.time.format.DateTimeFormatter -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.Place -import org.sopt.dateroad.domain.type.RegionType -import org.sopt.dateroad.presentation.type.DateRoadRegionBottomSheetType -import org.sopt.dateroad.presentation.type.DateTagType -import org.sopt.dateroad.presentation.type.EnrollScreenType -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.type.MyCourseType -import org.sopt.dateroad.presentation.type.OneButtonDialogType -import org.sopt.dateroad.presentation.type.OneButtonDialogWithDescriptionType -import org.sopt.dateroad.presentation.ui.component.bottomsheet.DateRoadPickerBottomSheet -import org.sopt.dateroad.presentation.ui.component.bottomsheet.DateRoadRegionBottomSheet -import org.sopt.dateroad.presentation.ui.component.button.DateRoadBasicButton -import org.sopt.dateroad.presentation.ui.component.button.DateRoadFilledButton -import org.sopt.dateroad.presentation.ui.component.dialog.DateRoadOneButtonDialog -import org.sopt.dateroad.presentation.ui.component.dialog.DateRoadOneButtonDialogWithDescription -import org.sopt.dateroad.presentation.ui.component.textfield.model.TextFieldValidateResult -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadBasicTopBar -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.ui.enroll.component.EnrollPhotos -import org.sopt.dateroad.presentation.util.DatePicker -import org.sopt.dateroad.presentation.util.DatePicker.SEPARATOR -import org.sopt.dateroad.presentation.util.EnrollAmplitude.CLICK_BRING_COURSE -import org.sopt.dateroad.presentation.util.EnrollAmplitude.CLICK_COURSE1_BACK -import org.sopt.dateroad.presentation.util.EnrollAmplitude.CLICK_COURSE2_BACK -import org.sopt.dateroad.presentation.util.EnrollAmplitude.CLICK_COURSE3_BACK -import org.sopt.dateroad.presentation.util.EnrollAmplitude.CLICK_SCHEDULE1_BACK -import org.sopt.dateroad.presentation.util.EnrollAmplitude.CLICK_SCHEDULE2_BACK -import org.sopt.dateroad.presentation.util.EnrollAmplitude.COURSE_CONTENT_BOOL -import org.sopt.dateroad.presentation.util.EnrollAmplitude.COURSE_CONTENT_NUM -import org.sopt.dateroad.presentation.util.EnrollAmplitude.COURSE_COST -import org.sopt.dateroad.presentation.util.EnrollAmplitude.COURSE_DATE -import org.sopt.dateroad.presentation.util.EnrollAmplitude.COURSE_IMAGE -import org.sopt.dateroad.presentation.util.EnrollAmplitude.COURSE_LOCATION -import org.sopt.dateroad.presentation.util.EnrollAmplitude.COURSE_START_TIME -import org.sopt.dateroad.presentation.util.EnrollAmplitude.COURSE_TAGS -import org.sopt.dateroad.presentation.util.EnrollAmplitude.COURSE_TITLE -import org.sopt.dateroad.presentation.util.EnrollAmplitude.DATE_AREA -import org.sopt.dateroad.presentation.util.EnrollAmplitude.DATE_COURSE_NUM -import org.sopt.dateroad.presentation.util.EnrollAmplitude.DATE_DATE -import org.sopt.dateroad.presentation.util.EnrollAmplitude.DATE_DETAIL_LOCATION -import org.sopt.dateroad.presentation.util.EnrollAmplitude.DATE_DETAIL_TIME -import org.sopt.dateroad.presentation.util.EnrollAmplitude.DATE_LOCATION -import org.sopt.dateroad.presentation.util.EnrollAmplitude.DATE_SPEND_TIME -import org.sopt.dateroad.presentation.util.EnrollAmplitude.DATE_TAG_NUM -import org.sopt.dateroad.presentation.util.EnrollAmplitude.DATE_TIME -import org.sopt.dateroad.presentation.util.EnrollAmplitude.DATE_TITLE -import org.sopt.dateroad.presentation.util.EnrollAmplitude.LOCATION_NUM -import org.sopt.dateroad.presentation.util.EnrollAmplitude.VIEW_ADD_BRING_COURSE -import org.sopt.dateroad.presentation.util.EnrollAmplitude.VIEW_ADD_BRING_COURSE2 -import org.sopt.dateroad.presentation.util.EnrollAmplitude.VIEW_ADD_SCHEDULE -import org.sopt.dateroad.presentation.util.EnrollAmplitude.VIEW_ADD_SCHEDULE2 -import org.sopt.dateroad.presentation.util.EnrollAmplitude.VIEW_COURSE1 -import org.sopt.dateroad.presentation.util.EnrollAmplitude.VIEW_PATH -import org.sopt.dateroad.presentation.util.EnrollScreen.MAX_ITEMS -import org.sopt.dateroad.presentation.util.EnrollScreen.TITLE_MIN_LENGTH -import org.sopt.dateroad.presentation.util.GalleryLauncher.INPUT -import org.sopt.dateroad.presentation.util.TimePicker -import org.sopt.dateroad.presentation.util.TimelineAmplitude.CLICK_ADD_SCHEDULE -import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.Place +import org.sopt.teamdateroad.domain.type.RegionType +import org.sopt.teamdateroad.presentation.type.DateRoadRegionBottomSheetType +import org.sopt.teamdateroad.presentation.type.DateTagType +import org.sopt.teamdateroad.presentation.type.EnrollScreenType +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.type.MyCourseType +import org.sopt.teamdateroad.presentation.type.OneButtonDialogType +import org.sopt.teamdateroad.presentation.type.OneButtonDialogWithDescriptionType +import org.sopt.teamdateroad.presentation.ui.component.bottomsheet.DateRoadPickerBottomSheet +import org.sopt.teamdateroad.presentation.ui.component.bottomsheet.DateRoadRegionBottomSheet +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadBasicButton +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadFilledButton +import org.sopt.teamdateroad.presentation.ui.component.dialog.DateRoadOneButtonDialog +import org.sopt.teamdateroad.presentation.ui.component.dialog.DateRoadOneButtonDialogWithDescription +import org.sopt.teamdateroad.presentation.ui.component.textfield.model.TextFieldValidateResult +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadBasicTopBar +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.ui.enroll.component.EnrollPhotos +import org.sopt.teamdateroad.presentation.util.DatePicker +import org.sopt.teamdateroad.presentation.util.DatePicker.SEPARATOR +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.CLICK_BRING_COURSE +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.CLICK_COURSE1_BACK +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.CLICK_COURSE2_BACK +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.CLICK_COURSE3_BACK +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.CLICK_SCHEDULE1_BACK +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.CLICK_SCHEDULE2_BACK +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.COURSE_CONTENT_BOOL +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.COURSE_CONTENT_NUM +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.COURSE_COST +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.COURSE_DATE +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.COURSE_IMAGE +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.COURSE_LOCATION +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.COURSE_START_TIME +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.COURSE_TAGS +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.COURSE_TITLE +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.DATE_AREA +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.DATE_COURSE_NUM +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.DATE_DATE +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.DATE_DETAIL_LOCATION +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.DATE_DETAIL_TIME +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.DATE_LOCATION +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.DATE_SPEND_TIME +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.DATE_TAG_NUM +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.DATE_TIME +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.DATE_TITLE +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.LOCATION_NUM +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.VIEW_ADD_BRING_COURSE +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.VIEW_ADD_BRING_COURSE2 +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.VIEW_ADD_SCHEDULE +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.VIEW_ADD_SCHEDULE2 +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.VIEW_COURSE1 +import org.sopt.teamdateroad.presentation.util.EnrollAmplitude.VIEW_PATH +import org.sopt.teamdateroad.presentation.util.EnrollScreen.MAX_ITEMS +import org.sopt.teamdateroad.presentation.util.EnrollScreen.TITLE_MIN_LENGTH +import org.sopt.teamdateroad.presentation.util.GalleryLauncher.INPUT +import org.sopt.teamdateroad.presentation.util.TimePicker +import org.sopt.teamdateroad.presentation.util.TimelineAmplitude.CLICK_ADD_SCHEDULE +import org.sopt.teamdateroad.presentation.util.amplitude.AmplitudeUtils +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun EnrollRoute( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollSecondScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollSecondScreen.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollSecondScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollSecondScreen.kt index 348bfb0a..c5c1e7d6 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollSecondScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollSecondScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.enroll +package org.sopt.teamdateroad.presentation.ui.enroll import android.annotation.SuppressLint import androidx.compose.animation.core.animateFloatAsState @@ -33,17 +33,17 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.zIndex import kotlinx.coroutines.Job import kotlinx.coroutines.launch -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.Place -import org.sopt.dateroad.presentation.type.PlaceCardType -import org.sopt.dateroad.presentation.ui.component.button.DateRoadTextButton -import org.sopt.dateroad.presentation.ui.component.card.DateRoadPlaceCard -import org.sopt.dateroad.presentation.ui.enroll.component.EnrollPlaceInsertBar -import org.sopt.dateroad.presentation.util.Time -import org.sopt.dateroad.presentation.util.draganddrop.rememberDragAndDropListState -import org.sopt.dateroad.presentation.util.mutablelist.move -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.Place +import org.sopt.teamdateroad.presentation.type.PlaceCardType +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadTextButton +import org.sopt.teamdateroad.presentation.ui.component.card.DateRoadPlaceCard +import org.sopt.teamdateroad.presentation.ui.enroll.component.EnrollPlaceInsertBar +import org.sopt.teamdateroad.presentation.util.Time +import org.sopt.teamdateroad.presentation.util.draganddrop.rememberDragAndDropListState +import org.sopt.teamdateroad.presentation.util.mutablelist.move +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @SuppressLint("UnrememberedMutableState", "UnnecessaryComposedModifier") @Composable diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollThirdScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollThirdScreen.kt similarity index 85% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollThirdScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollThirdScreen.kt index 55ba1431..58415bbb 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollThirdScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollThirdScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.enroll +package org.sopt.teamdateroad.presentation.ui.enroll import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Spacer @@ -13,11 +13,11 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.ui.component.textfield.DateRoadBasicTextField -import org.sopt.dateroad.presentation.ui.component.textfield.DateRoadTextArea -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.ui.component.textfield.DateRoadBasicTextField +import org.sopt.teamdateroad.presentation.ui.component.textfield.DateRoadTextArea +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme @Composable fun EnrollThirdScreen( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollViewModel.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollViewModel.kt index e62022ee..5b8489e9 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/EnrollViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollViewModel.kt @@ -1,24 +1,24 @@ -package org.sopt.dateroad.presentation.ui.enroll +package org.sopt.teamdateroad.presentation.ui.enroll import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.data.dataremote.util.Date.NEAREST_DATE_START_OUTPUT_FORMAT -import org.sopt.dateroad.data.mapper.toEntity.toEnroll -import org.sopt.dateroad.domain.type.RegionType -import org.sopt.dateroad.domain.usecase.GetCourseDetailUseCase -import org.sopt.dateroad.domain.usecase.GetTimelineDetailUseCase -import org.sopt.dateroad.domain.usecase.PostCourseUseCase -import org.sopt.dateroad.domain.usecase.PostTimelineUseCase -import org.sopt.dateroad.presentation.type.EnrollScreenType -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.DATE_SCHEDULE_NUM -import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_COURSE_COUNT -import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_POINT -import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.data.dataremote.util.Date.NEAREST_DATE_START_OUTPUT_FORMAT +import org.sopt.teamdateroad.data.mapper.toEntity.toEnroll +import org.sopt.teamdateroad.domain.type.RegionType +import org.sopt.teamdateroad.domain.usecase.GetCourseDetailUseCase +import org.sopt.teamdateroad.domain.usecase.GetTimelineDetailUseCase +import org.sopt.teamdateroad.domain.usecase.PostCourseUseCase +import org.sopt.teamdateroad.domain.usecase.PostTimelineUseCase +import org.sopt.teamdateroad.presentation.type.EnrollScreenType +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.util.UserPropertyAmplitude.DATE_SCHEDULE_NUM +import org.sopt.teamdateroad.presentation.util.UserPropertyAmplitude.USER_COURSE_COUNT +import org.sopt.teamdateroad.presentation.util.UserPropertyAmplitude.USER_POINT +import org.sopt.teamdateroad.presentation.util.amplitude.AmplitudeUtils +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class EnrollViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollAddPhotoButton.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/EnrollAddPhotoButton.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollAddPhotoButton.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/EnrollAddPhotoButton.kt index 75388a6c..fabe7033 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollAddPhotoButton.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/EnrollAddPhotoButton.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.enroll.component +package org.sopt.teamdateroad.presentation.ui.enroll.component import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -21,10 +21,10 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun EnrollAddPhotoButton( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPhotoPreviewCard.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/EnrollPhotoPreviewCard.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPhotoPreviewCard.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/EnrollPhotoPreviewCard.kt index edb1c05e..f2151a22 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPhotoPreviewCard.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/EnrollPhotoPreviewCard.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.enroll.component +package org.sopt.teamdateroad.presentation.ui.enroll.component import android.content.Context import androidx.compose.foundation.Image @@ -21,10 +21,10 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import coil.request.ImageRequest -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun EnrollPhotoPreviewCard( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPhotos.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/EnrollPhotos.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPhotos.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/EnrollPhotos.kt index 991d0d8f..2faba1b9 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPhotos.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/EnrollPhotos.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.enroll.component +package org.sopt.teamdateroad.presentation.ui.enroll.component import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -17,12 +17,12 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadTextTag -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadTextTag +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun EnrollPhotos( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPlaceInsertBar.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/EnrollPlaceInsertBar.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPlaceInsertBar.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/EnrollPlaceInsertBar.kt index 2568b243..86200b3e 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/component/EnrollPlaceInsertBar.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/component/EnrollPlaceInsertBar.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.enroll.component +package org.sopt.teamdateroad.presentation.ui.enroll.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -22,14 +22,14 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.ui.component.bottomsheet.DateRoadPickerBottomSheet -import org.sopt.dateroad.presentation.ui.component.bottomsheet.model.Picker -import org.sopt.dateroad.presentation.ui.component.button.DateRoadImageButton -import org.sopt.dateroad.presentation.ui.component.textfield.DateRoadBasicTextField -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.ui.component.bottomsheet.DateRoadPickerBottomSheet +import org.sopt.teamdateroad.presentation.ui.component.bottomsheet.model.Picker +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadImageButton +import org.sopt.teamdateroad.presentation.ui.component.textfield.DateRoadBasicTextField +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun EnrollPlaceInsertBar( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/navigation/EnrollNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/navigation/EnrollNavigation.kt similarity index 86% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/navigation/EnrollNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/navigation/EnrollNavigation.kt index 73dc3b75..3712c26b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/enroll/navigation/EnrollNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/navigation/EnrollNavigation.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.enroll.navigation +package org.sopt.teamdateroad.presentation.ui.enroll.navigation import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController @@ -6,10 +6,10 @@ import androidx.navigation.NavGraphBuilder import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.type.MyCourseType -import org.sopt.dateroad.presentation.ui.enroll.EnrollRoute -import org.sopt.dateroad.presentation.ui.mycourse.navigation.MyCourseRoute +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.type.MyCourseType +import org.sopt.teamdateroad.presentation.ui.enroll.EnrollRoute +import org.sopt.teamdateroad.presentation.ui.mycourse.navigation.MyCourseRoute fun NavController.navigationEnroll(enrollType: EnrollType, viewPath: String, courseId: Int? = null) { navigate( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/HomeContract.kt similarity index 74% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/HomeContract.kt index a60308d0..24afdf18 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/HomeContract.kt @@ -1,15 +1,15 @@ -package org.sopt.dateroad.presentation.ui.home +package org.sopt.teamdateroad.presentation.ui.home -import org.sopt.dateroad.domain.model.Advertisement -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.domain.model.NearestTimeline -import org.sopt.dateroad.domain.model.UserPoint -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.Advertisement +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.domain.model.NearestTimeline +import org.sopt.teamdateroad.domain.model.UserPoint +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class HomeContract { data class HomeUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/HomeScreen.kt similarity index 85% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/HomeScreen.kt index d9ce2b15..9e33fdb1 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/HomeScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.home +package org.sopt.teamdateroad.presentation.ui.home import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -36,39 +36,39 @@ import com.google.accompanist.pager.PagerState import com.google.accompanist.pager.rememberPagerState import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.NearestTimeline -import org.sopt.dateroad.domain.type.SortByType -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.type.MainNavigationBarItemType -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.ui.component.button.DateRoadImageButton -import org.sopt.dateroad.presentation.ui.component.button.DateRoadTextButton -import org.sopt.dateroad.presentation.ui.component.card.DateRoadCourseCard -import org.sopt.dateroad.presentation.ui.component.partialcolortext.PartialColorText -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadTextTag -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadIdleView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.ui.home.component.DateRoadHomeTopBar -import org.sopt.dateroad.presentation.ui.home.component.HomeAdvertisement -import org.sopt.dateroad.presentation.ui.home.component.HomeHotCourseCard -import org.sopt.dateroad.presentation.ui.home.component.HomeTimeLineCard -import org.sopt.dateroad.presentation.util.Home.ADVERTISEMENT_DELAY -import org.sopt.dateroad.presentation.util.HomeAmplitude.COURSE_LIST_COST -import org.sopt.dateroad.presentation.util.HomeAmplitude.COURSE_LIST_ID -import org.sopt.dateroad.presentation.util.HomeAmplitude.COURSE_LIST_LOCATION -import org.sopt.dateroad.presentation.util.HomeAmplitude.COURSE_LIST_TITLE -import org.sopt.dateroad.presentation.util.HomeAmplitude.HOT -import org.sopt.dateroad.presentation.util.HomeAmplitude.NEW -import org.sopt.dateroad.presentation.util.HomeAmplitude.USER_NAME -import org.sopt.dateroad.presentation.util.HomeAmplitude.USER_POINT -import org.sopt.dateroad.presentation.util.HomeAmplitude.VIEW_MAIN -import org.sopt.dateroad.presentation.util.ViewPath.HOME -import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.NearestTimeline +import org.sopt.teamdateroad.domain.type.SortByType +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.type.MainNavigationBarItemType +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadImageButton +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadTextButton +import org.sopt.teamdateroad.presentation.ui.component.card.DateRoadCourseCard +import org.sopt.teamdateroad.presentation.ui.component.partialcolortext.PartialColorText +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadTextTag +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadIdleView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.ui.home.component.DateRoadHomeTopBar +import org.sopt.teamdateroad.presentation.ui.home.component.HomeAdvertisement +import org.sopt.teamdateroad.presentation.ui.home.component.HomeHotCourseCard +import org.sopt.teamdateroad.presentation.ui.home.component.HomeTimeLineCard +import org.sopt.teamdateroad.presentation.util.Home.ADVERTISEMENT_DELAY +import org.sopt.teamdateroad.presentation.util.HomeAmplitude.COURSE_LIST_COST +import org.sopt.teamdateroad.presentation.util.HomeAmplitude.COURSE_LIST_ID +import org.sopt.teamdateroad.presentation.util.HomeAmplitude.COURSE_LIST_LOCATION +import org.sopt.teamdateroad.presentation.util.HomeAmplitude.COURSE_LIST_TITLE +import org.sopt.teamdateroad.presentation.util.HomeAmplitude.HOT +import org.sopt.teamdateroad.presentation.util.HomeAmplitude.NEW +import org.sopt.teamdateroad.presentation.util.HomeAmplitude.USER_NAME +import org.sopt.teamdateroad.presentation.util.HomeAmplitude.USER_POINT +import org.sopt.teamdateroad.presentation.util.HomeAmplitude.VIEW_MAIN +import org.sopt.teamdateroad.presentation.util.ViewPath.HOME +import org.sopt.teamdateroad.presentation.util.amplitude.AmplitudeUtils +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @OptIn(ExperimentalPagerApi::class) @Composable diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/HomeViewModel.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/HomeViewModel.kt index fd988fda..502b2939 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/HomeViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/HomeViewModel.kt @@ -1,18 +1,18 @@ -package org.sopt.dateroad.presentation.ui.home +package org.sopt.teamdateroad.presentation.ui.home import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.domain.model.NearestTimeline -import org.sopt.dateroad.domain.type.SortByType -import org.sopt.dateroad.domain.usecase.GetAdvertisementsUseCase -import org.sopt.dateroad.domain.usecase.GetNearestTimelineUseCase -import org.sopt.dateroad.domain.usecase.GetSortedCoursesUseCase -import org.sopt.dateroad.domain.usecase.GetUserPointUseCase -import org.sopt.dateroad.domain.usecase.SetNicknameUseCase -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.NearestTimeline +import org.sopt.teamdateroad.domain.type.SortByType +import org.sopt.teamdateroad.domain.usecase.GetAdvertisementsUseCase +import org.sopt.teamdateroad.domain.usecase.GetNearestTimelineUseCase +import org.sopt.teamdateroad.domain.usecase.GetSortedCoursesUseCase +import org.sopt.teamdateroad.domain.usecase.GetUserPointUseCase +import org.sopt.teamdateroad.domain.usecase.SetNicknameUseCase +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class HomeViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/component/HomeAdvertisement.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeAdvertisement.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/home/component/HomeAdvertisement.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeAdvertisement.kt index 9e34a2dd..981ea815 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/component/HomeAdvertisement.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeAdvertisement.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.home.component +package org.sopt.teamdateroad.presentation.ui.home.component import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column @@ -14,8 +14,8 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import coil.request.ImageRequest -import org.sopt.dateroad.domain.model.Advertisement -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.domain.model.Advertisement +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable @Composable fun HomeAdvertisement( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/component/HomeHotCourseCard.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeHotCourseCard.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/home/component/HomeHotCourseCard.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeHotCourseCard.kt index 074287cd..bd839809 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/component/HomeHotCourseCard.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeHotCourseCard.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.home.component +package org.sopt.teamdateroad.presentation.ui.home.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -23,12 +23,12 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import coil.request.ImageRequest -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadImageTag -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadImageTag +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun HomeHotCourseCard( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/component/HomeTimeLineCard.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTimeLineCard.kt similarity index 94% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/home/component/HomeTimeLineCard.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTimeLineCard.kt index 65c8aaeb..4cf3c75b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/component/HomeTimeLineCard.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTimeLineCard.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.home.component +package org.sopt.teamdateroad.presentation.ui.home.component import androidx.compose.foundation.Canvas import androidx.compose.foundation.Image @@ -27,12 +27,12 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.NearestTimeline -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadTextTag -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.NearestTimeline +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadTextTag +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun HomeTimeLineCard( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/component/HomeTopBar.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTopBar.kt similarity index 86% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/home/component/HomeTopBar.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTopBar.kt index f9f6d0ed..f94162d5 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/component/HomeTopBar.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/component/HomeTopBar.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.home.component +package org.sopt.teamdateroad.presentation.ui.home.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -14,9 +14,9 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadPointTag -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadPointTag +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadHomeTopBar( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/navigation/HomeNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/navigation/HomeNavigation.kt similarity index 76% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/home/navigation/HomeNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/navigation/HomeNavigation.kt index 0f4d121f..f46fe153 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/home/navigation/HomeNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/home/navigation/HomeNavigation.kt @@ -1,15 +1,15 @@ -package org.sopt.dateroad.presentation.ui.home.navigation +package org.sopt.teamdateroad.presentation.ui.home.navigation import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable -import org.sopt.dateroad.presentation.model.MainNavigationBarRoute -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.type.MainNavigationBarItemType -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.ui.home.HomeRoute +import org.sopt.teamdateroad.presentation.model.MainNavigationBarRoute +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.type.MainNavigationBarItemType +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.ui.home.HomeRoute fun NavController.navigationHome(navOptions: NavOptions) { navigate( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/look/LookContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookContract.kt similarity index 74% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/look/LookContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookContract.kt index 26833292..e7c4d71b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/look/LookContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookContract.kt @@ -1,12 +1,12 @@ -package org.sopt.dateroad.presentation.ui.look +package org.sopt.teamdateroad.presentation.ui.look -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.domain.type.MoneyTagType -import org.sopt.dateroad.domain.type.RegionType -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.domain.type.MoneyTagType +import org.sopt.teamdateroad.domain.type.RegionType +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class LookContract { data class LookUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/look/LookScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookScreen.kt similarity index 85% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/look/LookScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookScreen.kt index abf4ea27..b29c0234 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/look/LookScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.look +package org.sopt.teamdateroad.presentation.ui.look import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -29,30 +29,30 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.type.GyeonggiAreaType -import org.sopt.dateroad.domain.type.IncheonAreaType -import org.sopt.dateroad.domain.type.MoneyTagType -import org.sopt.dateroad.domain.type.RegionType -import org.sopt.dateroad.domain.type.SeoulAreaType -import org.sopt.dateroad.presentation.type.ChipType -import org.sopt.dateroad.presentation.type.EmptyViewType -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.ui.component.bottomsheet.DateRoadRegionBottomSheet -import org.sopt.dateroad.presentation.ui.component.button.DateRoadAreaButton -import org.sopt.dateroad.presentation.ui.component.button.DateRoadImageButton -import org.sopt.dateroad.presentation.ui.component.chip.DateRoadTextChip -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadLeftTitleTopBar -import org.sopt.dateroad.presentation.ui.component.view.DateRoadEmptyView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.ui.look.component.LookCourseCard -import org.sopt.dateroad.presentation.util.Default -import org.sopt.dateroad.presentation.util.ViewPath.LOOK -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.type.GyeonggiAreaType +import org.sopt.teamdateroad.domain.type.IncheonAreaType +import org.sopt.teamdateroad.domain.type.MoneyTagType +import org.sopt.teamdateroad.domain.type.RegionType +import org.sopt.teamdateroad.domain.type.SeoulAreaType +import org.sopt.teamdateroad.presentation.type.ChipType +import org.sopt.teamdateroad.presentation.type.EmptyViewType +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.ui.component.bottomsheet.DateRoadRegionBottomSheet +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadAreaButton +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadImageButton +import org.sopt.teamdateroad.presentation.ui.component.chip.DateRoadTextChip +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadLeftTitleTopBar +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadEmptyView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.ui.look.component.LookCourseCard +import org.sopt.teamdateroad.presentation.util.Default +import org.sopt.teamdateroad.presentation.util.ViewPath.LOOK +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun LookRoute( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/look/LookViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookViewModel.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/look/LookViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookViewModel.kt index 343e8829..2886aa5a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/look/LookViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/LookViewModel.kt @@ -1,14 +1,14 @@ -package org.sopt.dateroad.presentation.ui.look +package org.sopt.teamdateroad.presentation.ui.look import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.domain.type.MoneyTagType -import org.sopt.dateroad.domain.type.RegionType -import org.sopt.dateroad.domain.usecase.GetFilteredCourses -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.type.MoneyTagType +import org.sopt.teamdateroad.domain.type.RegionType +import org.sopt.teamdateroad.domain.usecase.GetFilteredCourses +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class LookViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/look/component/LookCourseCard.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/component/LookCourseCard.kt similarity index 92% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/look/component/LookCourseCard.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/component/LookCourseCard.kt index 2941cd54..8e81ef98 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/look/component/LookCourseCard.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/component/LookCourseCard.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.look.component +package org.sopt.teamdateroad.presentation.ui.look.component import android.content.Context import androidx.compose.foundation.Image @@ -30,13 +30,13 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import coil.request.ImageRequest -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadImageTag -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadImageTag +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun LookCourseCard( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/look/navigation/LookNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/navigation/LookNavigation.kt similarity index 75% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/look/navigation/LookNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/navigation/LookNavigation.kt index 4e6dabf2..4dff2a0a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/look/navigation/LookNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/look/navigation/LookNavigation.kt @@ -1,13 +1,13 @@ -package org.sopt.dateroad.presentation.ui.look.navigation +package org.sopt.teamdateroad.presentation.ui.look.navigation import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable -import org.sopt.dateroad.presentation.model.MainNavigationBarRoute -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.ui.look.LookRoute +import org.sopt.teamdateroad.presentation.model.MainNavigationBarRoute +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.ui.look.LookRoute fun NavController.navigationLook(navOptions: NavOptions) { navigate( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/MyCourseContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseContract.kt similarity index 67% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/MyCourseContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseContract.kt index ac3a8958..732683c3 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/MyCourseContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseContract.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.presentation.ui.mycourse +package org.sopt.teamdateroad.presentation.ui.mycourse -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.presentation.type.MyCourseType -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.presentation.type.MyCourseType +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class MyCourseContract { data class MyCourseUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/MyCourseScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseScreen.kt similarity index 85% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/MyCourseScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseScreen.kt index c17f294d..428fa0b3 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/MyCourseScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.mycourse +package org.sopt.teamdateroad.presentation.ui.mycourse import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -18,24 +18,24 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.presentation.type.EmptyViewType -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.type.MyCourseType -import org.sopt.dateroad.presentation.ui.component.card.DateRoadCourseCard -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadBasicTopBar -import org.sopt.dateroad.presentation.ui.component.view.DateRoadEmptyView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadIdleView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.util.MyCourseAmplitude.CLICK_PURCHASED_BACK -import org.sopt.dateroad.presentation.util.MyCourseAmplitude.VIEW_PURCHASED_COURSE -import org.sopt.dateroad.presentation.util.ViewPath.MY_COURSE_READ -import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.presentation.type.EmptyViewType +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.type.MyCourseType +import org.sopt.teamdateroad.presentation.ui.component.card.DateRoadCourseCard +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadBasicTopBar +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadEmptyView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadIdleView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.util.MyCourseAmplitude.CLICK_PURCHASED_BACK +import org.sopt.teamdateroad.presentation.util.MyCourseAmplitude.VIEW_PURCHASED_COURSE +import org.sopt.teamdateroad.presentation.util.ViewPath.MY_COURSE_READ +import org.sopt.teamdateroad.presentation.util.amplitude.AmplitudeUtils +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun MyCourseRoute( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/MyCourseViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseViewModel.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/MyCourseViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseViewModel.kt index 1085a899..5c80c3d1 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/MyCourseViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/MyCourseViewModel.kt @@ -1,13 +1,13 @@ -package org.sopt.dateroad.presentation.ui.mycourse +package org.sopt.teamdateroad.presentation.ui.mycourse import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.domain.usecase.GetMyCourseEnrollUseCase -import org.sopt.dateroad.domain.usecase.GetMyCourseReadUseCase -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.usecase.GetMyCourseEnrollUseCase +import org.sopt.teamdateroad.domain.usecase.GetMyCourseReadUseCase +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class MyCourseViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/navigation/MyCourseNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/navigation/MyCourseNavigation.kt similarity index 80% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/navigation/MyCourseNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/navigation/MyCourseNavigation.kt index 40b56cae..255f58a1 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mycourse/navigation/MyCourseNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mycourse/navigation/MyCourseNavigation.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.mycourse.navigation +package org.sopt.teamdateroad.presentation.ui.mycourse.navigation import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController @@ -6,10 +6,10 @@ import androidx.navigation.NavGraphBuilder import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.type.MyCourseType -import org.sopt.dateroad.presentation.ui.mycourse.MyCourseRoute -import org.sopt.dateroad.presentation.ui.mycourse.navigation.MyCourseRoute.ROUTE_WITH_ARGUMENT +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.type.MyCourseType +import org.sopt.teamdateroad.presentation.ui.mycourse.MyCourseRoute +import org.sopt.teamdateroad.presentation.ui.mycourse.navigation.MyCourseRoute.ROUTE_WITH_ARGUMENT fun NavController.navigateMyCourses(myCourseType: MyCourseType) { this.navigate(route = MyCourseRoute.route(myCourseType = myCourseType)) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/MyPageContract.kt similarity index 80% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/MyPageContract.kt index 564b78ba..1a90a801 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/MyPageContract.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.presentation.ui.mypage +package org.sopt.teamdateroad.presentation.ui.mypage -import org.sopt.dateroad.domain.model.Profile -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.Profile +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class MyPageContract { data class MyPageUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/MyPageScreen.kt similarity index 86% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/MyPageScreen.kt index 1c729926..e508e97a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/MyPageScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.mypage +package org.sopt.teamdateroad.presentation.ui.mypage import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -36,32 +36,32 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle import coil.compose.AsyncImage import coil.request.ImageRequest -import org.sopt.dateroad.R -import org.sopt.dateroad.data.dataremote.util.Point -import org.sopt.dateroad.domain.model.Profile -import org.sopt.dateroad.presentation.type.DateTagType.Companion.getDateTagTypeByName -import org.sopt.dateroad.presentation.type.MyCourseType -import org.sopt.dateroad.presentation.type.MyPageMenuType -import org.sopt.dateroad.presentation.type.ProfileType -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.presentation.type.TwoButtonDialogType -import org.sopt.dateroad.presentation.type.TwoButtonDialogWithDescriptionType -import org.sopt.dateroad.presentation.ui.component.button.DateRoadTextButton -import org.sopt.dateroad.presentation.ui.component.dialog.DateRoadTwoButtonDialog -import org.sopt.dateroad.presentation.ui.component.dialog.DateRoadTwoButtonDialogWithDescription -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadImageTag -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadLeftTitleTopBar -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadIdleView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadWebView -import org.sopt.dateroad.presentation.ui.mypage.component.MyPageButton -import org.sopt.dateroad.presentation.ui.mypage.component.MyPagePointBox -import org.sopt.dateroad.presentation.util.WebViewUrl.ASK_URL -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.data.dataremote.util.Point +import org.sopt.teamdateroad.domain.model.Profile +import org.sopt.teamdateroad.presentation.type.DateTagType.Companion.getDateTagTypeByName +import org.sopt.teamdateroad.presentation.type.MyCourseType +import org.sopt.teamdateroad.presentation.type.MyPageMenuType +import org.sopt.teamdateroad.presentation.type.ProfileType +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.type.TwoButtonDialogType +import org.sopt.teamdateroad.presentation.type.TwoButtonDialogWithDescriptionType +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadTextButton +import org.sopt.teamdateroad.presentation.ui.component.dialog.DateRoadTwoButtonDialog +import org.sopt.teamdateroad.presentation.ui.component.dialog.DateRoadTwoButtonDialogWithDescription +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadImageTag +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadLeftTitleTopBar +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadIdleView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadWebView +import org.sopt.teamdateroad.presentation.ui.mypage.component.MyPageButton +import org.sopt.teamdateroad.presentation.ui.mypage.component.MyPagePointBox +import org.sopt.teamdateroad.presentation.util.WebViewUrl.ASK_URL +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun MyPageRoute( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/MyPageViewModel.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/MyPageViewModel.kt index 1b660671..cd36726c 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/MyPageViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/MyPageViewModel.kt @@ -1,15 +1,15 @@ -package org.sopt.dateroad.presentation.ui.mypage +package org.sopt.teamdateroad.presentation.ui.mypage import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.domain.usecase.ClearUserInfoUseCase -import org.sopt.dateroad.domain.usecase.DeleteSignOutUseCase -import org.sopt.dateroad.domain.usecase.DeleteWithdrawUseCase -import org.sopt.dateroad.domain.usecase.GetUserUseCase -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.usecase.ClearUserInfoUseCase +import org.sopt.teamdateroad.domain.usecase.DeleteSignOutUseCase +import org.sopt.teamdateroad.domain.usecase.DeleteWithdrawUseCase +import org.sopt.teamdateroad.domain.usecase.GetUserUseCase +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class MyPageViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/component/MyPageButton.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/component/MyPageButton.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/component/MyPageButton.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/component/MyPageButton.kt index 4e0ca705..3e295d85 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/component/MyPageButton.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/component/MyPageButton.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.mypage.component +package org.sopt.teamdateroad.presentation.ui.mypage.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -18,9 +18,9 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.MyPageMenuType -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.type.MyPageMenuType +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun MyPageButton( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/component/MyPagePointBox.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/component/MyPagePointBox.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/component/MyPagePointBox.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/component/MyPagePointBox.kt index 131640b6..9610fa87 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/component/MyPagePointBox.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/component/MyPagePointBox.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.mypage.component +package org.sopt.teamdateroad.presentation.ui.mypage.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -20,10 +20,10 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.data.dataremote.util.Point.POINT -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.data.dataremote.util.Point.POINT +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun MyPagePointBox( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/navigation/MyPageNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/navigation/MyPageNavigation.kt similarity index 77% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/navigation/MyPageNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/navigation/MyPageNavigation.kt index 346af9d0..193366fe 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/mypage/navigation/MyPageNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/mypage/navigation/MyPageNavigation.kt @@ -1,14 +1,14 @@ -package org.sopt.dateroad.presentation.ui.mypage.navigation +package org.sopt.teamdateroad.presentation.ui.mypage.navigation import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable -import org.sopt.dateroad.presentation.model.MainNavigationBarRoute -import org.sopt.dateroad.presentation.type.MyCourseType -import org.sopt.dateroad.presentation.type.ProfileType -import org.sopt.dateroad.presentation.ui.mypage.MyPageRoute +import org.sopt.teamdateroad.presentation.model.MainNavigationBarRoute +import org.sopt.teamdateroad.presentation.type.MyCourseType +import org.sopt.teamdateroad.presentation.type.ProfileType +import org.sopt.teamdateroad.presentation.ui.mypage.MyPageRoute fun NavController.navigationMyPage(navOptions: NavOptions) { navigate( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainActivity.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/MainActivity.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainActivity.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/MainActivity.kt index 19e5129e..3d5b41f6 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainActivity.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/MainActivity.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.navigator +package org.sopt.teamdateroad.presentation.ui.navigator import android.os.Bundle import androidx.activity.ComponentActivity @@ -11,8 +11,8 @@ import androidx.compose.runtime.setValue import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen import dagger.hilt.android.AndroidEntryPoint import kotlinx.coroutines.delay -import org.sopt.dateroad.presentation.ui.splash.SplashScreen -import org.sopt.dateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.presentation.ui.splash.SplashScreen +import org.sopt.teamdateroad.ui.theme.DATEROADTheme @AndroidEntryPoint class MainActivity : ComponentActivity() { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainNavigator.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/MainNavigator.kt similarity index 71% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainNavigator.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/MainNavigator.kt index d9002019..a58b06a0 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainNavigator.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/MainNavigator.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.navigator +package org.sopt.teamdateroad.presentation.ui.navigator import androidx.compose.runtime.Composable import androidx.compose.runtime.remember @@ -9,30 +9,30 @@ import androidx.navigation.NavOptions import androidx.navigation.compose.currentBackStackEntryAsState import androidx.navigation.compose.rememberNavController import androidx.navigation.navOptions -import org.sopt.dateroad.presentation.model.MainNavigationBarRoute -import org.sopt.dateroad.presentation.model.Route -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.type.MainNavigationBarItemType -import org.sopt.dateroad.presentation.type.MyCourseType -import org.sopt.dateroad.presentation.type.ProfileType -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.ui.advertisement.navigation.navigationAdvertisement -import org.sopt.dateroad.presentation.ui.coursedetail.navigation.navigationCourseDetail -import org.sopt.dateroad.presentation.ui.enroll.navigation.navigationEnroll -import org.sopt.dateroad.presentation.ui.home.navigation.navigationHome -import org.sopt.dateroad.presentation.ui.look.navigation.navigationLook -import org.sopt.dateroad.presentation.ui.mycourse.navigation.navigateMyCourses -import org.sopt.dateroad.presentation.ui.mypage.navigation.navigationMyPage -import org.sopt.dateroad.presentation.ui.onboarding.navigation.navigationOnboarding -import org.sopt.dateroad.presentation.ui.past.navigation.navigationPast -import org.sopt.dateroad.presentation.ui.pointguide.navigation.navigationPointGuide -import org.sopt.dateroad.presentation.ui.pointhistory.navigation.navigationPointHistory -import org.sopt.dateroad.presentation.ui.profile.navigation.navigationProfile -import org.sopt.dateroad.presentation.ui.read.navigation.navigationRead -import org.sopt.dateroad.presentation.ui.signin.navigation.SignInRoute -import org.sopt.dateroad.presentation.ui.signin.navigation.navigationSignIn -import org.sopt.dateroad.presentation.ui.timeline.navigation.navigationTimeline -import org.sopt.dateroad.presentation.ui.timelinedetail.navigation.navigateToTimelineDetail +import org.sopt.teamdateroad.presentation.model.MainNavigationBarRoute +import org.sopt.teamdateroad.presentation.model.Route +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.type.MainNavigationBarItemType +import org.sopt.teamdateroad.presentation.type.MyCourseType +import org.sopt.teamdateroad.presentation.type.ProfileType +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.ui.advertisement.navigation.navigationAdvertisement +import org.sopt.teamdateroad.presentation.ui.coursedetail.navigation.navigationCourseDetail +import org.sopt.teamdateroad.presentation.ui.enroll.navigation.navigationEnroll +import org.sopt.teamdateroad.presentation.ui.home.navigation.navigationHome +import org.sopt.teamdateroad.presentation.ui.look.navigation.navigationLook +import org.sopt.teamdateroad.presentation.ui.mycourse.navigation.navigateMyCourses +import org.sopt.teamdateroad.presentation.ui.mypage.navigation.navigationMyPage +import org.sopt.teamdateroad.presentation.ui.onboarding.navigation.navigationOnboarding +import org.sopt.teamdateroad.presentation.ui.past.navigation.navigationPast +import org.sopt.teamdateroad.presentation.ui.pointguide.navigation.navigationPointGuide +import org.sopt.teamdateroad.presentation.ui.pointhistory.navigation.navigationPointHistory +import org.sopt.teamdateroad.presentation.ui.profile.navigation.navigationProfile +import org.sopt.teamdateroad.presentation.ui.read.navigation.navigationRead +import org.sopt.teamdateroad.presentation.ui.signin.navigation.SignInRoute +import org.sopt.teamdateroad.presentation.ui.signin.navigation.navigationSignIn +import org.sopt.teamdateroad.presentation.ui.timeline.navigation.navigationTimeline +import org.sopt.teamdateroad.presentation.ui.timelinedetail.navigation.navigateToTimelineDetail class MainNavigator( val navHostController: NavHostController diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/MainScreen.kt similarity index 77% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/MainScreen.kt index 9e78684d..826f07c4 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/MainScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/MainScreen.kt @@ -1,13 +1,13 @@ -package org.sopt.dateroad.presentation.ui.navigator +package org.sopt.teamdateroad.presentation.ui.navigator import androidx.compose.material3.Scaffold import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview -import org.sopt.dateroad.presentation.type.MainNavigationBarItemType -import org.sopt.dateroad.presentation.ui.navigator.component.MainBottomBar -import org.sopt.dateroad.presentation.ui.navigator.component.MainNavHost -import org.sopt.dateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.presentation.type.MainNavigationBarItemType +import org.sopt.teamdateroad.presentation.ui.navigator.component.MainBottomBar +import org.sopt.teamdateroad.presentation.ui.navigator.component.MainNavHost +import org.sopt.teamdateroad.ui.theme.DATEROADTheme @Composable fun MainScreen( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainBottomBar.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/component/MainBottomBar.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainBottomBar.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/component/MainBottomBar.kt index a37d40f3..1bebc23a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainBottomBar.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/component/MainBottomBar.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.navigator.component +package org.sopt.teamdateroad.presentation.ui.navigator.component import android.content.Context import androidx.compose.animation.AnimatedVisibility @@ -21,13 +21,13 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.MainNavigationBarItemType -import org.sopt.dateroad.ui.theme.Black -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme -import org.sopt.dateroad.ui.theme.Gray200 -import org.sopt.dateroad.ui.theme.Gray300 -import org.sopt.dateroad.ui.theme.White +import org.sopt.teamdateroad.presentation.type.MainNavigationBarItemType +import org.sopt.teamdateroad.ui.theme.Black +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.ui.theme.Gray200 +import org.sopt.teamdateroad.ui.theme.Gray300 +import org.sopt.teamdateroad.ui.theme.White @Composable fun CustomNavigationBarItem( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/component/MainNavHost.kt similarity index 74% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/component/MainNavHost.kt index 3d0a776e..1226133d 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/navigator/component/MainNavHost.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/navigator/component/MainNavHost.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.navigator.component +package org.sopt.teamdateroad.presentation.ui.navigator.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -7,26 +7,26 @@ import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.navigation.compose.NavHost -import org.sopt.dateroad.presentation.ui.advertisement.navigation.advertisementGraph -import org.sopt.dateroad.presentation.ui.coursedetail.navigation.courseDetailGraph -import org.sopt.dateroad.presentation.ui.enroll.navigation.enrollNavGraph -import org.sopt.dateroad.presentation.ui.home.navigation.homeNavGraph -import org.sopt.dateroad.presentation.ui.look.navigation.lookNavGraph -import org.sopt.dateroad.presentation.ui.mycourse.navigation.myCoursesNavGraph -import org.sopt.dateroad.presentation.ui.mypage.navigation.myPageNavGraph -import org.sopt.dateroad.presentation.ui.navigator.MainNavigator -import org.sopt.dateroad.presentation.ui.onboarding.navigation.onboardingNavGraph -import org.sopt.dateroad.presentation.ui.past.navigation.pastNavGraph -import org.sopt.dateroad.presentation.ui.pointguide.navigation.pointGuideGraph -import org.sopt.dateroad.presentation.ui.pointhistory.navigation.pointHistoryGraph -import org.sopt.dateroad.presentation.ui.profile.navigation.profileNavGraph -import org.sopt.dateroad.presentation.ui.read.navigation.readNavGraph -import org.sopt.dateroad.presentation.ui.signin.navigation.signInGraph -import org.sopt.dateroad.presentation.ui.timeline.navigation.timelineNavGraph -import org.sopt.dateroad.presentation.ui.timelinedetail.navigation.timelineDetailGraph -import org.sopt.dateroad.presentation.util.ViewPath.HOME -import org.sopt.dateroad.presentation.util.ViewPath.TIMELINE -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.ui.advertisement.navigation.advertisementGraph +import org.sopt.teamdateroad.presentation.ui.coursedetail.navigation.courseDetailGraph +import org.sopt.teamdateroad.presentation.ui.enroll.navigation.enrollNavGraph +import org.sopt.teamdateroad.presentation.ui.home.navigation.homeNavGraph +import org.sopt.teamdateroad.presentation.ui.look.navigation.lookNavGraph +import org.sopt.teamdateroad.presentation.ui.mycourse.navigation.myCoursesNavGraph +import org.sopt.teamdateroad.presentation.ui.mypage.navigation.myPageNavGraph +import org.sopt.teamdateroad.presentation.ui.navigator.MainNavigator +import org.sopt.teamdateroad.presentation.ui.onboarding.navigation.onboardingNavGraph +import org.sopt.teamdateroad.presentation.ui.past.navigation.pastNavGraph +import org.sopt.teamdateroad.presentation.ui.pointguide.navigation.pointGuideGraph +import org.sopt.teamdateroad.presentation.ui.pointhistory.navigation.pointHistoryGraph +import org.sopt.teamdateroad.presentation.ui.profile.navigation.profileNavGraph +import org.sopt.teamdateroad.presentation.ui.read.navigation.readNavGraph +import org.sopt.teamdateroad.presentation.ui.signin.navigation.signInGraph +import org.sopt.teamdateroad.presentation.ui.timeline.navigation.timelineNavGraph +import org.sopt.teamdateroad.presentation.ui.timelinedetail.navigation.timelineDetailGraph +import org.sopt.teamdateroad.presentation.util.ViewPath.HOME +import org.sopt.teamdateroad.presentation.util.ViewPath.TIMELINE +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun MainNavHost( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnBoardingContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/onboarding/OnBoardingContract.kt similarity index 55% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnBoardingContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/onboarding/OnBoardingContract.kt index e5387a83..1845675b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnBoardingContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/onboarding/OnBoardingContract.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.presentation.ui.onboarding +package org.sopt.teamdateroad.presentation.ui.onboarding -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState class OnBoardingContract { class OnBoardingUiState : UiState diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnBoardingViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/onboarding/OnBoardingViewModel.kt similarity index 79% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnBoardingViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/onboarding/OnBoardingViewModel.kt index 6acf7bac..984f7165 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnBoardingViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/onboarding/OnBoardingViewModel.kt @@ -1,8 +1,8 @@ -package org.sopt.dateroad.presentation.ui.onboarding +package org.sopt.teamdateroad.presentation.ui.onboarding import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject -import org.sopt.dateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel @HiltViewModel class OnBoardingViewModel @Inject constructor() : BaseViewModel() { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnboardingScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/onboarding/OnboardingScreen.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnboardingScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/onboarding/OnboardingScreen.kt index 1610ae74..a289ce50 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/OnboardingScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/onboarding/OnboardingScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.onboarding +package org.sopt.teamdateroad.presentation.ui.onboarding import androidx.activity.compose.BackHandler import androidx.compose.foundation.Image @@ -29,16 +29,16 @@ import com.google.accompanist.pager.PagerState import com.google.accompanist.pager.rememberPagerState import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.type.OnboardingType -import org.sopt.dateroad.presentation.type.ProfileType -import org.sopt.dateroad.presentation.ui.component.button.DateRoadFilledButton -import org.sopt.dateroad.presentation.ui.component.dotsindicator.DotsIndicator -import org.sopt.dateroad.presentation.ui.component.partialcolortext.PartialColorText -import org.sopt.dateroad.presentation.util.Onboarding.FIRST -import org.sopt.dateroad.presentation.util.Onboarding.FIRST_PAGE_KEYWORD -import org.sopt.dateroad.presentation.util.Onboarding.KEYWORD -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.type.OnboardingType +import org.sopt.teamdateroad.presentation.type.ProfileType +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadFilledButton +import org.sopt.teamdateroad.presentation.ui.component.dotsindicator.DotsIndicator +import org.sopt.teamdateroad.presentation.ui.component.partialcolortext.PartialColorText +import org.sopt.teamdateroad.presentation.util.Onboarding.FIRST +import org.sopt.teamdateroad.presentation.util.Onboarding.FIRST_PAGE_KEYWORD +import org.sopt.teamdateroad.presentation.util.Onboarding.KEYWORD +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @OptIn(ExperimentalPagerApi::class) @Composable diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/navigation/OnboardingNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/onboarding/navigation/OnboardingNavigation.kt similarity index 75% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/navigation/OnboardingNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/onboarding/navigation/OnboardingNavigation.kt index 9d118fad..b60b2e47 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/onboarding/navigation/OnboardingNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/onboarding/navigation/OnboardingNavigation.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.presentation.ui.onboarding.navigation +package org.sopt.teamdateroad.presentation.ui.onboarding.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable -import org.sopt.dateroad.presentation.type.ProfileType -import org.sopt.dateroad.presentation.ui.onboarding.OnboardingRoute +import org.sopt.teamdateroad.presentation.type.ProfileType +import org.sopt.teamdateroad.presentation.ui.onboarding.OnboardingRoute fun NavController.navigationOnboarding() { navigate( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/past/PastContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastContract.kt similarity index 57% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/past/PastContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastContract.kt index cdaeeb93..3d3f4e69 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/past/PastContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastContract.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.presentation.ui.past +package org.sopt.teamdateroad.presentation.ui.past -import org.sopt.dateroad.domain.model.Timeline -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.Timeline +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class PastContract { data class PastUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/past/PastScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastScreen.kt similarity index 82% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/past/PastScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastScreen.kt index 2966406a..e5c6ff3f 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/past/PastScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.past +package org.sopt.teamdateroad.presentation.ui.past import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -18,19 +18,19 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.type.TimelineTimeType -import org.sopt.dateroad.presentation.type.EmptyViewType -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadBasicTopBar -import org.sopt.dateroad.presentation.ui.component.view.DateRoadEmptyView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadIdleView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.ui.past.component.PastCard -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.type.TimelineTimeType +import org.sopt.teamdateroad.presentation.type.EmptyViewType +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadBasicTopBar +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadEmptyView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadIdleView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.ui.past.component.PastCard +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun PastRoute( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/past/PastViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastViewModel.kt similarity index 81% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/past/PastViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastViewModel.kt index e95affac..36557605 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/past/PastViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/PastViewModel.kt @@ -1,13 +1,13 @@ -package org.sopt.dateroad.presentation.ui.past +package org.sopt.teamdateroad.presentation.ui.past import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.domain.type.TimelineTimeType -import org.sopt.dateroad.domain.usecase.GetTimelinesUseCase -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.type.TimelineTimeType +import org.sopt.teamdateroad.domain.usecase.GetTimelinesUseCase +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class PastViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/past/component/PastCard.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/component/PastCard.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/past/component/PastCard.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/component/PastCard.kt index 3ee93698..9cbf163c 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/past/component/PastCard.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/component/PastCard.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.past.component +package org.sopt.teamdateroad.presentation.ui.past.component import androidx.compose.foundation.Canvas import androidx.compose.foundation.background @@ -26,15 +26,15 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.Timeline -import org.sopt.dateroad.presentation.type.DateTagType -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadImageTag -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme -import org.sopt.dateroad.ui.theme.defaultDateRoadColors +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.Timeline +import org.sopt.teamdateroad.presentation.type.DateTagType +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadImageTag +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.ui.theme.defaultDateRoadColors @Composable fun PastCard( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/past/navigation/PastNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/navigation/PastNavigation.kt similarity index 79% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/past/navigation/PastNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/navigation/PastNavigation.kt index daeb2da6..b08a9734 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/past/navigation/PastNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/past/navigation/PastNavigation.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.presentation.ui.past.navigation +package org.sopt.teamdateroad.presentation.ui.past.navigation import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.ui.past.PastRoute +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.ui.past.PastRoute fun NavController.navigationPast() { navigate( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/PointGuideScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointguide/PointGuideScreen.kt similarity index 85% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/PointGuideScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointguide/PointGuideScreen.kt index a2955e17..7491c0fd 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/PointGuideScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointguide/PointGuideScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.pointguide +package org.sopt.teamdateroad.presentation.ui.pointguide import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -15,12 +15,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.type.MyPagePointInfoType -import org.sopt.dateroad.presentation.ui.component.partialcolortext.PartialColorText -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadBasicTopBar -import org.sopt.dateroad.presentation.ui.pointguide.component.DateRoadMyPagePointInfo -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.type.MyPagePointInfoType +import org.sopt.teamdateroad.presentation.ui.component.partialcolortext.PartialColorText +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadBasicTopBar +import org.sopt.teamdateroad.presentation.ui.pointguide.component.DateRoadMyPagePointInfo +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun ProfileGuideRoute( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/component/DateRoadMyPagePointInfo.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointguide/component/DateRoadMyPagePointInfo.kt similarity index 93% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/component/DateRoadMyPagePointInfo.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointguide/component/DateRoadMyPagePointInfo.kt index 35001912..dcaaceed 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/component/DateRoadMyPagePointInfo.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointguide/component/DateRoadMyPagePointInfo.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.pointguide.component +package org.sopt.teamdateroad.presentation.ui.pointguide.component import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -21,8 +21,8 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.presentation.type.MyPagePointInfoType -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.presentation.type.MyPagePointInfoType +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun DateRoadMyPagePointInfo(myPagePointInfoType: MyPagePointInfoType) { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/navigation/PointGuideNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointguide/navigation/PointGuideNavigation.kt similarity index 81% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/navigation/PointGuideNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointguide/navigation/PointGuideNavigation.kt index 287d676c..bd25e068 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointguide/navigation/PointGuideNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointguide/navigation/PointGuideNavigation.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.presentation.ui.pointguide.navigation +package org.sopt.teamdateroad.presentation.ui.pointguide.navigation import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable -import org.sopt.dateroad.presentation.ui.pointguide.ProfileGuideRoute +import org.sopt.teamdateroad.presentation.ui.pointguide.ProfileGuideRoute fun NavController.navigationPointGuide() { navigate( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/PointHistoryContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryContract.kt similarity index 63% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/PointHistoryContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryContract.kt index 5b8b92df..07d07ae4 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/PointHistoryContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryContract.kt @@ -1,12 +1,12 @@ -package org.sopt.dateroad.presentation.ui.pointhistory +package org.sopt.teamdateroad.presentation.ui.pointhistory -import org.sopt.dateroad.domain.model.PointHistory -import org.sopt.dateroad.domain.model.UserPoint -import org.sopt.dateroad.presentation.type.PointHistoryTabType -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.PointHistory +import org.sopt.teamdateroad.domain.model.UserPoint +import org.sopt.teamdateroad.presentation.type.PointHistoryTabType +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class PointHistoryContract { data class PointHistoryUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/PointHistoryScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryScreen.kt similarity index 83% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/PointHistoryScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryScreen.kt index ca89cc52..0768afca 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/PointHistoryScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.pointhistory +package org.sopt.teamdateroad.presentation.ui.pointhistory import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box @@ -21,24 +21,24 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.Point -import org.sopt.dateroad.domain.model.PointHistory -import org.sopt.dateroad.domain.model.UserPoint -import org.sopt.dateroad.presentation.type.EmptyViewType -import org.sopt.dateroad.presentation.type.PointHistoryTabType -import org.sopt.dateroad.presentation.ui.component.tabbar.DateRoadTabBar -import org.sopt.dateroad.presentation.ui.component.tabbar.DateRoadTabTitle -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadBasicTopBar -import org.sopt.dateroad.presentation.ui.component.view.DateRoadEmptyView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadIdleView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.ui.pointhistory.component.PointHistoryCard -import org.sopt.dateroad.presentation.ui.pointhistory.component.PointHistoryPointBox -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.Point +import org.sopt.teamdateroad.domain.model.PointHistory +import org.sopt.teamdateroad.domain.model.UserPoint +import org.sopt.teamdateroad.presentation.type.EmptyViewType +import org.sopt.teamdateroad.presentation.type.PointHistoryTabType +import org.sopt.teamdateroad.presentation.ui.component.tabbar.DateRoadTabBar +import org.sopt.teamdateroad.presentation.ui.component.tabbar.DateRoadTabTitle +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadBasicTopBar +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadEmptyView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadIdleView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.ui.pointhistory.component.PointHistoryCard +import org.sopt.teamdateroad.presentation.ui.pointhistory.component.PointHistoryPointBox +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun PointHistoryRoute( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/PointHistoryViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryViewModel.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/PointHistoryViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryViewModel.kt index 4335d27c..8ca13b37 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/PointHistoryViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/PointHistoryViewModel.kt @@ -1,13 +1,13 @@ -package org.sopt.dateroad.presentation.ui.pointhistory +package org.sopt.teamdateroad.presentation.ui.pointhistory import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.domain.usecase.GetPointHistoryUseCase -import org.sopt.dateroad.domain.usecase.GetUserPointUseCase -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.usecase.GetPointHistoryUseCase +import org.sopt.teamdateroad.domain.usecase.GetUserPointUseCase +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class PointHistoryViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/component/PointHistoryCard.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/component/PointHistoryCard.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/component/PointHistoryCard.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/component/PointHistoryCard.kt index 72deb40c..aab1bcd7 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/component/PointHistoryCard.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/component/PointHistoryCard.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.pointhistory.component +package org.sopt.teamdateroad.presentation.ui.pointhistory.component import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -10,9 +10,9 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.domain.model.Point -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.domain.model.Point +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun PointHistoryCard( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/component/PointHistoryPointBox.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/component/PointHistoryPointBox.kt similarity index 89% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/component/PointHistoryPointBox.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/component/PointHistoryPointBox.kt index ab6c7553..7e0e1646 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/component/PointHistoryPointBox.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/component/PointHistoryPointBox.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.pointhistory.component +package org.sopt.teamdateroad.presentation.ui.pointhistory.component import androidx.compose.foundation.background import androidx.compose.foundation.layout.Column @@ -15,9 +15,9 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.UserPoint -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.UserPoint +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun PointHistoryPointBox( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/navigation/PointHistoryNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/navigation/PointHistoryNavigation.kt similarity index 80% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/navigation/PointHistoryNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/navigation/PointHistoryNavigation.kt index 3f92c96d..3ab626bb 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/pointhistory/navigation/PointHistoryNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/pointhistory/navigation/PointHistoryNavigation.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.presentation.ui.pointhistory.navigation +package org.sopt.teamdateroad.presentation.ui.pointhistory.navigation import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable -import org.sopt.dateroad.presentation.ui.pointhistory.PointHistoryRoute +import org.sopt.teamdateroad.presentation.ui.pointhistory.PointHistoryRoute fun NavController.navigationPointHistory() { navigate( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileContract.kt similarity index 78% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileContract.kt index 6f02740a..6d2dae6a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileContract.kt @@ -1,14 +1,14 @@ -package org.sopt.dateroad.presentation.ui.profile +package org.sopt.teamdateroad.presentation.ui.profile -import org.sopt.dateroad.domain.model.EditProfile -import org.sopt.dateroad.domain.model.Profile -import org.sopt.dateroad.domain.model.SignUp -import org.sopt.dateroad.presentation.type.ProfileType -import org.sopt.dateroad.presentation.ui.component.textfield.model.TextFieldValidateResult -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.EditProfile +import org.sopt.teamdateroad.domain.model.Profile +import org.sopt.teamdateroad.domain.model.SignUp +import org.sopt.teamdateroad.presentation.type.ProfileType +import org.sopt.teamdateroad.presentation.ui.component.textfield.model.TextFieldValidateResult +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class ProfileContract { data class ProfileUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileScreen.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileScreen.kt index 9963d58d..320a6e37 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.profile +package org.sopt.teamdateroad.presentation.ui.profile import android.annotation.SuppressLint import android.net.Uri @@ -35,33 +35,33 @@ import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle import coil.compose.rememberAsyncImagePainter -import org.sopt.dateroad.R -import org.sopt.dateroad.data.mapper.todata.toEditProfile -import org.sopt.dateroad.presentation.type.DateChipGroupType -import org.sopt.dateroad.presentation.type.DateTagType -import org.sopt.dateroad.presentation.type.DateTagType.Companion.getDateTagTypeByName -import org.sopt.dateroad.presentation.type.ProfileType -import org.sopt.dateroad.presentation.ui.component.bottomsheet.DateRoadBasicBottomSheet -import org.sopt.dateroad.presentation.ui.component.button.DateRoadBasicButton -import org.sopt.dateroad.presentation.ui.component.chipgroup.DateRoadDateChipGroup -import org.sopt.dateroad.presentation.ui.component.textfield.DateRoadTextFieldWithButton -import org.sopt.dateroad.presentation.ui.component.textfield.model.TextFieldValidateResult -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadBasicTopBar -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.util.GalleryLauncher.DELETE_IMAGE -import org.sopt.dateroad.presentation.util.GalleryLauncher.INPUT -import org.sopt.dateroad.presentation.util.Pattern.NICKNAME_REGEX -import org.sopt.dateroad.presentation.util.TimelineAmplitude.DATE_SCHEDULE_NUM -import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_COURSE_COUNT -import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_FREE_REMAINED -import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_NAME -import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_POINT -import org.sopt.dateroad.presentation.util.UserPropertyAmplitude.USER_PURCHASE_COUNT -import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.data.mapper.todata.toEditProfile +import org.sopt.teamdateroad.presentation.type.DateChipGroupType +import org.sopt.teamdateroad.presentation.type.DateTagType +import org.sopt.teamdateroad.presentation.type.DateTagType.Companion.getDateTagTypeByName +import org.sopt.teamdateroad.presentation.type.ProfileType +import org.sopt.teamdateroad.presentation.ui.component.bottomsheet.DateRoadBasicBottomSheet +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadBasicButton +import org.sopt.teamdateroad.presentation.ui.component.chipgroup.DateRoadDateChipGroup +import org.sopt.teamdateroad.presentation.ui.component.textfield.DateRoadTextFieldWithButton +import org.sopt.teamdateroad.presentation.ui.component.textfield.model.TextFieldValidateResult +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadBasicTopBar +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.util.GalleryLauncher.DELETE_IMAGE +import org.sopt.teamdateroad.presentation.util.GalleryLauncher.INPUT +import org.sopt.teamdateroad.presentation.util.Pattern.NICKNAME_REGEX +import org.sopt.teamdateroad.presentation.util.TimelineAmplitude.DATE_SCHEDULE_NUM +import org.sopt.teamdateroad.presentation.util.UserPropertyAmplitude.USER_COURSE_COUNT +import org.sopt.teamdateroad.presentation.util.UserPropertyAmplitude.USER_FREE_REMAINED +import org.sopt.teamdateroad.presentation.util.UserPropertyAmplitude.USER_NAME +import org.sopt.teamdateroad.presentation.util.UserPropertyAmplitude.USER_POINT +import org.sopt.teamdateroad.presentation.util.UserPropertyAmplitude.USER_PURCHASE_COUNT +import org.sopt.teamdateroad.presentation.util.amplitude.AmplitudeUtils +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @SuppressLint("StateFlowValueCalledInComposition") @Composable diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileViewModel.kt similarity index 90% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileViewModel.kt index b11224d7..07dd5641 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/ProfileViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileViewModel.kt @@ -1,23 +1,23 @@ -package org.sopt.dateroad.presentation.ui.profile +package org.sopt.teamdateroad.presentation.ui.profile import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.data.mapper.todata.toEditProfile -import org.sopt.dateroad.domain.model.EditProfile -import org.sopt.dateroad.domain.model.SignUp -import org.sopt.dateroad.domain.usecase.GetNicknameCheckUseCase -import org.sopt.dateroad.domain.usecase.GetUserUseCase -import org.sopt.dateroad.domain.usecase.PatchEditProfileUseCase -import org.sopt.dateroad.domain.usecase.PostSignUpUseCase -import org.sopt.dateroad.domain.usecase.SetAccessTokenUseCase -import org.sopt.dateroad.domain.usecase.SetRefreshTokenUseCase -import org.sopt.dateroad.presentation.type.ProfileType -import org.sopt.dateroad.presentation.ui.component.textfield.model.TextFieldValidateResult -import org.sopt.dateroad.presentation.util.Token -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.data.mapper.todata.toEditProfile +import org.sopt.teamdateroad.domain.model.EditProfile +import org.sopt.teamdateroad.domain.model.SignUp +import org.sopt.teamdateroad.domain.usecase.GetNicknameCheckUseCase +import org.sopt.teamdateroad.domain.usecase.GetUserUseCase +import org.sopt.teamdateroad.domain.usecase.PatchEditProfileUseCase +import org.sopt.teamdateroad.domain.usecase.PostSignUpUseCase +import org.sopt.teamdateroad.domain.usecase.SetAccessTokenUseCase +import org.sopt.teamdateroad.domain.usecase.SetRefreshTokenUseCase +import org.sopt.teamdateroad.presentation.type.ProfileType +import org.sopt.teamdateroad.presentation.ui.component.textfield.model.TextFieldValidateResult +import org.sopt.teamdateroad.presentation.util.Token +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class ProfileViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/navigation/ProfileNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/navigation/ProfileNavigation.kt similarity index 82% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/profile/navigation/ProfileNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/navigation/ProfileNavigation.kt index 1aa444dd..3e0be2b6 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/profile/navigation/ProfileNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/navigation/ProfileNavigation.kt @@ -1,13 +1,13 @@ -package org.sopt.dateroad.presentation.ui.profile.navigation +package org.sopt.teamdateroad.presentation.ui.profile.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument -import org.sopt.dateroad.presentation.type.ProfileType -import org.sopt.dateroad.presentation.ui.profile.ProfileRoute -import org.sopt.dateroad.presentation.ui.profile.navigation.ProfileRoute.ROUTE_WITH_ARGUMENT +import org.sopt.teamdateroad.presentation.type.ProfileType +import org.sopt.teamdateroad.presentation.ui.profile.ProfileRoute +import org.sopt.teamdateroad.presentation.ui.profile.navigation.ProfileRoute.ROUTE_WITH_ARGUMENT fun NavController.navigationProfile(profileType: ProfileType) { navigate( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/read/ReadContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadContract.kt similarity index 63% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/read/ReadContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadContract.kt index 720c7ed0..ef6677f2 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/read/ReadContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadContract.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.presentation.ui.read +package org.sopt.teamdateroad.presentation.ui.read -import org.sopt.dateroad.domain.model.Course -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.Course +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class ReadContract { data class ReadUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/read/ReadScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadScreen.kt similarity index 84% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/read/ReadScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadScreen.kt index 97ee380e..e817e799 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/read/ReadScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.read +package org.sopt.teamdateroad.presentation.ui.read import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -27,20 +27,20 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle -import org.sopt.dateroad.R -import org.sopt.dateroad.presentation.type.EmptyViewType -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.ui.component.card.DateRoadCourseCard -import org.sopt.dateroad.presentation.ui.component.partialcolortext.PartialColorText -import org.sopt.dateroad.presentation.ui.component.view.DateRoadEmptyView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadIdleView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.util.ViewPath.MY_COURSE_READ -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.presentation.type.EmptyViewType +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.ui.component.card.DateRoadCourseCard +import org.sopt.teamdateroad.presentation.ui.component.partialcolortext.PartialColorText +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadEmptyView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadIdleView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.util.ViewPath.MY_COURSE_READ +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun ReadRoute( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/read/ReadViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadViewModel.kt similarity index 84% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/read/ReadViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadViewModel.kt index 5555f7e6..fb3c0c7e 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/read/ReadViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/ReadViewModel.kt @@ -1,13 +1,13 @@ -package org.sopt.dateroad.presentation.ui.read +package org.sopt.teamdateroad.presentation.ui.read import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.domain.usecase.GetMyCourseReadUseCase -import org.sopt.dateroad.domain.usecase.GetNicknameUseCase -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.usecase.GetMyCourseReadUseCase +import org.sopt.teamdateroad.domain.usecase.GetNicknameUseCase +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class ReadViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/read/navigation/ReadNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/navigation/ReadNavigation.kt similarity index 76% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/read/navigation/ReadNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/navigation/ReadNavigation.kt index d25c3fde..3b8bd856 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/read/navigation/ReadNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/read/navigation/ReadNavigation.kt @@ -1,13 +1,13 @@ -package org.sopt.dateroad.presentation.ui.read.navigation +package org.sopt.teamdateroad.presentation.ui.read.navigation import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable -import org.sopt.dateroad.presentation.model.MainNavigationBarRoute -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.ui.read.ReadRoute +import org.sopt.teamdateroad.presentation.model.MainNavigationBarRoute +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.ui.read.ReadRoute fun NavController.navigationRead(navOptions: NavOptions) { navigate( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInContract.kt similarity index 70% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInContract.kt index e979dd20..905e2119 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInContract.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.presentation.ui.signin +package org.sopt.teamdateroad.presentation.ui.signin -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class SignInContract { data class SignInUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInScreen.kt similarity index 86% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInScreen.kt index c2021ddc..3ecca34a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.signin +package org.sopt.teamdateroad.presentation.ui.signin import android.content.Context import androidx.compose.foundation.Image @@ -23,16 +23,16 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle import com.kakao.sdk.auth.model.OAuthToken import com.kakao.sdk.user.UserApiClient -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.SignIn -import org.sopt.dateroad.presentation.ui.component.button.DateRoadKakaoLoginButton -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadWebView -import org.sopt.dateroad.presentation.util.SignIn.PLATFORM -import org.sopt.dateroad.presentation.util.WebViewUrl.PRIVACY_POLICY_URL -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.SignIn +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadKakaoLoginButton +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadWebView +import org.sopt.teamdateroad.presentation.util.SignIn.PLATFORM +import org.sopt.teamdateroad.presentation.util.WebViewUrl.PRIVACY_POLICY_URL +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DateRoadTheme fun setLayoutLoginKakaoClickListener(context: Context, callback: (OAuthToken?, Throwable?) -> Unit) { if (UserApiClient.instance.isKakaoTalkLoginAvailable(context)) { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInViewModel.kt similarity index 78% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInViewModel.kt index 491c9b90..87606e4a 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/SignInViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/SignInViewModel.kt @@ -1,18 +1,18 @@ -package org.sopt.dateroad.presentation.ui.signin +package org.sopt.teamdateroad.presentation.ui.signin import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.domain.model.SignIn -import org.sopt.dateroad.domain.usecase.GetAccessTokenUseCase -import org.sopt.dateroad.domain.usecase.GetRefreshTokenUseCase -import org.sopt.dateroad.domain.usecase.PostSignInUseCase -import org.sopt.dateroad.domain.usecase.SetAccessTokenUseCase -import org.sopt.dateroad.domain.usecase.SetRefreshTokenUseCase -import org.sopt.dateroad.presentation.util.Token -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.SignIn +import org.sopt.teamdateroad.domain.usecase.GetAccessTokenUseCase +import org.sopt.teamdateroad.domain.usecase.GetRefreshTokenUseCase +import org.sopt.teamdateroad.domain.usecase.PostSignInUseCase +import org.sopt.teamdateroad.domain.usecase.SetAccessTokenUseCase +import org.sopt.teamdateroad.domain.usecase.SetRefreshTokenUseCase +import org.sopt.teamdateroad.presentation.util.Token +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class SignInViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/navigation/SignInNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/navigation/SignInNavigation.kt similarity index 83% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/signin/navigation/SignInNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/navigation/SignInNavigation.kt index 9bd2c3ee..4b89dc6d 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/signin/navigation/SignInNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/signin/navigation/SignInNavigation.kt @@ -1,9 +1,9 @@ -package org.sopt.dateroad.presentation.ui.signin.navigation +package org.sopt.teamdateroad.presentation.ui.signin.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.compose.composable -import org.sopt.dateroad.presentation.ui.signin.SignInRoute +import org.sopt.teamdateroad.presentation.ui.signin.SignInRoute fun NavController.navigationSignIn() { navigate( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/splash/SplashScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/splash/SplashScreen.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/splash/SplashScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/splash/SplashScreen.kt index 8085b379..7f679d29 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/splash/SplashScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/splash/SplashScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.splash +package org.sopt.teamdateroad.presentation.ui.splash import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -10,8 +10,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview -import org.sopt.dateroad.R -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun SplashScreen() { diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineContract.kt similarity index 67% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineContract.kt index 0a593cb3..d9ef96eb 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineContract.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.presentation.ui.timeline +package org.sopt.teamdateroad.presentation.ui.timeline -import org.sopt.dateroad.domain.model.Timeline -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.Timeline +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class TimelineContract { data class TimelineUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineScreen.kt similarity index 82% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineScreen.kt index e08a1d78..a66917bd 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.timeline +package org.sopt.teamdateroad.presentation.ui.timeline import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -24,30 +24,30 @@ import com.google.accompanist.pager.ExperimentalPagerApi import com.google.accompanist.pager.HorizontalPager import com.google.accompanist.pager.PagerState import com.google.accompanist.pager.rememberPagerState -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.type.TimelineTimeType -import org.sopt.dateroad.presentation.type.EmptyViewType -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.type.OneButtonDialogWithDescriptionType -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.ui.component.button.DateRoadFilledButton -import org.sopt.dateroad.presentation.ui.component.button.DateRoadImageButton -import org.sopt.dateroad.presentation.ui.component.dialog.DateRoadOneButtonDialogWithDescription -import org.sopt.dateroad.presentation.ui.component.dotsindicator.DotsIndicator -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadLeftTitleTopBar -import org.sopt.dateroad.presentation.ui.component.view.DateRoadEmptyView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadIdleView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.ui.timeline.component.TimelineCard -import org.sopt.dateroad.presentation.util.TimelineAmplitude.COUNT_DATE_SCHEDULE -import org.sopt.dateroad.presentation.util.TimelineAmplitude.DATE_SCHEDULE_NUM -import org.sopt.dateroad.presentation.util.TimelineAmplitude.VIEW_DATE_SCHEDULE -import org.sopt.dateroad.presentation.util.ViewPath.TIMELINE -import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.type.TimelineTimeType +import org.sopt.teamdateroad.presentation.type.EmptyViewType +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.type.OneButtonDialogWithDescriptionType +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadFilledButton +import org.sopt.teamdateroad.presentation.ui.component.button.DateRoadImageButton +import org.sopt.teamdateroad.presentation.ui.component.dialog.DateRoadOneButtonDialogWithDescription +import org.sopt.teamdateroad.presentation.ui.component.dotsindicator.DotsIndicator +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadLeftTitleTopBar +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadEmptyView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadIdleView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.ui.timeline.component.TimelineCard +import org.sopt.teamdateroad.presentation.util.TimelineAmplitude.COUNT_DATE_SCHEDULE +import org.sopt.teamdateroad.presentation.util.TimelineAmplitude.DATE_SCHEDULE_NUM +import org.sopt.teamdateroad.presentation.util.TimelineAmplitude.VIEW_DATE_SCHEDULE +import org.sopt.teamdateroad.presentation.util.ViewPath.TIMELINE +import org.sopt.teamdateroad.presentation.util.amplitude.AmplitudeUtils +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @OptIn(ExperimentalPagerApi::class) @Composable diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineViewModel.kt similarity index 84% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineViewModel.kt index c43346e9..bd326c80 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/TimelineViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/TimelineViewModel.kt @@ -1,13 +1,13 @@ -package org.sopt.dateroad.presentation.ui.timeline +package org.sopt.teamdateroad.presentation.ui.timeline import androidx.lifecycle.viewModelScope import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.domain.type.TimelineTimeType -import org.sopt.dateroad.domain.usecase.GetTimelinesUseCase -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.type.TimelineTimeType +import org.sopt.teamdateroad.domain.usecase.GetTimelinesUseCase +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class TimelineViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/component/TimelineCard.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/component/TimelineCard.kt similarity index 92% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/component/TimelineCard.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/component/TimelineCard.kt index 429c500a..6c43fbf7 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/component/TimelineCard.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/component/TimelineCard.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.timeline.component +package org.sopt.teamdateroad.presentation.ui.timeline.component import androidx.compose.foundation.Canvas import androidx.compose.foundation.background @@ -29,16 +29,16 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.Timeline -import org.sopt.dateroad.presentation.type.DateTagType -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadImageTag -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadTextTag -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.ui.theme.DateRoadTheme -import org.sopt.dateroad.ui.theme.defaultDateRoadColors +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.Timeline +import org.sopt.teamdateroad.presentation.type.DateTagType +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadImageTag +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadTextTag +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.ui.theme.defaultDateRoadColors @Composable fun TimelineCard( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/navigation/TimelineNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/navigation/TimelineNavigation.kt similarity index 74% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/navigation/TimelineNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/navigation/TimelineNavigation.kt index dce87407..da1a4517 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timeline/navigation/TimelineNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timeline/navigation/TimelineNavigation.kt @@ -1,14 +1,14 @@ -package org.sopt.dateroad.presentation.ui.timeline.navigation +package org.sopt.teamdateroad.presentation.ui.timeline.navigation import androidx.compose.foundation.layout.PaddingValues import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder import androidx.navigation.NavOptions import androidx.navigation.compose.composable -import org.sopt.dateroad.presentation.model.MainNavigationBarRoute -import org.sopt.dateroad.presentation.type.EnrollType -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.ui.timeline.TimelineRoute +import org.sopt.teamdateroad.presentation.model.MainNavigationBarRoute +import org.sopt.teamdateroad.presentation.type.EnrollType +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.ui.timeline.TimelineRoute fun NavController.navigationTimeline(navOptions: NavOptions) { navigate( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailContract.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timelinedetail/TimelineDetailContract.kt similarity index 79% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailContract.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/timelinedetail/TimelineDetailContract.kt index aab51df9..020e0997 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailContract.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timelinedetail/TimelineDetailContract.kt @@ -1,11 +1,11 @@ -package org.sopt.dateroad.presentation.ui.timelinedetail +package org.sopt.teamdateroad.presentation.ui.timelinedetail import android.content.Context -import org.sopt.dateroad.domain.model.TimelineDetail -import org.sopt.dateroad.presentation.util.base.UiEvent -import org.sopt.dateroad.presentation.util.base.UiSideEffect -import org.sopt.dateroad.presentation.util.base.UiState -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.TimelineDetail +import org.sopt.teamdateroad.presentation.util.base.UiEvent +import org.sopt.teamdateroad.presentation.util.base.UiSideEffect +import org.sopt.teamdateroad.presentation.util.base.UiState +import org.sopt.teamdateroad.presentation.util.view.LoadState class TimelineDetailContract { data class TimelineDetailUiState( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt similarity index 86% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt index 32ca7fae..c05bf898 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timelinedetail/TimelineDetailScreen.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.timelinedetail +package org.sopt.teamdateroad.presentation.ui.timelinedetail import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -35,38 +35,38 @@ import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.LocalLifecycleOwner import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.lifecycle.flowWithLifecycle -import org.sopt.dateroad.R -import org.sopt.dateroad.domain.model.Place -import org.sopt.dateroad.domain.model.TimelineDetail -import org.sopt.dateroad.presentation.type.DateTagType.Companion.getDateTagTypeByName -import org.sopt.dateroad.presentation.type.PlaceCardType -import org.sopt.dateroad.presentation.type.TagType -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.type.TwoButtonDialogType -import org.sopt.dateroad.presentation.type.TwoButtonDialogWithDescriptionType -import org.sopt.dateroad.presentation.ui.component.bottomsheet.DateRoadBasicBottomSheet -import org.sopt.dateroad.presentation.ui.component.card.DateRoadPlaceCard -import org.sopt.dateroad.presentation.ui.component.dialog.DateRoadTwoButtonDialog -import org.sopt.dateroad.presentation.ui.component.dialog.DateRoadTwoButtonDialogWithDescription -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadImageTag -import org.sopt.dateroad.presentation.ui.component.tag.DateRoadTextTag -import org.sopt.dateroad.presentation.ui.component.topbar.DateRoadBasicTopBar -import org.sopt.dateroad.presentation.ui.component.view.DateRoadErrorView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadIdleView -import org.sopt.dateroad.presentation.ui.component.view.DateRoadLoadingView -import org.sopt.dateroad.presentation.util.TimelineAmplitude.DURATION -import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.CLICK_CLOSE_KAKAO -import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.CLICK_KAKAO_SHARE -import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.CLICK_OPEN_KAKAO -import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.DATE_COURSE_NUM -import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.DATE_TOTAL_DURATION -import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.VIEW_PATH -import org.sopt.dateroad.presentation.util.TimelineDetailAmplitude.VIEW_SCHEDULE_DETAILS -import org.sopt.dateroad.presentation.util.amplitude.AmplitudeUtils -import org.sopt.dateroad.presentation.util.modifier.noRippleClickable -import org.sopt.dateroad.presentation.util.view.LoadState -import org.sopt.dateroad.ui.theme.DATEROADTheme -import org.sopt.dateroad.ui.theme.DateRoadTheme +import org.sopt.teamdateroad.R +import org.sopt.teamdateroad.domain.model.Place +import org.sopt.teamdateroad.domain.model.TimelineDetail +import org.sopt.teamdateroad.presentation.type.DateTagType.Companion.getDateTagTypeByName +import org.sopt.teamdateroad.presentation.type.PlaceCardType +import org.sopt.teamdateroad.presentation.type.TagType +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.type.TwoButtonDialogType +import org.sopt.teamdateroad.presentation.type.TwoButtonDialogWithDescriptionType +import org.sopt.teamdateroad.presentation.ui.component.bottomsheet.DateRoadBasicBottomSheet +import org.sopt.teamdateroad.presentation.ui.component.card.DateRoadPlaceCard +import org.sopt.teamdateroad.presentation.ui.component.dialog.DateRoadTwoButtonDialog +import org.sopt.teamdateroad.presentation.ui.component.dialog.DateRoadTwoButtonDialogWithDescription +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadImageTag +import org.sopt.teamdateroad.presentation.ui.component.tag.DateRoadTextTag +import org.sopt.teamdateroad.presentation.ui.component.topbar.DateRoadBasicTopBar +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadErrorView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadIdleView +import org.sopt.teamdateroad.presentation.ui.component.view.DateRoadLoadingView +import org.sopt.teamdateroad.presentation.util.TimelineAmplitude.DURATION +import org.sopt.teamdateroad.presentation.util.TimelineDetailAmplitude.CLICK_CLOSE_KAKAO +import org.sopt.teamdateroad.presentation.util.TimelineDetailAmplitude.CLICK_KAKAO_SHARE +import org.sopt.teamdateroad.presentation.util.TimelineDetailAmplitude.CLICK_OPEN_KAKAO +import org.sopt.teamdateroad.presentation.util.TimelineDetailAmplitude.DATE_COURSE_NUM +import org.sopt.teamdateroad.presentation.util.TimelineDetailAmplitude.DATE_TOTAL_DURATION +import org.sopt.teamdateroad.presentation.util.TimelineDetailAmplitude.VIEW_PATH +import org.sopt.teamdateroad.presentation.util.TimelineDetailAmplitude.VIEW_SCHEDULE_DETAILS +import org.sopt.teamdateroad.presentation.util.amplitude.AmplitudeUtils +import org.sopt.teamdateroad.presentation.util.modifier.noRippleClickable +import org.sopt.teamdateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.ui.theme.DATEROADTheme +import org.sopt.teamdateroad.ui.theme.DateRoadTheme @Composable fun TimelineDetailRoute( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timelinedetail/TimelineDetailViewModel.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/timelinedetail/TimelineDetailViewModel.kt index c533b614..71efd6fb 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/TimelineDetailViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timelinedetail/TimelineDetailViewModel.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.timelinedetail +package org.sopt.teamdateroad.presentation.ui.timelinedetail import android.content.Context import androidx.lifecycle.viewModelScope @@ -8,15 +8,15 @@ import com.kakao.sdk.share.WebSharerClient import dagger.hilt.android.lifecycle.HiltViewModel import javax.inject.Inject import kotlinx.coroutines.launch -import org.sopt.dateroad.domain.model.TimelineDetail -import org.sopt.dateroad.domain.usecase.DeleteTimelineUseCase -import org.sopt.dateroad.domain.usecase.GetNicknameUseCase -import org.sopt.dateroad.domain.usecase.GetTimelineDetailUseCase -import org.sopt.dateroad.presentation.util.ShareKakao.START_AT -import org.sopt.dateroad.presentation.util.ShareKakao.TEMPLATE_ID -import org.sopt.dateroad.presentation.util.ShareKakao.USER_NAME -import org.sopt.dateroad.presentation.util.base.BaseViewModel -import org.sopt.dateroad.presentation.util.view.LoadState +import org.sopt.teamdateroad.domain.model.TimelineDetail +import org.sopt.teamdateroad.domain.usecase.DeleteTimelineUseCase +import org.sopt.teamdateroad.domain.usecase.GetNicknameUseCase +import org.sopt.teamdateroad.domain.usecase.GetTimelineDetailUseCase +import org.sopt.teamdateroad.presentation.util.ShareKakao.START_AT +import org.sopt.teamdateroad.presentation.util.ShareKakao.TEMPLATE_ID +import org.sopt.teamdateroad.presentation.util.ShareKakao.USER_NAME +import org.sopt.teamdateroad.presentation.util.base.BaseViewModel +import org.sopt.teamdateroad.presentation.util.view.LoadState @HiltViewModel class TimelineDetailViewModel @Inject constructor( diff --git a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt similarity index 88% rename from app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt index 117af5b8..c88e8b6b 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/timelinedetail/navigation/TimelineDetailNavigation.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.ui.timelinedetail.navigation +package org.sopt.teamdateroad.presentation.ui.timelinedetail.navigation import androidx.navigation.NavController import androidx.navigation.NavGraphBuilder @@ -6,8 +6,8 @@ import androidx.navigation.NavOptions import androidx.navigation.NavType import androidx.navigation.compose.composable import androidx.navigation.navArgument -import org.sopt.dateroad.presentation.type.TimelineType -import org.sopt.dateroad.presentation.ui.timelinedetail.TimelineDetailRoute +import org.sopt.teamdateroad.presentation.type.TimelineType +import org.sopt.teamdateroad.presentation.ui.timelinedetail.TimelineDetailRoute fun NavController.navigateToTimelineDetail(timelineType: TimelineType, timelineId: Int, navOptions: NavOptions? = null) { navigate(TimelineDetailRoutes.route(timelineType, timelineId), navOptions) diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/Constraints.kt similarity index 99% rename from app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/util/Constraints.kt index 0ab8b7da..c6984b88 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/Constraints.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/Constraints.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.util +package org.sopt.teamdateroad.presentation.util object CourseDetail { const val POINT_LACK = 50 diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/amplitude/AmplitudeUtils.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/amplitude/AmplitudeUtils.kt similarity index 92% rename from app/src/main/java/org/sopt/dateroad/presentation/util/amplitude/AmplitudeUtils.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/util/amplitude/AmplitudeUtils.kt index 3cbe4630..666329db 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/amplitude/AmplitudeUtils.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/amplitude/AmplitudeUtils.kt @@ -1,10 +1,10 @@ -package org.sopt.dateroad.presentation.util.amplitude +package org.sopt.teamdateroad.presentation.util.amplitude import android.content.Context import com.amplitude.android.Amplitude import com.amplitude.android.Configuration import com.amplitude.core.events.Identify -import org.sopt.dateroad.BuildConfig +import org.sopt.teamdateroad.BuildConfig object AmplitudeUtils { private lateinit var amplitude: Amplitude diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/base/BaseViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/base/BaseViewModel.kt similarity index 96% rename from app/src/main/java/org/sopt/dateroad/presentation/util/base/BaseViewModel.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/util/base/BaseViewModel.kt index 6c38467f..ea513903 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/base/BaseViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/base/BaseViewModel.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.util.base +package org.sopt.teamdateroad.presentation.util.base import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/util/base/UiEvent.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/base/UiEvent.kt new file mode 100644 index 00000000..beab109b --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/base/UiEvent.kt @@ -0,0 +1,3 @@ +package org.sopt.teamdateroad.presentation.util.base + +interface UiEvent diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/util/base/UiSideEffect.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/base/UiSideEffect.kt new file mode 100644 index 00000000..9681f158 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/base/UiSideEffect.kt @@ -0,0 +1,3 @@ +package org.sopt.teamdateroad.presentation.util.base + +interface UiSideEffect diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/util/base/UiState.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/base/UiState.kt new file mode 100644 index 00000000..a42d9946 --- /dev/null +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/base/UiState.kt @@ -0,0 +1,3 @@ +package org.sopt.teamdateroad.presentation.util.base + +interface UiState diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/draganddrop/DragAndDropListState.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/draganddrop/DragAndDropListState.kt similarity index 92% rename from app/src/main/java/org/sopt/dateroad/presentation/util/draganddrop/DragAndDropListState.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/util/draganddrop/DragAndDropListState.kt index 27c53ec6..4990ec80 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/draganddrop/DragAndDropListState.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/draganddrop/DragAndDropListState.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.util.draganddrop +package org.sopt.teamdateroad.presentation.util.draganddrop import androidx.compose.foundation.lazy.LazyListItemInfo import androidx.compose.foundation.lazy.LazyListState @@ -11,9 +11,9 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.geometry.Offset import kotlinx.coroutines.Job -import org.sopt.dateroad.presentation.util.Default.DRAGGED_DISTANCE -import org.sopt.dateroad.presentation.util.lazylist.getVisibleItemInfoFor -import org.sopt.dateroad.presentation.util.lazylist.offsetEnd +import org.sopt.teamdateroad.presentation.util.Default.DRAGGED_DISTANCE +import org.sopt.teamdateroad.presentation.util.lazylist.getVisibleItemInfoFor +import org.sopt.teamdateroad.presentation.util.lazylist.offsetEnd class DragAndDropListState( val lazyListState: LazyListState, diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/lazylist/LazyListExt.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/lazylist/LazyListExt.kt similarity index 87% rename from app/src/main/java/org/sopt/dateroad/presentation/util/lazylist/LazyListExt.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/util/lazylist/LazyListExt.kt index b5fc809c..d327d673 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/lazylist/LazyListExt.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/lazylist/LazyListExt.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.util.lazylist +package org.sopt.teamdateroad.presentation.util.lazylist import androidx.compose.foundation.lazy.LazyListItemInfo import androidx.compose.foundation.lazy.LazyListState diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/modifier/ModifierExt.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/modifier/ModifierExt.kt similarity index 91% rename from app/src/main/java/org/sopt/dateroad/presentation/util/modifier/ModifierExt.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/util/modifier/ModifierExt.kt index 6fe1c886..9c0a8b38 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/modifier/ModifierExt.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/modifier/ModifierExt.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.util.modifier +package org.sopt.teamdateroad.presentation.util.modifier import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.MutableInteractionSource @@ -15,7 +15,7 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import org.sopt.dateroad.presentation.util.Default.CLICKABLE_DELAY +import org.sopt.teamdateroad.presentation.util.Default.CLICKABLE_DELAY inline fun Modifier.noRippleClickable( crossinline onClick: () -> Unit = {} diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/mutablelist/MutableListExt.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/mutablelist/MutableListExt.kt similarity index 74% rename from app/src/main/java/org/sopt/dateroad/presentation/util/mutablelist/MutableListExt.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/util/mutablelist/MutableListExt.kt index 33d1b73b..d1e68f16 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/mutablelist/MutableListExt.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/mutablelist/MutableListExt.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.util.mutablelist +package org.sopt.teamdateroad.presentation.util.mutablelist fun MutableList.move(from: Int, to: Int): MutableList { if (from == to) return this diff --git a/app/src/main/java/org/sopt/dateroad/presentation/util/view/LoadState.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/util/view/LoadState.kt similarity index 57% rename from app/src/main/java/org/sopt/dateroad/presentation/util/view/LoadState.kt rename to app/src/main/java/org/sopt/teamdateroad/presentation/util/view/LoadState.kt index e02e0f0b..10e74c71 100644 --- a/app/src/main/java/org/sopt/dateroad/presentation/util/view/LoadState.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/util/view/LoadState.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.presentation.util.view +package org.sopt.teamdateroad.presentation.util.view enum class LoadState { Idle, diff --git a/app/src/main/java/org/sopt/dateroad/ui/theme/Color.kt b/app/src/main/java/org/sopt/teamdateroad/ui/theme/Color.kt similarity index 98% rename from app/src/main/java/org/sopt/dateroad/ui/theme/Color.kt rename to app/src/main/java/org/sopt/teamdateroad/ui/theme/Color.kt index bd477e94..adb1ba2d 100644 --- a/app/src/main/java/org/sopt/dateroad/ui/theme/Color.kt +++ b/app/src/main/java/org/sopt/teamdateroad/ui/theme/Color.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.ui.theme +package org.sopt.teamdateroad.ui.theme import androidx.compose.runtime.Immutable import androidx.compose.runtime.staticCompositionLocalOf diff --git a/app/src/main/java/org/sopt/dateroad/ui/theme/Theme.kt b/app/src/main/java/org/sopt/teamdateroad/ui/theme/Theme.kt similarity index 97% rename from app/src/main/java/org/sopt/dateroad/ui/theme/Theme.kt rename to app/src/main/java/org/sopt/teamdateroad/ui/theme/Theme.kt index 29fadb18..1f64dd9f 100644 --- a/app/src/main/java/org/sopt/dateroad/ui/theme/Theme.kt +++ b/app/src/main/java/org/sopt/teamdateroad/ui/theme/Theme.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.ui.theme +package org.sopt.teamdateroad.ui.theme import android.app.Activity import androidx.compose.material3.MaterialTheme diff --git a/app/src/main/java/org/sopt/dateroad/ui/theme/Type.kt b/app/src/main/java/org/sopt/teamdateroad/ui/theme/Type.kt similarity index 98% rename from app/src/main/java/org/sopt/dateroad/ui/theme/Type.kt rename to app/src/main/java/org/sopt/teamdateroad/ui/theme/Type.kt index 7cba3106..0dad377d 100644 --- a/app/src/main/java/org/sopt/dateroad/ui/theme/Type.kt +++ b/app/src/main/java/org/sopt/teamdateroad/ui/theme/Type.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad.ui.theme +package org.sopt.teamdateroad.ui.theme import androidx.compose.runtime.Immutable import androidx.compose.runtime.staticCompositionLocalOf @@ -6,7 +6,7 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.Font import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.unit.sp -import org.sopt.dateroad.R +import org.sopt.teamdateroad.R val SuitBold = FontFamily(Font(R.font.suit_bold)) val SuitExtraBold = FontFamily(Font(R.font.suit_extrabold)) diff --git a/app/src/test/java/org/sopt/dateroad/ExampleUnitTest.kt b/app/src/test/java/org/sopt/teamdateroad/ExampleUnitTest.kt similarity index 91% rename from app/src/test/java/org/sopt/dateroad/ExampleUnitTest.kt rename to app/src/test/java/org/sopt/teamdateroad/ExampleUnitTest.kt index de092c02..0e057573 100644 --- a/app/src/test/java/org/sopt/dateroad/ExampleUnitTest.kt +++ b/app/src/test/java/org/sopt/teamdateroad/ExampleUnitTest.kt @@ -1,4 +1,4 @@ -package org.sopt.dateroad +package org.sopt.teamdateroad import junit.framework.TestCase.assertEquals import org.junit.Test From d8dea5e5e8d5b34469831949fcf83e9c5a2aeb54 Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Tue, 15 Oct 2024 10:22:16 +0900 Subject: [PATCH 45/49] =?UTF-8?q?[chore]=20#278=20=EC=83=81=EC=88=98?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teamdateroad/presentation/ui/profile/ProfileViewModel.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileViewModel.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileViewModel.kt index 07dd5641..41558573 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileViewModel.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileViewModel.kt @@ -75,7 +75,7 @@ class ProfileViewModel @Inject constructor( signUp = currentState.signUp.copy(userSignUpInfo = currentState.signUp.userSignUpInfo.copy(name = event.name)), isNicknameButtonEnabled = event.name.length in MIN_NICKNAME_LENGTH..MAX_NICKNAME_LENGTH, nicknameValidateResult = when { - event.name.length < 2 -> TextFieldValidateResult.ValidationError + event.name.length < MIN_NICKNAME_LENGTH -> TextFieldValidateResult.ValidationError else -> TextFieldValidateResult.Basic } ) @@ -84,7 +84,7 @@ class ProfileViewModel @Inject constructor( editProfile = currentState.editProfile.copy(name = event.name), isNicknameButtonEnabled = event.name.length in MIN_NICKNAME_LENGTH..MAX_NICKNAME_LENGTH, nicknameValidateResult = when { - event.name.length < 2 -> TextFieldValidateResult.ValidationError + event.name.length < MIN_NICKNAME_LENGTH -> TextFieldValidateResult.ValidationError else -> TextFieldValidateResult.Basic } ) From 4324cc9a96c95c64f3271aabe7f1272003fb5126 Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Tue, 15 Oct 2024 15:34:08 +0900 Subject: [PATCH 46/49] [chore] #280 update versionCode --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c77c5d0b..af9cbab5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ compileSdk = "34" minSdk = "28" targetSdk = "34" -versionCode = "1" +versionCode = "2" versionName = "1.0.0" jvmTarget = "1.8" kotlinCompilerExtensionVersion = "1.5.13" From 2b5883a819eaf635d5751465590a50a3c5a53cab Mon Sep 17 00:00:00 2001 From: jihyunniiii Date: Tue, 15 Oct 2024 15:34:19 +0900 Subject: [PATCH 47/49] =?UTF-8?q?[fix]=20#280=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=20=EC=88=98=EC=A0=95/=EB=93=B1=EB=A1=9D=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20null=20=EC=B2=98=EB=A6=AC=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/ui/profile/ProfileScreen.kt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileScreen.kt index 320a6e37..56b6cdf0 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/profile/ProfileScreen.kt @@ -76,13 +76,17 @@ fun ProfileRoute( val lifecycleOwner = LocalLifecycleOwner.current val getGalleryLauncher = rememberLauncherForActivityResult(ActivityResultContracts.GetContent()) { uri: Uri? -> - viewModel.setEvent(ProfileContract.ProfileEvent.SetSignUpImage(image = uri.toString())) - viewModel.setEvent(ProfileContract.ProfileEvent.SetEditProfileImage(image = uri.toString())) + uri?.let { + viewModel.setEvent(ProfileContract.ProfileEvent.SetSignUpImage(image = it.toString())) + viewModel.setEvent(ProfileContract.ProfileEvent.SetEditProfileImage(image = it.toString())) + } } val getPhotoPickerLauncher = rememberLauncherForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri: Uri? -> - viewModel.setEvent(ProfileContract.ProfileEvent.SetSignUpImage(image = uri.toString())) - viewModel.setEvent(ProfileContract.ProfileEvent.SetEditProfileImage(image = uri.toString())) + uri?.let { + viewModel.setEvent(ProfileContract.ProfileEvent.SetSignUpImage(image = it.toString())) + viewModel.setEvent(ProfileContract.ProfileEvent.SetEditProfileImage(image = it.toString())) + } } LaunchedEffect(Unit) { From b29b685584d7589a6cfd8144fa9a7799abd3466d Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Tue, 29 Oct 2024 14:42:12 +0900 Subject: [PATCH 48/49] =?UTF-8?q?[fix]=20#282=20=EC=9D=BC=EC=A0=95?= =?UTF-8?q?=EB=93=B1=EB=A1=9D=202=EB=B2=88=EC=A7=B8=20=EB=B7=B0=20?= =?UTF-8?q?=EB=B6=88=EB=9F=AC=EC=98=A4=EA=B8=B0=20=EB=B2=84=ED=8A=BC=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EB=B0=8F=20=EC=98=A4=ED=83=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 2 ++ .../presentation/ui/enroll/EnrollScreen.kt | 34 ++++++++++--------- gradle/libs.versions.toml | 3 +- 3 files changed, 22 insertions(+), 17 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1b96dd12..a6e40ba4 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -91,9 +91,11 @@ dependencies { implementation(libs.bundles.androidx) implementation(platform(libs.androidx.compose.bom)) + // Google implementation(platform(libs.google.firebase.bom)) implementation(libs.google.firebase.crashlytics) + implementation(libs.firebase.crashlytics.buildtools) // Network implementation(platform(libs.okhttp.bom)) diff --git a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollScreen.kt b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollScreen.kt index be4f7693..fa56b1f6 100644 --- a/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollScreen.kt +++ b/app/src/main/java/org/sopt/teamdateroad/presentation/ui/enroll/EnrollScreen.kt @@ -391,21 +391,23 @@ fun EnrollScreen( leftIconResource = R.drawable.ic_top_bar_back_white, onLeftIconClick = onTopBarBackButtonClick, buttonContent = { - Row { - DateRoadFilledButton( - isEnabled = true, - textContent = stringResource(id = R.string.top_bar_button_text_load), - onClick = onTopBarLoadButtonClick, - textStyle = DateRoadTheme.typography.bodyMed13, - enabledBackgroundColor = DateRoadTheme.colors.purple600, - enabledTextColor = DateRoadTheme.colors.white, - disabledBackgroundColor = DateRoadTheme.colors.gray200, - disabledTextColor = DateRoadTheme.colors.gray400, - cornerRadius = 20.dp, - paddingHorizontal = 10.dp, - paddingVertical = 5.dp - ) - Spacer(modifier = Modifier.width(16.dp)) + if (enrollUiState.page == EnrollScreenType.FIRST) { + Row { + DateRoadFilledButton( + isEnabled = true, + textContent = stringResource(id = R.string.top_bar_button_text_load), + onClick = onTopBarLoadButtonClick, + textStyle = DateRoadTheme.typography.bodyMed13, + enabledBackgroundColor = DateRoadTheme.colors.purple600, + enabledTextColor = DateRoadTheme.colors.white, + disabledBackgroundColor = DateRoadTheme.colors.gray200, + disabledTextColor = DateRoadTheme.colors.gray400, + cornerRadius = 20.dp, + paddingHorizontal = 10.dp, + paddingVertical = 5.dp + ) + Spacer(modifier = Modifier.width(16.dp)) + } } } ) @@ -499,7 +501,7 @@ fun EnrollScreen( }, titleText = stringResource(id = R.string.region_bottom_sheet_title), buttonText = stringResource(id = R.string.apply), - onButtonClick = { regoion, area -> onRegionBottomSheetButtonClick(regoion, area) }, + onButtonClick = { region, area -> onRegionBottomSheetButtonClick(region, area) }, onDismissRequest = onRegionBottomSheetDismissRequest ) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index af9cbab5..982fa134 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -31,6 +31,7 @@ pagingCommonAndroid = "3.3.2" googleServices = "4.4.2" firebaseCrashlytics = "3.0.2" firebaseBom = "33.3.0" +firebaseCrashlyticsBuildtools = "3.0.2" # Accompanist accompanistPager = "0.25.0" @@ -82,6 +83,7 @@ google-services = { group = "com.google.gms", name = "google-services", version. google-firebase-crashlytics-gradle = { group = "com.google.firebase", name = "firebase-crashlytics-gradle", version.ref = "firebaseCrashlytics" } google-firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" } google-firebase-crashlytics = { group = "com.google.firebase", name = "firebase-crashlytics-ktx" } +firebase-crashlytics-buildtools = { group = "com.google.firebase", name = "firebase-crashlytics-buildtools", version.ref = "firebaseCrashlyticsBuildtools" } # Accompanist accompanist-pager = { module = "com.google.accompanist:accompanist-pager", version.ref = "accompanistPager" } @@ -110,7 +112,6 @@ kakao-cert = { group = "com.kakao.sdk", name = "v2-cert", version.ref = "kakao" amplitude = { group = "com.amplitude", name = "analytics-android", version.ref = "amplitude" } lottie-compose = { module = "com.airbnb.android:lottie-compose", version.ref = "lottieCompose" } - [plugins] android-application = { id = "com.android.application", version.ref = "agp" } jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } From ee5479c9c622910314d7b66c4a8bd8cd3dc6af5c Mon Sep 17 00:00:00 2001 From: t1nm1ksun Date: Tue, 29 Oct 2024 14:52:43 +0900 Subject: [PATCH 49/49] [chore] #282 version code update --- app/build.gradle.kts | 1 - gradle/libs.versions.toml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a6e40ba4..62573c23 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -91,7 +91,6 @@ dependencies { implementation(libs.bundles.androidx) implementation(platform(libs.androidx.compose.bom)) - // Google implementation(platform(libs.google.firebase.bom)) implementation(libs.google.firebase.crashlytics) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 982fa134..68b89ace 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ compileSdk = "34" minSdk = "28" targetSdk = "34" -versionCode = "2" +versionCode = "3" versionName = "1.0.0" jvmTarget = "1.8" kotlinCompilerExtensionVersion = "1.5.13"