From 783fb9804e441997a575a02d1a688bef50fe5787 Mon Sep 17 00:00:00 2001 From: PJ Date: Sun, 26 Apr 2026 15:59:57 +0700 Subject: [PATCH] feat(folio-core): scope Repository and SqlLedgerStore as @SingleIn(AppScope) Both are app-wide singletons so the SqlDelight-backed flows remain shared across the graph. --- .../src/commonMain/kotlin/app/folio/core/data/Repository.kt | 3 +++ .../commonMain/kotlin/app/folio/core/data/SqlLedgerStore.kt | 3 +++ 2 files changed, 6 insertions(+) diff --git a/examples/folio/core/src/commonMain/kotlin/app/folio/core/data/Repository.kt b/examples/folio/core/src/commonMain/kotlin/app/folio/core/data/Repository.kt index 5c0a3d4..020407e 100644 --- a/examples/folio/core/src/commonMain/kotlin/app/folio/core/data/Repository.kt +++ b/examples/folio/core/src/commonMain/kotlin/app/folio/core/data/Repository.kt @@ -1,9 +1,12 @@ package app.folio.core.data import app.folio.core.platform.Platform +import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Inject +import dev.zacsweers.metro.SingleIn import kotlinx.coroutines.flow.StateFlow +@SingleIn(AppScope::class) @Inject class Repository(private val store: LedgerStore) { val accounts: StateFlow> = store.accounts diff --git a/examples/folio/core/src/commonMain/kotlin/app/folio/core/data/SqlLedgerStore.kt b/examples/folio/core/src/commonMain/kotlin/app/folio/core/data/SqlLedgerStore.kt index 9fab65f..5720b71 100644 --- a/examples/folio/core/src/commonMain/kotlin/app/folio/core/data/SqlLedgerStore.kt +++ b/examples/folio/core/src/commonMain/kotlin/app/folio/core/data/SqlLedgerStore.kt @@ -5,7 +5,9 @@ import app.cash.sqldelight.coroutines.asFlow import app.cash.sqldelight.coroutines.mapToList import app.cash.sqldelight.coroutines.mapToOneOrNull import app.folio.db.LedgerDatabase +import dev.zacsweers.metro.AppScope import dev.zacsweers.metro.Inject +import dev.zacsweers.metro.SingleIn import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.SupervisorJob @@ -14,6 +16,7 @@ import kotlinx.coroutines.flow.StateFlow import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.stateIn +@SingleIn(AppScope::class) @Inject class SqlLedgerStore(db: LedgerDatabase) : LedgerStore { private val queries = db.ledgerQueries