Переглянути джерело

Moved implementations to di module

Vadik Sirekanyan 7 роки тому
батько
коміт
51aa6e80ea

+ 2 - 21
app/src/main/java/me/vadik/knigopis/BookActivity.kt

@@ -10,10 +10,6 @@ import android.widget.SeekBar
 import android.widget.SeekBar.OnSeekBarChangeListener
 import kotlinx.android.synthetic.main.book_edit.*
 import me.vadik.knigopis.api.BookCoverSearch
-import me.vadik.knigopis.api.BookCoverSearchImpl
-import me.vadik.knigopis.api.Endpoint
-import me.vadik.knigopis.api.ImageEndpoint
-import me.vadik.knigopis.auth.KAuthImpl
 import me.vadik.knigopis.model.FinishedBook
 import me.vadik.knigopis.model.FinishedBookToSend
 import me.vadik.knigopis.model.PlannedBook
@@ -57,23 +53,8 @@ fun Context.createEditBookIntent(book: FinishedBook): Intent =
 
 class BookActivity : AppCompatActivity() {
 
-    private val api by inject<Endpoint>()
-    private val imageApi by inject<ImageEndpoint>()
-    private val config by lazy { ConfigurationImpl(applicationContext) as Configuration }
-    private val repository by lazy {
-        val auth = KAuthImpl(applicationContext, api)
-        if (config.isDevMode()) {
-            BookRepositoryMock()
-        } else {
-            BookRepositoryImpl(api, auth)
-        }
-    }
-    private val imageSearch: BookCoverSearch by lazy {
-        BookCoverSearchImpl(
-            imageApi,
-            BookCoverCacheImpl(applicationContext)
-        )
-    }
+    private val repository by inject<BookRepository>()
+    private val imageSearch by inject<BookCoverSearch>()
     private val today = Calendar.getInstance()
     private var bookId: String? = null
 

+ 5 - 14
app/src/main/java/me/vadik/knigopis/MainActivity.kt

@@ -21,11 +21,9 @@ import kotlinx.android.synthetic.main.activity_main.*
 import me.vadik.knigopis.adapters.BooksAdapter
 import me.vadik.knigopis.adapters.notes.NotesAdapter
 import me.vadik.knigopis.adapters.users.UsersAdapter
-import me.vadik.knigopis.api.BookCoverSearchImpl
+import me.vadik.knigopis.api.BookCoverSearch
 import me.vadik.knigopis.api.Endpoint
-import me.vadik.knigopis.api.ImageEndpoint
 import me.vadik.knigopis.auth.KAuth
-import me.vadik.knigopis.auth.KAuthImpl
 import me.vadik.knigopis.model.*
 import me.vadik.knigopis.model.CurrentTab.*
 import me.vadik.knigopis.model.note.Identity
@@ -43,20 +41,13 @@ private const val VERSION_CLICK_COUNT_ON = 12
 class MainActivity : AppCompatActivity(), Router {
 
     private val api by inject<Endpoint>()
-    private val imageApi by inject<ImageEndpoint>()
-    private val config by lazy { ConfigurationImpl(applicationContext) as Configuration }
-    private val auth by lazy { KAuthImpl(applicationContext, api) as KAuth }
+    private val bookCoverSearch by inject<BookCoverSearch>()
+    private val config by inject<Configuration>()
+    private val auth by inject<KAuth>()
     private val allBooks = mutableListOf<Book>()
     private val allUsers = mutableListOf<Subscription>()
     private val allNotes = mutableListOf<Note>()
-    private val booksAdapter by lazy {
-        BooksAdapter(
-            BookCoverSearchImpl(
-                imageApi,
-                BookCoverCacheImpl(applicationContext)
-            ), api, auth, this
-        )
-    }
+    private val booksAdapter by lazy { BooksAdapter(bookCoverSearch, api, auth, this) }
     private val allBooksAdapter by lazy { booksAdapter.build(allBooks) }
     private val usersAdapter by lazy { UsersAdapter(allUsers, this) }
     private val notesAdapter by lazy { NotesAdapter(allNotes, this) }

+ 15 - 5
app/src/main/java/me/vadik/knigopis/dependency/modules.kt

@@ -1,10 +1,14 @@
 package me.vadik.knigopis.dependency
 
 import com.google.gson.GsonBuilder
-import me.vadik.knigopis.BuildConfig
+import me.vadik.knigopis.*
+import me.vadik.knigopis.api.BookCoverSearch
+import me.vadik.knigopis.api.BookCoverSearchImpl
 import me.vadik.knigopis.api.Endpoint
 import me.vadik.knigopis.api.ImageEndpoint
 import me.vadik.knigopis.api.gson.ImageThumbnailDeserializer
+import me.vadik.knigopis.auth.KAuth
+import me.vadik.knigopis.auth.KAuthImpl
 import me.vadik.knigopis.model.ImageThumbnail
 import okhttp3.OkHttpClient
 import okhttp3.logging.HttpLoggingInterceptor
@@ -18,11 +22,15 @@ private const val IMAGE_API_URL = "https://api.qwant.com/api/"
 private const val DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"
 
 val appModule = applicationContext {
-    bean { getEndpointBuilder().create(Endpoint::class.java) }
-    bean { getImageEndpointBuilder().create(ImageEndpoint::class.java) }
+    bean { BookRepositoryImpl(get(), get()) as BookRepository }
+    bean { BookCoverSearchImpl(get(), BookCoverCacheImpl(get())) as BookCoverSearch }
+    bean { KAuthImpl(get(), get()) as KAuth }
+    bean { createMainEndpoint() }
+    bean { createImageEndpoint() }
+    bean { ConfigurationImpl(get()) as Configuration }
 }
 
-private fun getEndpointBuilder() =
+private fun createMainEndpoint() =
     Retrofit.Builder()
         .baseUrl(MAIN_API_URL)
         .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
@@ -37,8 +45,9 @@ private fun getEndpointBuilder() =
                 .build()
         )
         .build()
+        .create(Endpoint::class.java)
 
-private fun getImageEndpointBuilder() =
+private fun createImageEndpoint() =
     Retrofit.Builder()
         .baseUrl(IMAGE_API_URL)
         .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
@@ -51,6 +60,7 @@ private fun getImageEndpointBuilder() =
             )
         )
         .build()
+        .create(ImageEndpoint::class.java)
 
 private fun OkHttpClient.Builder.setDebugEnabled(debugEnabled: Boolean) =
     apply {

+ 1 - 3
app/src/main/java/me/vadik/knigopis/user/UserActivity.kt

@@ -15,9 +15,7 @@ import me.vadik.knigopis.adapters.books.BooksAdapter
 import me.vadik.knigopis.adapters.books.UserBook
 import me.vadik.knigopis.adapters.users.toSocialNetwork
 import me.vadik.knigopis.api.Endpoint
-import me.vadik.knigopis.api.ImageEndpoint
 import me.vadik.knigopis.auth.KAuth
-import me.vadik.knigopis.auth.KAuthImpl
 import me.vadik.knigopis.model.note.Identity
 import me.vadik.knigopis.model.subscription.Subscription
 import org.koin.android.ext.android.inject
@@ -43,7 +41,7 @@ fun Context.createUserIntent(user: Identity): Intent =
 class UserActivity : AppCompatActivity() {
 
     private val api by inject<Endpoint>()
-    private val auth by lazy { KAuthImpl(applicationContext, api) as KAuth }
+    private val auth by inject<KAuth>()
     private val userId by lazy { intent.getStringExtra(EXTRA_USER_ID) }
     private val books = mutableListOf<UserBook>()
     private val booksAdapter = BooksAdapter(books)