-
Notifications
You must be signed in to change notification settings - Fork 77
/
MainActivity.kt
65 lines (51 loc) · 2.29 KB
/
MainActivity.kt
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
package com.zhuinden.simplestackextensionsample.app
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.zhuinden.simplestack.History
import com.zhuinden.simplestack.SimpleStateChanger
import com.zhuinden.simplestack.StateChange
import com.zhuinden.simplestack.navigator.Navigator
import com.zhuinden.simplestackextensions.fragments.DefaultFragmentStateChanger
import com.zhuinden.simplestackextensions.servicesktx.get
import com.zhuinden.simplestackextensionsample.R
import com.zhuinden.simplestackextensionsample.databinding.MainActivityBinding
import com.zhuinden.simplestackextensionsample.features.login.LoginKey
import com.zhuinden.simplestackextensionsample.features.profile.ProfileKey
class MainActivity : AppCompatActivity(), SimpleStateChanger.NavigationHandler {
private lateinit var fragmentStateChanger: DefaultFragmentStateChanger
private lateinit var authenticationManager: AuthenticationManager
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding = MainActivityBinding.inflate(layoutInflater)
setContentView(binding.root)
fragmentStateChanger = DefaultFragmentStateChanger(supportFragmentManager, R.id.step9Root)
val app = application as CustomApplication
val globalServices = app.globalServices
authenticationManager = globalServices.get()
Navigator.configure()
.setStateChanger(SimpleStateChanger(this))
.setScopedServices(ServiceProvider())
.setGlobalServices(globalServices)
.install(
this, binding.step9Root, History.of(
when {
authenticationManager.isAuthenticated() -> ProfileKey(authenticationManager.getAuthenticatedUser())
else -> LoginKey
}
))
}
override fun onBackPressed() {
if (!Navigator.onBackPressed(this)) {
super.onBackPressed()
}
}
override fun onNavigationEvent(stateChange: StateChange) {
fragmentStateChanger.handleStateChange(stateChange)
}
override fun onDestroy() {
if (isFinishing) {
authenticationManager.clearRegistration() // just for sample repeat sake
}
super.onDestroy()
}
}