From 153793088f87c6e175c6f59274766e65487bc876 Mon Sep 17 00:00:00 2001 From: river99 Date: Fri, 3 Nov 2023 05:03:28 +0900 Subject: [PATCH 01/32] =?UTF-8?q?#273[feat]force=5Fupdate=20xml=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20string=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/res/layout/activity_force_update.xml | 73 +++++++++++++++++++ app/src/main/res/values/strings.xml | 5 ++ 2 files changed, 78 insertions(+) create mode 100644 app/src/main/res/layout/activity_force_update.xml diff --git a/app/src/main/res/layout/activity_force_update.xml b/app/src/main/res/layout/activity_force_update.xml new file mode 100644 index 00000000..77bf0537 --- /dev/null +++ b/app/src/main/res/layout/activity_force_update.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4eaa93b8..0b11c4c4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -206,4 +206,9 @@ 한 줄 소개는 40자까지 쓸 수 있어요! 차단된 사용자가 없어요. yyyyMMdd_HHmmss + + + 앗! 피카북이 달라졌어요 + 어느 기능이 추가되었는지 알아볼까요? + 업데이트 하러 가기 \ No newline at end of file From 3cbbb2c5edbac68d5141150ea5056479198bfa28 Mon Sep 17 00:00:00 2001 From: river99 Date: Fri, 3 Nov 2023 05:04:13 +0900 Subject: [PATCH 02/32] =?UTF-8?q?#273[feat]=20Version,=20VersionResponse?= =?UTF-8?q?=20data=20class=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/entity/response/VersionResponse.kt | 21 +++++++++++++++++++ .../peekabookaos/domain/entity/Version.kt | 8 +++++++ 2 files changed, 29 insertions(+) create mode 100644 app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt create mode 100644 app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt diff --git a/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt b/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt new file mode 100644 index 00000000..f7d6da67 --- /dev/null +++ b/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt @@ -0,0 +1,21 @@ +package com.sopt.peekabookaos.data.entity.response + +import com.sopt.peekabookaos.domain.entity.Version +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class VersionResponse ( + val imageUrl : String, + val iosForceVersion : String, + val androidForceVersion : String, + @SerialName("text") + val versionText : String + ){ + fun toVersion(): Version = Version( + imageUrl = this.imageUrl, + iosForceVersion = this.iosForceVersion, + androidForceVersion = this.androidForceVersion, + versionText = this.versionText + ) +} \ No newline at end of file diff --git a/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt b/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt new file mode 100644 index 00000000..71a39040 --- /dev/null +++ b/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt @@ -0,0 +1,8 @@ +package com.sopt.peekabookaos.domain.entity + +data class Version( + val imageUrl: String = "", + val iosForceVersion: String = "", + val androidForceVersion: String = "", + val versionText: String = "" +) \ No newline at end of file From 9b119caf3b930ba95a2dce7b99e7f018e3ef3a14 Mon Sep 17 00:00:00 2001 From: river99 Date: Fri, 3 Nov 2023 05:05:18 +0900 Subject: [PATCH 03/32] =?UTF-8?q?#273[feat]=20ForceUpdateActivity=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EB=B2=84=ED=8A=BC=20=ED=81=B4?= =?UTF-8?q?=EB=A6=AD=EC=8B=9C,=20=ED=94=8C=EB=A0=88=EC=9D=B4=20=EC=8A=A4?= =?UTF-8?q?=ED=86=A0=EC=96=B4=20=ED=99=94=EB=A9=B4=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=84=98=EC=96=B4=EA=B0=80=EA=B2=8C=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../forceUpdate/ForceUpdateActivity.kt | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt new file mode 100644 index 00000000..1054524b --- /dev/null +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt @@ -0,0 +1,24 @@ +package com.sopt.peekabookaos.presentation.forceUpdate + +import android.content.Intent +import android.net.Uri +import android.os.Bundle +import com.sopt.peekabookaos.R +import com.sopt.peekabookaos.databinding.ActivityForceUpdateBinding +import com.sopt.peekabookaos.util.binding.BindingActivity + +class ForceUpdateActivity : + BindingActivity(R.layout.activity_force_update) { + lateinit var intentToPlayStore: Intent + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding.btnForceUpdate.setOnClickListener { + intentToPlayStore = Intent( + Intent.ACTION_VIEW, + Uri.parse("https://play.google.com/store/apps/details?id=com.sopt.peekabookaos&hl=ko-KR") + ) + startActivity(intentToPlayStore) + } + } +} \ No newline at end of file From 4cb7c5fd55681ba43cb75a1d45d1393be254a97c Mon Sep 17 00:00:00 2001 From: river99 Date: Fri, 3 Nov 2023 05:05:37 +0900 Subject: [PATCH 04/32] =?UTF-8?q?#273[feat]=20ForceUpdateActivity=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ce08a10e..552b58c7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -28,6 +28,9 @@ android:theme="@style/Theme.PeekabookAOS" android:usesCleartextTraffic="true" tools:targetApi="31"> + Date: Fri, 3 Nov 2023 05:06:25 +0900 Subject: [PATCH 05/32] =?UTF-8?q?#273[feat]=20ForceUpdate=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20=EC=97=B0=EA=B2=B0=20=ED=8C=8C=EC=9D=BC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80(DataSource,=20Repository,=20RepositoryImpl,=20Service?= =?UTF-8?q?,=20UseCase)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/repository/ForceUpdateRepositoryImpl.kt | 15 +++++++++++++++ .../data/service/ForceUpdateService.kt | 10 ++++++++++ .../data/source/remote/ForceUpdateDataSource.kt | 13 +++++++++++++ .../domain/repository/ForceUpdateRepository.kt | 7 +++++++ .../domain/usecase/GetVersionUseCase.kt | 10 ++++++++++ 5 files changed, 55 insertions(+) create mode 100644 app/src/main/java/com/sopt/peekabookaos/data/repository/ForceUpdateRepositoryImpl.kt create mode 100644 app/src/main/java/com/sopt/peekabookaos/data/service/ForceUpdateService.kt create mode 100644 app/src/main/java/com/sopt/peekabookaos/data/source/remote/ForceUpdateDataSource.kt create mode 100644 app/src/main/java/com/sopt/peekabookaos/domain/repository/ForceUpdateRepository.kt create mode 100644 app/src/main/java/com/sopt/peekabookaos/domain/usecase/GetVersionUseCase.kt diff --git a/app/src/main/java/com/sopt/peekabookaos/data/repository/ForceUpdateRepositoryImpl.kt b/app/src/main/java/com/sopt/peekabookaos/data/repository/ForceUpdateRepositoryImpl.kt new file mode 100644 index 00000000..3baaa8c4 --- /dev/null +++ b/app/src/main/java/com/sopt/peekabookaos/data/repository/ForceUpdateRepositoryImpl.kt @@ -0,0 +1,15 @@ +package com.sopt.peekabookaos.data.repository + +import com.sopt.peekabookaos.data.source.remote.ForceUpdateDataSource +import com.sopt.peekabookaos.domain.entity.Version +import com.sopt.peekabookaos.domain.repository.ForceUpdateRepository +import javax.inject.Inject + +class ForceUpdateRepositoryImpl @Inject constructor( + private val forceUpdateDataSource: ForceUpdateDataSource +) : ForceUpdateRepository { + override suspend fun getVersion(): Result = + kotlin.runCatching { forceUpdateDataSource.getVersion() }.map { response -> + requireNotNull(response.data).toVersion() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/sopt/peekabookaos/data/service/ForceUpdateService.kt b/app/src/main/java/com/sopt/peekabookaos/data/service/ForceUpdateService.kt new file mode 100644 index 00000000..36ae5215 --- /dev/null +++ b/app/src/main/java/com/sopt/peekabookaos/data/service/ForceUpdateService.kt @@ -0,0 +1,10 @@ +package com.sopt.peekabookaos.data.service + +import com.sopt.peekabookaos.data.entity.BaseResponse +import com.sopt.peekabookaos.data.entity.response.VersionResponse +import retrofit2.http.GET + +interface ForceUpdateService { + @GET("user/v1/version") + suspend fun getVersion() : BaseResponse +} \ No newline at end of file diff --git a/app/src/main/java/com/sopt/peekabookaos/data/source/remote/ForceUpdateDataSource.kt b/app/src/main/java/com/sopt/peekabookaos/data/source/remote/ForceUpdateDataSource.kt new file mode 100644 index 00000000..8499332a --- /dev/null +++ b/app/src/main/java/com/sopt/peekabookaos/data/source/remote/ForceUpdateDataSource.kt @@ -0,0 +1,13 @@ +package com.sopt.peekabookaos.data.source.remote + +import com.sopt.peekabookaos.data.entity.BaseResponse +import com.sopt.peekabookaos.data.entity.response.VersionResponse +import com.sopt.peekabookaos.data.service.ForceUpdateService +import javax.inject.Inject + +class ForceUpdateDataSource @Inject constructor( + private val forceUpdateService: ForceUpdateService +) { + suspend fun getVersion(): BaseResponse = + forceUpdateService.getVersion() +} \ No newline at end of file diff --git a/app/src/main/java/com/sopt/peekabookaos/domain/repository/ForceUpdateRepository.kt b/app/src/main/java/com/sopt/peekabookaos/domain/repository/ForceUpdateRepository.kt new file mode 100644 index 00000000..7c03970e --- /dev/null +++ b/app/src/main/java/com/sopt/peekabookaos/domain/repository/ForceUpdateRepository.kt @@ -0,0 +1,7 @@ +package com.sopt.peekabookaos.domain.repository + +import com.sopt.peekabookaos.domain.entity.Version + +interface ForceUpdateRepository { + suspend fun getVersion(): Result +} \ No newline at end of file diff --git a/app/src/main/java/com/sopt/peekabookaos/domain/usecase/GetVersionUseCase.kt b/app/src/main/java/com/sopt/peekabookaos/domain/usecase/GetVersionUseCase.kt new file mode 100644 index 00000000..cd7c146c --- /dev/null +++ b/app/src/main/java/com/sopt/peekabookaos/domain/usecase/GetVersionUseCase.kt @@ -0,0 +1,10 @@ +package com.sopt.peekabookaos.domain.usecase + +import com.sopt.peekabookaos.domain.repository.ForceUpdateRepository +import javax.inject.Inject + +class GetVersionUseCase @Inject constructor( + private val forceUpdateRepository: ForceUpdateRepository +) { + suspend operator fun invoke() = forceUpdateRepository.getVersion() +} \ No newline at end of file From 73fe39be5d2096667e790c1b0351919a0fd691ed Mon Sep 17 00:00:00 2001 From: river99 Date: Fri, 3 Nov 2023 05:07:02 +0900 Subject: [PATCH 06/32] =?UTF-8?q?#273[feat]=20ForceUpdate=20Repo=20?= =?UTF-8?q?=EB=AA=A8=EB=93=88=EC=97=90=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sopt/peekabookaos/di/RepositoryModule.kt | 8 ++++++++ .../com/sopt/peekabookaos/di/RetrofitServiceModule.kt | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/app/src/main/java/com/sopt/peekabookaos/di/RepositoryModule.kt b/app/src/main/java/com/sopt/peekabookaos/di/RepositoryModule.kt index 78a3a0bc..0b8c200f 100644 --- a/app/src/main/java/com/sopt/peekabookaos/di/RepositoryModule.kt +++ b/app/src/main/java/com/sopt/peekabookaos/di/RepositoryModule.kt @@ -4,6 +4,7 @@ import com.sopt.peekabookaos.data.repository.AuthRepositoryImpl import com.sopt.peekabookaos.data.repository.BlockRepositoryImpl import com.sopt.peekabookaos.data.repository.BookRepositoryImpl import com.sopt.peekabookaos.data.repository.DetailRepositoryImpl +import com.sopt.peekabookaos.data.repository.ForceUpdateRepositoryImpl import com.sopt.peekabookaos.data.repository.MyPageRepositoryImpl import com.sopt.peekabookaos.data.repository.NaverRepositoryImpl import com.sopt.peekabookaos.data.repository.NotificationRepositoryImpl @@ -17,6 +18,7 @@ import com.sopt.peekabookaos.domain.repository.AuthRepository import com.sopt.peekabookaos.domain.repository.BlockRepository import com.sopt.peekabookaos.domain.repository.BookRepository import com.sopt.peekabookaos.domain.repository.DetailRepository +import com.sopt.peekabookaos.domain.repository.ForceUpdateRepository import com.sopt.peekabookaos.domain.repository.MyPageRepository import com.sopt.peekabookaos.domain.repository.NaverRepository import com.sopt.peekabookaos.domain.repository.NotificationRepository @@ -112,4 +114,10 @@ abstract class RepositoryModule { abstract fun bindToMyPageRepository( myPageRepositoryImpl: MyPageRepositoryImpl ): MyPageRepository + + @Binds + @Singleton + abstract fun bindToForceUpdateRepository( + forceUpdateRepositoryImpl: ForceUpdateRepositoryImpl + ): ForceUpdateRepository } diff --git a/app/src/main/java/com/sopt/peekabookaos/di/RetrofitServiceModule.kt b/app/src/main/java/com/sopt/peekabookaos/di/RetrofitServiceModule.kt index e3a5342a..22f4b3fc 100644 --- a/app/src/main/java/com/sopt/peekabookaos/di/RetrofitServiceModule.kt +++ b/app/src/main/java/com/sopt/peekabookaos/di/RetrofitServiceModule.kt @@ -4,6 +4,7 @@ import com.sopt.peekabookaos.data.service.AuthService import com.sopt.peekabookaos.data.service.BlockService import com.sopt.peekabookaos.data.service.BookService import com.sopt.peekabookaos.data.service.DetailService +import com.sopt.peekabookaos.data.service.ForceUpdateService import com.sopt.peekabookaos.data.service.MyPageService import com.sopt.peekabookaos.data.service.NaverService import com.sopt.peekabookaos.data.service.NotificationService @@ -21,6 +22,7 @@ import dagger.Provides import dagger.hilt.InstallIn import dagger.hilt.components.SingletonComponent import retrofit2.Retrofit +import retrofit2.create @Module @InstallIn(SingletonComponent::class) @@ -76,4 +78,8 @@ object RetrofitServiceModule { @Provides fun providesReportService(@PeekaType retrofit: Retrofit): ReportService = retrofit.create(ReportService::class.java) + + @Provides + fun providesForceUpdateService(@PeekaType retrofit: Retrofit): ForceUpdateService = + retrofit.create(ForceUpdateService::class.java) } From 78256da325e25c5a8a33d6277f21c58b7b325b25 Mon Sep 17 00:00:00 2001 From: river99 Date: Fri, 3 Nov 2023 05:08:39 +0900 Subject: [PATCH 07/32] =?UTF-8?q?#273[feat]=20SplashActivity=EC=97=90=20da?= =?UTF-8?q?taObserver=EB=A1=9C=20=EC=84=9C=EB=B2=84=20=ED=86=B5=EC=8B=A0?= =?UTF-8?q?=20=EC=84=B1=EA=B3=B5=20=EC=8B=9C,=20=ED=98=84=EC=9E=AC=20appNa?= =?UTF-8?q?me=EA=B3=BC=20=EB=B9=84=EA=B5=90=20=ED=9B=84=20=EB=A9=94?= =?UTF-8?q?=EC=9D=B8=EC=9C=BC=EB=A1=9C=20=EB=9D=84=EC=9A=B8=EC=A7=80,=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20?= =?UTF-8?q?=EC=95=88=EB=82=B4=EB=AC=B8=EA=B5=AC=20=EB=9D=84=EC=9A=B8?= =?UTF-8?q?=EC=A7=80=20=EA=B2=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/splash/SplashActivity.kt | 27 ++++++++++++++++- .../presentation/splash/SplashViewModel.kt | 29 ++++++++++++++++++- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt index d829d028..9d1081b4 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt @@ -5,12 +5,17 @@ import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Looper +import android.widget.Toast import androidx.activity.viewModels +import androidx.lifecycle.LifecycleOwner +import com.sopt.peekabookaos.BuildConfig import com.sopt.peekabookaos.R import com.sopt.peekabookaos.databinding.ActivitySplashBinding import com.sopt.peekabookaos.domain.entity.SplashState +import com.sopt.peekabookaos.presentation.forceUpdate.ForceUpdateActivity import com.sopt.peekabookaos.presentation.main.MainActivity import com.sopt.peekabookaos.presentation.onboarding.OnboardingActivity +import com.sopt.peekabookaos.util.ToastMessageUtil.showToast import com.sopt.peekabookaos.util.binding.BindingActivity import dagger.hilt.android.AndroidEntryPoint @@ -18,11 +23,31 @@ import dagger.hilt.android.AndroidEntryPoint @SuppressLint("CustomSplashScreen") class SplashActivity : BindingActivity(R.layout.activity_splash) { private val splashViewModel: SplashViewModel by viewModels() + private val appVersionName = BuildConfig.VERSION_NAME override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + initDataObserver() binding.lottieSplash.playAnimation() - Handler(Looper.getMainLooper()).postDelayed({ checkSplashState() }, DURATION) + splashViewModel.getVersion() + } + + private fun initDataObserver() { + splashViewModel.isVersionStatus.observe(this){ success -> + if (success) { + checkVersionUpdate() + } + } + } + + private fun checkVersionUpdate() { + val isPreviousVersion = appVersionName != splashViewModel.versionName.value + if (isPreviousVersion) { + startActivity(Intent(this, ForceUpdateActivity::class.java)) + finish() + } else { + Handler(Looper.getMainLooper()).postDelayed({ checkSplashState() }, DURATION) + } } private fun checkSplashState() { diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt index faf1b808..4c2cda71 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt @@ -1,14 +1,41 @@ package com.sopt.peekabookaos.presentation.splash +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope import com.sopt.peekabookaos.domain.entity.SplashState +import com.sopt.peekabookaos.domain.entity.Version import com.sopt.peekabookaos.domain.usecase.GetSplashStateUseCase +import com.sopt.peekabookaos.domain.usecase.GetVersionUseCase import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.launch +import timber.log.Timber import javax.inject.Inject @HiltViewModel class SplashViewModel @Inject constructor( - private val getSplashStateUseCase: GetSplashStateUseCase + private val getSplashStateUseCase: GetSplashStateUseCase, + private val getVersionUseCase: GetVersionUseCase ) : ViewModel() { + private val _versionName: MutableLiveData = MutableLiveData() + val versionName: LiveData = _versionName + private val _isVersionStatus = MutableLiveData(false) + val isVersionStatus: LiveData = _isVersionStatus + fun getSplashState(): SplashState = getSplashStateUseCase() + + fun getVersion() { + viewModelScope.launch { + getVersionUseCase() + .onSuccess { response -> + _versionName.value = response.androidForceVersion + _isVersionStatus.value = true + } + .onFailure { throwable -> + _isVersionStatus.value = false + Timber.e("$throwable") + } + } + } } From c570cba229a209d24f36a726eb0732b594a82d87 Mon Sep 17 00:00:00 2001 From: river99 Date: Fri, 3 Nov 2023 05:17:47 +0900 Subject: [PATCH 08/32] =?UTF-8?q?#273[feat]=20ktlint=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../data/entity/response/VersionResponse.kt | 12 ++++++------ .../peekabookaos/data/service/ForceUpdateService.kt | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt b/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt index f7d6da67..eb39bc8b 100644 --- a/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt +++ b/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt @@ -5,13 +5,13 @@ import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable @Serializable -data class VersionResponse ( - val imageUrl : String, - val iosForceVersion : String, - val androidForceVersion : String, +data class VersionResponse( + val imageUrl: String, + val iosForceVersion: String, + val androidForceVersion: String, @SerialName("text") - val versionText : String - ){ + val versionText: String +) { fun toVersion(): Version = Version( imageUrl = this.imageUrl, iosForceVersion = this.iosForceVersion, diff --git a/app/src/main/java/com/sopt/peekabookaos/data/service/ForceUpdateService.kt b/app/src/main/java/com/sopt/peekabookaos/data/service/ForceUpdateService.kt index 36ae5215..daf68862 100644 --- a/app/src/main/java/com/sopt/peekabookaos/data/service/ForceUpdateService.kt +++ b/app/src/main/java/com/sopt/peekabookaos/data/service/ForceUpdateService.kt @@ -6,5 +6,5 @@ import retrofit2.http.GET interface ForceUpdateService { @GET("user/v1/version") - suspend fun getVersion() : BaseResponse + suspend fun getVersion(): BaseResponse } \ No newline at end of file From a3f5a7c799e23479fb2f064cda0631a4c34186fe Mon Sep 17 00:00:00 2001 From: river99 Date: Fri, 3 Nov 2023 05:22:40 +0900 Subject: [PATCH 09/32] =?UTF-8?q?#273[feat]=20ktlint=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/peekabookaos/presentation/splash/SplashActivity.kt | 5 +---- .../sopt/peekabookaos/presentation/splash/SplashViewModel.kt | 1 - 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt index 9d1081b4..81b4a915 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt @@ -5,9 +5,7 @@ import android.content.Intent import android.os.Bundle import android.os.Handler import android.os.Looper -import android.widget.Toast import androidx.activity.viewModels -import androidx.lifecycle.LifecycleOwner import com.sopt.peekabookaos.BuildConfig import com.sopt.peekabookaos.R import com.sopt.peekabookaos.databinding.ActivitySplashBinding @@ -15,7 +13,6 @@ import com.sopt.peekabookaos.domain.entity.SplashState import com.sopt.peekabookaos.presentation.forceUpdate.ForceUpdateActivity import com.sopt.peekabookaos.presentation.main.MainActivity import com.sopt.peekabookaos.presentation.onboarding.OnboardingActivity -import com.sopt.peekabookaos.util.ToastMessageUtil.showToast import com.sopt.peekabookaos.util.binding.BindingActivity import dagger.hilt.android.AndroidEntryPoint @@ -33,7 +30,7 @@ class SplashActivity : BindingActivity(R.layout.activity_ } private fun initDataObserver() { - splashViewModel.isVersionStatus.observe(this){ success -> + splashViewModel.isVersionStatus.observe(this) { success -> if (success) { checkVersionUpdate() } diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt index 4c2cda71..b0b7d5ef 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt @@ -5,7 +5,6 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.sopt.peekabookaos.domain.entity.SplashState -import com.sopt.peekabookaos.domain.entity.Version import com.sopt.peekabookaos.domain.usecase.GetSplashStateUseCase import com.sopt.peekabookaos.domain.usecase.GetVersionUseCase import dagger.hilt.android.lifecycle.HiltViewModel From 555f79a69dfb55803c78e45e68728dc3d0541fee Mon Sep 17 00:00:00 2001 From: river99 Date: Fri, 3 Nov 2023 05:27:52 +0900 Subject: [PATCH 10/32] =?UTF-8?q?#273[feat]=20ktlint=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/peekabookaos/data/entity/response/VersionResponse.kt | 2 +- .../peekabookaos/data/repository/ForceUpdateRepositoryImpl.kt | 2 +- .../com/sopt/peekabookaos/data/service/ForceUpdateService.kt | 2 +- .../peekabookaos/data/source/remote/ForceUpdateDataSource.kt | 2 +- .../main/java/com/sopt/peekabookaos/domain/entity/Version.kt | 2 +- .../peekabookaos/domain/repository/ForceUpdateRepository.kt | 2 +- .../com/sopt/peekabookaos/domain/usecase/GetVersionUseCase.kt | 2 +- .../presentation/forceUpdate/ForceUpdateActivity.kt | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt b/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt index eb39bc8b..5bed683b 100644 --- a/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt +++ b/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt @@ -18,4 +18,4 @@ data class VersionResponse( androidForceVersion = this.androidForceVersion, versionText = this.versionText ) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/sopt/peekabookaos/data/repository/ForceUpdateRepositoryImpl.kt b/app/src/main/java/com/sopt/peekabookaos/data/repository/ForceUpdateRepositoryImpl.kt index 3baaa8c4..cb5989cd 100644 --- a/app/src/main/java/com/sopt/peekabookaos/data/repository/ForceUpdateRepositoryImpl.kt +++ b/app/src/main/java/com/sopt/peekabookaos/data/repository/ForceUpdateRepositoryImpl.kt @@ -12,4 +12,4 @@ class ForceUpdateRepositoryImpl @Inject constructor( kotlin.runCatching { forceUpdateDataSource.getVersion() }.map { response -> requireNotNull(response.data).toVersion() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/sopt/peekabookaos/data/service/ForceUpdateService.kt b/app/src/main/java/com/sopt/peekabookaos/data/service/ForceUpdateService.kt index daf68862..13b32c72 100644 --- a/app/src/main/java/com/sopt/peekabookaos/data/service/ForceUpdateService.kt +++ b/app/src/main/java/com/sopt/peekabookaos/data/service/ForceUpdateService.kt @@ -7,4 +7,4 @@ import retrofit2.http.GET interface ForceUpdateService { @GET("user/v1/version") suspend fun getVersion(): BaseResponse -} \ No newline at end of file +} diff --git a/app/src/main/java/com/sopt/peekabookaos/data/source/remote/ForceUpdateDataSource.kt b/app/src/main/java/com/sopt/peekabookaos/data/source/remote/ForceUpdateDataSource.kt index 8499332a..c21ee921 100644 --- a/app/src/main/java/com/sopt/peekabookaos/data/source/remote/ForceUpdateDataSource.kt +++ b/app/src/main/java/com/sopt/peekabookaos/data/source/remote/ForceUpdateDataSource.kt @@ -10,4 +10,4 @@ class ForceUpdateDataSource @Inject constructor( ) { suspend fun getVersion(): BaseResponse = forceUpdateService.getVersion() -} \ No newline at end of file +} diff --git a/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt b/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt index 71a39040..0c96a6b4 100644 --- a/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt +++ b/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt @@ -5,4 +5,4 @@ data class Version( val iosForceVersion: String = "", val androidForceVersion: String = "", val versionText: String = "" -) \ No newline at end of file +) diff --git a/app/src/main/java/com/sopt/peekabookaos/domain/repository/ForceUpdateRepository.kt b/app/src/main/java/com/sopt/peekabookaos/domain/repository/ForceUpdateRepository.kt index 7c03970e..6050968a 100644 --- a/app/src/main/java/com/sopt/peekabookaos/domain/repository/ForceUpdateRepository.kt +++ b/app/src/main/java/com/sopt/peekabookaos/domain/repository/ForceUpdateRepository.kt @@ -4,4 +4,4 @@ import com.sopt.peekabookaos.domain.entity.Version interface ForceUpdateRepository { suspend fun getVersion(): Result -} \ No newline at end of file +} diff --git a/app/src/main/java/com/sopt/peekabookaos/domain/usecase/GetVersionUseCase.kt b/app/src/main/java/com/sopt/peekabookaos/domain/usecase/GetVersionUseCase.kt index cd7c146c..e4884600 100644 --- a/app/src/main/java/com/sopt/peekabookaos/domain/usecase/GetVersionUseCase.kt +++ b/app/src/main/java/com/sopt/peekabookaos/domain/usecase/GetVersionUseCase.kt @@ -7,4 +7,4 @@ class GetVersionUseCase @Inject constructor( private val forceUpdateRepository: ForceUpdateRepository ) { suspend operator fun invoke() = forceUpdateRepository.getVersion() -} \ No newline at end of file +} diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt index 1054524b..f2728342 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt @@ -21,4 +21,4 @@ class ForceUpdateActivity : startActivity(intentToPlayStore) } } -} \ No newline at end of file +} From bdebaf0c9d9dd8a3a4d026f66dc3ffcd18618fa2 Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Fri, 3 Nov 2023 23:14:46 +0900 Subject: [PATCH 11/32] =?UTF-8?q?#273[chore]=20Version=20domain=20entity?= =?UTF-8?q?=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20=EB=B3=80=EC=88=98=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/peekabookaos/data/entity/response/VersionResponse.kt | 1 - app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt | 1 - 2 files changed, 2 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt b/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt index 5bed683b..7a48ce52 100644 --- a/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt +++ b/app/src/main/java/com/sopt/peekabookaos/data/entity/response/VersionResponse.kt @@ -14,7 +14,6 @@ data class VersionResponse( ) { fun toVersion(): Version = Version( imageUrl = this.imageUrl, - iosForceVersion = this.iosForceVersion, androidForceVersion = this.androidForceVersion, versionText = this.versionText ) diff --git a/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt b/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt index 0c96a6b4..3555423e 100644 --- a/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt +++ b/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt @@ -2,7 +2,6 @@ package com.sopt.peekabookaos.domain.entity data class Version( val imageUrl: String = "", - val iosForceVersion: String = "", val androidForceVersion: String = "", val versionText: String = "" ) From 2034dc57c9165032a39431f8b9ec8445ad7101c5 Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Fri, 3 Nov 2023 23:16:30 +0900 Subject: [PATCH 12/32] =?UTF-8?q?#273[chore]=20forceUpdateActivity?= =?UTF-8?q?=EC=97=90=EC=84=9C=20intent=20private=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/forceUpdate/ForceUpdateActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt index f2728342..44e18fe3 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt @@ -9,7 +9,7 @@ import com.sopt.peekabookaos.util.binding.BindingActivity class ForceUpdateActivity : BindingActivity(R.layout.activity_force_update) { - lateinit var intentToPlayStore: Intent + private lateinit var intentToPlayStore: Intent override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) From c0301233bc14b7dd460ecb61be4b68a3f1d9b0b4 Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Sun, 5 Nov 2023 22:24:42 +0900 Subject: [PATCH 13/32] =?UTF-8?q?#273[fix]=20splash=20=ED=99=94=EB=A9=B4?= =?UTF-8?q?=20=EC=A0=84=EC=97=90=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20?= =?UTF-8?q?=EB=B7=B0=EB=A1=9C=20=EC=9D=B4=EB=8F=99=ED=95=98=EB=8D=98=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/splash/SplashActivity.kt | 16 ++++++++++------ .../presentation/splash/SplashViewModel.kt | 15 +++++++++++++-- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt index 81b4a915..6bd21e31 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt @@ -24,26 +24,30 @@ class SplashActivity : BindingActivity(R.layout.activity_ override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - initDataObserver() binding.lottieSplash.playAnimation() - splashViewModel.getVersion() + Handler(Looper.getMainLooper()).postDelayed({ initObserver() }, DURATION) } - private fun initDataObserver() { + private fun initObserver() { splashViewModel.isVersionStatus.observe(this) { success -> if (success) { + splashViewModel.getSplitVersion() checkVersionUpdate() } } } private fun checkVersionUpdate() { - val isPreviousVersion = appVersionName != splashViewModel.versionName.value - if (isPreviousVersion) { + val appVersionList = appVersionName.split(".") + val previousMajor = appVersionList[0] + val previousMinor = appVersionList[1] + val isPreviousVersions = + previousMajor != splashViewModel.majorVersion || previousMinor != splashViewModel.minorVersion + if (isPreviousVersions) { startActivity(Intent(this, ForceUpdateActivity::class.java)) finish() } else { - Handler(Looper.getMainLooper()).postDelayed({ checkSplashState() }, DURATION) + checkSplashState() } } diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt index b0b7d5ef..cc9f9c53 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt @@ -18,13 +18,24 @@ class SplashViewModel @Inject constructor( private val getVersionUseCase: GetVersionUseCase ) : ViewModel() { private val _versionName: MutableLiveData = MutableLiveData() - val versionName: LiveData = _versionName private val _isVersionStatus = MutableLiveData(false) val isVersionStatus: LiveData = _isVersionStatus + lateinit var majorVersion: String + lateinit var minorVersion: String + + init { + getVersion() + } fun getSplashState(): SplashState = getSplashStateUseCase() - fun getVersion() { + fun getSplitVersion() = run { + val versionSpiltList = _versionName.value?.split(".") + majorVersion = versionSpiltList?.get(0) ?: "" + minorVersion = versionSpiltList?.get(1) ?: "" + } + + private fun getVersion() { viewModelScope.launch { getVersionUseCase() .onSuccess { response -> From 2e6744f2a67e5928d24928d6b107a69c999aa95a Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Sun, 5 Nov 2023 22:27:53 +0900 Subject: [PATCH 14/32] =?UTF-8?q?#273[chore]=20viewModel=20=EC=84=9C?= =?UTF-8?q?=EB=B2=84=20=ED=86=B5=EC=8B=A0=20=EB=B3=80=EC=88=98=EB=AA=85=20?= =?UTF-8?q?=EC=88=98=EC=A0=95(isVersionStatus=20->=20isForceUpdateStatus)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../peekabookaos/presentation/splash/SplashActivity.kt | 2 +- .../peekabookaos/presentation/splash/SplashViewModel.kt | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt index 6bd21e31..020795da 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt @@ -29,7 +29,7 @@ class SplashActivity : BindingActivity(R.layout.activity_ } private fun initObserver() { - splashViewModel.isVersionStatus.observe(this) { success -> + splashViewModel.isForceUpdateStatus.observe(this) { success -> if (success) { splashViewModel.getSplitVersion() checkVersionUpdate() diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt index cc9f9c53..969e1022 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt @@ -18,8 +18,8 @@ class SplashViewModel @Inject constructor( private val getVersionUseCase: GetVersionUseCase ) : ViewModel() { private val _versionName: MutableLiveData = MutableLiveData() - private val _isVersionStatus = MutableLiveData(false) - val isVersionStatus: LiveData = _isVersionStatus + private val _isForceUpdateStatus = MutableLiveData(false) + val isForceUpdateStatus: LiveData = _isForceUpdateStatus lateinit var majorVersion: String lateinit var minorVersion: String @@ -40,10 +40,10 @@ class SplashViewModel @Inject constructor( getVersionUseCase() .onSuccess { response -> _versionName.value = response.androidForceVersion - _isVersionStatus.value = true + _isForceUpdateStatus.value = true } .onFailure { throwable -> - _isVersionStatus.value = false + _isForceUpdateStatus.value = false Timber.e("$throwable") } } From 10c6fb58d21940ae5053a59cbfa5a1554f9819cd Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Sun, 5 Nov 2023 23:35:32 +0900 Subject: [PATCH 15/32] =?UTF-8?q?#273[chore]=20=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=20=EB=B0=94=EC=9D=B8=EB=94=A9=EC=97=90=20=EB=94=B0=EB=A5=B8=20?= =?UTF-8?q?=EC=95=88=EC=93=B0=EB=8A=94=20string=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=ED=85=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/values/strings.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0b11c4c4..4db418d1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -209,6 +209,5 @@ 앗! 피카북이 달라졌어요 - 어느 기능이 추가되었는지 알아볼까요? 업데이트 하러 가기 \ No newline at end of file From f631c2d5878838461f8848e1e5619ad66e170230 Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Sun, 5 Nov 2023 23:36:41 +0900 Subject: [PATCH 16/32] =?UTF-8?q?#273[fix]=20ForceUpdateActivity=EC=97=90?= =?UTF-8?q?=20VERSION=20=EC=97=94=ED=8B=B0=ED=8B=B0=20=EB=84=98=EA=B8=B0?= =?UTF-8?q?=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../peekabookaos/presentation/splash/SplashActivity.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt index 020795da..4428b289 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt @@ -2,6 +2,8 @@ package com.sopt.peekabookaos.presentation.splash import android.annotation.SuppressLint import android.content.Intent +import android.content.Intent.FLAG_ACTIVITY_CLEAR_TASK +import android.content.Intent.FLAG_ACTIVITY_NEW_TASK import android.os.Bundle import android.os.Handler import android.os.Looper @@ -44,7 +46,11 @@ class SplashActivity : BindingActivity(R.layout.activity_ val isPreviousVersions = previousMajor != splashViewModel.majorVersion || previousMinor != splashViewModel.minorVersion if (isPreviousVersions) { - startActivity(Intent(this, ForceUpdateActivity::class.java)) + val intentToForceUpdate = Intent(this, ForceUpdateActivity::class.java).apply { + putExtra(LATEST_VERSION, splashViewModel.latestVersion) + addFlags(FLAG_ACTIVITY_CLEAR_TASK or FLAG_ACTIVITY_NEW_TASK) + } + startActivity(Intent(intentToForceUpdate)) finish() } else { checkSplashState() @@ -62,5 +68,6 @@ class SplashActivity : BindingActivity(R.layout.activity_ companion object { private const val DURATION: Long = 2000 + const val LATEST_VERSION = "latest version" } } From 96f0c6c3c00b5136fb05e850230a0914bb693273 Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Sun, 5 Nov 2023 23:37:09 +0900 Subject: [PATCH 17/32] =?UTF-8?q?#273[fix]=20VERSION=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/splash/SplashViewModel.kt | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt index 969e1022..a04347a1 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt @@ -5,6 +5,7 @@ import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.sopt.peekabookaos.domain.entity.SplashState +import com.sopt.peekabookaos.domain.entity.Version import com.sopt.peekabookaos.domain.usecase.GetSplashStateUseCase import com.sopt.peekabookaos.domain.usecase.GetVersionUseCase import dagger.hilt.android.lifecycle.HiltViewModel @@ -17,7 +18,7 @@ class SplashViewModel @Inject constructor( private val getSplashStateUseCase: GetSplashStateUseCase, private val getVersionUseCase: GetVersionUseCase ) : ViewModel() { - private val _versionName: MutableLiveData = MutableLiveData() + var latestVersion = Version() private val _isForceUpdateStatus = MutableLiveData(false) val isForceUpdateStatus: LiveData = _isForceUpdateStatus lateinit var majorVersion: String @@ -30,16 +31,20 @@ class SplashViewModel @Inject constructor( fun getSplashState(): SplashState = getSplashStateUseCase() fun getSplitVersion() = run { - val versionSpiltList = _versionName.value?.split(".") - majorVersion = versionSpiltList?.get(0) ?: "" - minorVersion = versionSpiltList?.get(1) ?: "" + val versionSpiltList = latestVersion.androidForceVersion.split(".") + majorVersion = versionSpiltList[0] + minorVersion = versionSpiltList[1] } private fun getVersion() { viewModelScope.launch { getVersionUseCase() .onSuccess { response -> - _versionName.value = response.androidForceVersion + latestVersion = Version( + response.imageUrl, + response.androidForceVersion, + response.versionText + ) _isForceUpdateStatus.value = true } .onFailure { throwable -> From 9abb91abe09fe049f04f427b506ce62a1f072e6c Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Sun, 5 Nov 2023 23:38:21 +0900 Subject: [PATCH 18/32] =?UTF-8?q?#273[add]=20viewModel=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1,=20view=EC=99=80=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20?= =?UTF-8?q?=EB=B0=94=EC=9D=B8=EB=94=A9=20=EC=97=B0=EA=B2=B0,=20intent?= =?UTF-8?q?=EB=A1=9C=20=EA=B0=92=20=EB=B0=9B=EC=95=84=EC=98=A4=EA=B8=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../forceUpdate/ForceUpdateActivity.kt | 16 ++++++++++++++++ .../forceUpdate/ForceUpdateViewModel.kt | 12 ++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateViewModel.kt diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt index 44e18fe3..630aaa9c 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt @@ -3,16 +3,27 @@ package com.sopt.peekabookaos.presentation.forceUpdate import android.content.Intent import android.net.Uri import android.os.Bundle +import androidx.activity.viewModels import com.sopt.peekabookaos.R import com.sopt.peekabookaos.databinding.ActivityForceUpdateBinding +import com.sopt.peekabookaos.domain.entity.Version +import com.sopt.peekabookaos.presentation.splash.SplashActivity.Companion.LATEST_VERSION import com.sopt.peekabookaos.util.binding.BindingActivity +import com.sopt.peekabookaos.util.extensions.getParcelable class ForceUpdateActivity : BindingActivity(R.layout.activity_force_update) { private lateinit var intentToPlayStore: Intent + private val viewModel by viewModels() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + binding.vm = viewModel + getLatestVersion() + initClickListener() + } + + private fun initClickListener() { binding.btnForceUpdate.setOnClickListener { intentToPlayStore = Intent( Intent.ACTION_VIEW, @@ -21,4 +32,9 @@ class ForceUpdateActivity : startActivity(intentToPlayStore) } } + + private fun getLatestVersion() { + intent.getParcelable(LATEST_VERSION, Version::class.java) + ?.let { viewModel.getLatestVersion(it) } + } } diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateViewModel.kt new file mode 100644 index 00000000..f483f2cd --- /dev/null +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateViewModel.kt @@ -0,0 +1,12 @@ +package com.sopt.peekabookaos.presentation.forceUpdate + +import androidx.lifecycle.ViewModel +import com.sopt.peekabookaos.domain.entity.Version + +class ForceUpdateViewModel : ViewModel() { + lateinit var latestVersion: Version + + fun getLatestVersion(version: Version) { + latestVersion = version + } +} From 24baa9982da039feeb9bd2910694928e58ac4cd1 Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Sun, 5 Nov 2023 23:38:44 +0900 Subject: [PATCH 19/32] =?UTF-8?q?#273[fix]=20Parcelable=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sopt/peekabookaos/domain/entity/Version.kt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt b/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt index 3555423e..c998453d 100644 --- a/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt +++ b/app/src/main/java/com/sopt/peekabookaos/domain/entity/Version.kt @@ -1,7 +1,11 @@ package com.sopt.peekabookaos.domain.entity +import android.os.Parcelable +import kotlinx.parcelize.Parcelize + +@Parcelize data class Version( val imageUrl: String = "", val androidForceVersion: String = "", val versionText: String = "" -) +) : Parcelable From 4be191cbea674216860f1c35c41cc696c728bea0 Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Sun, 5 Nov 2023 23:39:06 +0900 Subject: [PATCH 20/32] =?UTF-8?q?#273[fix]=20forceUpdateViewModel=EA=B3=BC?= =?UTF-8?q?=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/activity_force_update.xml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/app/src/main/res/layout/activity_force_update.xml b/app/src/main/res/layout/activity_force_update.xml index 77bf0537..b9df23be 100644 --- a/app/src/main/res/layout/activity_force_update.xml +++ b/app/src/main/res/layout/activity_force_update.xml @@ -5,13 +5,16 @@ + + tools:context=".presentation.forceUpdate.ForceUpdateActivity"> + app:layout_constraintTop_toBottomOf="@id/tv_force_update_title" + tools:text="서버통신한 내용이 들어갑니다." /> Date: Mon, 6 Nov 2023 00:36:49 +0900 Subject: [PATCH 21/32] =?UTF-8?q?#273[add]=20versionDetail,=20versionState?= =?UTF-8?q?=20=EC=97=94=ED=8B=B0=ED=8B=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/sopt/peekabookaos/domain/entity/VersionDetail.kt | 6 ++++++ .../com/sopt/peekabookaos/domain/entity/VersionState.kt | 5 +++++ 2 files changed, 11 insertions(+) create mode 100644 app/src/main/java/com/sopt/peekabookaos/domain/entity/VersionDetail.kt create mode 100644 app/src/main/java/com/sopt/peekabookaos/domain/entity/VersionState.kt diff --git a/app/src/main/java/com/sopt/peekabookaos/domain/entity/VersionDetail.kt b/app/src/main/java/com/sopt/peekabookaos/domain/entity/VersionDetail.kt new file mode 100644 index 00000000..b904357a --- /dev/null +++ b/app/src/main/java/com/sopt/peekabookaos/domain/entity/VersionDetail.kt @@ -0,0 +1,6 @@ +package com.sopt.peekabookaos.domain.entity + +data class VersionDetail( + val major: String, + val minor: String +) diff --git a/app/src/main/java/com/sopt/peekabookaos/domain/entity/VersionState.kt b/app/src/main/java/com/sopt/peekabookaos/domain/entity/VersionState.kt new file mode 100644 index 00000000..8bb1ca7b --- /dev/null +++ b/app/src/main/java/com/sopt/peekabookaos/domain/entity/VersionState.kt @@ -0,0 +1,5 @@ +package com.sopt.peekabookaos.domain.entity + +enum class VersionState { + LATEST, OUTDATED +} From a1a3192a430ee45650bc2507e6dead1115baa2cd Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:37:27 +0900 Subject: [PATCH 22/32] =?UTF-8?q?#273[fix]=20viewModel=EB=A1=9C=20?= =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EB=B9=84=EA=B5=90=20=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EC=9D=B4=EC=A0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/splash/SplashViewModel.kt | 31 +++++++++++++------ 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt index a04347a1..69f796b8 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt @@ -4,8 +4,11 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope +import com.sopt.peekabookaos.BuildConfig import com.sopt.peekabookaos.domain.entity.SplashState import com.sopt.peekabookaos.domain.entity.Version +import com.sopt.peekabookaos.domain.entity.VersionDetail +import com.sopt.peekabookaos.domain.entity.VersionState import com.sopt.peekabookaos.domain.usecase.GetSplashStateUseCase import com.sopt.peekabookaos.domain.usecase.GetVersionUseCase import dagger.hilt.android.lifecycle.HiltViewModel @@ -19,10 +22,10 @@ class SplashViewModel @Inject constructor( private val getVersionUseCase: GetVersionUseCase ) : ViewModel() { var latestVersion = Version() - private val _isForceUpdateStatus = MutableLiveData(false) - val isForceUpdateStatus: LiveData = _isForceUpdateStatus - lateinit var majorVersion: String - lateinit var minorVersion: String + private val _isForceUpdate = MutableLiveData(false) + val isForceUpdate: LiveData = _isForceUpdate + lateinit var latestVersionDetail: VersionDetail + lateinit var appVersionDetail: VersionDetail init { getVersion() @@ -30,10 +33,18 @@ class SplashViewModel @Inject constructor( fun getSplashState(): SplashState = getSplashStateUseCase() - fun getSplitVersion() = run { - val versionSpiltList = latestVersion.androidForceVersion.split(".") - majorVersion = versionSpiltList[0] - minorVersion = versionSpiltList[1] + fun checkUpdateVersion(): VersionState { + latestVersionDetail = spiltVersionToMajorMinor(latestVersion.androidForceVersion) + appVersionDetail = spiltVersionToMajorMinor(BuildConfig.VERSION_NAME) + return if (appVersionDetail.major != latestVersionDetail.major || appVersionDetail.minor != latestVersionDetail.minor) VersionState.OUTDATED + else VersionState.OUTDATED + } + + private fun spiltVersionToMajorMinor(versionName: String): VersionDetail { + val versionSpiltList = versionName.split(".") + val major = versionSpiltList[0] + val minor = versionSpiltList[1] + return VersionDetail(major, minor) } private fun getVersion() { @@ -45,10 +56,10 @@ class SplashViewModel @Inject constructor( response.androidForceVersion, response.versionText ) - _isForceUpdateStatus.value = true + _isForceUpdate.value = true } .onFailure { throwable -> - _isForceUpdateStatus.value = false + _isForceUpdate.value = false Timber.e("$throwable") } } From 44b9eac86bc92412987703af59a7a8a6221e2cbe Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:38:59 +0900 Subject: [PATCH 23/32] =?UTF-8?q?#273[fix]=20update=20state=20=EC=97=94?= =?UTF-8?q?=ED=8B=B0=ED=8B=B0=20=EC=B6=94=EA=B0=80=EB=A1=9C=20when?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20=EB=B3=80=EA=B2=BD=ED=95=98=EC=97=AC=20?= =?UTF-8?q?=EB=B6=84=EA=B8=B0=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/splash/SplashActivity.kt | 33 ++++++++----------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt index 4428b289..740fa0bc 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt @@ -8,10 +8,10 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import androidx.activity.viewModels -import com.sopt.peekabookaos.BuildConfig import com.sopt.peekabookaos.R import com.sopt.peekabookaos.databinding.ActivitySplashBinding import com.sopt.peekabookaos.domain.entity.SplashState +import com.sopt.peekabookaos.domain.entity.VersionState import com.sopt.peekabookaos.presentation.forceUpdate.ForceUpdateActivity import com.sopt.peekabookaos.presentation.main.MainActivity import com.sopt.peekabookaos.presentation.onboarding.OnboardingActivity @@ -22,38 +22,33 @@ import dagger.hilt.android.AndroidEntryPoint @SuppressLint("CustomSplashScreen") class SplashActivity : BindingActivity(R.layout.activity_splash) { private val splashViewModel: SplashViewModel by viewModels() - private val appVersionName = BuildConfig.VERSION_NAME override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding.lottieSplash.playAnimation() - Handler(Looper.getMainLooper()).postDelayed({ initObserver() }, DURATION) + Handler(Looper.getMainLooper()).postDelayed({ initIsForceUpdateObserver() }, DURATION) } - private fun initObserver() { - splashViewModel.isForceUpdateStatus.observe(this) { success -> + private fun initIsForceUpdateObserver() { + splashViewModel.isForceUpdate.observe(this) { success -> if (success) { - splashViewModel.getSplitVersion() + splashViewModel.checkUpdateVersion() checkVersionUpdate() } } } private fun checkVersionUpdate() { - val appVersionList = appVersionName.split(".") - val previousMajor = appVersionList[0] - val previousMinor = appVersionList[1] - val isPreviousVersions = - previousMajor != splashViewModel.majorVersion || previousMinor != splashViewModel.minorVersion - if (isPreviousVersions) { - val intentToForceUpdate = Intent(this, ForceUpdateActivity::class.java).apply { - putExtra(LATEST_VERSION, splashViewModel.latestVersion) - addFlags(FLAG_ACTIVITY_CLEAR_TASK or FLAG_ACTIVITY_NEW_TASK) + when (splashViewModel.checkUpdateVersion()) { + VersionState.LATEST -> checkSplashState() + VersionState.OUTDATED -> { + val intentToForceUpdate = Intent(this, ForceUpdateActivity::class.java).apply { + putExtra(LATEST_VERSION, splashViewModel.latestVersion) + addFlags(FLAG_ACTIVITY_CLEAR_TASK or FLAG_ACTIVITY_NEW_TASK) + } + startActivity(Intent(intentToForceUpdate)) + finish() } - startActivity(Intent(intentToForceUpdate)) - finish() - } else { - checkSplashState() } } From f3a3b985a6e3d1d66062eeea40db610e6fe97721 Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:39:19 +0900 Subject: [PATCH 24/32] =?UTF-8?q?#273[fix]=20private=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/peekabookaos/presentation/splash/SplashViewModel.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt index 69f796b8..20df3dcb 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt @@ -24,8 +24,8 @@ class SplashViewModel @Inject constructor( var latestVersion = Version() private val _isForceUpdate = MutableLiveData(false) val isForceUpdate: LiveData = _isForceUpdate - lateinit var latestVersionDetail: VersionDetail - lateinit var appVersionDetail: VersionDetail + private lateinit var latestVersionDetail: VersionDetail + private lateinit var appVersionDetail: VersionDetail init { getVersion() From cb2bccdf515190ea0aea61bc379ee603fa3df1a6 Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:42:27 +0900 Subject: [PATCH 25/32] =?UTF-8?q?#273[fix]=20vm=20->=20viewModel=20?= =?UTF-8?q?=EC=95=BD=EC=96=B4=20=EA=B5=90=EC=B2=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/res/layout/activity_force_update.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/layout/activity_force_update.xml b/app/src/main/res/layout/activity_force_update.xml index b9df23be..666f325e 100644 --- a/app/src/main/res/layout/activity_force_update.xml +++ b/app/src/main/res/layout/activity_force_update.xml @@ -6,7 +6,7 @@ @@ -47,7 +47,7 @@ android:layout_height="wrap_content" android:layout_marginTop="5dp" android:gravity="center" - android:text="@{vm.latestVersion.versionText}" + android:text="@{viewModel.latestVersion.versionText}" android:textColor="@color/peeka_red" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" From b633534730c67b7a248e6858819f420893b2966f Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:43:01 +0900 Subject: [PATCH 26/32] =?UTF-8?q?#273[fix]=20listener=20=ED=95=A8=EC=88=98?= =?UTF-8?q?=EB=AA=85=20=EA=B5=AC=EC=B2=B4=EC=A0=81=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EB=B7=B0=EB=AA=A8=EB=8D=B8=20?= =?UTF-8?q?=EC=BA=A1=EC=8A=90=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/forceUpdate/ForceUpdateActivity.kt | 6 +++--- .../presentation/forceUpdate/ForceUpdateViewModel.kt | 7 +++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt index 630aaa9c..252f0df0 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt @@ -18,12 +18,12 @@ class ForceUpdateActivity : override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - binding.vm = viewModel + binding.viewModel = viewModel getLatestVersion() - initClickListener() + initBtnClickListener() } - private fun initClickListener() { + private fun initBtnClickListener() { binding.btnForceUpdate.setOnClickListener { intentToPlayStore = Intent( Intent.ACTION_VIEW, diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateViewModel.kt index f483f2cd..992bb827 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateViewModel.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateViewModel.kt @@ -1,12 +1,15 @@ package com.sopt.peekabookaos.presentation.forceUpdate +import androidx.lifecycle.LiveData +import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.sopt.peekabookaos.domain.entity.Version class ForceUpdateViewModel : ViewModel() { - lateinit var latestVersion: Version + private val _latestVersion: MutableLiveData = MutableLiveData() + val latestVersion: LiveData = _latestVersion fun getLatestVersion(version: Version) { - latestVersion = version + _latestVersion.value = version } } From d4ac96ca97647f239ad50fb3f184f2dc5894f6ce Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:45:29 +0900 Subject: [PATCH 27/32] =?UTF-8?q?#273[fix]=20checkUpdateVersion=20?= =?UTF-8?q?=EB=A6=AC=ED=84=B4=EA=B0=92=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/peekabookaos/presentation/splash/SplashViewModel.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt index 20df3dcb..7d4e01a4 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt @@ -36,7 +36,7 @@ class SplashViewModel @Inject constructor( fun checkUpdateVersion(): VersionState { latestVersionDetail = spiltVersionToMajorMinor(latestVersion.androidForceVersion) appVersionDetail = spiltVersionToMajorMinor(BuildConfig.VERSION_NAME) - return if (appVersionDetail.major != latestVersionDetail.major || appVersionDetail.minor != latestVersionDetail.minor) VersionState.OUTDATED + return if (appVersionDetail.major != latestVersionDetail.major || appVersionDetail.minor != latestVersionDetail.minor) VersionState.LATEST else VersionState.OUTDATED } From 6baa58e72c213c422149b1aa51be4f7fba646d3d Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Mon, 6 Nov 2023 00:49:21 +0900 Subject: [PATCH 28/32] =?UTF-8?q?#273[fix]=20checkUpdateVersion=20?= =?UTF-8?q?=EB=B0=98=EB=8C=80=EB=A1=9C=20=EB=90=98=EC=96=B4=EC=9E=88?= =?UTF-8?q?=EB=8D=98=20=EB=A6=AC=ED=84=B4=EA=B0=92=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sopt/peekabookaos/presentation/splash/SplashViewModel.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt index 7d4e01a4..8d6f4b31 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt @@ -36,8 +36,8 @@ class SplashViewModel @Inject constructor( fun checkUpdateVersion(): VersionState { latestVersionDetail = spiltVersionToMajorMinor(latestVersion.androidForceVersion) appVersionDetail = spiltVersionToMajorMinor(BuildConfig.VERSION_NAME) - return if (appVersionDetail.major != latestVersionDetail.major || appVersionDetail.minor != latestVersionDetail.minor) VersionState.LATEST - else VersionState.OUTDATED + return if (appVersionDetail.major != latestVersionDetail.major || appVersionDetail.minor != latestVersionDetail.minor) VersionState.OUTDATED + else VersionState.LATEST } private fun spiltVersionToMajorMinor(versionName: String): VersionDetail { From 4877767f57ae197b0099a8732fffef7aef1f411d Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Mon, 6 Nov 2023 01:15:17 +0900 Subject: [PATCH 29/32] =?UTF-8?q?#273[fix]=20=EC=8A=A4=ED=86=A0=EC=96=B4?= =?UTF-8?q?=20=EB=A7=81=ED=81=AC=20object=EB=A1=9C=20=EC=B6=94=EC=B6=9C,?= =?UTF-8?q?=20=ED=95=A8=EC=88=98=EB=AA=85=20=EC=9E=90=EC=84=B8=ED=95=98?= =?UTF-8?q?=EA=B2=8C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/forceUpdate/ForceUpdateActivity.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt index 252f0df0..fbbc024d 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt @@ -20,14 +20,14 @@ class ForceUpdateActivity : super.onCreate(savedInstanceState) binding.viewModel = viewModel getLatestVersion() - initBtnClickListener() + initUpdateBtnClickListener() } - private fun initBtnClickListener() { + private fun initUpdateBtnClickListener() { binding.btnForceUpdate.setOnClickListener { intentToPlayStore = Intent( Intent.ACTION_VIEW, - Uri.parse("https://play.google.com/store/apps/details?id=com.sopt.peekabookaos&hl=ko-KR") + Uri.parse(PEEKABOOKSTORE) ) startActivity(intentToPlayStore) } @@ -37,4 +37,9 @@ class ForceUpdateActivity : intent.getParcelable(LATEST_VERSION, Version::class.java) ?.let { viewModel.getLatestVersion(it) } } + + companion object { + private const val PEEKABOOKSTORE = + "https://play.google.com/store/apps/details?id=com.sopt.peekabookaos&hl=ko-KR" + } } From 855c21e75c9edaffbcd5a4053fd37d1753e29daa Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Mon, 6 Nov 2023 01:16:07 +0900 Subject: [PATCH 30/32] =?UTF-8?q?#273[fix]=20MutableLiveData,=20LiveData?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20=EB=B0=8F=20=EA=B7=B8=EC=97=90?= =?UTF-8?q?=20=EB=94=B0=EB=A5=B8=20null=20=EC=B2=98=EB=A6=AC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../peekabookaos/presentation/splash/SplashActivity.kt | 2 +- .../peekabookaos/presentation/splash/SplashViewModel.kt | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt index 740fa0bc..c6bb91f0 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt @@ -43,7 +43,7 @@ class SplashActivity : BindingActivity(R.layout.activity_ VersionState.LATEST -> checkSplashState() VersionState.OUTDATED -> { val intentToForceUpdate = Intent(this, ForceUpdateActivity::class.java).apply { - putExtra(LATEST_VERSION, splashViewModel.latestVersion) + putExtra(LATEST_VERSION, splashViewModel.latestVersion.value) addFlags(FLAG_ACTIVITY_CLEAR_TASK or FLAG_ACTIVITY_NEW_TASK) } startActivity(Intent(intentToForceUpdate)) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt index 8d6f4b31..c6e12a42 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt @@ -21,7 +21,8 @@ class SplashViewModel @Inject constructor( private val getSplashStateUseCase: GetSplashStateUseCase, private val getVersionUseCase: GetVersionUseCase ) : ViewModel() { - var latestVersion = Version() + private val _latestVersion: MutableLiveData = MutableLiveData() + val latestVersion: LiveData = _latestVersion private val _isForceUpdate = MutableLiveData(false) val isForceUpdate: LiveData = _isForceUpdate private lateinit var latestVersionDetail: VersionDetail @@ -34,7 +35,7 @@ class SplashViewModel @Inject constructor( fun getSplashState(): SplashState = getSplashStateUseCase() fun checkUpdateVersion(): VersionState { - latestVersionDetail = spiltVersionToMajorMinor(latestVersion.androidForceVersion) + latestVersionDetail = spiltVersionToMajorMinor(requireNotNull(latestVersion.value?.androidForceVersion) { "version is null" }) appVersionDetail = spiltVersionToMajorMinor(BuildConfig.VERSION_NAME) return if (appVersionDetail.major != latestVersionDetail.major || appVersionDetail.minor != latestVersionDetail.minor) VersionState.OUTDATED else VersionState.LATEST @@ -51,7 +52,7 @@ class SplashViewModel @Inject constructor( viewModelScope.launch { getVersionUseCase() .onSuccess { response -> - latestVersion = Version( + _latestVersion.value = Version( response.imageUrl, response.androidForceVersion, response.versionText From 04c2dcdfeb7c9046b33e60a49ade4cb81de00133 Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Mon, 6 Nov 2023 01:29:45 +0900 Subject: [PATCH 31/32] =?UTF-8?q?#273[fix]=20String=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=8A=A4=ED=86=A0=EC=96=B4=20=EB=A7=81=ED=81=AC=20=EC=B6=94?= =?UTF-8?q?=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../presentation/forceUpdate/ForceUpdateActivity.kt | 7 +------ app/src/main/res/values/strings.xml | 1 + 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt index fbbc024d..c9e3eae1 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/forceUpdate/ForceUpdateActivity.kt @@ -27,7 +27,7 @@ class ForceUpdateActivity : binding.btnForceUpdate.setOnClickListener { intentToPlayStore = Intent( Intent.ACTION_VIEW, - Uri.parse(PEEKABOOKSTORE) + Uri.parse(getString(R.string.force_update_store_link)) ) startActivity(intentToPlayStore) } @@ -37,9 +37,4 @@ class ForceUpdateActivity : intent.getParcelable(LATEST_VERSION, Version::class.java) ?.let { viewModel.getLatestVersion(it) } } - - companion object { - private const val PEEKABOOKSTORE = - "https://play.google.com/store/apps/details?id=com.sopt.peekabookaos&hl=ko-KR" - } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4db418d1..ed824201 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -210,4 +210,5 @@ 앗! 피카북이 달라졌어요 업데이트 하러 가기 + https://play.google.com/store/apps/details?id=com.sopt.peekabookaos&hl=ko-KR \ No newline at end of file From 35bb9fd43a9fe014e6efcd68ac10066bb5c2a173 Mon Sep 17 00:00:00 2001 From: Hailey <91793891+stellar-halo@users.noreply.github.com> Date: Mon, 6 Nov 2023 01:54:05 +0900 Subject: [PATCH 32/32] =?UTF-8?q?#273[fix]=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EB=B3=80=EC=88=98=20=EC=82=AD=EC=A0=9C=20=EB=B0=8F?= =?UTF-8?q?=20observer=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../peekabookaos/presentation/splash/SplashActivity.kt | 8 +++----- .../peekabookaos/presentation/splash/SplashViewModel.kt | 7 ++----- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt index c6bb91f0..e28ccd88 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashActivity.kt @@ -30,11 +30,9 @@ class SplashActivity : BindingActivity(R.layout.activity_ } private fun initIsForceUpdateObserver() { - splashViewModel.isForceUpdate.observe(this) { success -> - if (success) { - splashViewModel.checkUpdateVersion() - checkVersionUpdate() - } + splashViewModel.latestVersion.observe(this) { + splashViewModel.checkUpdateVersion() + checkVersionUpdate() } } diff --git a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt index c6e12a42..268ae523 100644 --- a/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt +++ b/app/src/main/java/com/sopt/peekabookaos/presentation/splash/SplashViewModel.kt @@ -23,8 +23,6 @@ class SplashViewModel @Inject constructor( ) : ViewModel() { private val _latestVersion: MutableLiveData = MutableLiveData() val latestVersion: LiveData = _latestVersion - private val _isForceUpdate = MutableLiveData(false) - val isForceUpdate: LiveData = _isForceUpdate private lateinit var latestVersionDetail: VersionDetail private lateinit var appVersionDetail: VersionDetail @@ -35,7 +33,8 @@ class SplashViewModel @Inject constructor( fun getSplashState(): SplashState = getSplashStateUseCase() fun checkUpdateVersion(): VersionState { - latestVersionDetail = spiltVersionToMajorMinor(requireNotNull(latestVersion.value?.androidForceVersion) { "version is null" }) + latestVersionDetail = + spiltVersionToMajorMinor(requireNotNull(latestVersion.value?.androidForceVersion) { "version is null" }) appVersionDetail = spiltVersionToMajorMinor(BuildConfig.VERSION_NAME) return if (appVersionDetail.major != latestVersionDetail.major || appVersionDetail.minor != latestVersionDetail.minor) VersionState.OUTDATED else VersionState.LATEST @@ -57,10 +56,8 @@ class SplashViewModel @Inject constructor( response.androidForceVersion, response.versionText ) - _isForceUpdate.value = true } .onFailure { throwable -> - _isForceUpdate.value = false Timber.e("$throwable") } }