Skip to content

Commit 7bf68f4

Browse files
committed
Use isolated Koin (fix #1)
1 parent d3d63fa commit 7bf68f4

5 files changed

Lines changed: 33 additions & 6 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ local.properties
2323
/.idea/codeStyles
2424
/.idea/kotlinc.xml
2525
/.idea/runConfigurations.xml
26-
/.idea/gradle.xml
26+
/.idea/gradle.xml
27+
/.idea/AndroidProjectSystem.xml
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package org.koitharu.workinspector
2+
3+
import org.koin.core.Koin
4+
import org.koin.core.component.KoinComponent
5+
6+
internal interface IsolatedKoinComponent : KoinComponent {
7+
8+
override fun getKoin(): Koin = WorkInspectorInitProvider.koin
9+
}

workinspector/src/main/java/org/koitharu/workinspector/WorkInspectorInitProvider.kt

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ import androidx.work.impl.WorkDatabase
88
import androidx.work.impl.WorkManagerImpl
99
import org.koin.android.ext.koin.androidContext
1010
import org.koin.android.ext.koin.androidLogger
11-
import org.koin.core.context.startKoin
11+
import org.koin.core.KoinApplication
12+
import org.koin.dsl.koinApplication
1213
import org.koin.dsl.module
13-
import org.koin.ksp.generated.*
14+
import org.koin.ksp.generated.module
1415

1516
public class WorkInspectorInitProvider : ContentProvider() {
17+
1618
override fun onCreate(): Boolean {
17-
startKoin {
19+
koinApp = koinApplication {
1820
androidLogger()
1921
androidContext(checkNotNull(context))
2022
modules(coreModule(), LibModule().module)
@@ -55,4 +57,12 @@ public class WorkInspectorInitProvider : ContentProvider() {
5557
factory<WorkManagerImpl> { WorkManagerImpl.getInstance(androidContext()) }
5658
factory<WorkDatabase> { get<WorkManagerImpl>().workDatabase }
5759
}
60+
61+
internal companion object {
62+
63+
lateinit var koinApp: KoinApplication
64+
private set
65+
66+
val koin get() = koinApp.koin
67+
}
5868
}

workinspector/src/main/java/org/koitharu/workinspector/ui/details/WorkDetailsFragment.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,15 @@ import android.view.View
55
import androidx.core.view.isVisible
66
import androidx.fragment.app.Fragment
77
import org.koin.androidx.viewmodel.ext.android.viewModel
8+
import org.koitharu.workinspector.IsolatedKoinComponent
89
import org.koitharu.workinspector.R
910
import org.koitharu.workinspector.databinding.WiFragmentWorkListBinding
1011
import org.koitharu.workinspector.ui.util.collectInLifecycle
1112
import org.koitharu.workinspector.ui.util.showErrorDialog
1213

13-
internal class WorkDetailsFragment : Fragment(R.layout.wi_fragment_work_list) {
14+
internal class WorkDetailsFragment : Fragment(R.layout.wi_fragment_work_list),
15+
IsolatedKoinComponent {
16+
1417
private val viewModel by viewModel<WorkDetailsViewModel>()
1518
private var binding: WiFragmentWorkListBinding? = null
1619

workinspector/src/main/java/org/koitharu/workinspector/ui/workers/WorkersListFragment.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,17 @@ import androidx.fragment.app.Fragment
77
import androidx.fragment.app.FragmentTransaction
88
import androidx.fragment.app.commit
99
import org.koin.androidx.viewmodel.ext.android.viewModel
10+
import org.koitharu.workinspector.IsolatedKoinComponent
1011
import org.koitharu.workinspector.R
1112
import org.koitharu.workinspector.databinding.WiFragmentWorkListBinding
1213
import org.koitharu.workinspector.ui.details.WorkDetailsFragment
1314
import org.koitharu.workinspector.ui.util.collectInLifecycle
1415
import org.koitharu.workinspector.ui.util.showErrorDialog
1516

16-
internal class WorkersListFragment : Fragment(R.layout.wi_fragment_work_list), OnWorkerClickListener {
17+
internal class WorkersListFragment : Fragment(R.layout.wi_fragment_work_list),
18+
IsolatedKoinComponent,
19+
OnWorkerClickListener {
20+
1721
private val viewModel by viewModel<WorkersListViewModel>()
1822
private var binding: WiFragmentWorkListBinding? = null
1923

0 commit comments

Comments
 (0)