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
)
}

View file

@ -0,0 +1,28 @@
package io.element.android.x
import androidx.compose.runtime.Composable
import com.ramcosta.composedestinations.annotation.Destination
import com.ramcosta.composedestinations.annotation.RootNavGraph
import com.ramcosta.composedestinations.navigation.DestinationsNavigator
import io.element.android.x.destinations.RoomListScreenNavigationDestination
import io.element.android.x.features.login.LoginScreen
import io.element.android.x.features.roomlist.RoomListScreen
@Destination
@Composable
fun LoginScreenNavigation(navigator: DestinationsNavigator) {
LoginScreen(
onLoginWithSuccess = {
navigator.clearBackStack(RoomListScreenNavigationDestination)
}
)
}
@RootNavGraph(start = true)
@Destination
@Composable
fun RoomListScreenNavigation() {
RoomListScreen()
}