Skip to content

Commit

Permalink
Removed unnecessary manual instantiation of usecases, because Dagger …
Browse files Browse the repository at this point in the history
…can do that for us.
  • Loading branch information
Iiro Krankka committed Feb 3, 2017
1 parent 3b797f9 commit 9efd239
Show file tree
Hide file tree
Showing 6 changed files with 53 additions and 61 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,7 @@

package com.codemate.koffeemate.di.components

import com.codemate.koffeemate.di.modules.ActivityModule
import com.codemate.koffeemate.di.modules.AppModule
import com.codemate.koffeemate.di.modules.NetModule
import com.codemate.koffeemate.di.modules.PersistenceModule
import com.codemate.koffeemate.di.modules.*
import com.codemate.koffeemate.ui.userselector.UserSelectorActivity
import com.codemate.koffeemate.ui.userselector.UserSelectorFragment
import dagger.Component
Expand All @@ -29,7 +26,8 @@ import javax.inject.Singleton
@Component(modules = arrayOf(
AppModule::class,
PersistenceModule::class,
NetModule::class)
NetModule::class,
ThreadingModule::class)
)
interface AppComponent {
fun inject(userSelectorFragment: UserSelectorFragment)
Expand Down
47 changes: 0 additions & 47 deletions app/src/main/java/com/codemate/koffeemate/di/modules/AppModule.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,8 @@ import com.codemate.koffeemate.KoffeemateApp
import com.codemate.koffeemate.common.AndroidAwardBadgeCreator
import com.codemate.koffeemate.common.AwardBadgeCreator
import com.codemate.koffeemate.common.BrewingProgressUpdater
import com.codemate.koffeemate.data.local.CoffeeEventRepository
import com.codemate.koffeemate.data.local.CoffeePreferences
import com.codemate.koffeemate.data.local.UserRepository
import com.codemate.koffeemate.data.network.SlackApi
import com.codemate.koffeemate.usecases.LoadUsersUseCase
import com.codemate.koffeemate.usecases.PostAccidentUseCase
import com.codemate.koffeemate.usecases.SendCoffeeAnnouncementUseCase
import dagger.Module
import dagger.Provides
import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import java.util.concurrent.TimeUnit
import javax.inject.Singleton

Expand All @@ -52,42 +43,4 @@ class AppModule(val app: KoffeemateApp) {
@Provides
@Singleton
fun provideAwardBadgeCreator(ctx: Context): AwardBadgeCreator = AndroidAwardBadgeCreator(ctx)

/**
* Move these to a better place once you actually understand Dagger ¯\_(ツ)_/¯
*/
@Provides
@Singleton
fun provideSendCoffeeAnnouncementUseCase(slackApi: SlackApi) =
SendCoffeeAnnouncementUseCase(
slackApi,
Schedulers.newThread(),
AndroidSchedulers.mainThread()
)

@Provides
@Singleton
fun provideLoadUsersUseCase(userRepository: UserRepository, slackApi: SlackApi) =
LoadUsersUseCase(
userRepository,
slackApi,
Schedulers.newThread(),
AndroidSchedulers.mainThread()
)

@Provides
@Singleton
fun providePostAccidentUseCase(
slackApi: SlackApi,
coffeeEventRepository: CoffeeEventRepository,
coffeePreferences: CoffeePreferences,
awardBadgeCreator: AwardBadgeCreator
) = PostAccidentUseCase(
slackApi,
coffeeEventRepository,
coffeePreferences,
awardBadgeCreator,
Schedulers.newThread(),
AndroidSchedulers.mainThread()
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
* Copyright 2017 Codemate Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

package com.codemate.koffeemate.di.modules

import dagger.Module
import dagger.Provides
import rx.Scheduler
import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers
import javax.inject.Named

@Module
class ThreadingModule {
@Provides
@Named("subscriber")
fun provideSubscriber(): Scheduler = Schedulers.newThread()

@Provides
@Named("observer")
fun provideObserver(): Scheduler = AndroidSchedulers.mainThread()
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,14 @@ import com.codemate.koffeemate.data.network.SlackApi
import rx.Observable
import rx.Scheduler
import java.util.concurrent.TimeUnit
import javax.inject.Inject
import javax.inject.Named

open class LoadUsersUseCase(
open class LoadUsersUseCase @Inject constructor(
var userRepository: UserRepository,
var slackApi: SlackApi,
var subscriber: Scheduler,
var observer: Scheduler
@Named("subscriber") var subscriber: Scheduler,
@Named("observer") var observer: Scheduler
) {
val MAX_CACHE_STALENESS = TimeUnit.HOURS.toMillis(12)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,16 @@ import okhttp3.ResponseBody
import retrofit2.Response
import rx.Observable
import rx.Scheduler
import javax.inject.Inject
import javax.inject.Named

open class PostAccidentUseCase(
open class PostAccidentUseCase @Inject constructor(
var slackApi: SlackApi,
val coffeeEventRepository: CoffeeEventRepository,
val coffeePreferences: CoffeePreferences,
val awardBadgeCreator: AwardBadgeCreator,
var subscriber: Scheduler,
var observer: Scheduler
@Named("subscriber") var subscriber: Scheduler,
@Named("observer") var observer: Scheduler
) {
fun execute(
comment: String,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,13 @@ import okhttp3.ResponseBody
import retrofit2.Response
import rx.Observable
import rx.Scheduler
import javax.inject.Inject
import javax.inject.Named

open class SendCoffeeAnnouncementUseCase(
open class SendCoffeeAnnouncementUseCase @Inject constructor(
var slackApi: SlackApi,
var subscriber: Scheduler,
var observer: Scheduler
@Named("subscriber") var subscriber: Scheduler,
@Named("observer") var observer: Scheduler
) {
fun execute(channel: String, newCoffeeMessage: String): Observable<Response<ResponseBody>> {
return slackApi.postMessage(channel, newCoffeeMessage)
Expand Down

0 comments on commit 9efd239

Please sign in to comment.