Skip to content

Commit 2b5155e

Browse files
committed
Feat: 강제 업데이트 api 연동
1 parent 4ab63a0 commit 2b5155e

File tree

8 files changed

+93
-0
lines changed

8 files changed

+93
-0
lines changed

app/src/main/java/com/threegap/bitnagil/di/data/DataSourceModule.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import com.threegap.bitnagil.data.routine.datasource.RoutineRemoteDataSource
1414
import com.threegap.bitnagil.data.routine.datasourceImpl.RoutineRemoteDataSourceImpl
1515
import com.threegap.bitnagil.data.user.datasource.UserDataSource
1616
import com.threegap.bitnagil.data.user.datasourceImpl.UserDataSourceImpl
17+
import com.threegap.bitnagil.data.version.datasource.VersionDataSource
18+
import com.threegap.bitnagil.data.version.datasourceImpl.VersionDataSourceImpl
1719
import com.threegap.bitnagil.data.writeroutine.datasource.WriteRoutineDataSource
1820
import com.threegap.bitnagil.data.writeroutine.datasourceImpl.WriteRoutineDataSourceImpl
1921
import dagger.Binds
@@ -57,4 +59,8 @@ abstract class DataSourceModule {
5759
@Binds
5860
@Singleton
5961
abstract fun bindRecommendRoutineDataSource(recommendRoutineDataSourceImpl: RecommendRoutineDataSourceImpl): RecommendRoutineDataSource
62+
63+
@Binds
64+
@Singleton
65+
abstract fun bindVersionDataSource(versionDataSourceImpl: VersionDataSourceImpl): VersionDataSource
6066
}

app/src/main/java/com/threegap/bitnagil/di/data/RepositoryModule.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@ import com.threegap.bitnagil.data.onboarding.repositoryImpl.OnBoardingRepository
66
import com.threegap.bitnagil.data.recommendroutine.repositoryImpl.RecommendRoutineRepositoryImpl
77
import com.threegap.bitnagil.data.routine.repositoryImpl.RoutineRepositoryImpl
88
import com.threegap.bitnagil.data.user.repositoryImpl.UserRepositoryImpl
9+
import com.threegap.bitnagil.data.version.repositoryImpl.VersionRepositoryImpl
910
import com.threegap.bitnagil.data.writeroutine.repositoryImpl.WriteRoutineRepositoryImpl
1011
import com.threegap.bitnagil.domain.auth.repository.AuthRepository
1112
import com.threegap.bitnagil.domain.emotion.repository.EmotionRepository
1213
import com.threegap.bitnagil.domain.onboarding.repository.OnBoardingRepository
1314
import com.threegap.bitnagil.domain.recommendroutine.repository.RecommendRoutineRepository
1415
import com.threegap.bitnagil.domain.routine.repository.RoutineRepository
1516
import com.threegap.bitnagil.domain.user.repository.UserRepository
17+
import com.threegap.bitnagil.domain.version.repository.VersionRepository
1618
import com.threegap.bitnagil.domain.writeroutine.repository.WriteRoutineRepository
1719
import dagger.Binds
1820
import dagger.Module
@@ -51,4 +53,8 @@ abstract class RepositoryModule {
5153
@Binds
5254
@Singleton
5355
abstract fun bindRecommendRoutineRepository(recommendRoutineRepositoryImpl: RecommendRoutineRepositoryImpl): RecommendRoutineRepository
56+
57+
@Binds
58+
@Singleton
59+
abstract fun bindVersionRepository(versionRepositoryImpl: VersionRepositoryImpl): VersionRepository
5460
}

