refactor(folio): build AppGraph from platform entry points

MainActivity (Android) and MainViewController (iOS) now own the
suspend DriverFactory.create() and feed the resulting LedgerDatabase
into Metro's createGraphFactory<AppGraph.Factory>().
This commit is contained in:
pj committed 2026-04-26 16:05:58 +07:00
1 parent 02f28aeac1
commit 85e7d7ad48
2 files changed
+14 -2

No files matched your search

@@ -4,11 +4,17 @@ import android.os.Bundle
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent import androidx.activity.compose.setContent
import app.folio.core.data.DriverFactory import app.folio.core.data.DriverFactory
import app.folio.db.LedgerDatabase
import app.folio.di.AppGraph
import dev.zacsweers.metro.createGraphFactory
class MainActivity : ComponentActivity() { class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
val driverFactory = DriverFactory(applicationContext) val driverFactory = DriverFactory(applicationContext)
setContent { App(driverFactory) } val graphFactory = createGraphFactory<AppGraph.Factory>()
setContent {
App(graphBuilder = { graphFactory.create(LedgerDatabase(driverFactory.create())) })
}
} }
} }
@@ -2,7 +2,10 @@ package app.folio
import androidx.compose.ui.window.ComposeUIViewController import androidx.compose.ui.window.ComposeUIViewController
import app.folio.core.data.DriverFactory import app.folio.core.data.DriverFactory
import app.folio.db.LedgerDatabase
import app.folio.di.AppGraph
import app.folio.ui.IosBackGesture import app.folio.ui.IosBackGesture
import dev.zacsweers.metro.createGraphFactory
import kotlinx.cinterop.BetaInteropApi import kotlinx.cinterop.BetaInteropApi
import kotlinx.cinterop.ExperimentalForeignApi import kotlinx.cinterop.ExperimentalForeignApi
import kotlinx.cinterop.ObjCAction import kotlinx.cinterop.ObjCAction
@@ -28,7 +31,10 @@ private val backGestureTarget = BackGestureTarget()
@OptIn(ExperimentalForeignApi::class) @OptIn(ExperimentalForeignApi::class)
fun MainViewController(): UIViewController { fun MainViewController(): UIViewController {
val driverFactory = DriverFactory() val driverFactory = DriverFactory()
val vc = ComposeUIViewController { App(driverFactory) } val graphFactory = createGraphFactory<AppGraph.Factory>()
val vc = ComposeUIViewController {
App(graphBuilder = { graphFactory.create(LedgerDatabase(driverFactory.create())) })
}
val gesture = UIScreenEdgePanGestureRecognizer( val gesture = UIScreenEdgePanGestureRecognizer(
target = backGestureTarget, target = backGestureTarget,
action = NSSelectorFromString("handleGesture:"), action = NSSelectorFromString("handleGesture:"),