From a41f24087324d412869f070ba621f339348bb1b2 Mon Sep 17 00:00:00 2001 From: Jacob Hagstedt Date: Sun, 18 Oct 2026 10:35:17 +0200 Subject: [PATCH] app: debug-only Hilt bindings of every :core:model interface to the fakes (temporary until M8) Features' @HiltViewModel classes need bindings in :app's graph; until M8 binds :data, debug builds bind FakeRepositories(FakeScenarios.empty). Debug source set only; M8 deletes the file. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B --- .../hagstedt/kvitt/debug/DebugFakesModule.kt | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 android/app/src/debug/kotlin/se/hagstedt/kvitt/debug/DebugFakesModule.kt diff --git a/android/app/src/debug/kotlin/se/hagstedt/kvitt/debug/DebugFakesModule.kt b/android/app/src/debug/kotlin/se/hagstedt/kvitt/debug/DebugFakesModule.kt new file mode 100644 index 0000000..727b224 --- /dev/null +++ b/android/app/src/debug/kotlin/se/hagstedt/kvitt/debug/DebugFakesModule.kt @@ -0,0 +1,53 @@ +// Temporary until M8 binds :data; M8 deletes this file. +package se.hagstedt.kvitt.debug + +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import se.hagstedt.kvitt.fakes.FakeRepositories +import se.hagstedt.kvitt.fakes.FakeScenarios +import se.hagstedt.kvitt.model.AboutRepository +import se.hagstedt.kvitt.model.AccountRepository +import se.hagstedt.kvitt.model.AnalyticsRepository +import se.hagstedt.kvitt.model.CategoryRepository +import se.hagstedt.kvitt.model.ConnectivityRepository +import se.hagstedt.kvitt.model.DeviceRepository +import se.hagstedt.kvitt.model.ExpenseRepository +import se.hagstedt.kvitt.model.HomeRepository +import se.hagstedt.kvitt.model.InviteRepository +import se.hagstedt.kvitt.model.ProfileRepository +import se.hagstedt.kvitt.model.RecurringRepository +import se.hagstedt.kvitt.model.SessionRepository +import se.hagstedt.kvitt.model.SettlementRepository +import se.hagstedt.kvitt.model.SyncRepository +import se.hagstedt.kvitt.model.UpdateRepository +import javax.inject.Singleton + +/** + * Debug builds only (src/debug): binds every `:core:model` repository interface of SPEC ยง14.2.4 to one set of fakes at + * [FakeScenarios.empty], so the features' `@HiltViewModel`s have bindings in the debug graph before M8 binds `:data`. + * Fakes never reach a release build: this source set and `debugImplementation(project(":core:fakes"))` are debug only. + */ +@Module +@InstallIn(SingletonComponent::class) +object DebugFakesModule { + @Provides @Singleton + fun fakes(): FakeRepositories = FakeRepositories(FakeScenarios.empty) + + @Provides fun session(f: FakeRepositories): SessionRepository = f.session + @Provides fun home(f: FakeRepositories): HomeRepository = f.home + @Provides fun accounts(f: FakeRepositories): AccountRepository = f.accounts + @Provides fun expenses(f: FakeRepositories): ExpenseRepository = f.expenses + @Provides fun settlements(f: FakeRepositories): SettlementRepository = f.settlements + @Provides fun analytics(f: FakeRepositories): AnalyticsRepository = f.analytics + @Provides fun profile(f: FakeRepositories): ProfileRepository = f.profile + @Provides fun categories(f: FakeRepositories): CategoryRepository = f.categories + @Provides fun recurring(f: FakeRepositories): RecurringRepository = f.recurring + @Provides fun devices(f: FakeRepositories): DeviceRepository = f.devices + @Provides fun invites(f: FakeRepositories): InviteRepository = f.invites + @Provides fun sync(f: FakeRepositories): SyncRepository = f.sync + @Provides fun update(f: FakeRepositories): UpdateRepository = f.update + @Provides fun about(f: FakeRepositories): AboutRepository = f.about + @Provides fun connectivity(f: FakeRepositories): ConnectivityRepository = f.connectivity +}