From 2799b4eac22d639d6125ccda30fd68335053610f Mon Sep 17 00:00:00 2001 From: Boisney Philippe Date: Sun, 30 Dec 2018 12:54:04 +0100 Subject: [PATCH 1/2] Migrating from Dagger2 to Koin --- .DS_Store | Bin 14340 -> 14340 bytes android/app/build.gradle | 10 +-- .../nobullshit/base/TIBaseApplication.kt | 12 +++- .../di/remote_datasource_test_module.kt | 22 +++++++ .../nobullshit/ui/joblist/TIJobList.kt | 58 ++++++------------ .../io/nobullshit/nobullshit/MainActivity.kt | 11 +--- .../nobullshit/base/BaseApplication.kt | 16 ++--- .../nobullshit/nobullshit/di/AppComponent.kt | 28 --------- .../nobullshit/nobullshit/di/AppInjector.kt | 49 --------------- .../io/nobullshit/nobullshit/di/DataModule.kt | 16 ----- .../nobullshit/di/FragmentBuildersModule.kt | 12 ---- .../io/nobullshit/nobullshit/di/Injectable.kt | 6 -- .../nobullshit/di/MainActivityModule.kt | 12 ---- .../nobullshit/nobullshit/di/app_component.kt | 9 +++ .../di/remote_datasource_test_module.kt | 13 ++++ .../extension/FragmentExtensions.kt | 5 +- .../nobullshit/ui/joblist/JobListFragment.kt | 10 +-- android/build.gradle | 2 +- 18 files changed, 88 insertions(+), 203 deletions(-) create mode 100644 android/app/src/androidTest/java/io/nobullshit/nobullshit/di/remote_datasource_test_module.kt delete mode 100644 android/app/src/main/java/io/nobullshit/nobullshit/di/AppComponent.kt delete mode 100644 android/app/src/main/java/io/nobullshit/nobullshit/di/AppInjector.kt delete mode 100644 android/app/src/main/java/io/nobullshit/nobullshit/di/DataModule.kt delete mode 100644 android/app/src/main/java/io/nobullshit/nobullshit/di/FragmentBuildersModule.kt delete mode 100644 android/app/src/main/java/io/nobullshit/nobullshit/di/Injectable.kt delete mode 100644 android/app/src/main/java/io/nobullshit/nobullshit/di/MainActivityModule.kt create mode 100644 android/app/src/main/java/io/nobullshit/nobullshit/di/app_component.kt create mode 100644 android/app/src/main/java/io/nobullshit/nobullshit/di/remote_datasource_test_module.kt diff --git a/.DS_Store b/.DS_Store index 22c070bf8953a2e63ad7e1d39e83b789e321fc91..5bd92546f34f6ef866294cdee2e0b0f840c15324 100644 GIT binary patch delta 501 zcmZoEXepTB&!{pnpnxTC<)xJyFPgDWe89Vzor8;$g@LhFc(bVBTvoQ06Vel8UQga3 zroi^bbn8{=*OTvwDKIlI9hl50Zq2mRVX~dL6x%u9(wjh;IB^*mvq4;Ta+{p+<_+S# zY&>_LZ)cQ#eZY}{fq`wZpSlDaL|}8e+!97c{>eNFlJU&pc|chf20ey!hD?T%+5l@X8lt7zQWj=N16<1ML)Gn4GOBuRhyuI*`W>wxft4ks*a4 zhanZ&CeG=bmH@rsrmnySW#*_WGOeF5Syy8Thp~y7j)IY~{1$?6p~GWnr|%-K)>e6xf=vrlUSUcH7?{pXI;HZ` z0jwAzDCH=@Csa_;8U%`nXb^)&F+PGc1d5_TB=A8%L}FrM-1pv62Ia#K6MvkKJLl}R z?>_tNwb#CFp|;TGX>hea7&4mYF6-HMqBySohXGx2Qa{<)|Lo+VuB3r4#hN<&^I7R- zaVXhwYk4l&5yMZ11T3QsjEQlURMXSz<9}|wDCSwxZ!OnYG6?M2Zh6@>JafkG)ipmJ zEoY3G*do@a7GASq{D8V=Ya=%06c` z-7%N7fKmAEV0Xhqi}Pw11e-z>lQGK<^%e-G&ow^ryO4Traw%`zXrCr+AN#jAxUB}ur=3&qrw z#LRl%f?%N5x6-RX?u@sjXAT*jTR3W5MfW|*zyxmQ$-ZS?QAN z0-h$X<{@$uk|W$^b;!y)(ws(5i?=%1sQNW(u+?TAEJ?FfdquOCp1PSkt;1x+Bh`iJ zVErT)&ykg|T({I0=zTSh7f4E@Jl*eU@cQ*=#k^Efs^poi-sZ3`7|@NQllWL^AY5`i zmAHx03~P1~O0^o*ONfoBS&^(VwdnNIj+C>?-1?SDEQ95|J(@eZjg}54*swvTN)*`-S}mzyKp+5f2NjNJSckA`kf}z<5l=BvfGvYA_44F&Fc& z0Dd$fh)4*nh+qxY;W0dkXYeex;W@m5PP~OZcpFFXDL%t-oJ2Ri!$n-h4g9L7Xh3hO zQ+xk=|L_Mb{?bOod2bsTwl{?QzHp1%-2+36;ATl}fCY%0i#kjvhUUYA1}r6(0>smDti)`pHHTT8bMV{S zOu0v!0>qoxWJ`<0(irg3MDjAv9f~&HOrknOq0uAg=#3SfMfwQ3!{hc4y1U06V<>qq z9Uzi3JEX!A8Z`N(c{FI|808PjYlVGKe%C3h0g~Dd88#~ylM>t|T+@!mwQ3*X;#`xf z#;aUiv9_6Q;)2e~NiBcl#8FcbAe#6m2F4@(fn z3arwISdXW$8SU6Y_1{I+-%a)3kB@MSs{RSS!fBjA57qtxuHd>jn&=dR2PvX0Z3u>m z@2wr8Dt!qJuu*jWtfaK@+?}4U&K)I2Yu@xCUZRc|C05(=d-)i31}R1z9nZ_vX``5Q zw33S>*>9^C- ce&T#rocpFxxKr}}m-Bxq=h`Sa{#$bX6Ons43jhEB diff --git a/android/app/build.gradle b/android/app/build.gradle index 50b02b7..d3c430f 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -48,13 +48,8 @@ dependencies { // GLIDE implementation "com.github.bumptech.glide:glide:$glide_version" kapt "com.github.bumptech.glide:compiler:$glide_version" - // DAGGER 2 - implementation "com.google.dagger:dagger:$dagger_version" - implementation "com.google.dagger:dagger-android:$dagger_version" - implementation "com.google.dagger:dagger-android-support:$dagger_version" - kapt "com.google.dagger:dagger-compiler:$dagger_version" - kapt "com.google.dagger:dagger-android-processor:$dagger_version" - compileOnly 'javax.annotation:jsr250-api:1.0' + // KOIN + implementation "org.koin:koin-android:$koin_version" // CUSTOM TABS implementation "androidx.browser:browser:$custom_tab_version" // UNIT TEST @@ -66,6 +61,5 @@ dependencies { androidTestImplementation 'androidx.test.espresso:espresso-intents:3.1.1' androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.1.1' androidTestImplementation "io.mockk:mockk-android:1.8.13" - kaptAndroidTest 'com.google.dagger:dagger:2.17' } apply plugin: 'com.google.gms.google-services' diff --git a/android/app/src/androidTest/java/io/nobullshit/nobullshit/base/TIBaseApplication.kt b/android/app/src/androidTest/java/io/nobullshit/nobullshit/base/TIBaseApplication.kt index 57be306..373302c 100644 --- a/android/app/src/androidTest/java/io/nobullshit/nobullshit/base/TIBaseApplication.kt +++ b/android/app/src/androidTest/java/io/nobullshit/nobullshit/base/TIBaseApplication.kt @@ -1,10 +1,18 @@ package io.nobullshit.nobullshit.base import android.app.Application +import org.koin.android.ext.android.startKoin +import org.koin.dsl.module.Module /** - * We use a separate App for tests to prevent initializing dependency injection. + * We use a separate [Application] for tests to prevent initializing release modules. + * On the contrary, we will provide inside our tests custom [Module]. * * See [io.nobullshit.nobullshit.TIRunner]. */ -class TIBaseApplication : Application() \ No newline at end of file +class TIBaseApplication : Application() { + override fun onCreate() { + super.onCreate() + startKoin(this, emptyList()) + } +} \ No newline at end of file diff --git a/android/app/src/androidTest/java/io/nobullshit/nobullshit/di/remote_datasource_test_module.kt b/android/app/src/androidTest/java/io/nobullshit/nobullshit/di/remote_datasource_test_module.kt new file mode 100644 index 0000000..cf078de --- /dev/null +++ b/android/app/src/androidTest/java/io/nobullshit/nobullshit/di/remote_datasource_test_module.kt @@ -0,0 +1,22 @@ +package io.nobullshit.nobullshit.di + +import com.google.firebase.firestore.FirebaseFirestore +import com.google.firebase.firestore.Query +import io.mockk.mockk +import io.nobullshit.nobullshit.db.dao.JobDao +import io.nobullshit.nobullshit.model.Job +import io.nobullshit.nobullshit.util.mockQuery +import org.koin.dsl.module.module + +/** + * Remote [FirebaseFirestore] datasource only used for tests + * @param listApprovedJobs: Mocked [Query] used to return a custom list of jobs. + */ +fun remoteDataSourceTestModule(listApprovedJobs: Query) = module { + factory { mockk(relaxed = true) } + single { + object : JobDao(get()) { + override fun listApprovedJobs() = listApprovedJobs + } as JobDao + } +} \ No newline at end of file diff --git a/android/app/src/androidTest/java/io/nobullshit/nobullshit/ui/joblist/TIJobList.kt b/android/app/src/androidTest/java/io/nobullshit/nobullshit/ui/joblist/TIJobList.kt index 20debb9..2dd28c5 100644 --- a/android/app/src/androidTest/java/io/nobullshit/nobullshit/ui/joblist/TIJobList.kt +++ b/android/app/src/androidTest/java/io/nobullshit/nobullshit/ui/joblist/TIJobList.kt @@ -1,40 +1,30 @@ package io.nobullshit.nobullshit.ui.joblist -import android.content.Intent -import androidx.browser.customtabs.CustomTabsIntent -import androidx.recyclerview.widget.RecyclerView import androidx.test.espresso.Espresso.onView -import androidx.test.espresso.action.ViewActions.click import androidx.test.espresso.assertion.ViewAssertions.matches -import androidx.test.espresso.contrib.RecyclerViewActions -import androidx.test.espresso.intent.Intents.intended -import androidx.test.espresso.intent.Intents.intending -import androidx.test.espresso.intent.matcher.IntentMatchers.* -import androidx.test.espresso.intent.rule.IntentsTestRule -import androidx.test.espresso.matcher.ViewMatchers import androidx.test.espresso.matcher.ViewMatchers.* import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.LargeTest import androidx.test.rule.ActivityTestRule import com.google.firebase.firestore.* -import io.mockk.* import io.nobullshit.nobullshit.Datasets -import io.nobullshit.nobullshit.Datasets.SINGLE_JOB import io.nobullshit.nobullshit.R import io.nobullshit.nobullshit.db.dao.JobDao +import io.nobullshit.nobullshit.di.remoteDataSourceTestModule import io.nobullshit.nobullshit.extension.getCategoryTitle import io.nobullshit.nobullshit.extension.getTypeTitle -import io.nobullshit.nobullshit.model.Company import io.nobullshit.nobullshit.model.Job import io.nobullshit.nobullshit.testing.SingleFragmentActivity import io.nobullshit.nobullshit.util.* import org.hamcrest.CoreMatchers.allOf import org.hamcrest.CoreMatchers.not - +import org.junit.After import org.junit.Test import org.junit.runner.RunWith - import org.junit.Rule +import org.koin.standalone.StandAloneContext.loadKoinModules +import org.koin.standalone.StandAloneContext.stopKoin +import org.koin.dsl.module.Module /** * Instrumented tests for [JobListFragment] @@ -45,11 +35,16 @@ class TIJobList { @Rule @JvmField - val activityRule = IntentsTestRule(SingleFragmentActivity::class.java, true, true) + val activityRule = ActivityTestRule(SingleFragmentActivity::class.java, true, true) + + @After + fun tearDown(){ + stopKoin() + } @Test fun testLoadingSingleJob() { - this.configureFragmentBeforeTest(mockQuery(Job::class.java, Datasets.SINGLE_JOB)) + this.configureCustomDependencies(mockQuery(Job::class.java, Datasets.SINGLE_JOB)) onView(withId(R.id.fragment_job_list_refresh)).check(matches(not(isRefreshing()))) onView(withId(R.id.fragment_job_list_rv)).check(matches((hasItemCount(1)))) @@ -62,7 +57,7 @@ class TIJobList { @Test fun testLoadingMultipleJob() { - this.configureFragmentBeforeTest(mockQuery(Job::class.java, *Datasets.MULTIPLE_JOBS)) + this.configureCustomDependencies(mockQuery(Job::class.java, *Datasets.MULTIPLE_JOBS)) onView(withId(R.id.fragment_job_list_refresh)).check(matches(not(isRefreshing()))) onView(withId(R.id.fragment_job_list_rv)).check(matches((hasItemCount(30)))) @@ -70,36 +65,23 @@ class TIJobList { @Test fun testLoadingNothing() { - this.configureFragmentBeforeTest(mockQuery(Job::class.java)) + this.configureCustomDependencies(mockQuery(Job::class.java)) onView(withId(R.id.fragment_job_list_refresh)).check(matches(not(isRefreshing()))) onView(withId(R.id.fragment_job_list_rv)).check(matches((hasItemCount(0)))) } - @Test - fun testClickOnJob() { - this.configureFragmentBeforeTest(mockQuery(Job::class.java, Datasets.SINGLE_JOB)) - - onView(withId(R.id.fragment_job_list_rv)).perform(RecyclerViewActions.actionOnItemAtPosition(0, click())) - intended(hasAction(Intent.ACTION_VIEW)) - intended(hasData(Datasets.SINGLE_JOB.url)) - } - // --- /** - * Create a new [JobListFragment] - * and mock the [JobDao] with custom response [Query]. + * Configure custom [Module] for each [Test] + * and provide a [JobDao] with custom mocked response [Query]. + * * The fragment will be set inside a fake activity [SingleFragmentActivity] */ - private fun configureFragmentBeforeTest(query: Query) { - val fragment = JobListFragment().apply { - val firestore = mockk() - jobDao = object : JobDao(firestore) { - override fun listApprovedJobs() = query - } - } - activityRule.activity.setFragment(fragment) + private fun configureCustomDependencies(query: Query) { + loadKoinModules(remoteDataSourceTestModule(query)) + this.activityRule.activity.setFragment(JobListFragment()) } } diff --git a/android/app/src/main/java/io/nobullshit/nobullshit/MainActivity.kt b/android/app/src/main/java/io/nobullshit/nobullshit/MainActivity.kt index 4ffa498..3531f22 100644 --- a/android/app/src/main/java/io/nobullshit/nobullshit/MainActivity.kt +++ b/android/app/src/main/java/io/nobullshit/nobullshit/MainActivity.kt @@ -2,19 +2,12 @@ package io.nobullshit.nobullshit import androidx.appcompat.app.AppCompatActivity import android.os.Bundle -import androidx.fragment.app.Fragment -import dagger.android.DispatchingAndroidInjector -import dagger.android.support.HasSupportFragmentInjector import io.nobullshit.nobullshit.ui.joblist.JobListFragment -import javax.inject.Inject /** * A simple activity that holds the [JobListFragment] fragment */ -class MainActivity : AppCompatActivity(), HasSupportFragmentInjector { - - @Inject - lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector +class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -22,8 +15,6 @@ class MainActivity : AppCompatActivity(), HasSupportFragmentInjector { this.configureAndShowFragment() } - override fun supportFragmentInjector() = dispatchingAndroidInjector - // --- private fun configureAndShowFragment() { diff --git a/android/app/src/main/java/io/nobullshit/nobullshit/base/BaseApplication.kt b/android/app/src/main/java/io/nobullshit/nobullshit/base/BaseApplication.kt index 4ea76fa..1237f8d 100644 --- a/android/app/src/main/java/io/nobullshit/nobullshit/base/BaseApplication.kt +++ b/android/app/src/main/java/io/nobullshit/nobullshit/base/BaseApplication.kt @@ -1,20 +1,12 @@ package io.nobullshit.nobullshit.base -import android.app.Activity import android.app.Application -import dagger.android.DispatchingAndroidInjector -import dagger.android.HasActivityInjector -import io.nobullshit.nobullshit.di.AppInjector -import javax.inject.Inject - -class BaseApplication: Application(), HasActivityInjector { - @Inject - lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector +import io.nobullshit.nobullshit.di.appComponents +import org.koin.android.ext.android.startKoin +class BaseApplication: Application() { override fun onCreate() { super.onCreate() - AppInjector.init(this) + startKoin(this, appComponents) } - - override fun activityInjector() = dispatchingAndroidInjector } \ No newline at end of file diff --git a/android/app/src/main/java/io/nobullshit/nobullshit/di/AppComponent.kt b/android/app/src/main/java/io/nobullshit/nobullshit/di/AppComponent.kt deleted file mode 100644 index b0efaa0..0000000 --- a/android/app/src/main/java/io/nobullshit/nobullshit/di/AppComponent.kt +++ /dev/null @@ -1,28 +0,0 @@ -package io.nobullshit.nobullshit.di - -import android.app.Application -import dagger.BindsInstance -import dagger.Component -import dagger.android.AndroidInjectionModule -import io.nobullshit.nobullshit.base.BaseApplication -import io.nobullshit.nobullshit.base.BaseFragment -import javax.inject.Singleton - -@Singleton -@Component( - modules = [ - AndroidInjectionModule::class, - DataModule::class, - MainActivityModule::class] -) -interface AppComponent { - @Component.Builder - interface Builder { - @BindsInstance - fun application(application: Application): Builder - - fun build(): AppComponent - } - - fun inject(app: BaseApplication) -} diff --git a/android/app/src/main/java/io/nobullshit/nobullshit/di/AppInjector.kt b/android/app/src/main/java/io/nobullshit/nobullshit/di/AppInjector.kt deleted file mode 100644 index 5eb9cf9..0000000 --- a/android/app/src/main/java/io/nobullshit/nobullshit/di/AppInjector.kt +++ /dev/null @@ -1,49 +0,0 @@ -package io.nobullshit.nobullshit.di - -import android.app.Activity -import android.app.Application -import android.os.Bundle -import androidx.fragment.app.Fragment -import androidx.fragment.app.FragmentActivity -import androidx.fragment.app.FragmentManager -import dagger.android.AndroidInjection -import dagger.android.support.AndroidSupportInjection -import dagger.android.support.HasSupportFragmentInjector -import io.nobullshit.nobullshit.base.BaseApplication - -/** - * Helper class to automatically inject fragments if they implement [Injectable]. - */ -object AppInjector { - fun init(app: BaseApplication) { - DaggerAppComponent.builder() - .application(app) - .build() - .inject(app) - app.registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks { - override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { - handleActivity(activity) - } - override fun onActivityStarted(activity: Activity) { } - override fun onActivityResumed(activity: Activity) { } - override fun onActivityPaused(activity: Activity) { } - override fun onActivityStopped(activity: Activity) { } - override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle?) { } - override fun onActivityDestroyed(activity: Activity) { } - }) - } - - private fun handleActivity(activity: Activity) { - if (activity is HasSupportFragmentInjector) { - AndroidInjection.inject(activity) - } - if (activity is FragmentActivity) { - activity.supportFragmentManager - .registerFragmentLifecycleCallbacks(object : FragmentManager.FragmentLifecycleCallbacks() { - override fun onFragmentCreated(fm: FragmentManager, f: Fragment, savedInstanceState: Bundle?) { - if (f is Injectable) AndroidSupportInjection.inject(f) - } - }, true) - } - } -} \ No newline at end of file diff --git a/android/app/src/main/java/io/nobullshit/nobullshit/di/DataModule.kt b/android/app/src/main/java/io/nobullshit/nobullshit/di/DataModule.kt deleted file mode 100644 index 51c2881..0000000 --- a/android/app/src/main/java/io/nobullshit/nobullshit/di/DataModule.kt +++ /dev/null @@ -1,16 +0,0 @@ -package io.nobullshit.nobullshit.di - -import com.google.firebase.firestore.FirebaseFirestore -import dagger.Module -import dagger.Provides -import io.nobullshit.nobullshit.db.dao.JobDao - -@Module -class DataModule { - @Provides - fun provideFirestore(): FirebaseFirestore = FirebaseFirestore.getInstance() - - @Provides - fun provideJobDao(firestore: FirebaseFirestore): JobDao = JobDao(firestore) -} - diff --git a/android/app/src/main/java/io/nobullshit/nobullshit/di/FragmentBuildersModule.kt b/android/app/src/main/java/io/nobullshit/nobullshit/di/FragmentBuildersModule.kt deleted file mode 100644 index 9715ade..0000000 --- a/android/app/src/main/java/io/nobullshit/nobullshit/di/FragmentBuildersModule.kt +++ /dev/null @@ -1,12 +0,0 @@ -package io.nobullshit.nobullshit.di - -import dagger.Module -import dagger.android.ContributesAndroidInjector -import io.nobullshit.nobullshit.ui.joblist.JobListFragment - -@Suppress("unused") -@Module -abstract class FragmentBuildersModule { - @ContributesAndroidInjector - abstract fun contributeJobListFragment(): JobListFragment -} \ No newline at end of file diff --git a/android/app/src/main/java/io/nobullshit/nobullshit/di/Injectable.kt b/android/app/src/main/java/io/nobullshit/nobullshit/di/Injectable.kt deleted file mode 100644 index 2df5246..0000000 --- a/android/app/src/main/java/io/nobullshit/nobullshit/di/Injectable.kt +++ /dev/null @@ -1,6 +0,0 @@ -package io.nobullshit.nobullshit.di - -/** - * Marks an activity / fragment injectable. - */ -interface Injectable \ No newline at end of file diff --git a/android/app/src/main/java/io/nobullshit/nobullshit/di/MainActivityModule.kt b/android/app/src/main/java/io/nobullshit/nobullshit/di/MainActivityModule.kt deleted file mode 100644 index 8241054..0000000 --- a/android/app/src/main/java/io/nobullshit/nobullshit/di/MainActivityModule.kt +++ /dev/null @@ -1,12 +0,0 @@ -package io.nobullshit.nobullshit.di - -import dagger.Module -import dagger.android.ContributesAndroidInjector -import io.nobullshit.nobullshit.MainActivity - -@Suppress("unused") -@Module -abstract class MainActivityModule { - @ContributesAndroidInjector(modules = [FragmentBuildersModule::class]) - abstract fun contributeMainActivity(): MainActivity -} \ No newline at end of file diff --git a/android/app/src/main/java/io/nobullshit/nobullshit/di/app_component.kt b/android/app/src/main/java/io/nobullshit/nobullshit/di/app_component.kt new file mode 100644 index 0000000..3a9ef4b --- /dev/null +++ b/android/app/src/main/java/io/nobullshit/nobullshit/di/app_component.kt @@ -0,0 +1,9 @@ +package io.nobullshit.nobullshit.di + +import org.koin.dsl.module.Module +import org.koin.dsl.module.module + +/** + * App Components + */ +val appComponents: List = listOf(remoteDataSourceModule) diff --git a/android/app/src/main/java/io/nobullshit/nobullshit/di/remote_datasource_test_module.kt b/android/app/src/main/java/io/nobullshit/nobullshit/di/remote_datasource_test_module.kt new file mode 100644 index 0000000..8ebd839 --- /dev/null +++ b/android/app/src/main/java/io/nobullshit/nobullshit/di/remote_datasource_test_module.kt @@ -0,0 +1,13 @@ +package io.nobullshit.nobullshit.di + +import com.google.firebase.firestore.FirebaseFirestore +import io.nobullshit.nobullshit.db.dao.JobDao +import org.koin.dsl.module.module + +/** + * Remote [FirebaseFirestore] Datasource + */ +val remoteDataSourceModule = module { + factory { FirebaseFirestore.getInstance() } + single { JobDao(get()) } +} \ No newline at end of file diff --git a/android/app/src/main/java/io/nobullshit/nobullshit/extension/FragmentExtensions.kt b/android/app/src/main/java/io/nobullshit/nobullshit/extension/FragmentExtensions.kt index a5150f6..6761873 100644 --- a/android/app/src/main/java/io/nobullshit/nobullshit/extension/FragmentExtensions.kt +++ b/android/app/src/main/java/io/nobullshit/nobullshit/extension/FragmentExtensions.kt @@ -1,7 +1,6 @@ package io.nobullshit.nobullshit.extension import android.net.Uri -import android.util.Log import androidx.browser.customtabs.CustomTabsIntent import androidx.fragment.app.Fragment @@ -14,5 +13,7 @@ fun Fragment.openBrowser(url: String){ val builder = CustomTabsIntent.Builder() val customTabsIntent = builder.build() customTabsIntent.launchUrl(context, Uri.parse(url)) - } catch (exception: Exception) { } + } catch (exception: Exception) { + + } } \ No newline at end of file diff --git a/android/app/src/main/java/io/nobullshit/nobullshit/ui/joblist/JobListFragment.kt b/android/app/src/main/java/io/nobullshit/nobullshit/ui/joblist/JobListFragment.kt index e6dee7d..a6a05f7 100644 --- a/android/app/src/main/java/io/nobullshit/nobullshit/ui/joblist/JobListFragment.kt +++ b/android/app/src/main/java/io/nobullshit/nobullshit/ui/joblist/JobListFragment.kt @@ -1,7 +1,6 @@ package io.nobullshit.nobullshit.ui.joblist import android.os.Bundle -import android.util.Log import android.view.View import androidx.paging.PagedList import com.firebase.ui.firestore.paging.FirestorePagingOptions @@ -10,22 +9,19 @@ import com.firebase.ui.firestore.paging.LoadingState import io.nobullshit.nobullshit.R import io.nobullshit.nobullshit.base.BaseFragment import io.nobullshit.nobullshit.db.dao.JobDao -import io.nobullshit.nobullshit.di.Injectable import io.nobullshit.nobullshit.extension.openBrowser import io.nobullshit.nobullshit.model.Job -import javax.inject.Inject +import org.koin.android.ext.android.inject import kotlinx.android.synthetic.main.fragment_job_list.fragment_job_list_rv as recyclerView import kotlinx.android.synthetic.main.fragment_job_list.fragment_job_list_refresh as refreshLayout - - /** * A simple [BaseFragment] subclass that list [Job]. * */ -class JobListFragment : BaseFragment(), Injectable { +class JobListFragment : BaseFragment() { - @Inject lateinit var jobDao: JobDao + val jobDao: JobDao by inject() override fun getLayoutById(): Int = R.layout.fragment_job_list diff --git a/android/build.gradle b/android/build.gradle index 0986384..7c6aef7 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -8,7 +8,7 @@ buildscript { ext.android_pagging_version = '2.1.0-rc01' ext.firebase_version = '16.0.6' ext.firestore_ui_version = '4.3.0' - ext.dagger_version = '2.16' + ext.koin_version = '1.0.2' ext.glide_version = '4.8.0' ext.custom_tab_version = '1.0.0' From a1742e22c53a4e41a258d927a3f91d0ffe629b27 Mon Sep 17 00:00:00 2001 From: Boisney Philippe Date: Sun, 30 Dec 2018 12:55:23 +0100 Subject: [PATCH 2/2] Update Android version --- android/app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/app/build.gradle b/android/app/build.gradle index d3c430f..718b504 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -11,7 +11,7 @@ android { minSdkVersion 21 targetSdkVersion 28 versionCode 1 // Will be overridden by Bitrise - versionName "1.0.0-beta" + versionName "1.0.1-beta" testInstrumentationRunner "io.nobullshit.nobullshit.TIRunner" } buildTypes {