Refactor some modules + add dependency management (still WIP)
This commit is contained in:
parent
d1c80438d5
commit
6f0d8936eb
89 changed files with 854 additions and 580 deletions
|
|
@ -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
|
||||
)
|
||||
}
|
||||
|
|
|
|||
28
app/src/main/java/io/element/android/x/Navigation.kt
Normal file
28
app/src/main/java/io/element/android/x/Navigation.kt
Normal 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()
|
||||
}
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue