diff --git a/common/extension/src/main/java/com/idiotfrogs/extension/LocalDateTimeExtension.kt b/common/extension/src/main/java/com/idiotfrogs/extension/LocalDateTimeExtension.kt index da7e2b00..831489b0 100644 --- a/common/extension/src/main/java/com/idiotfrogs/extension/LocalDateTimeExtension.kt +++ b/common/extension/src/main/java/com/idiotfrogs/extension/LocalDateTimeExtension.kt @@ -1,6 +1,7 @@ package com.idiotfrogs.extension import kotlinx.datetime.DayOfWeek +import kotlinx.datetime.LocalDate import kotlinx.datetime.LocalDateTime import kotlinx.datetime.TimeZone import kotlinx.datetime.number @@ -14,6 +15,9 @@ fun LocalDateTime?.toYearMonthDay(): String = fun LocalDateTime?.toYearMonthDayWeek(): String = "${this?.year}. ${this?.month?.number.toString().padStart(2, '0')}. ${this?.day.toString().padStart(2, '0')}. ${this?.dayOfWeek?.toKoreanShort()}" +fun LocalDate?.toYearMonthDayWeek(): String = + "${this?.year}. ${this?.month?.number.toString().padStart(2, '0')}. ${this?.day.toString().padStart(2, '0')}. ${this?.dayOfWeek?.toKoreanShort()}" + @OptIn(ExperimentalTime::class) fun LocalDateTime?.toDday(): String { val today = Clock.System.todayIn(TimeZone.of("Asia/Seoul")) @@ -45,4 +49,18 @@ private fun DayOfWeek.toKoreanShort(): String = when (this) { DayOfWeek.FRIDAY -> "(금)" DayOfWeek.SATURDAY -> "(토)" DayOfWeek.SUNDAY -> "(일)" -} \ No newline at end of file +} + +@OptIn(ExperimentalTime::class) +fun LocalDate?.toOpenRemainingText(): String { + if (this == null) return "묻기 전" + + val today = Clock.System.todayIn(TimeZone.of("Asia/Seoul")) + val diff = toEpochDays() - today.toEpochDays() + + return when { + diff > 0L -> "오픈까지 ${diff}일 남음" + diff == 0L -> "오픈 당일" + else -> "오픈" + } +} diff --git a/core/model/src/main/java/com/idiotfrogs/model/timecapsule/BuryTimeCapsuleRequest.kt b/core/model/src/main/java/com/idiotfrogs/model/timecapsule/BuryTimeCapsuleRequest.kt index 493d82d4..65bf38b7 100644 --- a/core/model/src/main/java/com/idiotfrogs/model/timecapsule/BuryTimeCapsuleRequest.kt +++ b/core/model/src/main/java/com/idiotfrogs/model/timecapsule/BuryTimeCapsuleRequest.kt @@ -1,9 +1,9 @@ package com.idiotfrogs.model.timecapsule -import kotlinx.datetime.LocalDateTime +import kotlinx.datetime.LocalDate import kotlinx.serialization.Serializable @Serializable data class BuryTimeCapsuleRequest( - val openedAt: LocalDateTime, + val openedAt: LocalDate, ) \ No newline at end of file diff --git a/core/model/src/main/java/com/idiotfrogs/model/timecapsule/MyTimeCapsuleResponse.kt b/core/model/src/main/java/com/idiotfrogs/model/timecapsule/MyTimeCapsuleResponse.kt index f7f12ae5..2db5c7ed 100644 --- a/core/model/src/main/java/com/idiotfrogs/model/timecapsule/MyTimeCapsuleResponse.kt +++ b/core/model/src/main/java/com/idiotfrogs/model/timecapsule/MyTimeCapsuleResponse.kt @@ -1,5 +1,6 @@ package com.idiotfrogs.model.timecapsule +import kotlinx.datetime.LocalDate import kotlinx.datetime.LocalDateTime import kotlinx.serialization.Serializable @@ -7,6 +8,7 @@ import kotlinx.serialization.Serializable data class MyTimeCapsuleResponse( val timeCapsuleId: Long, val title: String, + val openedAt: LocalDate? = null, val createdAt: LocalDateTime, val mainImageUrl: String, val timeCapsuleStatus: TimeCapsuleStatus, diff --git a/core/model/src/main/java/com/idiotfrogs/model/timecapsule/ProcessCollaboratorRequest.kt b/core/model/src/main/java/com/idiotfrogs/model/timecapsule/ProcessCollaboratorRequest.kt deleted file mode 100644 index 4b7eb034..00000000 --- a/core/model/src/main/java/com/idiotfrogs/model/timecapsule/ProcessCollaboratorRequest.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.idiotfrogs.model.timecapsule - -import kotlinx.serialization.Serializable - -@Serializable -data class ProcessCollaboratorRequest( - val isApproved: Boolean, -) \ No newline at end of file diff --git a/core/model/src/main/java/com/idiotfrogs/model/timecapsule/TimeCapsuleCreateResponse.kt b/core/model/src/main/java/com/idiotfrogs/model/timecapsule/TimeCapsuleCreateResponse.kt index 35dea665..c1b76f99 100644 --- a/core/model/src/main/java/com/idiotfrogs/model/timecapsule/TimeCapsuleCreateResponse.kt +++ b/core/model/src/main/java/com/idiotfrogs/model/timecapsule/TimeCapsuleCreateResponse.kt @@ -1,6 +1,6 @@ package com.idiotfrogs.model.timecapsule -import kotlinx.datetime.LocalDateTime +import kotlinx.datetime.LocalDate import kotlinx.serialization.Serializable @Serializable @@ -8,7 +8,7 @@ data class TimeCapsuleCreateResponse( val id: Long, val title: String, val description: String?, - val openedAt: LocalDateTime?, + val openedAt: LocalDate?, val timeCapsuleStatus: String, val mainImageUrl: String ) \ No newline at end of file diff --git a/core/model/src/main/java/com/idiotfrogs/model/timecapsule/TimeCapsuleResponse.kt b/core/model/src/main/java/com/idiotfrogs/model/timecapsule/TimeCapsuleResponse.kt index bd225fae..d294b938 100644 --- a/core/model/src/main/java/com/idiotfrogs/model/timecapsule/TimeCapsuleResponse.kt +++ b/core/model/src/main/java/com/idiotfrogs/model/timecapsule/TimeCapsuleResponse.kt @@ -1,5 +1,6 @@ package com.idiotfrogs.model.timecapsule +import kotlinx.datetime.LocalDate import kotlinx.datetime.LocalDateTime import kotlinx.serialization.Serializable @@ -7,9 +8,9 @@ import kotlinx.serialization.Serializable data class TimeCapsuleResponse( val title: String, val description: String?, - val buriedAt: LocalDateTime?, + val buriedAt: LocalDate?, val createdAt: LocalDateTime, - val openedAt: LocalDateTime?, + val openedAt: LocalDate?, val mainImageUrl: String, val timeCapsuleStatus: TimeCapsuleStatus, val userRole: TimeCapsuleRole, diff --git a/core/model/src/main/java/com/idiotfrogs/model/user/UserUpdateRequest.kt b/core/model/src/main/java/com/idiotfrogs/model/user/UserUpdateRequest.kt deleted file mode 100644 index 6f396f96..00000000 --- a/core/model/src/main/java/com/idiotfrogs/model/user/UserUpdateRequest.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.idiotfrogs.model.user - -import kotlinx.serialization.Serializable - -@Serializable -data class UserUpdateRequest( - val nickname: String, - val email: String -) \ No newline at end of file diff --git a/core/network/src/main/java/com/idiotfrogs/network/service/TimeCapsuleService.kt b/core/network/src/main/java/com/idiotfrogs/network/service/TimeCapsuleService.kt index 93dc8f61..af55f1fe 100644 --- a/core/network/src/main/java/com/idiotfrogs/network/service/TimeCapsuleService.kt +++ b/core/network/src/main/java/com/idiotfrogs/network/service/TimeCapsuleService.kt @@ -4,7 +4,6 @@ import com.idiotfrogs.model.timecapsule.BuryTimeCapsuleRequest import com.idiotfrogs.model.timecapsule.CapsuleContentsData import com.idiotfrogs.model.timecapsule.MyCapsuleContentsData import com.idiotfrogs.model.timecapsule.MyTimeCapsuleResponse -import com.idiotfrogs.model.timecapsule.ProcessCollaboratorRequest import com.idiotfrogs.model.timecapsule.PendingCollaboratorsRequest import com.idiotfrogs.model.timecapsule.TimeCapsuleCollaboratorsResponse import com.idiotfrogs.model.timecapsule.TimeCapsuleContentResponse @@ -58,12 +57,6 @@ interface TimeCapsuleService { @POST("time-capsules/join-request") suspend fun requestCollaborator(@Body body: PendingCollaboratorsRequest) - @POST("time-capsules/request/{requestId}/process") - suspend fun processRequest( - @Path("requestId") requestId: Long, - @Body body: ProcessCollaboratorRequest - ) - @PUT("time-capsules/{capsuleId}/bury") suspend fun buryTimeCapsule( @Path("capsuleId") capsuleId: Long, diff --git a/data/src/main/java/com/idiotfrogs/data/datasource/timecapsule/TimeCapsuleDataSource.kt b/data/src/main/java/com/idiotfrogs/data/datasource/timecapsule/TimeCapsuleDataSource.kt index 22c69f86..3782b218 100644 --- a/data/src/main/java/com/idiotfrogs/data/datasource/timecapsule/TimeCapsuleDataSource.kt +++ b/data/src/main/java/com/idiotfrogs/data/datasource/timecapsule/TimeCapsuleDataSource.kt @@ -5,7 +5,6 @@ import com.idiotfrogs.model.timecapsule.CapsuleContentsData import com.idiotfrogs.model.timecapsule.MyCapsuleContentsData import com.idiotfrogs.model.timecapsule.MyTimeCapsuleResponse import com.idiotfrogs.model.timecapsule.PendingCollaboratorsRequest -import com.idiotfrogs.model.timecapsule.ProcessCollaboratorRequest import com.idiotfrogs.model.timecapsule.TimeCapsuleCollaboratorsResponse import com.idiotfrogs.model.timecapsule.TimeCapsuleContentResponse import com.idiotfrogs.model.timecapsule.TimeCapsuleCreateRequest @@ -39,8 +38,6 @@ interface TimeCapsuleDataSource { suspend fun requestCollaborator(body: PendingCollaboratorsRequest) - suspend fun processRequest(requestId: Long, body: ProcessCollaboratorRequest) - suspend fun buryTimeCapsule( capsuleId: Long, body: BuryTimeCapsuleRequest diff --git a/data/src/main/java/com/idiotfrogs/data/datasource/timecapsule/TimeCapsuleDataSourceImpl.kt b/data/src/main/java/com/idiotfrogs/data/datasource/timecapsule/TimeCapsuleDataSourceImpl.kt index 4f1fb51d..93de47ba 100644 --- a/data/src/main/java/com/idiotfrogs/data/datasource/timecapsule/TimeCapsuleDataSourceImpl.kt +++ b/data/src/main/java/com/idiotfrogs/data/datasource/timecapsule/TimeCapsuleDataSourceImpl.kt @@ -5,7 +5,6 @@ import com.idiotfrogs.model.timecapsule.CapsuleContentsData import com.idiotfrogs.model.timecapsule.MyCapsuleContentsData import com.idiotfrogs.model.timecapsule.MyTimeCapsuleResponse import com.idiotfrogs.model.timecapsule.PendingCollaboratorsRequest -import com.idiotfrogs.model.timecapsule.ProcessCollaboratorRequest import com.idiotfrogs.model.timecapsule.TimeCapsuleCollaboratorsResponse import com.idiotfrogs.model.timecapsule.TimeCapsuleContentResponse import com.idiotfrogs.model.timecapsule.TimeCapsuleCreateRequest @@ -62,10 +61,6 @@ class TimeCapsuleDataSourceImpl @Inject constructor( return timeCapsuleService.requestCollaborator(body) } - override suspend fun processRequest(requestId: Long, body: ProcessCollaboratorRequest) { - return timeCapsuleService.processRequest(requestId , body) - } - override suspend fun buryTimeCapsule( capsuleId: Long, body: BuryTimeCapsuleRequest diff --git a/data/src/main/java/com/idiotfrogs/data/repository/timecapsule/TimeCapsuleRepository.kt b/data/src/main/java/com/idiotfrogs/data/repository/timecapsule/TimeCapsuleRepository.kt index 56167ed4..4472a2b8 100644 --- a/data/src/main/java/com/idiotfrogs/data/repository/timecapsule/TimeCapsuleRepository.kt +++ b/data/src/main/java/com/idiotfrogs/data/repository/timecapsule/TimeCapsuleRepository.kt @@ -5,7 +5,6 @@ import com.idiotfrogs.model.timecapsule.CapsuleContentsData import com.idiotfrogs.model.timecapsule.MyTimeCapsuleResponse import com.idiotfrogs.model.timecapsule.MyCapsuleContentsData import com.idiotfrogs.model.timecapsule.PendingCollaboratorsRequest -import com.idiotfrogs.model.timecapsule.ProcessCollaboratorRequest import com.idiotfrogs.model.timecapsule.TimeCapsuleCollaboratorsResponse import com.idiotfrogs.model.timecapsule.TimeCapsuleContentResponse import com.idiotfrogs.model.timecapsule.TimeCapsuleCreateRequest @@ -38,8 +37,6 @@ interface TimeCapsuleRepository { suspend fun requestCollaborator(body: PendingCollaboratorsRequest) - suspend fun processRequest(requestId: Long, body: ProcessCollaboratorRequest) - suspend fun buryTimeCapsule( capsuleId: Long, body: BuryTimeCapsuleRequest diff --git a/data/src/main/java/com/idiotfrogs/data/repository/timecapsule/TimeCapsuleRepositoryImpl.kt b/data/src/main/java/com/idiotfrogs/data/repository/timecapsule/TimeCapsuleRepositoryImpl.kt index 61ab7c3b..f9bb00e2 100644 --- a/data/src/main/java/com/idiotfrogs/data/repository/timecapsule/TimeCapsuleRepositoryImpl.kt +++ b/data/src/main/java/com/idiotfrogs/data/repository/timecapsule/TimeCapsuleRepositoryImpl.kt @@ -6,7 +6,6 @@ import com.idiotfrogs.model.timecapsule.CapsuleContentsData import com.idiotfrogs.model.timecapsule.MyTimeCapsuleResponse import com.idiotfrogs.model.timecapsule.MyCapsuleContentsData import com.idiotfrogs.model.timecapsule.PendingCollaboratorsRequest -import com.idiotfrogs.model.timecapsule.ProcessCollaboratorRequest import com.idiotfrogs.model.timecapsule.TimeCapsuleCollaboratorsResponse import com.idiotfrogs.model.timecapsule.TimeCapsuleContentResponse import com.idiotfrogs.model.timecapsule.TimeCapsuleCreateRequest @@ -76,10 +75,6 @@ class TimeCapsuleRepositoryImpl @Inject constructor( return timeCapsuleDataSource.requestCollaborator(body) } - override suspend fun processRequest(requestId: Long, body: ProcessCollaboratorRequest) { - return timeCapsuleDataSource.processRequest(requestId, body) - } - override suspend fun buryTimeCapsule( capsuleId: Long, body: BuryTimeCapsuleRequest diff --git a/data/src/main/java/com/idiotfrogs/data/repository/user/UserRepository.kt b/data/src/main/java/com/idiotfrogs/data/repository/user/UserRepository.kt index 0d9aa6d6..940b6ec2 100644 --- a/data/src/main/java/com/idiotfrogs/data/repository/user/UserRepository.kt +++ b/data/src/main/java/com/idiotfrogs/data/repository/user/UserRepository.kt @@ -2,7 +2,6 @@ package com.idiotfrogs.data.repository.user import com.idiotfrogs.model.user.ProfileResponse import com.idiotfrogs.model.user.UserResponse -import com.idiotfrogs.model.user.UserUpdateRequest import java.io.File interface UserRepository { diff --git a/domain/src/main/java/com/idiotfrogs/domain/usecase/timecapsule/ProcessRequestUseCase.kt b/domain/src/main/java/com/idiotfrogs/domain/usecase/timecapsule/ProcessRequestUseCase.kt deleted file mode 100644 index dbca843d..00000000 --- a/domain/src/main/java/com/idiotfrogs/domain/usecase/timecapsule/ProcessRequestUseCase.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.idiotfrogs.domain.usecase.timecapsule - -import com.idiotfrogs.data.repository.timecapsule.TimeCapsuleRepository -import com.idiotfrogs.model.timecapsule.ProcessCollaboratorRequest -import com.idiotfrogs.util.safeCatching -import javax.inject.Inject - -class ProcessRequestUseCase @Inject constructor( - private val timeCapsuleRepository: TimeCapsuleRepository -) { - suspend operator fun invoke(requestId: Long, body: ProcessCollaboratorRequest): Result = safeCatching { - timeCapsuleRepository.processRequest(requestId, body) - } -} \ No newline at end of file diff --git a/feature/detail/src/main/java/com/idiotfrogs/detail/DetailScreen.kt b/feature/detail/src/main/java/com/idiotfrogs/detail/DetailScreen.kt index dc91b9b5..6d56ccbc 100644 --- a/feature/detail/src/main/java/com/idiotfrogs/detail/DetailScreen.kt +++ b/feature/detail/src/main/java/com/idiotfrogs/detail/DetailScreen.kt @@ -167,7 +167,7 @@ fun DetailScreen( confirmText = "묻기", cancelText = "취소", onConfirm = { - onAction(DetailAction.BuryConfirmClicked(selectedOpenAt)) + onAction(DetailAction.BuryConfirmClicked(selectedOpenAt.date)) showBuryDialog = false }, onCancel = { showBuryDialog = false }, diff --git a/feature/detail/src/main/java/com/idiotfrogs/detail/DetailViewModel.kt b/feature/detail/src/main/java/com/idiotfrogs/detail/DetailViewModel.kt index 04e4c4b4..100ed1fe 100644 --- a/feature/detail/src/main/java/com/idiotfrogs/detail/DetailViewModel.kt +++ b/feature/detail/src/main/java/com/idiotfrogs/detail/DetailViewModel.kt @@ -17,7 +17,7 @@ import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.async -import kotlinx.datetime.LocalDateTime +import kotlinx.datetime.LocalDate import org.orbitmvi.orbit.Container import org.orbitmvi.orbit.viewmodel.container @@ -75,7 +75,7 @@ class DetailViewModel @AssistedInject constructor( } } - private fun buryTimeCapsule(openedAt: LocalDateTime) { + private fun buryTimeCapsule(openedAt: LocalDate) { safeLaunch { intent { reduce { state.copy(isLoading = true) } } @@ -148,7 +148,7 @@ sealed interface DetailAction { data class ManagementClicked(val id: Long, val title: String) : DetailAction data class PreviewClicked(val id: Long) : DetailAction data object BackClicked : DetailAction - data class BuryConfirmClicked(val openedAt: LocalDateTime) : DetailAction + data class BuryConfirmClicked(val openedAt: LocalDate) : DetailAction } sealed interface DetailSideEffect {