Skip to content

Commit 8a42576

Browse files
authored
refactor: 약속 리스트 화면 리팩터링 (#973)
* refactor: MeetingsBindingAdapter 함수 분리 * refactor: fab 클릭 액션을 바인딩 어댑터로 변경 * style: 코드 스타일 변경 * refactor: NavigateAction 통해서 액티비티 이동하도록 수정 * refactor: MeetingUiModel position 제거 * chore: meetingCatalog -> meeting 네이밍 변경 * style: ktLint 적용 * chore: Meeting -> DetailMeeting 네이밍 변경 * chore: MeetingCatalog -> Meeting 네이밍 변경 * feat: 설정 화면으로 이동 시 floating 버튼 닫도록 수정
1 parent 519f758 commit 8a42576

31 files changed

+258
-254
lines changed

android/app/src/main/java/com/mulberry/ody/data/remote/core/entity/meeting/mapper/MeetingResponseMapper.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
package com.mulberry.ody.data.remote.core.entity.meeting.mapper
22

3-
import com.mulberry.ody.data.remote.core.entity.meeting.response.MeetingResponse
3+
import com.mulberry.ody.data.remote.core.entity.meeting.response.DetailMeetingResponse
4+
import com.mulberry.ody.domain.model.DetailMeeting
45
import com.mulberry.ody.domain.model.Mate
5-
import com.mulberry.ody.domain.model.Meeting
66
import java.time.LocalDate
77
import java.time.LocalTime
88
import java.time.format.DateTimeFormatter
99

10-
fun MeetingResponse.toMeeting(): Meeting =
11-
Meeting(
10+
fun DetailMeetingResponse.toDetailMeeting(): DetailMeeting =
11+
DetailMeeting(
1212
id = id,
1313
name = name,
1414
date = date.toLocalDate(),
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
package com.mulberry.ody.data.remote.core.entity.meeting.mapper
22

3-
import com.mulberry.ody.data.remote.core.entity.meeting.response.MeetingCatalogResponse
4-
import com.mulberry.ody.data.remote.core.entity.meeting.response.MeetingCatalogsResponse
5-
import com.mulberry.ody.domain.model.MeetingCatalog
3+
import com.mulberry.ody.data.remote.core.entity.meeting.response.MeetingResponse
4+
import com.mulberry.ody.data.remote.core.entity.meeting.response.MeetingsResponse
5+
import com.mulberry.ody.domain.model.Meeting
66
import java.time.LocalDate
77
import java.time.LocalTime
88

9-
fun MeetingCatalogResponse.toMeetingCatalog(): MeetingCatalog {
9+
private fun MeetingResponse.toMeeting(): Meeting {
1010
val date = LocalDate.parse(date)
1111
val time = LocalTime.parse(time)
1212
val dateTime = date.atTime(time)
13-
return MeetingCatalog(
13+
return Meeting(
1414
durationMinutes = durationMinutes,
1515
id = id,
1616
mateCount = mateCount,
@@ -21,4 +21,4 @@ fun MeetingCatalogResponse.toMeetingCatalog(): MeetingCatalog {
2121
)
2222
}
2323

24-
fun MeetingCatalogsResponse.toMeetingCatalogs(): List<MeetingCatalog> = meetingCatalogs.map { it.toMeetingCatalog() }
24+
fun MeetingsResponse.toMeetings(): List<Meeting> = meetings.map { it.toMeeting() }

android/app/src/main/java/com/mulberry/ody/data/remote/core/entity/meeting/response/MeetingCatalogResponse.kt android/app/src/main/java/com/mulberry/ody/data/remote/core/entity/meeting/response/DetailMeetingResponse.kt

+17-7
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,31 @@ import com.squareup.moshi.Json
44
import com.squareup.moshi.JsonClass
55

66
@JsonClass(generateAdapter = true)
7-
data class MeetingCatalogResponse(
7+
data class DetailMeetingResponse(
88
@Json(name = "id")
99
val id: Long,
1010
@Json(name = "name")
1111
val name: String,
12-
@Json(name = "mateCount")
13-
val mateCount: Int,
1412
@Json(name = "date")
1513
val date: String,
1614
@Json(name = "time")
1715
val time: String,
18-
@Json(name = "targetAddress")
19-
val targetAddress: String,
2016
@Json(name = "originAddress")
2117
val originAddress: String,
22-
@Json(name = "durationMinutes")
23-
val durationMinutes: Long,
18+
@Json(name = "departureTime")
19+
val departureTime: String,
20+
@Json(name = "routeTime")
21+
val routeTime: Int,
22+
@Json(name = "targetAddress")
23+
val targetAddress: String,
24+
@Json(name = "targetLatitude")
25+
val targetLatitude: String,
26+
@Json(name = "targetLongitude")
27+
val targetLongitude: String,
28+
@Json(name = "mateCount")
29+
val mateCount: Int,
30+
@Json(name = "mates")
31+
val mates: List<MateResponse>,
32+
@Json(name = "inviteCode")
33+
val inviteCode: String,
2434
)

android/app/src/main/java/com/mulberry/ody/data/remote/core/entity/meeting/response/MeetingCatalogsResponse.kt

-10
This file was deleted.

android/app/src/main/java/com/mulberry/ody/data/remote/core/entity/meeting/response/MeetingResponse.kt

+6-16
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,16 @@ data class MeetingResponse(
99
val id: Long,
1010
@Json(name = "name")
1111
val name: String,
12+
@Json(name = "mateCount")
13+
val mateCount: Int,
1214
@Json(name = "date")
1315
val date: String,
1416
@Json(name = "time")
1517
val time: String,
16-
@Json(name = "originAddress")
17-
val originAddress: String,
18-
@Json(name = "departureTime")
19-
val departureTime: String,
20-
@Json(name = "routeTime")
21-
val routeTime: Int,
2218
@Json(name = "targetAddress")
2319
val targetAddress: String,
24-
@Json(name = "targetLatitude")
25-
val targetLatitude: String,
26-
@Json(name = "targetLongitude")
27-
val targetLongitude: String,
28-
@Json(name = "mateCount")
29-
val mateCount: Int,
30-
@Json(name = "mates")
31-
val mates: List<MateResponse>,
32-
@Json(name = "inviteCode")
33-
val inviteCode: String,
20+
@Json(name = "originAddress")
21+
val originAddress: String,
22+
@Json(name = "durationMinutes")
23+
val durationMinutes: Long,
3424
)

android/app/src/main/java/com/mulberry/ody/data/remote/core/repository/DefaultMeetingRepository.kt

+9-9
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@ package com.mulberry.ody.data.remote.core.repository
22

33
import com.mulberry.ody.data.local.db.MateEtaInfoDao
44
import com.mulberry.ody.data.local.entity.eta.MateEtaInfoEntity
5+
import com.mulberry.ody.data.remote.core.entity.meeting.mapper.toDetailMeeting
56
import com.mulberry.ody.data.remote.core.entity.meeting.mapper.toMateEtaInfo
6-
import com.mulberry.ody.data.remote.core.entity.meeting.mapper.toMeeting
7-
import com.mulberry.ody.data.remote.core.entity.meeting.mapper.toMeetingCatalogs
87
import com.mulberry.ody.data.remote.core.entity.meeting.mapper.toMeetingRequest
8+
import com.mulberry.ody.data.remote.core.entity.meeting.mapper.toMeetings
99
import com.mulberry.ody.data.remote.core.entity.meeting.mapper.toNudgeRequest
1010
import com.mulberry.ody.data.remote.core.entity.meeting.request.MatesEtaRequest
1111
import com.mulberry.ody.data.remote.core.service.MeetingService
1212
import com.mulberry.ody.domain.apiresult.ApiResult
1313
import com.mulberry.ody.domain.apiresult.map
14+
import com.mulberry.ody.domain.model.DetailMeeting
1415
import com.mulberry.ody.domain.model.MateEtaInfo
1516
import com.mulberry.ody.domain.model.Meeting
16-
import com.mulberry.ody.domain.model.MeetingCatalog
1717
import com.mulberry.ody.domain.model.MeetingCreationInfo
1818
import com.mulberry.ody.domain.model.Nudge
1919
import com.mulberry.ody.domain.repository.ody.MeetingRepository
@@ -29,14 +29,15 @@ class DefaultMeetingRepository
2929
return service.fetchInviteCodeValidity(inviteCode)
3030
}
3131

32-
override suspend fun fetchMeeting(meetingId: Long): ApiResult<Meeting> {
33-
return service.fetchMeeting(meetingId).map { it.toMeeting() }
32+
override suspend fun fetchMeeting(meetingId: Long): ApiResult<DetailMeeting> {
33+
return service.fetchMeeting(meetingId).map { it.toDetailMeeting() }
3434
}
3535

3636
override suspend fun postNudge(nudge: Nudge): ApiResult<Unit> = service.postNudge(nudge.toNudgeRequest())
3737

38-
override suspend fun postMeeting(meetingCreationInfo: MeetingCreationInfo): ApiResult<String> =
39-
service.postMeeting(meetingCreationInfo.toMeetingRequest()).map { it.inviteCode }
38+
override suspend fun postMeeting(meetingCreationInfo: MeetingCreationInfo): ApiResult<String> {
39+
return service.postMeeting(meetingCreationInfo.toMeetingRequest()).map { it.inviteCode }
40+
}
4041

4142
override suspend fun patchMatesEta(
4243
meetingId: Long,
@@ -60,8 +61,7 @@ class DefaultMeetingRepository
6061
return ApiResult.Success(Unit)
6162
}
6263

63-
override suspend fun fetchMeetingCatalogs(): ApiResult<List<MeetingCatalog>> =
64-
service.fetchMeetingCatalogs().map { it.toMeetingCatalogs() }
64+
override suspend fun fetchMeetings(): ApiResult<List<Meeting>> = service.fetchMeetings().map { it.toMeetings() }
6565

6666
override suspend fun exitMeeting(meetingId: Long): ApiResult<Unit> {
6767
return service.exitMeeting(meetingId)

android/app/src/main/java/com/mulberry/ody/data/remote/core/service/MeetingService.kt

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ package com.mulberry.ody.data.remote.core.service
33
import com.mulberry.ody.data.remote.core.entity.meeting.request.MatesEtaRequest
44
import com.mulberry.ody.data.remote.core.entity.meeting.request.MeetingRequest
55
import com.mulberry.ody.data.remote.core.entity.meeting.request.NudgeRequest
6+
import com.mulberry.ody.data.remote.core.entity.meeting.response.DetailMeetingResponse
67
import com.mulberry.ody.data.remote.core.entity.meeting.response.MatesEtaResponse
7-
import com.mulberry.ody.data.remote.core.entity.meeting.response.MeetingCatalogsResponse
88
import com.mulberry.ody.data.remote.core.entity.meeting.response.MeetingCreationResponse
9-
import com.mulberry.ody.data.remote.core.entity.meeting.response.MeetingResponse
9+
import com.mulberry.ody.data.remote.core.entity.meeting.response.MeetingsResponse
1010
import com.mulberry.ody.domain.apiresult.ApiResult
1111
import retrofit2.http.Body
1212
import retrofit2.http.DELETE
@@ -33,12 +33,12 @@ interface MeetingService {
3333
): ApiResult<MatesEtaResponse>
3434

3535
@GET("/v1/meetings/me")
36-
suspend fun fetchMeetingCatalogs(): ApiResult<MeetingCatalogsResponse>
36+
suspend fun fetchMeetings(): ApiResult<MeetingsResponse>
3737

3838
@GET("/v2/meetings/{meetingId}")
3939
suspend fun fetchMeeting(
4040
@Path(value = "meetingId") meetingId: Long,
41-
): ApiResult<MeetingResponse>
41+
): ApiResult<DetailMeetingResponse>
4242

4343
@POST("/v1/mates/nudge")
4444
suspend fun postNudge(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.mulberry.ody.domain.model
2+
3+
import java.time.LocalDate
4+
import java.time.LocalTime
5+
6+
data class DetailMeeting(
7+
val id: Long,
8+
val name: String,
9+
val date: LocalDate,
10+
val time: LocalTime,
11+
val destinationAddress: String,
12+
val departureAddress: String,
13+
val departureTime: LocalTime,
14+
val durationTime: Int,
15+
val mates: List<Mate>,
16+
val inviteCode: String,
17+
)
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
package com.mulberry.ody.domain.model
22

3-
import java.time.LocalDate
4-
import java.time.LocalTime
3+
import java.time.LocalDateTime
54

65
data class Meeting(
76
val id: Long,
87
val name: String,
9-
val date: LocalDate,
10-
val time: LocalTime,
11-
val destinationAddress: String,
12-
val departureAddress: String,
13-
val departureTime: LocalTime,
14-
val durationTime: Int,
15-
val mates: List<Mate>,
16-
val inviteCode: String,
8+
val mateCount: Int,
9+
val datetime: LocalDateTime,
10+
val targetAddress: String,
11+
val originAddress: String,
12+
val durationMinutes: Long,
1713
)

android/app/src/main/java/com/mulberry/ody/domain/model/MeetingCatalog.kt

-13
This file was deleted.

android/app/src/main/java/com/mulberry/ody/domain/repository/ody/MeetingRepository.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.mulberry.ody.domain.repository.ody
22

33
import com.mulberry.ody.domain.apiresult.ApiResult
4+
import com.mulberry.ody.domain.model.DetailMeeting
45
import com.mulberry.ody.domain.model.MateEtaInfo
56
import com.mulberry.ody.domain.model.Meeting
6-
import com.mulberry.ody.domain.model.MeetingCatalog
77
import com.mulberry.ody.domain.model.MeetingCreationInfo
88
import com.mulberry.ody.domain.model.Nudge
99

@@ -24,9 +24,9 @@ interface MeetingRepository {
2424
mateEtaInfo: MateEtaInfo,
2525
): ApiResult<Unit>
2626

27-
suspend fun fetchMeetingCatalogs(): ApiResult<List<MeetingCatalog>>
27+
suspend fun fetchMeetings(): ApiResult<List<Meeting>>
2828

29-
suspend fun fetchMeeting(meetingId: Long): ApiResult<Meeting>
29+
suspend fun fetchMeeting(meetingId: Long): ApiResult<DetailMeeting>
3030

3131
suspend fun postNudge(nudge: Nudge): ApiResult<Unit>
3232

0 commit comments

Comments
 (0)