mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-03 19:47:10 +00:00
refactor(folio): resolve ViewModels through LocalAppGraph in routes
Each *Route composable now reads the AppGraph from CompositionLocal and pulls its VM via the appropriate accessor or AssistedFactory.
This commit is contained in:
1 parent
9cadf27301
commit
02f28aeac1
5 files changed
+15
-15
No files matched your search
+3
-3
@@ -12,7 +12,7 @@ import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.testTag
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import app.folio.LocalAppComponent
|
||||
import app.folio.di.LocalAppGraph
|
||||
import app.folio.ui.BackHandler
|
||||
import app.folio.ui.component.AppButton
|
||||
import app.folio.ui.component.BackButton
|
||||
@@ -27,8 +27,8 @@ import app.folio.ui.theme.Type
|
||||
|
||||
@Composable
|
||||
fun AddAccountRoute() {
|
||||
val component = LocalAppComponent.current
|
||||
val vm: AddAccountViewModel = viewModel { AddAccountViewModel(component.repository, component.navigator) }
|
||||
val graph = LocalAppGraph.current
|
||||
val vm: AddAccountViewModel = viewModel { graph.addAccountViewModel }
|
||||
val state by vm.state.collectAsState()
|
||||
AddAccountScreen(state = state, onEvent = vm::onEvent)
|
||||
}
|
||||
|
||||
+3
-3
@@ -15,7 +15,7 @@ import androidx.compose.ui.platform.testTag
|
||||
import androidx.compose.ui.text.input.KeyboardType
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import app.folio.LocalAppComponent
|
||||
import app.folio.di.LocalAppGraph
|
||||
import app.folio.ui.component.AppButton
|
||||
import app.folio.ui.component.ButtonStyle
|
||||
import app.folio.ui.component.Card
|
||||
@@ -28,8 +28,8 @@ import app.folio.ui.theme.Type
|
||||
|
||||
@Composable
|
||||
fun LoginRoute() {
|
||||
val component = LocalAppComponent.current
|
||||
val vm: LoginViewModel = viewModel { LoginViewModel(component.repository, component.navigator) }
|
||||
val graph = LocalAppGraph.current
|
||||
val vm: LoginViewModel = viewModel { graph.loginViewModel }
|
||||
val state by vm.state.collectAsState()
|
||||
LoginScreen(state = state, onEvent = vm::onEvent)
|
||||
}
|
||||
|
||||
+3
-3
@@ -23,7 +23,7 @@ import androidx.compose.ui.semantics.Role
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import app.folio.LocalAppComponent
|
||||
import app.folio.di.LocalAppGraph
|
||||
import app.folio.util.balanceOf
|
||||
import app.folio.util.formatCents
|
||||
import app.folio.util.initialsOf
|
||||
@@ -41,8 +41,8 @@ import app.folio.ui.theme.Type
|
||||
|
||||
@Composable
|
||||
fun HomeRoute() {
|
||||
val component = LocalAppComponent.current
|
||||
val vm: HomeViewModel = viewModel { HomeViewModel(component.repository, component.navigator) }
|
||||
val graph = LocalAppGraph.current
|
||||
val vm: HomeViewModel = viewModel { graph.homeViewModel }
|
||||
val state by vm.state.collectAsState()
|
||||
HomeScreen(state = state, onEvent = vm::onEvent)
|
||||
}
|
||||
|
||||
+3
-3
@@ -13,8 +13,8 @@ import androidx.compose.ui.text.input.KeyboardType
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import app.folio.LocalAppComponent
|
||||
import app.folio.core.data.TxnType
|
||||
import app.folio.di.LocalAppGraph
|
||||
import app.folio.ui.BackHandler
|
||||
import app.folio.ui.component.AppButton
|
||||
import app.folio.ui.component.BackButton
|
||||
@@ -30,9 +30,9 @@ import app.folio.ui.theme.Type
|
||||
|
||||
@Composable
|
||||
fun AddTransactionRoute(accountId: String) {
|
||||
val component = LocalAppComponent.current
|
||||
val graph = LocalAppGraph.current
|
||||
val vm: AddTransactionViewModel = viewModel(key = "addTxn:$accountId") {
|
||||
AddTransactionViewModel(component.repository, component.navigator, accountId)
|
||||
graph.addTransactionViewModelFactory.create(accountId)
|
||||
}
|
||||
val state by vm.state.collectAsState()
|
||||
AddTransactionScreen(state = state, onEvent = vm::onEvent)
|
||||
|
||||
+3
-3
@@ -22,8 +22,8 @@ import androidx.compose.ui.platform.testTag
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import app.folio.LocalAppComponent
|
||||
import app.folio.core.data.TxnType
|
||||
import app.folio.di.LocalAppGraph
|
||||
import app.folio.util.balanceOf
|
||||
import app.folio.util.formatCents
|
||||
import app.folio.util.formatDate
|
||||
@@ -42,9 +42,9 @@ import app.folio.ui.theme.Type
|
||||
|
||||
@Composable
|
||||
fun LedgerRoute(accountId: String) {
|
||||
val component = LocalAppComponent.current
|
||||
val graph = LocalAppGraph.current
|
||||
val vm: LedgerViewModel = viewModel(key = "ledger:$accountId") {
|
||||
LedgerViewModel(component.repository, component.navigator, accountId)
|
||||
graph.ledgerViewModelFactory.create(accountId)
|
||||
}
|
||||
val state by vm.state.collectAsState()
|
||||
LedgerScreen(state = state, onEvent = vm::onEvent)
|
||||
|
||||
Reference in new issue
Block a user