AndroidDev-social / DodoForMastodon

🐘 Mastodon client for Android, iOS and Desktop (JVM)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[FEAT]: add Dependency injection

Czeach opened this issue · comments

Description

Set up Hilt (or Dagger) library for dependency injection

Additional Information

No response

commented

Should we consider Koin instead? If we truly want to go multiplatform? There are performance tradeoffs between these DI frameworks.

Build times will be faster with Koin but that shouldn't be the sole reason for it... Let's chat more about this 😃

If you want something like dagger that supports multiplatform 😉 https://github.com/evant/kotlin-inject

Hm, Hilt / Dagger would only be possible for Android. But this is a multiplatform project. I personally think the project should just use custom DI. Using the same solution for the whole project, even shared code. With Kotlin's default parameter values it's pretty simple, less overhead.

I would recommend, using Koin. It has support for multiplatform
https://insert-koin.io/docs/reference/koin-mp/kmp

I really don't see the benefit of using Koin. You still have to write modules. Kotlin's default parameter values solve 90% of all DI needs imho. In my personal project I was using Koin before, then migrated to custom DI and was saving so much lines of code 🤩

Just have a look here, another project of mine, where I removed Hilt and replaced it with custom DI. Look at how much LOC I could save 🤩 For everything where default parameters are not sufficient, I use objects that I call containers (examples here and here).

My vote is to use https://github.com/evant/kotlin-inject

It is to the jsr330 spec and works in kmp. Plus Evan is here to do support if it fails 😆

I vote for koin, since it is the solution I had less trouble with in different KMP/KMM project.