diff --git a/app/src/main/java/com/hilingual/app/DeviceInfoProviderImpl.kt b/app/src/main/java/com/hilingual/app/DeviceInfoProviderImpl.kt new file mode 100644 index 000000000..e87100892 --- /dev/null +++ b/app/src/main/java/com/hilingual/app/DeviceInfoProviderImpl.kt @@ -0,0 +1,28 @@ +package com.hilingual.app + +import android.content.Context +import android.os.Build +import com.hilingual.core.common.extension.appVersionName +import com.hilingual.core.common.app.DeviceInfoProvider +import dagger.hilt.android.qualifiers.ApplicationContext +import javax.inject.Inject + +internal class DeviceInfoProviderImpl @Inject constructor( + @ApplicationContext private val context: Context +) : DeviceInfoProvider { + + override fun getDeviceName(): String = Build.MODEL + + override fun getDeviceType(): String = + if (context.resources.configuration.smallestScreenWidthDp >= 600) "TABLET" else "PHONE" + + override fun getOsVersion(): String = Build.VERSION.RELEASE + + override fun getAppVersion(): String = context.appVersionName + + override fun getProvider(): String = "GOOGLE" + + override fun getRole(): String = "USER" + + override fun getOsType(): String = "Android" +} diff --git a/app/src/main/java/com/hilingual/di/ProviderModule.kt b/app/src/main/java/com/hilingual/di/ProviderModule.kt new file mode 100644 index 000000000..b04ea3ce5 --- /dev/null +++ b/app/src/main/java/com/hilingual/di/ProviderModule.kt @@ -0,0 +1,20 @@ +package com.hilingual.di + +import com.hilingual.core.common.app.DeviceInfoProvider +import com.hilingual.app.DeviceInfoProviderImpl +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +internal abstract class ProviderModule { + + @Binds + @Singleton + abstract fun bindDeviceInfoProvider( + impl: DeviceInfoProviderImpl + ): DeviceInfoProvider +} diff --git a/data/auth/src/main/java/com/hilingual/data/auth/datasource/SystemDataSource.kt b/core/common/src/main/java/com/hilingual/core/common/app/DeviceInfoProvider.kt similarity index 75% rename from data/auth/src/main/java/com/hilingual/data/auth/datasource/SystemDataSource.kt rename to core/common/src/main/java/com/hilingual/core/common/app/DeviceInfoProvider.kt index a2fa564f7..afd8fb37d 100644 --- a/data/auth/src/main/java/com/hilingual/data/auth/datasource/SystemDataSource.kt +++ b/core/common/src/main/java/com/hilingual/core/common/app/DeviceInfoProvider.kt @@ -1,6 +1,6 @@ -package com.hilingual.data.auth.datasource +package com.hilingual.core.common.app -interface SystemDataSource { +interface DeviceInfoProvider { fun getDeviceName(): String fun getDeviceType(): String diff --git a/core/common/src/main/java/com/hilingual/core/common/constant/VersionConstant.kt b/core/common/src/main/java/com/hilingual/core/common/constant/VersionConstant.kt new file mode 100644 index 000000000..fe464b86b --- /dev/null +++ b/core/common/src/main/java/com/hilingual/core/common/constant/VersionConstant.kt @@ -0,0 +1,3 @@ +package com.hilingual.core.common.constant + +const val STABLE_VERSION = "2.0.0" diff --git a/core/common/src/main/java/com/hilingual/core/common/extension/ContextExt.kt b/core/common/src/main/java/com/hilingual/core/common/extension/ContextExt.kt index 3ae8b63df..0f1370b11 100644 --- a/core/common/src/main/java/com/hilingual/core/common/extension/ContextExt.kt +++ b/core/common/src/main/java/com/hilingual/core/common/extension/ContextExt.kt @@ -16,9 +16,25 @@ package com.hilingual.core.common.extension import android.content.Context +import android.content.pm.PackageManager +import android.os.Build import androidx.browser.customtabs.CustomTabsIntent import androidx.core.net.toUri +import com.hilingual.core.common.constant.STABLE_VERSION fun Context.launchCustomTabs(url: String) { CustomTabsIntent.Builder().build().launchUrl(this, url.toUri()) } + +val Context.appVersionName: String + get() = runCatching { + val packageInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + packageManager.getPackageInfo( + packageName, + PackageManager.PackageInfoFlags.of(0) + ) + } else { + packageManager.getPackageInfo(packageName, 0) + } + packageInfo.versionName + }.getOrNull() ?: STABLE_VERSION diff --git a/data/auth/src/main/java/com/hilingual/data/auth/datasourceimpl/SystemDataSourceImpl.kt b/data/auth/src/main/java/com/hilingual/data/auth/datasourceimpl/SystemDataSourceImpl.kt deleted file mode 100644 index 6f7bddf64..000000000 --- a/data/auth/src/main/java/com/hilingual/data/auth/datasourceimpl/SystemDataSourceImpl.kt +++ /dev/null @@ -1,39 +0,0 @@ -package com.hilingual.data.auth.datasourceimpl - -import android.content.Context -import android.content.pm.PackageManager -import android.os.Build -import com.hilingual.data.auth.datasource.SystemDataSource -import dagger.hilt.android.qualifiers.ApplicationContext -import javax.inject.Inject - -internal class SystemDataSourceImpl @Inject constructor( - @ApplicationContext private val context: Context -) : SystemDataSource { - - override fun getDeviceName(): String = Build.MODEL - - override fun getDeviceType(): String = - if (context.resources.configuration.smallestScreenWidthDp >= 600) "TABLET" else "PHONE" - - override fun getOsVersion(): String = Build.VERSION.RELEASE - - override fun getAppVersion(): String { - val packageManager = context.packageManager - val packageName = context.packageName - - val packageInfo = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { - packageManager.getPackageInfo(packageName, PackageManager.PackageInfoFlags.of(0)) - } else { - packageManager.getPackageInfo(packageName, 0) - } - - return packageInfo.versionName ?: "2.0.0" - } - - override fun getProvider(): String = "GOOGLE" - - override fun getRole(): String = "USER" - - override fun getOsType(): String = "Android" -} diff --git a/data/auth/src/main/java/com/hilingual/data/auth/di/DataSourceModule.kt b/data/auth/src/main/java/com/hilingual/data/auth/di/DataSourceModule.kt index 3ec83e03f..7688704b4 100644 --- a/data/auth/src/main/java/com/hilingual/data/auth/di/DataSourceModule.kt +++ b/data/auth/src/main/java/com/hilingual/data/auth/di/DataSourceModule.kt @@ -19,10 +19,8 @@ import android.content.Context import androidx.credentials.CredentialManager import com.hilingual.data.auth.datasource.AuthRemoteDataSource import com.hilingual.data.auth.datasource.GoogleAuthDataSource -import com.hilingual.data.auth.datasource.SystemDataSource import com.hilingual.data.auth.datasourceimpl.AuthRemoteDataSourceImpl import com.hilingual.data.auth.datasourceimpl.GoogleAuthDataSourceImpl -import com.hilingual.data.auth.datasourceimpl.SystemDataSourceImpl import dagger.Binds import dagger.Module import dagger.Provides @@ -46,12 +44,6 @@ internal abstract class DataSourceModule { authRemoteDataSourceImpl: AuthRemoteDataSourceImpl ): AuthRemoteDataSource - @Binds - @Singleton - abstract fun bindSystemDataSource( - systemDataSourceImpl: SystemDataSourceImpl - ): SystemDataSource - internal companion object { @Provides @Singleton diff --git a/data/auth/src/main/java/com/hilingual/data/auth/repositoryimpl/AuthRepositoryImpl.kt b/data/auth/src/main/java/com/hilingual/data/auth/repositoryimpl/AuthRepositoryImpl.kt index 446e0d134..37a69aad7 100644 --- a/data/auth/src/main/java/com/hilingual/data/auth/repositoryimpl/AuthRepositoryImpl.kt +++ b/data/auth/src/main/java/com/hilingual/data/auth/repositoryimpl/AuthRepositoryImpl.kt @@ -16,12 +16,12 @@ package com.hilingual.data.auth.repositoryimpl import android.content.Context +import com.hilingual.core.common.app.DeviceInfoProvider import com.hilingual.core.common.util.suspendRunCatching import com.hilingual.core.localstorage.TokenManager import com.hilingual.core.localstorage.UserInfoManager import com.hilingual.data.auth.datasource.AuthRemoteDataSource import com.hilingual.data.auth.datasource.GoogleAuthDataSource -import com.hilingual.data.auth.datasource.SystemDataSource import com.hilingual.data.auth.dto.request.LoginRequestDto import com.hilingual.data.auth.dto.request.VerifyCodeRequestDto import com.hilingual.data.auth.model.LoginModel @@ -31,7 +31,7 @@ import javax.inject.Inject internal class AuthRepositoryImpl @Inject constructor( private val authRemoteDataSource: AuthRemoteDataSource, private val googleAuthDataSource: GoogleAuthDataSource, - private val systemDataSource: SystemDataSource, + private val deviceInfoProvider: DeviceInfoProvider, private val tokenManager: TokenManager, private val userInfoManager: UserInfoManager ) : AuthRepository { @@ -41,7 +41,7 @@ internal class AuthRepositoryImpl @Inject constructor( override suspend fun login(providerToken: String): Result = suspendRunCatching { val loginResponse = authRemoteDataSource.login( providerToken = providerToken, - loginRequestDto = systemDataSource.toLoginRequestDto() + loginRequestDto = deviceInfoProvider.toLoginRequestDto() ).data!! tokenManager.saveTokens(loginResponse.accessToken, loginResponse.refreshToken) @@ -70,7 +70,7 @@ internal class AuthRepositoryImpl @Inject constructor( userInfoManager.clear() } - private fun SystemDataSource.toLoginRequestDto() = LoginRequestDto( + private fun DeviceInfoProvider.toLoginRequestDto() = LoginRequestDto( provider = this.getProvider(), role = this.getRole(), deviceName = this.getDeviceName(), diff --git a/data/config/src/main/java/com/hilingual/data/config/constant/ConfigConstants.kt b/data/config/src/main/java/com/hilingual/data/config/constant/ConfigConstants.kt index e6dbfc112..e5362162c 100644 --- a/data/config/src/main/java/com/hilingual/data/config/constant/ConfigConstants.kt +++ b/data/config/src/main/java/com/hilingual/data/config/constant/ConfigConstants.kt @@ -19,5 +19,3 @@ const val MIN_FETCH_INTERVAL_SECONDS = 3600L const val KEY_MIN_FORCE_VERSION = "min_force_version" const val KEY_LATEST_VERSION = "latest_version" - -const val DEFAULT_VERSION = "0.0.0" diff --git a/data/config/src/main/java/com/hilingual/data/config/datasourceimpl/RemoteConfigDataSourceImpl.kt b/data/config/src/main/java/com/hilingual/data/config/datasourceimpl/RemoteConfigDataSourceImpl.kt index 0ebfa6ad3..9d062c884 100644 --- a/data/config/src/main/java/com/hilingual/data/config/datasourceimpl/RemoteConfigDataSourceImpl.kt +++ b/data/config/src/main/java/com/hilingual/data/config/datasourceimpl/RemoteConfigDataSourceImpl.kt @@ -13,11 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + package com.hilingual.data.config.datasourceimpl import com.google.firebase.remoteconfig.FirebaseRemoteConfig -import com.hilingual.core.common.extension.onLogFailure -import com.hilingual.data.config.constant.DEFAULT_VERSION +import com.hilingual.core.common.constant.STABLE_VERSION import com.hilingual.data.config.constant.KEY_LATEST_VERSION import com.hilingual.data.config.constant.KEY_MIN_FORCE_VERSION import com.hilingual.data.config.datasource.ConfigRemoteDataSource @@ -31,14 +31,12 @@ internal class RemoteConfigDataSourceImpl @Inject constructor( ) : ConfigRemoteDataSource { override suspend fun getAppVersionInfo(): AppVersionInfo { - runCatching { - remoteConfig.fetchAndActivate().await() - }.onLogFailure { } + remoteConfig.fetchAndActivate().await() val minForceVersionStr = remoteConfig.getString(KEY_MIN_FORCE_VERSION) - .takeIf { it.isNotBlank() } ?: DEFAULT_VERSION + .takeIf { it.isNotBlank() } ?: STABLE_VERSION val latestVersionStr = remoteConfig.getString(KEY_LATEST_VERSION) - .takeIf { it.isNotBlank() } ?: DEFAULT_VERSION + .takeIf { it.isNotBlank() } ?: STABLE_VERSION return AppVersionInfo( minForceVersion = AppVersion(minForceVersionStr), diff --git a/data/config/src/main/java/com/hilingual/data/config/di/ConfigModule.kt b/data/config/src/main/java/com/hilingual/data/config/di/DataSourceModule.kt similarity index 79% rename from data/config/src/main/java/com/hilingual/data/config/di/ConfigModule.kt rename to data/config/src/main/java/com/hilingual/data/config/di/DataSourceModule.kt index d087a0e1e..1db8b6895 100644 --- a/data/config/src/main/java/com/hilingual/data/config/di/ConfigModule.kt +++ b/data/config/src/main/java/com/hilingual/data/config/di/DataSourceModule.kt @@ -17,8 +17,6 @@ package com.hilingual.data.config.di import com.hilingual.data.config.datasource.ConfigRemoteDataSource import com.hilingual.data.config.datasourceimpl.RemoteConfigDataSourceImpl -import com.hilingual.data.config.repository.ConfigRepository -import com.hilingual.data.config.repositoryimpl.ConfigRepositoryImpl import dagger.Binds import dagger.Module import dagger.hilt.InstallIn @@ -27,17 +25,11 @@ import javax.inject.Singleton @Module @InstallIn(SingletonComponent::class) -internal abstract class ConfigModule { +internal abstract class DataSourceModule { @Binds @Singleton abstract fun bindConfigRemoteDataSource( impl: RemoteConfigDataSourceImpl ): ConfigRemoteDataSource - - @Binds - @Singleton - abstract fun bindConfigRepository( - impl: ConfigRepositoryImpl - ): ConfigRepository } diff --git a/data/config/src/main/java/com/hilingual/data/config/di/FirebaseModule.kt b/data/config/src/main/java/com/hilingual/data/config/di/FirebaseModule.kt index 9c21bd0aa..b2e7c0121 100644 --- a/data/config/src/main/java/com/hilingual/data/config/di/FirebaseModule.kt +++ b/data/config/src/main/java/com/hilingual/data/config/di/FirebaseModule.kt @@ -19,7 +19,7 @@ import com.google.firebase.Firebase import com.google.firebase.remoteconfig.FirebaseRemoteConfig import com.google.firebase.remoteconfig.remoteConfig import com.google.firebase.remoteconfig.remoteConfigSettings -import com.hilingual.data.config.constant.DEFAULT_VERSION +import com.hilingual.core.common.constant.STABLE_VERSION import com.hilingual.data.config.constant.KEY_LATEST_VERSION import com.hilingual.data.config.constant.KEY_MIN_FORCE_VERSION import com.hilingual.data.config.constant.MIN_FETCH_INTERVAL_SECONDS @@ -44,8 +44,8 @@ object FirebaseModule { remoteConfig.setDefaultsAsync( mapOf( - KEY_MIN_FORCE_VERSION to DEFAULT_VERSION, - KEY_LATEST_VERSION to DEFAULT_VERSION + KEY_MIN_FORCE_VERSION to STABLE_VERSION, + KEY_LATEST_VERSION to STABLE_VERSION ) ) diff --git a/data/config/src/main/java/com/hilingual/data/config/di/RepositoryModule.kt b/data/config/src/main/java/com/hilingual/data/config/di/RepositoryModule.kt new file mode 100644 index 000000000..24e39a1bd --- /dev/null +++ b/data/config/src/main/java/com/hilingual/data/config/di/RepositoryModule.kt @@ -0,0 +1,20 @@ +package com.hilingual.data.config.di + +import com.hilingual.data.config.repository.ConfigRepository +import com.hilingual.data.config.repositoryimpl.ConfigRepositoryImpl +import dagger.Binds +import dagger.Module +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +internal abstract class RepositoryModule { + + @Binds + @Singleton + abstract fun bindConfigRepository( + impl: ConfigRepositoryImpl + ): ConfigRepository +} diff --git a/presentation/mypage/src/main/java/com/hilingual/presentation/mypage/MyPageScreen.kt b/presentation/mypage/src/main/java/com/hilingual/presentation/mypage/MyPageScreen.kt index aa14839d6..a5223e521 100644 --- a/presentation/mypage/src/main/java/com/hilingual/presentation/mypage/MyPageScreen.kt +++ b/presentation/mypage/src/main/java/com/hilingual/presentation/mypage/MyPageScreen.kt @@ -39,12 +39,12 @@ import androidx.compose.ui.res.vectorResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle -import com.hilingual.core.common.provider.LocalAppRestarter import com.hilingual.core.common.constant.UrlConstant import com.hilingual.core.common.extension.collectSideEffect import com.hilingual.core.common.extension.launchCustomTabs import com.hilingual.core.common.extension.statusBarColor import com.hilingual.core.common.model.HilingualMessage +import com.hilingual.core.common.provider.LocalAppRestarter import com.hilingual.core.common.trigger.LocalDialogTrigger import com.hilingual.core.common.trigger.LocalMessageController import com.hilingual.core.common.util.UiState @@ -87,6 +87,7 @@ internal fun MyPageRoute( paddingValues = paddingValues, profileImageUrl = state.data.profileImageUrl, profileNickname = state.data.profileNickname, + appVersion = state.data.appVersion, onProfileEditClick = navigateToProfileEdit, onMyFeedClick = navigateToMyFeedProfile, onAlarmClick = navigateToAlarm, @@ -107,6 +108,7 @@ private fun MyPageScreen( paddingValues: PaddingValues, profileImageUrl: String, profileNickname: String, + appVersion: String, onProfileEditClick: () -> Unit, onMyFeedClick: () -> Unit, onAlarmClick: () -> Unit, @@ -191,7 +193,7 @@ private fun MyPageScreen( title = "버전 정보", trailingContent = { Text( - text = context.packageManager.getPackageInfo(context.packageName, 0).versionName ?: "", + text = appVersion, color = HilingualTheme.colors.gray400, style = HilingualTheme.typography.bodyR14, modifier = Modifier.padding(end = 4.dp) @@ -240,6 +242,7 @@ private fun MyPageScreenPreview() { paddingValues = PaddingValues(), profileImageUrl = "", profileNickname = "하링이", + appVersion = "1.0.0", onProfileEditClick = {}, onMyFeedClick = {}, onAlarmClick = {}, diff --git a/presentation/mypage/src/main/java/com/hilingual/presentation/mypage/MyPageUiState.kt b/presentation/mypage/src/main/java/com/hilingual/presentation/mypage/MyPageUiState.kt index 8306b8258..d4ee8894e 100644 --- a/presentation/mypage/src/main/java/com/hilingual/presentation/mypage/MyPageUiState.kt +++ b/presentation/mypage/src/main/java/com/hilingual/presentation/mypage/MyPageUiState.kt @@ -16,10 +16,12 @@ package com.hilingual.presentation.mypage import androidx.compose.runtime.Immutable +import com.hilingual.core.common.constant.STABLE_VERSION @Immutable internal data class MyPageUiState( val profileImageUrl: String = "", val profileNickname: String = "", - val profileProvider: String = "" + val profileProvider: String = "", + val appVersion: String = STABLE_VERSION ) diff --git a/presentation/mypage/src/main/java/com/hilingual/presentation/mypage/MyPageViewModel.kt b/presentation/mypage/src/main/java/com/hilingual/presentation/mypage/MyPageViewModel.kt index dd425fd8b..ea0711ac3 100644 --- a/presentation/mypage/src/main/java/com/hilingual/presentation/mypage/MyPageViewModel.kt +++ b/presentation/mypage/src/main/java/com/hilingual/presentation/mypage/MyPageViewModel.kt @@ -19,6 +19,7 @@ import android.net.Uri import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.hilingual.core.common.extension.onLogFailure +import com.hilingual.core.common.app.DeviceInfoProvider import com.hilingual.core.common.util.UiState import com.hilingual.data.auth.repository.AuthRepository import com.hilingual.data.user.repository.UserRepository @@ -36,7 +37,8 @@ import javax.inject.Inject @HiltViewModel internal class MyPageViewModel @Inject constructor( private val userRepository: UserRepository, - private val authRepository: AuthRepository + private val authRepository: AuthRepository, + private val deviceInfoProvider: DeviceInfoProvider ) : ViewModel() { private val _uiState = MutableStateFlow>(UiState.Loading) val uiState: StateFlow> = _uiState.asStateFlow() @@ -57,7 +59,8 @@ internal class MyPageViewModel @Inject constructor( MyPageUiState( profileImageUrl = userInfo.profileImg, profileNickname = userInfo.nickname, - profileProvider = userInfo.provider + profileProvider = userInfo.provider, + appVersion = deviceInfoProvider.getAppVersion() ) ) } diff --git a/presentation/splash/src/main/java/com/hilingual/presentation/splash/SplashViewModel.kt b/presentation/splash/src/main/java/com/hilingual/presentation/splash/SplashViewModel.kt index 324bda1e9..d8e149b41 100644 --- a/presentation/splash/src/main/java/com/hilingual/presentation/splash/SplashViewModel.kt +++ b/presentation/splash/src/main/java/com/hilingual/presentation/splash/SplashViewModel.kt @@ -15,18 +15,20 @@ */ package com.hilingual.presentation.splash -import android.content.Context import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.hilingual.core.common.extension.onLogFailure +import com.hilingual.core.common.app.DeviceInfoProvider import com.hilingual.data.auth.repository.AuthRepository -import com.hilingual.data.config.constant.DEFAULT_VERSION import com.hilingual.data.config.model.AppVersion import com.hilingual.data.config.model.UpdateState import com.hilingual.data.config.repository.ConfigRepository import com.hilingual.data.user.repository.UserRepository +import com.hilingual.presentation.splash.SplashSideEffect.NavigateToAuth +import com.hilingual.presentation.splash.SplashSideEffect.NavigateToHome +import com.hilingual.presentation.splash.SplashSideEffect.NavigateToStore import dagger.hilt.android.lifecycle.HiltViewModel -import dagger.hilt.android.qualifiers.ApplicationContext +import kotlinx.coroutines.async import kotlinx.coroutines.channels.BufferOverflow import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableSharedFlow @@ -35,15 +37,14 @@ import kotlinx.coroutines.flow.asSharedFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update import kotlinx.coroutines.launch -import timber.log.Timber import javax.inject.Inject @HiltViewModel internal class SplashViewModel @Inject constructor( - @ApplicationContext private val context: Context, private val authRepository: AuthRepository, private val userRepository: UserRepository, - private val configRepository: ConfigRepository + private val configRepository: ConfigRepository, + private val deviceInfoProvider: DeviceInfoProvider ) : ViewModel() { private val _uiState = MutableStateFlow(SplashUiState()) @@ -61,7 +62,7 @@ internal class SplashViewModel @Inject constructor( } private fun checkAppVersion() { - val currentVersion = AppVersion(getAppVersionName()) + val currentVersion = AppVersion(deviceInfoProvider.getAppVersion()) viewModelScope.launch { configRepository.getAppVersionInfo() @@ -75,30 +76,28 @@ internal class SplashViewModel @Inject constructor( } } - private fun getAppVersionName(): String = - runCatching { - context.packageManager.getPackageInfo(context.packageName, 0).versionName - }.onFailure { Timber.e(it) }.getOrNull() ?: DEFAULT_VERSION - private fun checkLoginStatus() { viewModelScope.launch { - val accessToken = authRepository.getAccessToken() - val refreshToken = authRepository.getRefreshToken() - val isRegistered = userRepository.getRegisterStatus() + val isLoggedIn = runCatching { + val accessTokenDeferred = async { authRepository.getAccessToken() } + val refreshTokenDeferred = async { authRepository.getRefreshToken() } + val isRegisteredDeferred = async { userRepository.getRegisterStatus() } + + val accessToken = accessTokenDeferred.await() + val refreshToken = refreshTokenDeferred.await() + val isRegistered = isRegisteredDeferred.await() - val isLoggedIn = !accessToken.isNullOrEmpty() && !refreshToken.isNullOrEmpty() && isRegistered - val effect = - if (isLoggedIn) SplashSideEffect.NavigateToHome else SplashSideEffect.NavigateToAuth + }.getOrElse { false } delay(1400L) - _sideEffect.tryEmit(effect) + _sideEffect.tryEmit(if (isLoggedIn) NavigateToHome else NavigateToAuth) } } fun onUpdateConfirm() { - _sideEffect.tryEmit(SplashSideEffect.NavigateToStore) + _sideEffect.tryEmit(NavigateToStore) } fun onUpdateSkip() {