Skip to content

Commit f374ad5

Browse files
committed
Implement my verification history horizontal pager.
1 parent acf19bf commit f374ad5

File tree

28 files changed

+514
-72
lines changed

28 files changed

+514
-72
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ proguard/
6464
# Log Files
6565

6666
# Android Studio
67-
/build
6867
/*/build/
6968
/*/local.properties
7069
/*/out
@@ -91,6 +90,7 @@ obj/
9190
/out/
9291

9392
# User-specific configurations
93+
.idea/
9494
.idea/caches/
9595
.idea/libraries/
9696
.idea/shelf/

build-logic/src/main/kotlin/missionmate.android.feature.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import com.goalpanzi.mission_mate.convention.configureHiltAndroid
2-
import com.goalpanzi.mission_mate.convention.libs
32

43
plugins {
54
id("missionmate.android.library")

core/data/mission/src/main/java/com/goalpanzi/mission_mate/core/mission/di/MissionDataModule.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,4 @@ internal abstract class MissionDataModule {
1313

1414
@Binds
1515
abstract fun bindMissionRepository(impl: MissionRepositoryImpl): MissionRepository
16-
1716
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.goalpanzi.mission_mate.core.mission.mapper
2+
3+
import com.goalpanzi.mission_mate.core.data.common.mapper.toModel
4+
import com.goalpanzi.mission_mate.core.domain.mission.model.VerificationInfoByBlockNumber
5+
import com.goalpanzi.mission_mate.core.network.model.response.VerificationInfoByBlockNumberResponse
6+
import java.time.LocalDateTime
7+
import java.time.format.DateTimeFormatter
8+
9+
fun VerificationInfoByBlockNumberResponse.toModel() = VerificationInfoByBlockNumber(
10+
nickname = nickname,
11+
characterType = characterType.toModel(),
12+
imageUrl = imageUrl,
13+
verifiedAt = LocalDateTime.parse(verifiedAt, DateTimeFormatter.ISO_DATE_TIME).toLocalDate()
14+
)

core/data/mission/src/main/java/com/goalpanzi/mission_mate/core/mission/repository/MissionRepositoryImpl.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import com.goalpanzi.mission_mate.core.domain.mission.model.MissionDetail
1010
import com.goalpanzi.mission_mate.core.domain.mission.model.MissionRank
1111
import com.goalpanzi.mission_mate.core.domain.mission.model.MissionVerification
1212
import com.goalpanzi.mission_mate.core.domain.mission.model.MissionVerifications
13+
import com.goalpanzi.mission_mate.core.domain.mission.model.VerificationInfoByBlockNumber
1314
import com.goalpanzi.mission_mate.core.domain.mission.repository.MissionRepository
1415
import com.goalpanzi.mission_mate.core.network.model.request.CompleteMissionRequest
1516
import com.goalpanzi.mission_mate.core.network.model.request.MissionVerificationsViewRequest
@@ -73,7 +74,7 @@ class MissionRepositoryImpl @Inject constructor(
7374
override suspend fun getMyMissionVerification(
7475
missionId: Long,
7576
number: Int
76-
): DomainResult<MissionVerification> = handleResult {
77+
): DomainResult<VerificationInfoByBlockNumber> = handleResult {
7778
missionService.getMyMissionVerification(missionId, number)
7879
}.convert {
7980
it.toModel()

core/data/user/src/main/java/com/goalpanzi/mission_mate/core/data/user/di/UserDataModule.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,5 +12,4 @@ import dagger.hilt.components.SingletonComponent
1212
internal abstract class UserDataModule {
1313
@Binds
1414
abstract fun bindUserRepository(impl: UserRepositoryImpl): UserRepository
15-
1615
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.goalpanzi.mission_mate.core.domain.mission.model
2+
3+
import com.goalpanzi.mission_mate.core.domain.common.model.user.CharacterType
4+
import java.time.LocalDate
5+
6+
data class VerificationInfoByBlockNumber(
7+
val nickname: String,
8+
val characterType: CharacterType,
9+
val imageUrl: String,
10+
val verifiedAt: LocalDate
11+
)

core/domain/mission/src/main/java/com/goalpanzi/mission_mate/core/domain/mission/repository/MissionRepository.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.goalpanzi.mission_mate.core.domain.mission.model.MissionDetail
66
import com.goalpanzi.mission_mate.core.domain.mission.model.MissionRank
77
import com.goalpanzi.mission_mate.core.domain.mission.model.MissionVerification
88
import com.goalpanzi.mission_mate.core.domain.mission.model.MissionVerifications
9+
import com.goalpanzi.mission_mate.core.domain.mission.model.VerificationInfoByBlockNumber
910
import kotlinx.coroutines.flow.Flow
1011
import java.io.File
1112

@@ -22,7 +23,7 @@ interface MissionRepository {
2223

2324
suspend fun verifyMission(missionId: Long, image: File) : DomainResult<Unit>
2425

25-
suspend fun getMyMissionVerification(missionId: Long, number : Int) : DomainResult<MissionVerification>
26+
suspend fun getMyMissionVerification(missionId: Long, number : Int) : DomainResult<VerificationInfoByBlockNumber>
2627

2728
suspend fun completeMission(missionId : Long) : DomainResult<Unit>
2829

core/domain/mission/src/main/java/com/goalpanzi/mission_mate/core/domain/mission/usecase/GetMyMissionVerificationUseCase.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.goalpanzi.mission_mate.core.domain.mission.usecase
22

33
import com.goalpanzi.mission_mate.core.domain.common.DomainResult
44
import com.goalpanzi.mission_mate.core.domain.mission.model.MissionVerification
5+
import com.goalpanzi.mission_mate.core.domain.mission.model.VerificationInfoByBlockNumber
56
import com.goalpanzi.mission_mate.core.domain.mission.repository.MissionRepository
67
import kotlinx.coroutines.flow.Flow
78
import kotlinx.coroutines.flow.flow
@@ -13,7 +14,7 @@ class GetMyMissionVerificationUseCase @Inject constructor(
1314
operator fun invoke(
1415
missionId: Long,
1516
number : Int
16-
): Flow<DomainResult<MissionVerification>> = flow {
17+
): Flow<DomainResult<VerificationInfoByBlockNumber>> = flow {
1718
emit(missionRepository.getMyMissionVerification(missionId,number))
1819
}
1920
}

core/navigation/src/main/java/com/goalpanzi/mission_mate/core/navigation/model/RouteModel.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,20 @@ sealed interface RouteModel {
4747
@Serializable
4848
data class UserStory(
4949
val userCharacter : String,
50-
val nickname : String,
51-
val verifiedAt : String,
52-
val imageUrl : String
5350
) : MissionRouteModel
5451

5552
@Serializable
5653
data class VerificationPreview(
5754
val missionId : Long,
5855
val imageUrl : String
5956
) : MissionRouteModel
57+
58+
@Serializable
59+
data class MyVerificationHistory(
60+
val missionId : Long,
61+
val number: Int,
62+
val count: Int,
63+
) : MissionRouteModel
6064
}
6165

6266
@Serializable

0 commit comments

Comments
 (0)