diff --git a/app/src/main/kotlin/com/melih/rocketscience/App.kt b/app/src/main/kotlin/com/melih/rocketscience/App.kt index b2d8e13..a5e2b73 100644 --- a/app/src/main/kotlin/com/melih/rocketscience/App.kt +++ b/app/src/main/kotlin/com/melih/rocketscience/App.kt @@ -1,10 +1,12 @@ package com.melih.rocketscience import com.melih.core.di.DaggerCoreComponent +import com.melih.launches.data.LaunchDetailItem import com.melih.rocketscience.di.DaggerAppComponent import dagger.android.AndroidInjector import dagger.android.DaggerApplication import timber.log.Timber +import javax.inject.Inject class App : DaggerApplication() { override fun applicationInjector(): AndroidInjector = @@ -14,6 +16,8 @@ class App : DaggerApplication() { .create(this) ) + @Inject + lateinit var item: LaunchDetailItem override fun onCreate() { super.onCreate() diff --git a/app/src/main/kotlin/com/melih/rocketscience/di/AppModule.kt b/app/src/main/kotlin/com/melih/rocketscience/di/AppModule.kt index 65eabe5..71cc7a0 100644 --- a/app/src/main/kotlin/com/melih/rocketscience/di/AppModule.kt +++ b/app/src/main/kotlin/com/melih/rocketscience/di/AppModule.kt @@ -1,9 +1,11 @@ package com.melih.rocketscience.di import com.melih.detail.di.DetailContributor +import com.melih.launches.data.LaunchDetailItem import com.melih.launches.di.LaunchesContributor import com.melih.rocketscience.MainActivity import dagger.Module +import dagger.Provides import dagger.android.ContributesAndroidInjector @Module @@ -16,4 +18,12 @@ abstract class AppModule { DetailContributor::class] ) abstract fun mainActivity(): MainActivity + + @Module + companion object { + + @JvmStatic + @Provides + fun provdeSomeObject() = LaunchDetailItem(10, "", "Rocket", "Desc") + } } diff --git a/build.gradle b/build.gradle index a4f9cfb..8225671 100644 --- a/build.gradle +++ b/build.gradle @@ -1,18 +1,18 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.60' - ext.nav_version = '2.2.0-beta01' + ext.kotlin_version = '1.3.71' + ext.nav_version = '2.3.0-alpha04' repositories { google() jcenter() maven { url 'https://dl.bintray.com/kotlin/kotlin-eap' } + maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' } } dependencies { - classpath 'com.android.tools.build:gradle:4.0.0-alpha07' + classpath 'com.android.tools.build:gradle:4.1.0-alpha04' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "org.jetbrains.dokka:dokka-android-gradle-plugin:0.9.18" - classpath "de.mannodermaus.gradle.plugins:android-junit5:1.5.1.0" + classpath "de.mannodermaus.gradle.plugins:android-junit5:1.6.0.1-SNAPSHOT" classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files @@ -20,8 +20,8 @@ buildscript { } plugins { - id 'io.gitlab.arturbosch.detekt' version '1.1.1' - id 'org.jetbrains.dokka' version '0.9.18' + id 'io.gitlab.arturbosch.detekt' version '1.7.2' + id 'org.jetbrains.dokka' version '0.10.1' id 'jacoco' } diff --git a/core/src/main/kotlin/com/melih/core/base/lifecycle/BaseDaggerFragment.kt b/core/src/main/kotlin/com/melih/core/base/lifecycle/BaseDaggerFragment.kt index dab5a6f..23014aa 100644 --- a/core/src/main/kotlin/com/melih/core/base/lifecycle/BaseDaggerFragment.kt +++ b/core/src/main/kotlin/com/melih/core/base/lifecycle/BaseDaggerFragment.kt @@ -8,6 +8,7 @@ import dagger.android.DispatchingAndroidInjector import dagger.android.HasAndroidInjector import dagger.android.support.AndroidSupportInjection import javax.inject.Inject +import kotlin.properties.Delegates /** @@ -24,11 +25,11 @@ abstract class BaseDaggerFragment : BaseFragment(), HasA //region Properties - @get:Inject - internal var androidInjector: DispatchingAndroidInjector? = null + @Inject + protected lateinit var androidInjector: DispatchingAndroidInjector @Inject - lateinit var viewModelFactory: ViewModelFactory + protected lateinit var viewModelFactory: ViewModelFactory //endregion //region Functions @@ -38,6 +39,6 @@ abstract class BaseDaggerFragment : BaseFragment(), HasA super.onAttach(context) } - override fun androidInjector(): AndroidInjector? = androidInjector + override fun androidInjector(): AndroidInjector = androidInjector //endregion } diff --git a/core/src/main/kotlin/com/melih/core/base/paging/BasePagingDataSource.kt b/core/src/main/kotlin/com/melih/core/base/paging/BasePagingDataSource.kt index a004f0e..9cd5fa7 100644 --- a/core/src/main/kotlin/com/melih/core/base/paging/BasePagingDataSource.kt +++ b/core/src/main/kotlin/com/melih/core/base/paging/BasePagingDataSource.kt @@ -35,7 +35,7 @@ const val INITIAL_PAGE = 0 * It's cancelled automatically when source factory [invalidates][invalidate] the source. */ -@UseExperimental(ExperimentalCoroutinesApi::class) +@OptIn(ExperimentalCoroutinesApi::class) abstract class BasePagingDataSource : PageKeyedDataSource() { //region Abstractions diff --git a/core/src/test/kotlin/com/melih/core/BaseTestWithMainThread.kt b/core/src/test/kotlin/com/melih/core/BaseTestWithMainThread.kt index d8d68fb..92deea2 100644 --- a/core/src/test/kotlin/com/melih/core/BaseTestWithMainThread.kt +++ b/core/src/test/kotlin/com/melih/core/BaseTestWithMainThread.kt @@ -13,7 +13,7 @@ import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeEach import kotlin.coroutines.suspendCoroutine -@UseExperimental(ExperimentalCoroutinesApi::class) +@OptIn(ExperimentalCoroutinesApi::class) abstract class BaseTestWithMainThread { private val dispatcher = TestCoroutineDispatcher() diff --git a/core/src/test/kotlin/com/melih/core/paging/BasePagingDataSourceTest.kt b/core/src/test/kotlin/com/melih/core/paging/BasePagingDataSourceTest.kt index 700bbfb..11e3515 100644 --- a/core/src/test/kotlin/com/melih/core/paging/BasePagingDataSourceTest.kt +++ b/core/src/test/kotlin/com/melih/core/paging/BasePagingDataSourceTest.kt @@ -1,5 +1,3 @@ -@file:UseExperimental(ExperimentalCoroutinesApi::class) - package com.melih.core.paging import androidx.paging.PageKeyedDataSource diff --git a/data/interactors/src/main/kotlin/com/melih/interactors/base/BaseInteractor.kt b/data/interactors/src/main/kotlin/com/melih/interactors/base/BaseInteractor.kt index ffcca7f..1a57c62 100644 --- a/data/interactors/src/main/kotlin/com/melih/interactors/base/BaseInteractor.kt +++ b/data/interactors/src/main/kotlin/com/melih/interactors/base/BaseInteractor.kt @@ -12,7 +12,7 @@ import kotlinx.coroutines.flow.flowOn /** * Base use case that wraps [suspending][suspend] [run] function with [flow][Flow] and returns it for later usage. */ -@UseExperimental(ExperimentalCoroutinesApi::class) +@OptIn(ExperimentalCoroutinesApi::class) abstract class BaseInteractor { //region Abstractions diff --git a/data/interactors/src/test/kotlin/com/melih/interactors/base/BaseInteractorTest.kt b/data/interactors/src/test/kotlin/com/melih/interactors/base/BaseInteractorTest.kt index 5505f1a..0799822 100644 --- a/data/interactors/src/test/kotlin/com/melih/interactors/base/BaseInteractorTest.kt +++ b/data/interactors/src/test/kotlin/com/melih/interactors/base/BaseInteractorTest.kt @@ -15,7 +15,6 @@ import org.amshove.kluent.shouldEqualTo import org.junit.jupiter.api.Test import java.util.ArrayDeque -@UseExperimental(ExperimentalCoroutinesApi::class) class BaseInteractorTest { val testInteractor = spyk(TestInteractor()) diff --git a/features/detail/src/main/kotlin/com/melih/detail/ui/DetailViewModel.kt b/features/detail/src/main/kotlin/com/melih/detail/ui/DetailViewModel.kt index 0048b98..9cccca4 100644 --- a/features/detail/src/main/kotlin/com/melih/detail/ui/DetailViewModel.kt +++ b/features/detail/src/main/kotlin/com/melih/detail/ui/DetailViewModel.kt @@ -20,6 +20,10 @@ class DetailViewModel @Inject constructor( val rocketName = map(successData) { it.rocketName } + get() { + loadData() + return field + } val description = map(successData) { it.missionDescription @@ -30,10 +34,6 @@ class DetailViewModel @Inject constructor( } //endregion - init { - loadData() - } - //region Functions /** diff --git a/features/detail/src/test/java/com/melih/detail/BaseTestWithMainThread.kt b/features/detail/src/test/java/com/melih/detail/BaseTestWithMainThread.kt index 82056d4..135cb5e 100644 --- a/features/detail/src/test/java/com/melih/detail/BaseTestWithMainThread.kt +++ b/features/detail/src/test/java/com/melih/detail/BaseTestWithMainThread.kt @@ -8,7 +8,7 @@ import kotlinx.coroutines.test.setMain import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeEach -@UseExperimental(ExperimentalCoroutinesApi::class) +@OptIn(ExperimentalCoroutinesApi::class) abstract class BaseTestWithMainThread { protected val dispatcher = TestCoroutineDispatcher() diff --git a/features/detail/src/test/java/com/melih/detail/DetailViewModelTest.kt b/features/detail/src/test/java/com/melih/detail/DetailViewModelTest.kt index 0843e7d..738d89c 100644 --- a/features/detail/src/test/java/com/melih/detail/DetailViewModelTest.kt +++ b/features/detail/src/test/java/com/melih/detail/DetailViewModelTest.kt @@ -22,7 +22,6 @@ import org.junit.jupiter.api.Test * * See [testing documentation](http://d.android.com/tools/testing). */ -@UseExperimental(ExperimentalCoroutinesApi::class) class DetailViewModelTest : BaseTestWithMainThread() { private val getLaunchDetails: GetLaunchDetails = mockk(relaxed = true) diff --git a/features/launches/src/main/kotlin/com/melih/launches/ui/LaunchesFragment.kt b/features/launches/src/main/kotlin/com/melih/launches/ui/LaunchesFragment.kt index e5e7a85..af60af3 100644 --- a/features/launches/src/main/kotlin/com/melih/launches/ui/LaunchesFragment.kt +++ b/features/launches/src/main/kotlin/com/melih/launches/ui/LaunchesFragment.kt @@ -14,6 +14,7 @@ import com.melih.launches.data.LaunchItem import com.melih.launches.databinding.LaunchesBinding import com.melih.launches.ui.adapters.LaunchesAdapter import com.melih.launches.ui.vm.LaunchesViewModel +import javax.inject.Inject class LaunchesFragment : BaseDaggerFragment(), SwipeRefreshLayout.OnRefreshListener { diff --git a/features/launches/src/main/kotlin/com/melih/launches/ui/paging/LaunchesPagingSource.kt b/features/launches/src/main/kotlin/com/melih/launches/ui/paging/LaunchesPagingSource.kt index 7e1424b..599165b 100644 --- a/features/launches/src/main/kotlin/com/melih/launches/ui/paging/LaunchesPagingSource.kt +++ b/features/launches/src/main/kotlin/com/melih/launches/ui/paging/LaunchesPagingSource.kt @@ -16,7 +16,6 @@ class LaunchesPagingSource @Inject constructor( //region Functions - @UseExperimental(ExperimentalCoroutinesApi::class) override fun loadDataForPage(page: Int) = getLaunches( getLaunchesParams.copy( diff --git a/features/launches/src/test/kotlin/com/melih/launches/BaseTestWithMainThread.kt b/features/launches/src/test/kotlin/com/melih/launches/BaseTestWithMainThread.kt index c04f0ac..43d86ae 100644 --- a/features/launches/src/test/kotlin/com/melih/launches/BaseTestWithMainThread.kt +++ b/features/launches/src/test/kotlin/com/melih/launches/BaseTestWithMainThread.kt @@ -1,5 +1,3 @@ -@file:UseExperimental(ExperimentalCoroutinesApi::class) - package com.melih.launches import kotlinx.coroutines.Dispatchers @@ -10,7 +8,7 @@ import kotlinx.coroutines.test.setMain import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeEach -@UseExperimental(ExperimentalCoroutinesApi::class) +@OptIn(ExperimentalCoroutinesApi::class) abstract class BaseTestWithMainThread { protected val dispatcher = TestCoroutineDispatcher() diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 94cd6c9..8663441 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed Jan 01 15:32:57 CET 2020 +#Tue Mar 31 10:39:09 CEST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1-milestone-2-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-rc-1-bin.zip diff --git a/scripts/cq/detekt.gradle b/scripts/cq/detekt.gradle index 5f07c3c..68347a6 100644 --- a/scripts/cq/detekt.gradle +++ b/scripts/cq/detekt.gradle @@ -1,9 +1,8 @@ apply plugin: 'io.gitlab.arturbosch.detekt' detekt { - toolVersion = "1.0.0" + failFast = true config = files("$rootProject.projectDir/default-detekt-config.yml") - filters = ".*/resources/.*,.*/build/.*" reports { html { diff --git a/scripts/cq/dokka.gradle b/scripts/cq/dokka.gradle index 59bed4c..2590827 100644 --- a/scripts/cq/dokka.gradle +++ b/scripts/cq/dokka.gradle @@ -1,10 +1,13 @@ -apply plugin: 'org.jetbrains.dokka-android' +apply plugin: 'org.jetbrains.dokka' dokka { outputFormat = "html" outputDirectory = "$rootProject.projectDir/reports/javadoc" - jdkVersion = 8 - reportUndocumented = true - skipEmptyPackages = true + configuration { + jdkVersion = 8 + + reportUndocumented = true + skipEmptyPackages = true + } } diff --git a/scripts/dependencies.gradle b/scripts/dependencies.gradle index 49b7aed..4f19ea6 100644 --- a/scripts/dependencies.gradle +++ b/scripts/dependencies.gradle @@ -4,32 +4,32 @@ ext { minSdkVersion : 21, compileSdkVersion : 29, targetSdkVersion : 29, - buildToolsVersion : "29.0.2", + buildToolsVersion : "29.0.3", appCompatVersion : "1.1.0", - lifecycleVersion : "2.2.0-alpha05", - fragmentVersion : "1.2.0-rc01", - workManagerVersion : "2.3.0-alpha03", - constraintLayoutVesion : "2.0.0-beta3", + lifecycleVersion : "2.2.0", + fragmentVersion : "1.3.0-alpha02", + workManagerVersion : "2.4.0-alpha01", + constraintLayoutVesion : "2.0.0-beta4", cardViewVersion : "1.0.0", - recyclerViewVersion : "1.1.0-rc01", + recyclerViewVersion : "1.2.0-alpha01", pagingVersion : "2.1.0", - viewPagerVersion : "1.0.0-rc01", - materialVersion : "1.1.0-alpha09", - swipeRefreshLayoutVersion: "1.1.0-alpha03", + viewPagerVersion : "1.0.0", + materialVersion : "1.2.0-alpha05", + swipeRefreshLayoutVersion: "1.1.0-beta01", collectionVersion : "1.1.0", - roomVersion : "2.2.0", - daggerVersion : "2.25.2", - okHttpVersion : "4.2.1", - retrofitVersion : "2.6.2", + roomVersion : "2.2.5", + daggerVersion : "2.27", + okHttpVersion : "4.4.0", + retrofitVersion : "2.8.1", picassoVersion : "2.71828", - moshiVersion : "1.8.0", - coroutinesVersion : "1.3.2", - leakCanaryVersion : "2.0-beta-3", + moshiVersion : "1.9.2", + coroutinesVersion : "1.3.5", + leakCanaryVersion : "2.2", timberVersion : "4.7.1", - jUnitVersion : "5.5.2", + jUnitVersion : "5.6.0", espressoVersion : "3.2.0", mockkVersion : "1.9.3", - kluentVersion : "1.53", + kluentVersion : "1.60", ] libraries = [