Skip to content

Instantly share code, notes, and snippets.

View rachitmishra's full-sized avatar
🏴‍☠️

Rachit Mishra rachitmishra

🏴‍☠️
View GitHub Profile
@rachitmishra
rachitmishra / MiningRigComponent.kt
Last active November 7, 2017 19:09
dagger-component-dependency
/**
* Using ComputerComponent as dependency to MiningRigComponent
*/
@Component(dependency = arrayOf(ComputerComponent::class))
interface MiningRigComponent
@rachitmishra
rachitmishra / ActivityBindings.kt
Last active November 7, 2017 19:09
dagger-activity
/**
* Declaring a activity bindings using @ContributesAndroidInjector and @Activity scope (custom scope)
*/
@Module
abstract class ActivityBindings {
@ActivityScope
@ContributesAndroidInjector
abstract fun contributeHomeActivity(): HomeActivity
@rachitmishra
rachitmishra / DefineApplication.kt
Last active November 7, 2017 19:11
dagger-android-application
/**
* Declaring application implementing `HasActivityInjector` with `DispatchingAndroidInjector`
*/
class DefineApplication : Application(), HasActivityInjector {
override fun activityInjector(): DispatchingAndroidInjector<Activity> = mAndroidInjector
@Inject
lateinit var mAndroidInjector: DispatchingAndroidInjector<Activity>
@rachitmishra
rachitmishra / HomeActivity.kt
Last active November 7, 2017 19:18
dagger-android-activity
/**
* An activity with a `HomeViewModel` dependency
*/
class HomeActivity : AppCompatActivity() {
@Inject
lateinit var homeViewModel: HomeViewModel // Requesting the dependency
override fun onCreate(savedInstanceState: Bundle?) {
@rachitmishra
rachitmishra / HomeViewModel.kt
Last active November 7, 2017 19:17
dagger-module
/**
* HomeViewModel with `@Inject`able constructor
*/
class HomeViewModel @Inject constructor(private val resources: Resources,
private val preferenceUtils: PreferenceUtils,
private val defineRepository: DefineRepository) {}
@rachitmishra
rachitmishra / HomeFragment.kt
Last active November 7, 2017 19:17
dagger-android-fragment
/**
* Fragment with dependency `ConnectionUtils`
*/
class HomeFragment: Fragment() {
@Inject
lateinit var connectionUtils: ConnectionUtils // Requesting our dependency
override fun onAttach(context: Context?) {
@rachitmishra
rachitmishra / HomeActivity.kt
Last active November 7, 2017 19:15
dagger-android-activity-fragment
/**
* An activity implementing `HasSupportFragmentInjector` and with an instance of `DispatchingAndroidInjector<Fragment>`
* for fragment injection.
*/
class HomeActivity : HasSupportFragmentInjector {
@Inject
lateinit var mAndroidInjector: DispatchingAndroidInjector<Fragment>
@rachitmishra
rachitmishra / ComputerApp.kt
Last active November 7, 2017 19:14
dagger-app
/**
* Building `ComputerComponent` and getting a dependency
*/
class ComputerApp {
@Inject lateinit var computer: Computer
}
fun main(args: Array<String>) {
val computerComponent = DaggerComputerComponent
@rachitmishra
rachitmishra / MyApplication.kt
Last active November 7, 2017 19:13
dagger-android-activity-basic
/**
* Declaring application with `ComputerComponent` instance
*/
class MyApplication: Application() {
lateinit var computerComponent: ComputerComponent // Declaring our component instance
@Override
public void onCreate() {
/**
* Activity handling it's injection
*/
class MyActivity {
@Inject
lateinit var computer: Computer // Requesting the dependency
override fun onCreate(savedInstanceState: Bundle?) {