-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathMainActivity.kt
More file actions
87 lines (81 loc) · 3.26 KB
/
MainActivity.kt
File metadata and controls
87 lines (81 loc) · 3.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package com.kuit.ourmenu
import android.content.Intent
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import androidx.lifecycle.lifecycleScope
import coil3.imageLoader
import com.kuit.ourmenu.ui.navigator.MainNavHost
import com.kuit.ourmenu.ui.navigator.MainTab
import com.kuit.ourmenu.ui.navigator.component.MainBottomBar
import com.kuit.ourmenu.ui.navigator.rememberMainNavigator
import com.kuit.ourmenu.ui.onboarding.screen.SplashScreen
import com.kuit.ourmenu.ui.theme.NeutralWhite
import com.kuit.ourmenu.ui.theme.OurMenuTheme
import com.kuit.ourmenu.utils.auth.TokenManager
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.collections.immutable.toPersistentList
import kotlinx.coroutines.launch
import javax.inject.Inject
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
@Inject
lateinit var tokenManager: TokenManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
// 로그아웃 이벤트 구독
lifecycleScope.launch {
tokenManager.logoutEvent.collect {
// Activity 스택을 모두 클리어하고 MainActivity를 다시 시작
val intent = Intent(this@MainActivity, MainActivity::class.java).apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
startActivity(intent)
finish()
}
}
setContent {
var showSplash by remember { mutableStateOf(true) }
val navController = rememberMainNavigator()
OurMenuTheme {
if (showSplash) {
SplashScreen(
imageLoader = imageLoader,
) {
showSplash = false
}
} else {
Scaffold(
bottomBar = {
MainBottomBar(
modifier = Modifier
.background(NeutralWhite)
.navigationBarsPadding(),
visible = navController.shouldShowBottomBar(),
tabs = MainTab.entries.toPersistentList(),
currentTab = navController.currentTab,
onTabSelected = { navController.navigate(it) }
)
},
content = { innerPadding ->
MainNavHost(
navController = navController,
padding = innerPadding
)
}
)
}
}
}
}
}