mirror of
https://github.com/mediathekview/zapp.git
synced 2024-09-19 20:02:17 +02:00
Use koin to set up the basic singletons inside the app
This commit is contained in:
parent
982835433c
commit
7f3ac87bfe
@ -3,6 +3,7 @@ apply plugin: 'com.mikepenz.aboutlibraries.plugin'
|
||||
apply plugin: 'kotlin-android'
|
||||
apply plugin: 'kotlin-kapt'
|
||||
apply plugin: 'kotlin-android-extensions'
|
||||
apply plugin: 'koin'
|
||||
|
||||
|
||||
android {
|
||||
@ -159,7 +160,12 @@ dependencies {
|
||||
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
|
||||
|
||||
// about libraries view
|
||||
implementation 'com.mikepenz:aboutlibraries:8.6.5'
|
||||
implementation "com.mikepenz:aboutlibraries:$about_libraries_version"
|
||||
|
||||
// koin dependency injection
|
||||
implementation "org.koin:koin-androidx-scope:$koin_version"
|
||||
implementation "org.koin:koin-androidx-viewmodel:$koin_version"
|
||||
implementation "org.koin:koin-androidx-fragment:$koin_version"
|
||||
|
||||
implementation 'org.jetbrains:annotations-java5:20.1.0'
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ import de.christinecoenen.code.zapp.app.mediathek.controller.downloads.DownloadC
|
||||
import de.christinecoenen.code.zapp.app.player.IPlaybackPositionRepository
|
||||
import de.christinecoenen.code.zapp.app.player.PersistedPlaybackPositionRepository
|
||||
import de.christinecoenen.code.zapp.app.settings.repository.SettingsRepository
|
||||
import de.christinecoenen.code.zapp.persistence.Database.Companion.getInstance
|
||||
import de.christinecoenen.code.zapp.persistence.Database
|
||||
import de.christinecoenen.code.zapp.repositories.ChannelRepository
|
||||
import de.christinecoenen.code.zapp.repositories.MediathekRepository
|
||||
import de.christinecoenen.code.zapp.utils.system.NotificationHelper.createBackgroundPlaybackChannel
|
||||
@ -18,6 +18,11 @@ import org.acra.annotation.AcraCore
|
||||
import org.acra.annotation.AcraDialog
|
||||
import org.acra.annotation.AcraMailSender
|
||||
import org.acra.data.StringFormat
|
||||
import org.koin.android.ext.koin.androidContext
|
||||
import org.koin.android.ext.koin.androidLogger
|
||||
import org.koin.core.Koin
|
||||
import org.koin.core.context.startKoin
|
||||
import org.koin.dsl.module
|
||||
import timber.log.Timber
|
||||
|
||||
@AcraCore(
|
||||
@ -58,17 +63,19 @@ import timber.log.Timber
|
||||
)
|
||||
abstract class ZappApplicationBase : Application() {
|
||||
|
||||
lateinit var channelRepository: ChannelRepository
|
||||
private set
|
||||
val channelRepository: ChannelRepository
|
||||
get() = koin.get()
|
||||
|
||||
lateinit var mediathekRepository: MediathekRepository
|
||||
private set
|
||||
val mediathekRepository: MediathekRepository
|
||||
get() = koin.get()
|
||||
|
||||
lateinit var downloadController: DownloadController
|
||||
private set
|
||||
val downloadController: DownloadController
|
||||
get() = koin.get()
|
||||
|
||||
lateinit var playbackPositionRepository: IPlaybackPositionRepository
|
||||
private set
|
||||
val playbackPositionRepository: IPlaybackPositionRepository
|
||||
get() = koin.get()
|
||||
|
||||
private lateinit var koin: Koin
|
||||
|
||||
fun reportError(throwable: Throwable?) {
|
||||
if (ACRA.isInitialised()) {
|
||||
@ -87,15 +94,23 @@ abstract class ZappApplicationBase : Application() {
|
||||
val settingsRepository = SettingsRepository(this)
|
||||
AppCompatDelegate.setDefaultNightMode(settingsRepository.uiMode)
|
||||
|
||||
channelRepository = ChannelRepository(this)
|
||||
val appModule = module {
|
||||
|
||||
val database = getInstance(this)
|
||||
single { ChannelRepository(androidContext()) }
|
||||
single { Database.getInstance(androidContext()) }
|
||||
single { MediathekRepository(get()) }
|
||||
single { PersistedPlaybackPositionRepository(get()) }
|
||||
single { DownloadController(androidContext(), get()) }
|
||||
|
||||
mediathekRepository = MediathekRepository(database)
|
||||
playbackPositionRepository = PersistedPlaybackPositionRepository(mediathekRepository)
|
||||
downloadController = DownloadController(this, mediathekRepository)
|
||||
}
|
||||
|
||||
koin = startKoin {
|
||||
androidLogger()
|
||||
androidContext(this@ZappApplicationBase)
|
||||
modules(appModule)
|
||||
}.koin
|
||||
}
|
||||
|
||||
protected abstract fun setUpLogging()
|
||||
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
ext.koin_version = '2.2.2'
|
||||
ext.about_libraries_version = '8.6.5'
|
||||
|
||||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
@ -14,7 +17,9 @@ buildscript {
|
||||
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.4.21"
|
||||
|
||||
classpath "com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin:8.6.2"
|
||||
classpath "com.mikepenz.aboutlibraries.plugin:aboutlibraries-plugin:$about_libraries_version"
|
||||
|
||||
classpath "org.koin:koin-gradle-plugin:$koin_version"
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
// in the individual module build.gradle files
|
||||
|
Loading…
Reference in New Issue
Block a user