Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#142 [feat] 버전에 따른 다이얼로그 #149

Merged
merged 11 commits into from
Feb 1, 2024
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
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
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

모듈까지 새로 만드느라 고생하셧슴다,!

@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
Loading