package com.hitherejoe.androidtvboilerplate.injection.module;
import android.app.Application;
import android.content.Context;
import com.hitherejoe.androidtvboilerplate.data.remote.AndroidTvBoilerplateService;
import com.hitherejoe.androidtvboilerplate.injection.ApplicationContext;
import javax.inject.Singleton;
import dagger.Module;
import dagger.Provides;
import rx.subscriptions.CompositeSubscription;
/**
* Provide application-level dependencies. Mainly singleton object that can be injected from
* anywhere in the app.
*/
@Module
public class ApplicationModule {
protected final Application mApplication;
public ApplicationModule(Application application) {
mApplication = application;
}
@Provides
@ApplicationContext
Context provideContext() {
return mApplication;
}
@Provides
@Singleton
Application provideApplication() {
return mApplication;
}
@Provides
CompositeSubscription provideCompositeSubscription() {
return new CompositeSubscription();
}
@Provides
@Singleton
AndroidTvBoilerplateService provideVineyardService() {
return AndroidTvBoilerplateService.Creator.newVineyardService();
}
}