Coverage Summary for Class: OnlineKoinApp (com.georgeci.moneysurfer.di)
| Class |
Class, %
|
Method, %
|
Branch, %
|
Line, %
|
Instruction, %
|
| OnlineKoinApp |
100%
(1/1)
|
100%
(1/1)
|
|
100%
(1/1)
|
100%
(2/2)
|
package com.georgeci.moneysurfer.di
import com.georgeci.moneysurfer.appconfig.di.ConfigModule
import com.georgeci.moneysurfer.appconfig.remote.di.RemoteConfigModule
import com.georgeci.moneysurfer.data.di.RemoteDataModule
import com.georgeci.moneysurfer.data.di.SyncImplModule
import com.georgeci.moneysurfer.sync.internal.di.SyncModule
import org.koin.core.annotation.KoinApplication
import org.koin.core.annotation.Module
// koin-compiler generates a `.module` accessor only for `@KoinApplication` classes,
// not for plain `@Module`. We need ONE accessor that pulls in the three remote/sync
// modules so the host can layer them on top of the shared `AppModule` graph at
// runtime, without including them in shared (which must stay Firebase-free).
//
// `ConfigModule` is included here rather than in shared's `AppModule` for the same reason the
// remote modules are: `app-config/default` is a host dependency, and the Build layer it assembles
// is host-specific.
//
// `RemoteConfigModule` is online-only: it binds the RemoteGlobal layer to `appConfig/flags`, and the
// offline build binds `RemoteGlobalConfigSource.Empty` in its own wiring instead.
@KoinApplication
@Module(
includes = [
RemoteDataModule::class,
SyncImplModule::class,
SyncModule::class,
ConfigModule::class,
RemoteConfigModule::class,
OnlineHostConfigModule::class,
OnlineFirstRunModule::class,
],
)
class OnlineKoinApp