Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dagger2のAndroid Supportに対応させた #50

Merged
merged 10 commits into from
Nov 25, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,9 @@ dependencies {
// Dependency Injection
implementation 'com.google.dagger:dagger:2.13'
kapt 'com.google.dagger:dagger-compiler:2.13'
implementation 'com.google.dagger:dagger-android:2.13'
kapt 'com.google.dagger:dagger-android-processor:2.13'
implementation 'com.google.dagger:dagger-android-support:2.13'

// ReactiveX
implementation 'io.reactivex.rxjava2:rxjava:2.1.6'
Expand Down
5 changes: 5 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -64,3 +64,8 @@
@org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }

# ----------------------------------------
# Dagger2
# ----------------------------------------
-dontwarn com.google.errorprone.annotations.*
6 changes: 3 additions & 3 deletions app/src/debug/kotlin/com/ayatk/biblio/di/HttpClientModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

package com.ayatk.biblio.di

import android.content.Context
import android.app.Application
import com.ayatk.biblio.BuildConfig
import com.facebook.stetho.okhttp3.StethoInterceptor
import dagger.Module
Expand All @@ -30,8 +30,8 @@ class HttpClientModule {

@Singleton
@Provides
fun provideHttpClient(context: Context): OkHttpClient {
val cacheDir = File(context.cacheDir, CACHE_FILE_NAME)
fun provideHttpClient(application: Application): OkHttpClient {
val cacheDir = File(application.cacheDir, CACHE_FILE_NAME)
val cache = Cache(cacheDir, MAX_CACHE_SIZE)

val httpLoggingInterceptor = HttpLoggingInterceptor()
Expand Down
14 changes: 7 additions & 7 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
android:value="${FABRIC_API_KEY}"/>

<activity
android:name=".view.activity.MainActivity"
android:name=".ui.home.HomeActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme.NoActionBar">
<intent-filter>
Expand All @@ -34,28 +34,28 @@
</intent-filter>
</activity>
<activity
android:name=".view.activity.NovelDetailActivity"
android:name=".ui.detail.NovelDetailActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:exported="false"
android:label="@string/novel_detail"
android:launchMode="singleTask"
android:parentActivityName=".view.activity.MainActivity"
android:parentActivityName=".ui.home.HomeActivity"
android:theme="@style/AppTheme.NoActionBar"/>

<activity
android:name=".view.activity.NovelBodyActivity"
android:name=".ui.body.NovelBodyActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:exported="false"
android:label="@string/novel_detail"
android:launchMode="singleTask"
android:parentActivityName=".view.activity.NovelDetailActivity"
android:parentActivityName=".ui.detail.NovelDetailActivity"
android:theme="@style/AppTheme.NoActionBar"/>

<activity
android:name=".view.activity.WebActivity"
android:name=".ui.license.LicenseActivity"
android:theme="@style/AppTheme.NoActionBar"/>
<activity
android:name=".view.activity.SearchActivity"
android:name=".ui.search.SearchActivity"
android:theme="@style/AppTheme.NoActionBar"/>
</application>

Expand Down
18 changes: 9 additions & 9 deletions app/src/main/kotlin/com/ayatk/biblio/App.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,15 @@

package com.ayatk.biblio

import android.app.Application
import com.ayatk.biblio.di.AppComponent
import com.ayatk.biblio.di.AppModule
import com.ayatk.biblio.di.DaggerAppComponent
import com.crashlytics.android.Crashlytics
import com.squareup.leakcanary.LeakCanary
import dagger.android.AndroidInjector
import dagger.android.support.DaggerApplication
import io.fabric.sdk.android.Fabric


open class App : Application() {

private val appComponent: AppComponent by lazy {
DaggerAppComponent.builder().appModule(AppModule(this)).build()
}
open class App : DaggerApplication() {

override fun onCreate() {
super.onCreate()
Expand All @@ -26,7 +21,12 @@ open class App : Application() {
initLeakCanary()
}

fun component(): AppComponent = appComponent
override fun applicationInjector(): AndroidInjector<out DaggerApplication>
= DaggerAppComponent
.builder()
.application(this)
.appModule(AppModule(this))
.build()

private fun initLeakCanary() {
if (LeakCanary.isInAnalyzerProcess(this)) {
Expand Down
27 changes: 0 additions & 27 deletions app/src/main/kotlin/com/ayatk/biblio/di/ActivityComponent.kt

This file was deleted.

18 changes: 0 additions & 18 deletions app/src/main/kotlin/com/ayatk/biblio/di/ActivityModule.kt

This file was deleted.

28 changes: 25 additions & 3 deletions app/src/main/kotlin/com/ayatk/biblio/di/AppComponent.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,34 @@

package com.ayatk.biblio.di

import com.ayatk.biblio.App
import com.ayatk.biblio.ui.UiModule
import dagger.BindsInstance
import dagger.Component
import dagger.android.AndroidInjector
import dagger.android.support.AndroidSupportInjectionModule
import javax.inject.Singleton

@Singleton
@Component(modules = arrayOf(AppModule::class, HttpClientModule::class))
interface AppComponent {
@Component(
modules = arrayOf(
AndroidSupportInjectionModule::class,
AppModule::class,
HttpClientModule::class,
UiModule::class
)
)
interface AppComponent : AndroidInjector<App> {

fun plus(module: ActivityModule): ActivityComponent
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: App): Builder

fun appModule(appModule: AppModule): Builder

fun build(): AppComponent
}

override fun inject(app: App)
}
19 changes: 10 additions & 9 deletions app/src/main/kotlin/com/ayatk/biblio/di/AppModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

package com.ayatk.biblio.di

import android.app.Application
import android.content.Context
import android.net.ConnectivityManager
import com.ayatk.biblio.App
import com.ayatk.biblio.data.dao.OrmaDatabaseWrapper
import com.ayatk.biblio.data.narou.entity.enums.BigGenre
import com.ayatk.biblio.data.narou.entity.enums.Genre
Expand All @@ -28,24 +28,25 @@ import javax.inject.Singleton


@Module
class AppModule(private val app: App) {
class AppModule(val application: Application) {

@Provides
fun provideApplicationContext(): Context = app
@Singleton
fun provideApplicationContext(): Application = application

@Provides
fun provideConnectivityManager(): ConnectivityManager {
return app.getSystemService(Context.CONNECTIVITY_SERVICE) as (ConnectivityManager)
}
fun provideConnectivityManager(application: Application): ConnectivityManager
= application.getSystemService(Context.CONNECTIVITY_SERVICE) as (ConnectivityManager)

@Singleton
@Provides
fun provideDefaultPrefs(context: Context): DefaultPrefsWrapper = DefaultPrefsWrapper(context)
fun provideDefaultPrefs(application: Application): DefaultPrefsWrapper
= DefaultPrefsWrapper(application)

@Singleton
@Provides
fun provideOrmaDatabase(context: Context): OrmaDatabaseWrapper
= OrmaDatabaseWrapper(context)
fun provideOrmaDatabase(application: Application): OrmaDatabaseWrapper
= OrmaDatabaseWrapper(application)

@Singleton
@Provides
Expand Down
37 changes: 0 additions & 37 deletions app/src/main/kotlin/com/ayatk/biblio/di/FragmentComponent.kt

This file was deleted.

19 changes: 0 additions & 19 deletions app/src/main/kotlin/com/ayatk/biblio/di/FragmentModule.kt

This file was deleted.

10 changes: 0 additions & 10 deletions app/src/main/kotlin/com/ayatk/biblio/di/scope/ActivityScope.kt

This file was deleted.

10 changes: 0 additions & 10 deletions app/src/main/kotlin/com/ayatk/biblio/di/scope/FragmentScope.kt

This file was deleted.

31 changes: 31 additions & 0 deletions app/src/main/kotlin/com/ayatk/biblio/ui/UiModule.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* Copyright (c) 2016-2017. Aya Tokikaze. All Rights Reserved.
*/

package com.ayatk.biblio.ui

import com.ayatk.biblio.ui.body.NovelBodyActivity
import com.ayatk.biblio.ui.body.NovelBodyModule
import com.ayatk.biblio.ui.detail.NovelDetailActivity
import com.ayatk.biblio.ui.detail.NovelDetailModule
import com.ayatk.biblio.ui.home.HomeActivity
import com.ayatk.biblio.ui.home.HomeModule
import com.ayatk.biblio.ui.search.SearchActivity
import dagger.Module
import dagger.android.ContributesAndroidInjector

@Module
internal abstract class UiModule {

@ContributesAndroidInjector(modules = arrayOf(HomeModule::class))
internal abstract fun contributeHomeActivity(): HomeActivity

@ContributesAndroidInjector(modules = arrayOf(NovelBodyModule::class))
internal abstract fun contributeBodyActivity(): NovelBodyActivity

@ContributesAndroidInjector(modules = arrayOf(NovelDetailModule::class))
internal abstract fun contributeDetailActivity(): NovelDetailActivity

@ContributesAndroidInjector
internal abstract fun contributeSearchActivity(): SearchActivity
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* Copyright (c) 2016-2017 Aya Tokikaze. All Rights Reserved.
*/

package com.ayatk.biblio.viewmodel
package com.ayatk.biblio.ui

interface ViewModel {

Expand Down
Loading