Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ fun AvailableUserChips(
myIdentity: IdentityEntity
) {
members.forEachIndexed { index, member ->
val isMeAvailable = index == 0 && myIdentity.availability == "available" && myIdentity.name == member
val isMeAvailable = index == 0 && myIdentity.availability == AVAILABLE && myIdentity.name == member
NoostakUserChip(
text = if (isMeAvailable) stringResource(id = R.string.user_chip_me) else member,
textColor = NoostakTheme.colors.black,
Expand All @@ -21,3 +21,5 @@ fun AvailableUserChips(
)
}
}

private const val AVAILABLE = "약속 가능"
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ fun UnavailableUserChips(
myIdentity: IdentityEntity
) {
members.forEachIndexed { index, member ->
val isMeUnavailable = index == 0 && myIdentity.availability == "unavailable" && myIdentity.name == member
val isMeUnavailable = index == 0 && myIdentity.availability == UNAVAILABLE && myIdentity.name == member
NoostakUserChip(
text = if (isMeUnavailable) stringResource(R.string.user_chip_me) else member,
textColor = NoostakTheme.colors.gray800,
Expand All @@ -21,3 +21,5 @@ fun UnavailableUserChips(
)
}
}

private const val UNAVAILABLE = "약속 불가능"
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.sopt.data.datasource

import com.sopt.data.dto.BaseResponse
import com.sopt.data.dto.request.RequestPostTimeTableDto
import com.sopt.data.dto.response.ResponseGetConfirmedDto
import com.sopt.data.dto.response.ResponseGetOptionDetailDto
import com.sopt.data.dto.response.ResponseGetOptionsDto
import com.sopt.data.dto.response.ResponseGetTimeTableDto
import com.sopt.data.dto.response.ResponseLikesDto
Expand All @@ -20,9 +20,9 @@ interface AppointmentConfirmDataSource {

suspend fun getOptions(appointmentId: Long): BaseResponse<ResponseGetOptionsDto>

suspend fun getConfirmed(appointmentOptionId: Long): BaseResponse<ResponseGetConfirmedDto>
suspend fun getOptionDetail(appointmentOptionId: Long): BaseResponse<ResponseGetOptionDetailDto>

suspend fun postConfirmed(appointmentOptionId: Long): BaseResponse<Unit>
suspend fun postOptionConfirm(appointmentOptionId: Long): BaseResponse<Unit>

suspend fun getTimeTable(appointmentId: Long): BaseResponse<ResponseGetTimeTableDto>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package com.sopt.data.datasourceimpl
import com.sopt.data.datasource.AppointmentConfirmDataSource
import com.sopt.data.dto.BaseResponse
import com.sopt.data.dto.request.RequestPostTimeTableDto
import com.sopt.data.dto.response.ResponseGetConfirmedDto
import com.sopt.data.dto.response.ResponseGetOptionDetailDto
import com.sopt.data.dto.response.ResponseGetOptionsDto
import com.sopt.data.dto.response.ResponseGetTimeTableDto
import com.sopt.data.dto.response.ResponseLikesDto
Expand Down Expand Up @@ -33,12 +33,12 @@ class AppointmentConfirmDataSourceImpl @Inject constructor(
return appointmentConfirmApiService.getOptions(appointmentId)
}

override suspend fun getConfirmed(appointmentOptionId: Long): BaseResponse<ResponseGetConfirmedDto> {
return appointmentConfirmApiService.getConfirmed(appointmentOptionId)
override suspend fun getOptionDetail(appointmentOptionId: Long): BaseResponse<ResponseGetOptionDetailDto> {
return appointmentConfirmApiService.getOptionDetail(appointmentOptionId)
}

override suspend fun postConfirmed(appointmentOptionId: Long): BaseResponse<Unit> {
return appointmentConfirmApiService.postConfirmed(appointmentOptionId)
override suspend fun postOptionConfirm(appointmentOptionId: Long): BaseResponse<Unit> {
return appointmentConfirmApiService.postOptionConfirm(appointmentOptionId)
}

override suspend fun getTimeTable(appointmentId: Long): BaseResponse<ResponseGetTimeTableDto> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ import kotlinx.serialization.Serializable

@Serializable
data class RequestPostTimeTableDto(
@SerialName("availableTimes") val availableTimes: List<BaseTimeDto>
@SerialName("appointmentMemberAvailableTimes") val availableTimes: List<BaseTimeDto>
)
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,3 @@ data class FriendsDto(
@SerialName("count") val count: Int,
@SerialName("names") val names: List<String>
)


Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,4 @@ data class OngoingAppointmentDto(
@SerialName("appointmentName") val appointmentName: String,
@SerialName("availableGroupMemberCount") val availableGroupMemberCount: Long,
@SerialName("appointmentTime") val appointmentTime: BaseTimeDto
)
)
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,7 @@ import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class ResponseGetConfirmedDto(
@SerialName("isHost") val isHost: Boolean,
data class ResponseGetOptionDetailDto(
@SerialName("appointmentTime") val appointmentTime: BaseTimeDto,
@SerialName("category") val category: String,
@SerialName("appointmentName") val appointmentName: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,5 @@ import kotlinx.serialization.Serializable
@Serializable
data class BaseFriendsDto(
@SerialName("count") val count: Int,
@SerialName("names") val names: List<String>
@SerialName("names") val names: List<String?> = emptyList()
)
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
package com.sopt.data.mapper

import com.sopt.data.dto.response.ResponseGetConfirmedDto
import com.sopt.data.dto.response.ResponseGetOptionDetailDto
import com.sopt.domain.entity.AppointmentDetailEntity
import com.sopt.domain.entity.IdentityEntity

fun ResponseGetConfirmedDto.toAppointmentDetailEntity() = AppointmentDetailEntity(
isHost = isHost,
fun ResponseGetOptionDetailDto.toAppointmentDetailEntity() = AppointmentDetailEntity(
myIdentity = myInfo?.toIdentityEntity() ?: IdentityEntity("unavailable", -1, "나"),
date = appointmentTime.date,
startTime = appointmentTime.startTime,
endTime = appointmentTime.endTime,
category = category,
availableMembersCount = availableFriends?.count ?: 0,
availableMembers = availableFriends?.names ?: emptyList(),
availableMembers = availableFriends?.names?.filterNotNull() ?: emptyList(),
unavailableMembersCount = unavailableFriends?.count ?: 0,
unavailableMembers = unavailableFriends?.names ?: emptyList()
unavailableMembers = unavailableFriends?.names ?.filterNotNull() ?: emptyList()
)
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ fun ResponseGetOptionsOptionDto.toOptionEntity() = OptionEntity(
likes = likes,
liked = liked,
availableMemberCount = availableMemberCount,
availableMembers = availableFriends?.names ?: emptyList(),
availableMembers = availableFriends?.names?.filterNotNull() ?: emptyList(),
unavailableMemberCount = unavailableFriends?.count ?: 0,
unavailableMembers = unavailableFriends?.names ?: emptyList()
unavailableMembers = unavailableFriends?.names?.filterNotNull() ?: emptyList()
)

fun BaseMyInfoDto.toIdentityEntity() = IdentityEntity(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,16 @@ class AppointmentConfirmRepositoryImpl @Inject constructor(
}
}

override suspend fun getConfirmed(appointmentOptionId: Long): Result<AppointmentDetailEntity> {
override suspend fun getOptionDetail(appointmentOptionId: Long): Result<AppointmentDetailEntity> {
return runCatching {
appointmentConfirmDataSource.getConfirmed(appointmentOptionId).result?.toAppointmentDetailEntity()
appointmentConfirmDataSource.getOptionDetail(appointmentOptionId).result?.toAppointmentDetailEntity()
?: throw Exception("getConfirmed failed")
}
}

override suspend fun postConfirmed(appointmentOptionId: Long): Result<Unit> {
override suspend fun postOptionConfirm(appointmentOptionId: Long): Result<Unit> {
return runCatching {
appointmentConfirmDataSource.postConfirmed(appointmentOptionId)
appointmentConfirmDataSource.postOptionConfirm(appointmentOptionId)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ object ApiKeyStorage {
const val APPOINTMENT_OPTIONS = "appointment-options"
const val APPOINTMENT_OPTION_ID = "appointmentOptionId"
const val PROGRESS = "progress"
const val OPTIONS = "options"
const val RECOMMENDED_OPTIONS = "recommended-options"
const val LIKE = "like"
const val AUTH = "auth"
const val WITHDRAW = "withdraw"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ package com.sopt.data.service

import com.sopt.data.dto.BaseResponse
import com.sopt.data.dto.request.RequestPostTimeTableDto
import com.sopt.data.dto.response.ResponseGetConfirmedDto
import com.sopt.data.dto.response.ResponseGetOptionDetailDto
import com.sopt.data.dto.response.ResponseGetOptionsDto
import com.sopt.data.dto.response.ResponseGetTimeTableDto
import com.sopt.data.dto.response.ResponseLikesDto
Expand All @@ -13,9 +13,8 @@ import com.sopt.data.service.ApiKeyStorage.APPOINTMENT_MEMBERS
import com.sopt.data.service.ApiKeyStorage.APPOINTMENT_OPTIONS
import com.sopt.data.service.ApiKeyStorage.APPOINTMENT_OPTION_ID
import com.sopt.data.service.ApiKeyStorage.CONFIRM
import com.sopt.data.service.ApiKeyStorage.CONFIRMED
import com.sopt.data.service.ApiKeyStorage.LIKE
import com.sopt.data.service.ApiKeyStorage.OPTIONS
import com.sopt.data.service.ApiKeyStorage.RECOMMENDED_OPTIONS
import com.sopt.data.service.ApiKeyStorage.TIMETABLE
import com.sopt.data.service.ApiKeyStorage.V1
import retrofit2.http.Body
Expand All @@ -37,18 +36,18 @@ interface AppointmentConfirmApiService {
@Path(APPOINTMENT_OPTION_ID) appointmentOptionId: Long
): BaseResponse<ResponseLikesDto>

@GET("/$API/$V1/$APPOINTMENTS/{$APPOINTMENT_ID}/$OPTIONS")
@GET("/$API/$V1/$APPOINTMENTS/{$APPOINTMENT_ID}/$RECOMMENDED_OPTIONS")
suspend fun getOptions(
@Path(APPOINTMENT_ID) appointmentId: Long
): BaseResponse<ResponseGetOptionsDto>

@GET("/$API/$V1/$APPOINTMENT_OPTIONS/{$APPOINTMENT_OPTION_ID}/$CONFIRMED")
suspend fun getConfirmed(
@GET("/$API/$V1/$APPOINTMENT_OPTIONS/{$APPOINTMENT_OPTION_ID}")
suspend fun getOptionDetail(
@Path(APPOINTMENT_OPTION_ID) appointmentOptionId: Long
): BaseResponse<ResponseGetConfirmedDto>
): BaseResponse<ResponseGetOptionDetailDto>

@POST("/$API/$V1/$APPOINTMENT_OPTIONS/{$APPOINTMENT_OPTION_ID}/$CONFIRM")
suspend fun postConfirmed(
suspend fun postOptionConfirm(
@Path(APPOINTMENT_OPTION_ID) appointmentOptionId: Long
): BaseResponse<Unit>

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.sopt.domain.entity

data class AppointmentDetailEntity(
val isHost: Boolean,
val myIdentity: IdentityEntity,
val date: String,
val startTime: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ interface AppointmentConfirmRepository {
suspend fun postLike(appointmentId: Long, appointmentOptionId: Long): Result<Unit>
suspend fun deleteLike(appointmentId: Long, appointmentOptionId: Long): Result<Unit>
suspend fun getOptions(appointmentId: Long): Result<AppointmentEntity>
suspend fun getConfirmed(appointmentOptionId: Long): Result<AppointmentDetailEntity>
suspend fun postConfirmed(appointmentOptionId: Long): Result<Unit>
suspend fun getOptionDetail(appointmentOptionId: Long): Result<AppointmentDetailEntity>
suspend fun postOptionConfirm(appointmentOptionId: Long): Result<Unit>
suspend fun getTimeTable(appointmentId: Long): Result<TimeTableEntity>
suspend fun postTimeTable(appointmentId: Long, availableTimes: List<TimeEntity>): Result<Unit>
}
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ junit = { group = "junit", name = "junit", version.ref = "junit" } # JUnit 테
ui-test-manifest = { group = "androidx.compose.ui", name = "ui-test-manifest" } # Compose UI 테스트 매니페스트 라이브러리
ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4" } # Compose UI JUnit4 테스트 라이브러리
androidx-test-ext-junit = { group = "androidx.test.ext", name = "junit", version.ref = "androidx-test-ext-junit" } # AndroidX Test JUnit 확장 라이브러리
androidx-test-runner = { group = "andrfoidx.test", name = "runner", version.ref = "androidx-test-runner" } # AndroidX Test Runner 라이브러리
androidx-test-runner = { group = "androidx.test", name = "runner", version.ref = "androidx-test-runner" } # AndroidX Test Runner 라이브러리
androidx-test-core = { group = "androidx.test", name = "core", version.ref = "androidx-test" } # AndroidX Test Core 라이브러리
espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espresso-core" }
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
Expand Down
Loading