Ver código fonte

Upgrade Koin to 2.0 and use isolated Koin Context

Wayne 5 anos atrás
pai
commit
bff827a530

+ 1 - 1
build.gradle

@@ -27,7 +27,7 @@ android {
 ext {
     daggerVersion = 2.12
     lifecycleVersion = "1.1.0"
-    koin_version = "1.0.2"
+    koin_version = "2.0.0"
 }
 
 dependencies {

+ 6 - 2
src/main/java/com/kdanmobile/reader/InitializerContentProvider.kt

@@ -4,7 +4,8 @@ import android.content.ContentProvider
 import android.content.ContentValues
 import android.database.Cursor
 import android.net.Uri
-import org.koin.android.ext.android.startKoin
+import org.koin.android.ext.koin.androidContext
+import org.koin.dsl.koinApplication
 
 /**
  * This ContentProvider is used for initializing some stuff.
@@ -13,7 +14,10 @@ class InitializerContentProvider : ContentProvider() {
 
     override fun onCreate(): Boolean {
         val context = context.applicationContext
-        startKoin(context, listOf(KoinModule.m))
+        MyKoinContext.koinApplication = koinApplication {
+            androidContext(context)
+            modules(KoinModule.m)
+        }
         return true
     }
 

+ 2 - 2
src/main/java/com/kdanmobile/reader/KoinModule.kt

@@ -5,8 +5,8 @@ import com.kdanmobile.reader.copyfile.CopyFileViewModel
 import com.kdanmobile.reader.copyfile.CopyFileInfo
 import android.net.Uri
 import com.kdanmobile.reader.thumb.PdfThumbViewModel
-import org.koin.android.viewmodel.ext.koin.viewModel
-import org.koin.dsl.module.module
+import org.koin.android.viewmodel.dsl.viewModel
+import org.koin.dsl.module
 
 object KoinModule {
     val m = module {

+ 7 - 0
src/main/java/com/kdanmobile/reader/MyKoinContext.kt

@@ -0,0 +1,7 @@
+package com.kdanmobile.reader
+
+import org.koin.core.KoinApplication
+
+object MyKoinContext {
+    lateinit var koinApplication: KoinApplication
+}

+ 10 - 0
src/main/java/com/kdanmobile/reader/ReadModuleKoinComponent.kt

@@ -0,0 +1,10 @@
+package com.kdanmobile.reader
+
+import org.koin.core.Koin
+import org.koin.core.KoinComponent
+
+interface ReadModuleKoinComponent : KoinComponent {
+    override fun getKoin(): Koin {
+        return MyKoinContext.koinApplication.koin
+    }
+}

+ 5 - 1
src/main/java/com/kdanmobile/reader/ReaderActivity.kt

@@ -49,7 +49,11 @@ import java.io.File
 import java.util.*
 import kotlin.properties.Delegates
 
-abstract class ReaderActivity : KdanBaseActivity(), ReaderSettingListener, PdfThumbFragmentListener {
+abstract class ReaderActivity :
+        KdanBaseActivity(),
+        ReaderSettingListener,
+        PdfThumbFragmentListener,
+        ReadModuleKoinComponent {
 
     /**
      * If return true, ReaderActivity.onBackPressed will not run

+ 5 - 1
src/main/java/com/kdanmobile/reader/thumb/PdfThumbDialogFragment.kt

@@ -13,6 +13,7 @@ import android.support.v7.widget.RecyclerView
 import android.support.v7.widget.Toolbar
 import android.support.v7.widget.helper.ItemTouchHelper
 import android.view.*
+import com.kdanmobile.reader.ReadModuleKoinComponent
 import com.kdanmobile.reader.R
 import com.kdanmobile.reader.ReaderActivity
 import com.kdanmobile.reader.ReaderViewModel
@@ -27,7 +28,10 @@ import org.koin.android.viewmodel.ext.android.viewModel
 import org.koin.core.parameter.parametersOf
 import java.io.File
 
-abstract class PdfThumbDialogFragment: DialogFragment(), PdfThumbAdapter.PageMoveHandler {
+abstract class PdfThumbDialogFragment:
+        DialogFragment(),
+        PdfThumbAdapter.PageMoveHandler,
+        ReadModuleKoinComponent {
     abstract fun provideIntent(): Intent
     abstract fun canDelete(): Boolean
     abstract fun canExtract() : Boolean