Browse Source

Removed koin from dependencies

Vadik Sirekanyan 7 years ago
parent
commit
fa6dae7843

+ 6 - 10
app/build.gradle

@@ -17,7 +17,6 @@ android {
         versionName '0.2.1'
         archivesBaseName = "$applicationId-$versionName-$versionCode"
         vectorDrawables.useSupportLibrary = true
-        buildConfigField "String", "STATIC_SERVER", '"https://knigopis.tk/img"'
     }
     buildTypes {
         debug {
@@ -31,9 +30,9 @@ dependencies {
     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
 
     // support libraries
-    implementation "com.android.support:appcompat-v7:27.1.1"
-    implementation "com.android.support:design:27.1.1"
-    implementation "com.android.support:support-vector-drawable:27.1.1"
+    implementation 'com.android.support:appcompat-v7:27.1.1'
+    implementation 'com.android.support:design:27.1.1'
+    implementation 'com.android.support:support-vector-drawable:27.1.1'
     implementation 'com.android.support.constraint:constraint-layout:1.1.2'
 
     // rxjava
@@ -43,14 +42,11 @@ dependencies {
     implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'
 
     // retrofit & okhttp
-    implementation "com.squareup.retrofit2:retrofit:2.3.0"
-    implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0"
-    implementation "com.squareup.retrofit2:converter-gson:2.3.0"
+    implementation 'com.squareup.retrofit2:retrofit:2.3.0'
+    implementation 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
+    implementation 'com.squareup.retrofit2:converter-gson:2.3.0'
     implementation 'com.squareup.okhttp3:logging-interceptor:3.9.1'
 
-    // dependency injection
-    implementation 'org.koin:koin-android:0.9.1'
-
     // etc
     implementation 'com.github.bumptech.glide:glide:4.7.1'
     implementation(name: 'ulogin-sdk-v1.1', ext: 'aar')

+ 3 - 0
app/src/main/java/com/sirekanyan/knigopis/Constants.kt

@@ -1,4 +1,7 @@
 package com.sirekanyan.knigopis
 
+const val MAIN_API = "http://api.knigopis.com"
+const val STATIC_API = "https://knigopis.tk/img"
+const val DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"
 const val MIN_BOOK_PRIORITY = 1
 const val MAX_BOOK_PRIORITY = 100

+ 1 - 1
app/src/main/java/com/sirekanyan/knigopis/common/extensions/Activity.kt

@@ -5,7 +5,7 @@ import android.view.View
 import android.view.ViewGroup
 import com.sirekanyan.knigopis.App
 
-fun Activity.app() = application as App
+val Activity.app get() = application as App
 
 fun Activity.getRootView(): ViewGroup =
     findViewById(android.R.id.content)

+ 5 - 4
app/src/main/java/com/sirekanyan/knigopis/common/functions/StringFactory.kt

@@ -1,11 +1,12 @@
 package com.sirekanyan.knigopis.common.functions
 
-import com.sirekanyan.knigopis.BuildConfig
+import com.sirekanyan.knigopis.BuildConfig.APPLICATION_ID
+import com.sirekanyan.knigopis.STATIC_API
 
-fun extra(name: String) = "${BuildConfig.APPLICATION_ID}.extra_$name"
+fun extra(name: String) = "$APPLICATION_ID.extra_$name"
 
 fun createUserImageUrl(userId: String): String {
-    return "${BuildConfig.STATIC_SERVER}/user/$userId"
+    return "$STATIC_API/user/$userId"
 }
 
 fun createBookImageUrl(bookTitle: String): String {
@@ -13,5 +14,5 @@ fun createBookImageUrl(bookTitle: String): String {
         .replace(Regex("\\W+"), "_")
         .replace(Regex("(^_|_$)"), "")
         .replace("ё", "е")
-    return "${BuildConfig.STATIC_SERVER}/book/$normalizedTitle"
+    return "$STATIC_API/book/$normalizedTitle"
 }

+ 0 - 180
app/src/main/java/com/sirekanyan/knigopis/dependency.kt

@@ -1,180 +0,0 @@
-package com.sirekanyan.knigopis
-
-import android.app.Activity
-import android.content.Context
-import android.view.View
-import com.google.gson.Gson
-import com.google.gson.GsonBuilder
-import com.sirekanyan.knigopis.common.android.*
-import com.sirekanyan.knigopis.common.android.dialog.BottomSheetDialogFactory
-import com.sirekanyan.knigopis.common.android.dialog.DialogFactory
-import com.sirekanyan.knigopis.common.extensions.getRootView
-import com.sirekanyan.knigopis.feature.MainPresenter
-import com.sirekanyan.knigopis.feature.MainPresenterImpl
-import com.sirekanyan.knigopis.feature.MainViewImpl
-import com.sirekanyan.knigopis.feature.ProgressViewImpl
-import com.sirekanyan.knigopis.feature.books.BooksPresenterImpl
-import com.sirekanyan.knigopis.feature.books.BooksViewImpl
-import com.sirekanyan.knigopis.feature.login.LoginPresenterImpl
-import com.sirekanyan.knigopis.feature.login.LoginViewImpl
-import com.sirekanyan.knigopis.feature.notes.NotesPresenterImpl
-import com.sirekanyan.knigopis.feature.notes.NotesViewImpl
-import com.sirekanyan.knigopis.feature.user.UserInteractor
-import com.sirekanyan.knigopis.feature.user.UserInteractorImpl
-import com.sirekanyan.knigopis.feature.users.UsersPresenterImpl
-import com.sirekanyan.knigopis.feature.users.UsersViewImpl
-import com.sirekanyan.knigopis.model.BookDataModel
-import com.sirekanyan.knigopis.model.BookHeaderModel
-import com.sirekanyan.knigopis.model.BookModel
-import com.sirekanyan.knigopis.model.CurrentTab.*
-import com.sirekanyan.knigopis.model.dto.FinishedBook
-import com.sirekanyan.knigopis.model.dto.PlannedBook
-import com.sirekanyan.knigopis.repository.*
-import com.sirekanyan.knigopis.repository.cache.CommonCache
-import com.sirekanyan.knigopis.repository.cache.CommonCacheImpl
-import com.sirekanyan.knigopis.repository.cache.HeadedModelDeserializer
-import kotlinx.android.synthetic.main.activity_main.view.*
-import kotlinx.android.synthetic.main.books_page.view.*
-import kotlinx.android.synthetic.main.notes_page.view.*
-import kotlinx.android.synthetic.main.users_page.view.*
-import okhttp3.OkHttpClient
-import okhttp3.logging.HttpLoggingInterceptor
-import org.koin.core.parameter.Parameters
-import org.koin.dsl.context.ParameterProvider
-import org.koin.dsl.module.applicationContext
-import retrofit2.Retrofit
-import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory
-import retrofit2.converter.gson.GsonConverterFactory
-import org.koin.dsl.context.Context as KoinContext
-
-private const val MAIN_API_URL = "http://api.knigopis.com"
-private const val DATE_FORMAT = "yyyy-MM-dd HH:mm:ss"
-private const val CONTEXT_KEY = "context_key"
-private const val ROOT_VIEW_KEY = "root_view_key"
-private const val ROUTER_KEY = "router_key"
-
-val appModule = applicationContext {
-    bean {
-        BookRepositoryImpl(
-            get(),
-            get(),
-            get(),
-            get("planned"),
-            get("finished"),
-            get()
-        ) as BookRepository
-    }
-    bean { UserRepositoryImpl(get(), get(), get(), get()) as UserRepository }
-    bean { NoteRepositoryImpl(get(), get(), get()) as NoteRepository }
-    bean { AuthRepositoryImpl(get(), get()) as AuthRepository }
-    bean { createMainEndpoint(get()) }
-    bean("planned") { PlannedBookOrganizerImpl(get(), get()) as BookOrganizer<PlannedBook> }
-    bean("finished") { FinishedBookPrepareImpl(get()) as BookOrganizer<FinishedBook> }
-    bean { ConfigurationImpl(get()) as Configuration }
-    bean { ResourceProviderImpl(get()) as ResourceProvider }
-    bean { NetworkCheckerImpl(get()) as NetworkChecker }
-    bean { CommonCacheImpl(get(), get()) as CommonCache }
-    bean {
-        GsonBuilder().registerTypeAdapter(
-            BookModel::class.java,
-            HeadedModelDeserializer<BookModel>(
-                BookHeaderModel::class.java,
-                BookDataModel::class.java
-            )
-        )
-            .setDateFormat(DATE_FORMAT)
-            .create()
-    }
-    factory { BottomSheetDialogFactory(it.getContext()) as DialogFactory }
-    factory { PermissionsImpl(it.getContext() as Activity) as Permissions }
-    mainModule()
-    userModule()
-}
-
-private fun KoinContext.mainModule() {
-    factory {
-        val params = it.getContext().createParameters()
-        val loginPresenter = LoginPresenterImpl(it.getRouter(), get(params))
-        val booksPresenter = BooksPresenterImpl(it.getRouter(), get())
-        val usersPresenter = UsersPresenterImpl(it.getRouter(), get(), get())
-        val notesPresenter = NotesPresenterImpl(it.getRouter(), get())
-        MainPresenterImpl(
-            loginPresenter,
-            mapOf(
-                BOOKS_TAB to booksPresenter,
-                USERS_TAB to usersPresenter,
-                NOTES_TAB to notesPresenter
-            ),
-            it.getRouter(),
-            get(),
-            get()
-        ).also { mainPresenter ->
-            val rootView = it.getRootView()
-            val progressView = ProgressViewImpl(rootView.swipeRefresh, mainPresenter)
-            val dialogs: DialogFactory = get(params)
-            loginPresenter.view = LoginViewImpl(rootView, loginPresenter)
-            booksPresenter.also { p ->
-                p.view = BooksViewImpl(rootView.booksPage, booksPresenter, progressView, dialogs)
-                p.parent = mainPresenter
-            }
-            usersPresenter.also { p ->
-                p.view = UsersViewImpl(rootView.usersPage, usersPresenter, progressView, dialogs)
-                p.parent = mainPresenter
-            }
-            notesPresenter.also { p ->
-                p.view = NotesViewImpl(rootView.notesPage, notesPresenter, progressView)
-                p.parent = mainPresenter
-            }
-            mainPresenter.view = MainViewImpl(rootView, mainPresenter)
-        } as MainPresenter
-    }
-}
-
-private fun KoinContext.userModule() {
-    bean { UserInteractorImpl(get(), get(), get()) as UserInteractor }
-}
-
-fun Context.createParameters(): Parameters =
-    { mapOf(CONTEXT_KEY to this) }
-
-fun Activity.createParameters(router: MainPresenter.Router): Parameters =
-    {
-        mapOf(
-            CONTEXT_KEY to this,
-            ROOT_VIEW_KEY to getRootView(),
-            ROUTER_KEY to router
-        )
-    }
-
-private fun ParameterProvider.getContext(): Context =
-    this[CONTEXT_KEY]
-
-private fun ParameterProvider.getRootView(): View =
-    this[ROOT_VIEW_KEY]
-
-private fun <T> ParameterProvider.getRouter(): T =
-    this[ROUTER_KEY]
-
-private fun createMainEndpoint(gson: Gson) =
-    Retrofit.Builder()
-        .baseUrl(MAIN_API_URL)
-        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
-        .addConverterFactory(
-            GsonConverterFactory.create(gson)
-        )
-        .client(
-            OkHttpClient.Builder()
-                .setDebugEnabled(BuildConfig.DEBUG)
-                .build()
-        )
-        .build()
-        .create(Endpoint::class.java)
-
-private fun OkHttpClient.Builder.setDebugEnabled(debugEnabled: Boolean) =
-    apply {
-        if (debugEnabled) {
-            addNetworkInterceptor(HttpLoggingInterceptor().also {
-                it.level = HttpLoggingInterceptor.Level.BODY
-            })
-        }
-    }

+ 1 - 1
app/src/main/java/com/sirekanyan/knigopis/repository/BookOrganizer.kt

@@ -52,7 +52,7 @@ class PlannedBookOrganizerImpl(
 
 }
 
-class FinishedBookPrepareImpl(
+class FinishedBookOrganizerImpl(
     private val resources: ResourceProvider
 ) : BookOrganizer<FinishedBook> {
 

+ 3 - 5
app/src/main/java/com/sirekanyan/knigopis/repository/BookRepository.kt

@@ -35,7 +35,7 @@ class BookRepositoryImpl(
     private val cache: CommonCache,
     private val auth: AuthRepository,
     private val plannedBookOrganizer: BookOrganizer<PlannedBook>,
-    private val finishedBookPrepare: BookOrganizer<FinishedBook>,
+    private val finishedBookOrganizer: BookOrganizer<FinishedBook>,
     networkChecker: NetworkChecker
 ) : CommonRepository<List<BookModel>>(networkChecker),
     BookRepository {
@@ -77,10 +77,8 @@ class BookRepositoryImpl(
             api.getFinishedBooks(auth.getAccessToken())
         )
             .map { (planned, finished) ->
-                mutableListOf<BookModel>().apply {
-                    addAll(plannedBookOrganizer.organize(planned))
-                    addAll(finishedBookPrepare.organize(finished))
-                }
+                plannedBookOrganizer.organize(planned)
+                    .plus(finishedBookOrganizer.organize(finished))
             }
 
     override fun findCached(): Maybe<List<BookModel>> =

+ 2 - 2
app/src/main/java/com/sirekanyan/knigopis/repository/Configuration.kt

@@ -1,6 +1,6 @@
 package com.sirekanyan.knigopis.repository
 
-import android.content.Context
+import android.app.Application
 import android.content.Context.MODE_PRIVATE
 import com.sirekanyan.knigopis.repository.config.BooleanPreference
 import com.sirekanyan.knigopis.repository.config.IntPreference
@@ -12,7 +12,7 @@ interface Configuration {
     var sortingMode: Int
 }
 
-class ConfigurationImpl(context: Context) : Configuration {
+class ConfigurationImpl(context: Application) : Configuration {
     internal val prefs = context.getSharedPreferences(PREFS_NAME, MODE_PRIVATE)
     override var isDarkTheme by BooleanPreference()
     override var sortingMode by IntPreference()