1
0

feat(orb): implement orb animation

Signed-off-by: Alan Brault <alan.brault@visus.io>
This commit is contained in:
2026-01-21 11:05:33 -05:00
parent 063ec3b7a0
commit 3f6bd6c128
39 changed files with 2929 additions and 653 deletions

View File

@@ -5,12 +5,12 @@ import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import io.visus.orbis.core.ui.OrbisTheme
import io.visus.orbis.ui.main.MainScreen
import io.visus.orbis.ui.main.MainViewModel
import io.visus.orbis.feature.orb.ui.OrbScreen
import io.visus.orbis.feature.orb.ui.OrbViewModel
import org.koin.androidx.viewmodel.ext.android.viewModel
class MainActivity : ComponentActivity() {
private val viewModel: MainViewModel by viewModel()
private val orbViewModel: OrbViewModel by viewModel()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -18,7 +18,7 @@ class MainActivity : ComponentActivity() {
enableEdgeToEdge()
setContent {
OrbisTheme {
MainScreen(viewModel = viewModel)
OrbScreen(viewModel = orbViewModel)
}
}
}

View File

@@ -1,9 +1,6 @@
package io.visus.orbis.di
import io.visus.orbis.ui.main.MainViewModel
import org.koin.core.module.dsl.viewModelOf
import org.koin.dsl.module
val appModule = module {
viewModelOf(::MainViewModel)
}

View File

@@ -1,42 +0,0 @@
package io.visus.orbis.ui.main
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import io.visus.orbis.core.ui.OrbisTheme
@Composable
fun MainScreen(
viewModel: MainViewModel
) {
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
MainScreenContent(uiState = uiState)
}
@Composable
private fun MainScreenContent(
uiState: MainUiState,
modifier: Modifier = Modifier
) {
Scaffold(modifier = modifier.fillMaxSize()) { innerPadding ->
Text(
text = "Hello ${uiState.greeting}!",
modifier = Modifier.padding(innerPadding)
)
}
}
@Preview(showBackground = true)
@Composable
private fun MainScreenPreview() {
OrbisTheme {
MainScreenContent(uiState = MainUiState())
}
}

View File

@@ -1,21 +0,0 @@
package io.visus.orbis.ui.main
import androidx.lifecycle.ViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.update
data class MainUiState(
val greeting: String = "Android"
)
class MainViewModel : ViewModel() {
private val _uiState = MutableStateFlow(MainUiState())
val uiState: StateFlow<MainUiState> = _uiState.asStateFlow()
fun updateGreeting(name: String) {
_uiState.update { it.copy(greeting = name) }
}
}