Skip to content

Commit

Permalink
♻️ Move Koin definitions around
Browse files Browse the repository at this point in the history
Signed-off-by: Leonardo Colman Lopes <[email protected]>
  • Loading branch information
LeoColman committed Dec 28, 2024
1 parent c913401 commit 16462dd
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 27 deletions.
19 changes: 19 additions & 0 deletions app/src/main/kotlin/br/com/colman/petals/KoinModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,41 @@ package br.com.colman.petals

import android.content.Context
import androidx.datastore.preferences.preferencesDataStore
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
import br.com.colman.petals.hittimer.HitTimerRepository
import br.com.colman.petals.settings.SettingsMigrations
import br.com.colman.petals.settings.SettingsRepository
import br.com.colman.petals.use.io.UseIOModules
import br.com.colman.petals.use.pause.repository.PauseRepository
import br.com.colman.petals.use.repository.CensorshipRepository
import br.com.colman.petals.use.repository.UseRepository
import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory
import org.koin.dsl.module

private val Context.settingsDatastore by preferencesDataStore("settings")
private val Context.blockDataStore by preferencesDataStore("block")

val KoinModule = module {
includes(AndroidModule, SqlDelightModule)
includes(UseIOModules)

single { UseRepository(get<Database>().useQueries) }
single { PauseRepository(get<Database>().pauseQueries) }
single { HitTimerRepository(get()) }
single { SettingsRepository(get<Context>().settingsDatastore) }
single { SettingsMigrations(get<Context>().settingsDatastore) }
single { CensorshipRepository(get<Context>().blockDataStore) }
}

private val AndroidModule = module {
single { get<Context>().resources }
single { get<Context>().contentResolver }
}

private val SqlDelightModule = module {
single<SqlDriver> {
AndroidSqliteDriver(Database.Schema, get(), "Database", RequerySQLiteOpenHelperFactory())
}
single { Database(get()) }
}
35 changes: 9 additions & 26 deletions app/src/main/kotlin/br/com/colman/petals/PetalsApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,10 @@
package br.com.colman.petals

import android.app.Application
import android.content.Context
import app.cash.sqldelight.db.SqlDriver
import app.cash.sqldelight.driver.android.AndroidSqliteDriver
import br.com.colman.petals.BuildConfig.DEBUG
import br.com.colman.petals.use.io.UseIOModule
import io.requery.android.database.sqlite.RequerySQLiteOpenHelperFactory
import org.koin.android.ext.koin.androidContext
import org.koin.core.Koin
import org.koin.core.context.startKoin
import org.koin.dsl.module
import timber.log.Timber

lateinit var koin: Koin
Expand All @@ -37,31 +31,20 @@ lateinit var koin: Koin
class PetalsApplication : Application() {
override fun onCreate() {
super.onCreate()
startKoin()
startTimber()
}

private fun startKoin() {
koin = startKoin {
androidContext(this@PetalsApplication)
modules(KoinModule)
modules(AndroidModule)
modules(UseIOModule)
modules(SqlDelightModule)
}.koin
startTimber()
}
}

private fun startTimber() {
if (DEBUG) {
Timber.plant(Timber.DebugTree())
}
}

private val AndroidModule = module {
single { get<Context>().resources }
single { get<Context>().contentResolver }
}

private val SqlDelightModule = module {
single<SqlDriver> {
AndroidSqliteDriver(Database.Schema, get(), "Database", RequerySQLiteOpenHelperFactory())
private fun startTimber() {
if (DEBUG) {
Timber.plant(Timber.DebugTree())
}
}
single { Database(get()) }
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ package br.com.colman.petals.use.io
import br.com.colman.petals.use.io.input.UseInputModule
import br.com.colman.petals.use.io.output.UseOutputModule

val UseIOModule = UseInputModule + UseOutputModule
val UseIOModules = UseInputModule + UseOutputModule

0 comments on commit 16462dd

Please sign in to comment.