11package com.moneymong.moneymong
22
3+ import android.content.Intent
4+ import android.net.Uri
35import android.os.Bundle
4- import android.util.Log
56import androidx.activity.ComponentActivity
67import androidx.activity.compose.setContent
7- import androidx.compose.material3.Text
8- import androidx.compose.runtime.Composable
9- import androidx.compose.runtime.MutableState
8+ import androidx.activity.viewModels
9+ import androidx.compose.runtime.getValue
1010import androidx.compose.runtime.mutableStateOf
11- import androidx.compose.ui.Modifier
11+ import androidx.compose.ui.platform.LocalContext
12+ import androidx.lifecycle.compose.LifecycleStartEffect
1213import com.moneymong.moneymong.common.event.EventTracker
13- import dagger.hilt.android.AndroidEntryPoint
14+ import com.moneymong.moneymong.design_system.error.ErrorDialog
1415import com.moneymong.moneymong.design_system.theme.MMTheme
15- import com.moneymong.moneymong.domain.repository.TokenRepository
16- import com.moneymong.moneymong.domain.repository.user.UserRepository
17- import com.moneymong.moneymong.feature.sign.LoginScreen
18- import com.moneymong.moneymong.feature.sign.SignUpScreen
19- import com.moneymong.moneymong.ocr.OCRScreen
16+ import com.moneymong.moneymong.domain.repository.token.TokenRepository
2017import com.moneymong.moneymong.ui.MoneyMongApp
21- import kotlinx.coroutines.CoroutineDispatcher
18+ import dagger.hilt.android.AndroidEntryPoint
2219import kotlinx.coroutines.CoroutineScope
2320import kotlinx.coroutines.Dispatchers
24- import kotlinx.coroutines.coroutineScope
2521import kotlinx.coroutines.launch
22+ import org.orbitmvi.orbit.compose.collectAsState
2623import javax.inject.Inject
27- import kotlin.coroutines.CoroutineContext
2824
2925@AndroidEntryPoint
3026class MainActivity : ComponentActivity () {
27+ private val viewModel: MainViewModel by viewModels()
3128
3229 @Inject
3330 lateinit var tokenRepository: TokenRepository
@@ -41,7 +38,32 @@ class MainActivity : ComponentActivity() {
4138 eventTracker.initialize()
4239
4340 setContent {
41+ val context = LocalContext .current
42+ val state by viewModel.collectAsState()
43+
44+ val shouldUpdate = state.shouldUpdate
45+ LifecycleStartEffect (key1 = Unit , effects = {
46+ viewModel.checkShouldUpdate(version = BuildConfig .VERSION_NAME )
47+ onStopOrDispose { }
48+ })
49+
4450 MMTheme {
51+ if (shouldUpdate) {
52+ ErrorDialog (
53+ message = " 안정적인 머니몽 사용을 위해\n 최신 버전으로 업데이트가 필요해요!" ,
54+ confirmText = " 업데이트" ,
55+ onConfirm = {
56+ val playStoreUrl =
57+ " https://play.google.com/store/apps/details?id=${BuildConfig .APPLICATION_ID } "
58+ val intent = Intent (Intent .ACTION_VIEW ).apply {
59+ data = Uri .parse(playStoreUrl)
60+ setPackage(" com.android.vending" )
61+ }
62+ context.startActivity(intent)
63+ }
64+ )
65+ }
66+
4567 MoneyMongApp (expired.value) {
4668 expired.value = false
4769 }
@@ -54,12 +76,4 @@ class MainActivity : ComponentActivity() {
5476 }
5577 }
5678 }
57- }
58-
59- @Composable
60- fun Greeting (name : String , modifier : Modifier = Modifier ) {
61- Text (
62- text = " Hello $name !" ,
63- modifier = modifier
64- )
6579}
0 commit comments