fix(DI): properly add modules to koin

This commit is contained in:
rushiiMachine 2024-01-12 16:20:58 -08:00
parent 1b5cc48fdf
commit c73edaa12f
No known key found for this signature in database
GPG key ID: DCBE5952BB3B6420
3 changed files with 20 additions and 22 deletions

View file

@ -20,39 +20,40 @@ class ManagerApplication : Application() {
androidContext(this@ManagerApplication)
// HTTP
module {
singleOf(::provideJson)
singleOf(::provideHttpClient)
}
modules(module {
single { provideJson() }
single { provideHttpClient() }
})
// Services
module {
modules(module {
singleOf(::HttpService)
singleOf(::GithubService)
singleOf(::MavenService)
singleOf(::AliucordGithubService)
}
})
// Repositories
module {
modules(module {
singleOf(::GithubRepository)
singleOf(::AliucordMavenRepository)
}
})
// ViewModels
module {
modules(module {
viewModelOf(::HomeViewModel)
viewModelOf(::PluginsViewModel)
viewModelOf(::AboutViewModel)
viewModelOf(::InstallViewModel)
viewModelOf(::SettingsViewModel)
viewModelOf(::UpdaterViewModel)
}
})
// Managers
module {
singleOf(::providePreferences)
singleOf(::provideDownloadManager)
}
modules(module {
single { providePreferences() }
single { provideDownloadManager() }
})
}
}
}

View file

@ -10,13 +10,12 @@ import org.koin.core.scope.Scope
import java.net.Inet4Address
import java.net.InetAddress
context(Scope)
fun provideJson() = Json {
@Suppress("UnusedReceiverParameter")
fun Scope.provideJson() = Json {
ignoreUnknownKeys = true
}
context(Scope)
fun provideHttpClient() = HttpClient(OkHttp) {
fun Scope.provideHttpClient() = HttpClient(OkHttp) {
val json: Json = get()
engine {

View file

@ -6,14 +6,12 @@ import com.aliucord.manager.domain.manager.DownloadManager
import com.aliucord.manager.domain.manager.PreferencesManager
import org.koin.core.scope.Scope
context(Scope)
fun providePreferences(): PreferencesManager {
fun Scope.providePreferences(): PreferencesManager {
val ctx: Context = get()
return PreferencesManager(ctx.getSharedPreferences("preferences", Context.MODE_PRIVATE))
}
context(Scope)
fun provideDownloadManager(): DownloadManager {
fun Scope.provideDownloadManager(): DownloadManager {
val application: Application = get()
return DownloadManager(application)
}