Skip to content

Commit

Permalink
Merge pull request #149 from Team-Sopetit/feature/#142-link-store-dep…
Browse files Browse the repository at this point in the history
…end-version

#142 [feat] 버전에 따른 다이얼로그
  • Loading branch information
stellar-halo authored Feb 1, 2024
2 parents 387815f + 0b2c9f6 commit a10e00f
Show file tree
Hide file tree
Showing 48 changed files with 662 additions and 57 deletions.
2 changes: 1 addition & 1 deletion app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ android {
minSdk = 28
targetSdk = 34
versionCode = 1
versionName = "1.0"
versionName = "1.0.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
buildConfigField("String", "BASE_URL", getApiKey("BASE_URL"))
buildConfigField("String", "KAKAO_NATIVE_APP_KEY", getApiKey("KAKAO_NATIVE_APP_KEY"))
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.sopetit.softie.data.entity.response

import com.sopetit.softie.domain.entity.UpdateVersion
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class VersionResponse(
@SerialName("iosVersion")
val iosVersion: UpdateVersionEntity,
@SerialName("androidVersion")
val androidVersion: UpdateVersionEntity,
@SerialName("notificationTitle")
val notificationTitle: String,
@SerialName("notificationContent")
val notificationContent: String
) {
@Serializable
data class UpdateVersionEntity(
@SerialName("appVersion")
val appVersion: String,
@SerialName("forceUpdateVersion")
val forceUpdateVersion: String
)

fun toUpdateVersion(): UpdateVersion = UpdateVersion(
storeAppVersion = this.androidVersion.appVersion,
forceAppVersion = this.androidVersion.forceUpdateVersion,
notificationTitle = this.notificationTitle,
notificationContent = this.notificationContent
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.sopetit.softie.data.repositoryImpl

import com.sopetit.softie.data.source.VersionDataSource
import com.sopetit.softie.domain.entity.UpdateVersion
import com.sopetit.softie.domain.repository.VersionRepository
import javax.inject.Inject

class VersionRepositoryImpl @Inject constructor(
private val versionDataSource: VersionDataSource
) : VersionRepository {
override suspend fun getUpdateVersion(): Result<UpdateVersion> =
runCatching { versionDataSource.getUpdateVersion() }.map { response ->
requireNotNull(response.data).toUpdateVersion()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.sopetit.softie.data.service

import com.sopetit.softie.data.entity.BaseResponse
import com.sopetit.softie.data.entity.response.VersionResponse
import retrofit2.http.GET

interface VersionService {
@GET("api/v1/versions/client/app")
suspend fun getUpdateVersion(): BaseResponse<VersionResponse>
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.sopetit.softie.data.source

import com.sopetit.softie.data.entity.BaseResponse
import com.sopetit.softie.data.entity.response.VersionResponse
import com.sopetit.softie.data.service.VersionService
import javax.inject.Inject

class VersionDataSource @Inject constructor(
private val versionService: VersionService
) {

suspend fun getUpdateVersion(): BaseResponse<VersionResponse> =
versionService.getUpdateVersion()
}
8 changes: 8 additions & 0 deletions app/src/main/java/com/sopetit/softie/di/RepositoryModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ import com.sopetit.softie.data.repositoryImpl.DollRepositoryImpl
import com.sopetit.softie.data.repositoryImpl.HappinessRoutineRepositoryImpl
import com.sopetit.softie.data.repositoryImpl.MemberHappinessRoutineRepositoryImpl
import com.sopetit.softie.data.repositoryImpl.MemberRepositoryImpl
import com.sopetit.softie.data.repositoryImpl.VersionRepositoryImpl
import com.sopetit.softie.domain.repository.AuthRepository
import com.sopetit.softie.domain.repository.DailyRoutineRepository
import com.sopetit.softie.domain.repository.DollRepository
import com.sopetit.softie.domain.repository.HappinessRoutineRepository
import com.sopetit.softie.domain.repository.MemberHappinessRoutineRepository
import com.sopetit.softie.domain.repository.MemberRepository
import com.sopetit.softie.domain.repository.VersionRepository
import dagger.Binds
import dagger.Module
import dagger.hilt.InstallIn
Expand Down Expand Up @@ -56,4 +58,10 @@ abstract class RepositoryModule {
abstract fun bindToAuthRepository(
authRepositoryImpl: AuthRepositoryImpl
): AuthRepository

@Binds
@Singleton
abstract fun bindToVersionRepository(
versionRepositoryImpl: VersionRepositoryImpl
): VersionRepository
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import com.sopetit.softie.data.service.DollService
import com.sopetit.softie.data.service.HappinessRoutineService
import com.sopetit.softie.data.service.MemberHappinessRoutineService
import com.sopetit.softie.data.service.MemberService
import com.sopetit.softie.data.service.VersionService
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
Expand Down Expand Up @@ -38,4 +39,8 @@ object RetrofitServiceModule {
@Provides
fun providesMemberHappinessRoutineService(@RetrofitModule.SoftieType retrofit: Retrofit): MemberHappinessRoutineService =
retrofit.create(MemberHappinessRoutineService::class.java)

@Provides
fun providesVersionService(@VersionModule.VersionType retrofit: Retrofit): VersionService =
retrofit.create(VersionService::class.java)
}
69 changes: 69 additions & 0 deletions app/src/main/java/com/sopetit/softie/di/VersionModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package com.sopetit.softie.di

import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import com.sopetit.softie.BuildConfig
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
import kotlinx.serialization.json.Json
import okhttp3.Interceptor
import okhttp3.MediaType.Companion.toMediaType
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import retrofit2.Retrofit
import java.util.concurrent.TimeUnit
import javax.inject.Qualifier
import javax.inject.Singleton

@Module
@InstallIn(SingletonComponent::class)
object VersionModule {
private val json = Json { ignoreUnknownKeys = true }
private const val CONTENT_TYPE = "Content-Type"
private const val APPLICATION_JSON = "application/json"

@Qualifier
@Retention(AnnotationRetention.BINARY)
annotation class VersionType

@Provides
@Singleton
@VersionType
fun providesVersionInterceptor(): Interceptor = Interceptor { chain ->
val request = chain.request()
var response = chain.proceed(
request
.newBuilder()
.addHeader(CONTENT_TYPE, APPLICATION_JSON)
.build()
)
response
}

@Provides
@Singleton
@VersionType
fun providesVersionOkHttpClient(@VersionType interceptor: Interceptor): OkHttpClient =
OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.addInterceptor(interceptor)
.addInterceptor(
HttpLoggingInterceptor().apply {
level =
if (BuildConfig.DEBUG) HttpLoggingInterceptor.Level.BODY else HttpLoggingInterceptor.Level.NONE
}
).build()

@Provides
@Singleton
@VersionType
fun providesVersionRetrofit(@VersionType okHttpClient: OkHttpClient): Retrofit =
Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.client(okHttpClient)
.addConverterFactory(json.asConverterFactory(APPLICATION_JSON.toMediaType()))
.build()
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.sopetit.softie.domain.entity

enum class UpdateType {
FORCE, RECOMMEND, NONE
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.sopetit.softie.domain.entity

data class UpdateVersion(
val storeAppVersion: String,
val forceAppVersion: String,
val notificationTitle: String,
val notificationContent: String
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.sopetit.softie.domain.repository

import com.sopetit.softie.domain.entity.UpdateVersion

interface VersionRepository {

suspend fun getUpdateVersion(): Result<UpdateVersion>
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.auth

import com.sopetit.softie.domain.repository.AuthRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.dailyroutine

import com.sopetit.softie.domain.repository.DailyRoutineRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.local

import com.sopetit.softie.domain.repository.AuthRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.local

import com.sopetit.softie.domain.repository.AuthRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.local

import com.sopetit.softie.domain.repository.AuthRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.local

import com.sopetit.softie.domain.repository.AuthRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase.member
package com.sopetit.softie.domain.usecase.local

import com.sopetit.softie.domain.repository.AuthRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.member

import com.sopetit.softie.domain.repository.MemberRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.member

import com.sopetit.softie.domain.repository.MemberRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.memberdailyroutine

import com.sopetit.softie.domain.repository.DailyRoutineRepository
import javax.inject.Inject

class DeleteDailyRoutineUseCase @Inject constructor(
private val deleteDailyRoutine: DailyRoutineRepository
private val dailyRoutineRepository: DailyRoutineRepository
) {
suspend operator fun invoke(routineIdList: List<Int>) =
deleteDailyRoutine.deleteDailyRoutine(routineIdList)
dailyRoutineRepository.deleteDailyRoutine(routineIdList)
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.memberdailyroutine

import com.sopetit.softie.domain.repository.DailyRoutineRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.memberdailyroutine

import com.sopetit.softie.domain.repository.DailyRoutineRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.memberdailyroutine

import com.sopetit.softie.data.entity.request.AddDailyRoutineRequest
import com.sopetit.softie.domain.repository.DailyRoutineRepository
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase
package com.sopetit.softie.domain.usecase.memberhappinessroutine

import com.sopetit.softie.domain.repository.MemberHappinessRoutineRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase.happyroutine
package com.sopetit.softie.domain.usecase.memberhappinessroutine

import com.sopetit.softie.domain.repository.MemberHappinessRoutineRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase.happyroutine
package com.sopetit.softie.domain.usecase.memberhappinessroutine

import com.sopetit.softie.domain.repository.MemberHappinessRoutineRepository
import javax.inject.Inject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.sopetit.softie.domain.usecase.happyroutine
package com.sopetit.softie.domain.usecase.memberhappinessroutine

import com.sopetit.softie.data.entity.request.PostMemberHappyRoutineRequest
import com.sopetit.softie.domain.repository.MemberHappinessRoutineRepository
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.sopetit.softie.domain.usecase.version

import com.sopetit.softie.domain.repository.VersionRepository
import javax.inject.Inject

class GetUpdateVersionUseCase @Inject constructor(
private val versionRepository: VersionRepository
) {
suspend operator fun invoke() =
versionRepository.getUpdateVersion()
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.sopetit.softie.domain.entity.DailyRoutine
import com.sopetit.softie.domain.entity.UserDailyRoutine
import com.sopetit.softie.domain.usecase.DeleteDailyRoutineUseCase
import com.sopetit.softie.domain.usecase.GetDailyRoutineUseCase
import com.sopetit.softie.domain.usecase.PatchAchieveDailyUseCase
import com.sopetit.softie.domain.usecase.memberdailyroutine.DeleteDailyRoutineUseCase
import com.sopetit.softie.domain.usecase.memberdailyroutine.GetDailyRoutineUseCase
import com.sopetit.softie.domain.usecase.memberdailyroutine.PatchAchieveDailyUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.sopetit.softie.ui.dailyroutine.complete

import androidx.lifecycle.ViewModel
import com.sopetit.softie.domain.usecase.GetBearTypeUseCase
import com.sopetit.softie.domain.usecase.local.GetBearTypeUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import androidx.lifecycle.viewModelScope
import com.sopetit.softie.data.entity.request.AddDailyRoutineRequest
import com.sopetit.softie.domain.entity.DailyCard
import com.sopetit.softie.domain.entity.Theme
import com.sopetit.softie.domain.usecase.GetRoutineDailyThemeListUseCase
import com.sopetit.softie.domain.usecase.PostAddDailyRoutineUseCase
import com.sopetit.softie.domain.usecase.dailyroutine.GetRoutineDailyThemeListUseCase
import com.sopetit.softie.domain.usecase.dailyroutine.GetThemeListUseCase
import com.sopetit.softie.domain.usecase.memberdailyroutine.PostAddDailyRoutineUseCase
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import timber.log.Timber
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.sopetit.softie.domain.entity.HappyProgress
import com.sopetit.softie.domain.usecase.DeleteMemberHappyRoutineUseCase
import com.sopetit.softie.domain.usecase.GetBearTypeUseCase
import com.sopetit.softie.domain.usecase.doll.GetDollUseCase
import com.sopetit.softie.domain.usecase.happyroutine.GetHappyProgressUseCase
import com.sopetit.softie.domain.usecase.happyroutine.PatchMemberHappinessAchieveUseCase
import com.sopetit.softie.domain.usecase.local.GetBearTypeUseCase
import com.sopetit.softie.domain.usecase.memberhappinessroutine.DeleteMemberHappyRoutineUseCase
import com.sopetit.softie.domain.usecase.memberhappinessroutine.GetHappyProgressUseCase
import com.sopetit.softie.domain.usecase.memberhappinessroutine.PatchMemberHappinessAchieveUseCase
import com.sopetit.softie.ui.onboarding.OnboardingViewModel
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
Expand Down
Loading

0 comments on commit a10e00f

Please sign in to comment.