Refactor some modules + add dependency management (still WIP)

This commit is contained in:
ganfra 2022-10-27 19:24:57 +02:00
parent d1c80438d5
commit 6f0d8936eb
89 changed files with 854 additions and 580 deletions

View file

@ -1,41 +1,41 @@
package io.element.android.x
import android.content.Intent
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.compose.setContent
import androidx.activity.viewModels
import androidx.lifecycle.lifecycleScope
import io.element.android.x.ui.screen.login.LoginActivity
import io.element.android.x.ui.screen.roomlist.RoomListActivity
import kotlinx.coroutines.launch
import androidx.compose.runtime.Composable
import com.ramcosta.composedestinations.DestinationsNavHost
import com.ramcosta.composedestinations.rememberNavHostEngine
import io.element.android.x.destinations.LoginScreenNavigationDestination
import io.element.android.x.libraries.designsystem.ElementXTheme
import kotlinx.coroutines.runBlocking
class MainActivity : ComponentActivity() {
private val launcher =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (it.resultCode == RESULT_OK) {
// Launch the room Activity and finish
startRoomActivityAndFinish()
} else {
finish()
}
}
private val viewModel: MainViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
lifecycleScope.launch {
if (viewModel.hasSession()) {
startRoomActivityAndFinish()
} else {
launcher.launch(Intent(this@MainActivity, LoginActivity::class.java))
setContent {
ElementXTheme {
MainScreen(viewModel = viewModel)
}
}
}
private fun startRoomActivityAndFinish() {
startActivity(Intent(this, RoomListActivity::class.java))
finish()
}
}
@Composable
private fun MainScreen(viewModel: MainViewModel) {
val engine = rememberNavHostEngine()
val navController = engine.rememberNavController()
val startRoute = runBlocking {
if (!viewModel.hasSession()) LoginScreenNavigationDestination else NavGraphs.root.startRoute
}
DestinationsNavHost(
engine = engine,
navController = navController,
navGraph = NavGraphs.root,
startRoute = startRoute
)
}