app/src/main/java/com/threegap/bitnagil/di/data/ServiceModule.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.threegap.bitnagil.data.onboarding.service.OnBoardingService
66
import com.threegap.bitnagil.data.recommendroutine.service.RecommendRoutineService
77
import com.threegap.bitnagil.data.routine.service.RoutineService
88
import com.threegap.bitnagil.data.user.service.UserService
9+
import com.threegap.bitnagil.data.version.service.VersionService
910
import com.threegap.bitnagil.data.writeroutine.service.WriteRoutineService
1011
import com.threegap.bitnagil.di.core.Auth
1112
import com.threegap.bitnagil.di.core.NoneAuth
@@ -60,4 +61,9 @@ object ServiceModule {
6061
@Singleton
6162
fun provideRecommendRoutineService(@Auth retrofit: Retrofit): RecommendRoutineService =
6263
retrofit.create(RecommendRoutineService::class.java)
64+
65+
@Provides
66+
@Singleton
67+
fun provideVersionService(@NoneAuth retrofit: Retrofit): VersionService =
68+
retrofit.create(VersionService::class.java)
6369
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.threegap.bitnagil.data.version.datasource
2+
3+
import com.threegap.bitnagil.data.version.model.response.VersionCheckResponseDto
4+
5+
interface VersionDataSource {
6+
suspend fun checkVersion(): Result<VersionCheckResponseDto>
7+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.threegap.bitnagil.data.version.datasourceImpl
2+
3+
import com.threegap.bitnagil.data.BuildConfig
4+
import com.threegap.bitnagil.data.common.safeApiCall
5+
import com.threegap.bitnagil.data.version.datasource.VersionDataSource
6+
import com.threegap.bitnagil.data.version.model.response.VersionCheckResponseDto
7+
import com.threegap.bitnagil.data.version.service.VersionService
8+
import javax.inject.Inject
9+
10+
class VersionDataSourceImpl @Inject constructor(
11+
private val versionService: VersionService,
12+
) : VersionDataSource {
13+
14+
override suspend fun checkVersion(): Result<VersionCheckResponseDto> =
15+
safeApiCall {
16+
versionService.checkVersion(
17+
majorVersion = BuildConfig.VERSION_MAJOR,
18+
minorVersion = BuildConfig.VERSION_MINOR,
19+
patchVersion = BuildConfig.VERSION_PATCH,
20+
)
21+
}
22+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.threegap.bitnagil.data.version.model.response
2+
3+
import com.threegap.bitnagil.domain.version.model.UpdateRequirement
4+
import kotlinx.serialization.SerialName
5+
import kotlinx.serialization.Serializable
6+
7+
@Serializable
8+
data class VersionCheckResponseDto(
9+
@SerialName("forceUpdateYn")
10+
val forceUpdateYn: Boolean,
11+
)
12+
13+
fun VersionCheckResponseDto.toDomain() =
14+
UpdateRequirement(
15+
isForced = this.forceUpdateYn,
16+
)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.threegap.bitnagil.data.version.repositoryImpl
2+
3+
import com.threegap.bitnagil.data.version.datasource.VersionDataSource
4+
import com.threegap.bitnagil.data.version.model.response.toDomain
5+
import com.threegap.bitnagil.domain.version.model.UpdateRequirement
6+
import com.threegap.bitnagil.domain.version.repository.VersionRepository
7+
import javax.inject.Inject
8+
9+
class VersionRepositoryImpl @Inject constructor(
10+
private val versionDataSource: VersionDataSource,
11+
) : VersionRepository {
12+
13+
override suspend fun checkVersion(): Result<UpdateRequirement> =
14+
versionDataSource.checkVersion().map { it.toDomain() }
15+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package com.threegap.bitnagil.data.version.service
2+
3+
import com.threegap.bitnagil.data.version.model.response.VersionCheckResponseDto
4+
import com.threegap.bitnagil.network.model.BaseResponse
5+
import retrofit2.http.GET
6+
import retrofit2.http.Query
7+
8+
interface VersionService {
9+
@GET("/api/v1/version/android/check")
10+
suspend fun checkVersion(
11+
@Query("major") majorVersion: Int,
12+
@Query("minor") minorVersion: Int,
13+
@Query("patch") patchVersion: Int,
14+
): BaseResponse<VersionCheckResponseDto>
15+
}

0 commit comments

Comments
 (0)