/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠSu ĠK hai ĠK oh Ċ Ġ* Ċ Ġ* Ġ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 . s uk ha ik oh . df md agger Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Content Provider Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġdagger . android . Dispatch ing Android Injector Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠThe Ġbase Ġclass Ġfor Ġinject ing Ġa Ġ[ Feature Module ]. Ċ Ġ* Ċ Ġ* ĠThe Ġimplementation Ġclass Ġmust Ġuse Ġ[ Feature Module Injector . inject ] Ġto Ġinject Ġa Ġdagger Ġcomponent Ċ Ġ* Ġinto Ġthe Ġdagger Ġdependency Ġgraph . Ċ Ġ* Ċ Ġ* Ġ### ĠExample Ċ Ġ* Ġ``` Ċ Ġ* Ġ@ Feature Scope Ċ Ġ* Ġ@ Component ( Ċ Ġ* ĠĠĠĠ Ġdependencies Ġ= Ġ[ App Component :: class ], Ċ Ġ* ĠĠĠĠ Ġmodules Ġ= Ġ[ Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠAndroid Injection Module :: class , Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠMy Feature Activity Module :: class Ċ Ġ* ĠĠĠĠ Ġ] Ċ Ġ* Ġ) Ċ Ġ* Ġinterface ĠMy Feature Component Ġ{ Ċ Ġ* ĠĠĠĠ Ġfun Ġinject ( injector : ĠMy Feature Injector ) Ċ Ġ* Ġ} Ċ Ġ* Ċ Ġ* Ġ@ Module ( includes Ġ= Ġ[ Activity Module :: class ]) Ċ Ġ* Ġclass ĠMy Feature Activity Module Ġ{ Ċ Ġ* ĠĠĠĠ Ġ@ Provide Ċ Ġ* ĠĠĠĠ Ġfun Ġprovide My Service (): ĠMy Service Ġ{ Ġreturn Ġ... Ġ} Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġ@ Module Ċ Ġ* ĠĠĠĠ Ġabstract Ġclass ĠActivity Module Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ@ Contribut es Android Injector ( modules Ġ= Ġ[ Fragment Module :: class ]) Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġabstract Ġfun Ġcontribute My Activity (): ĠMy Activity Ċ Ġ* ĠĠĠĠ Ġ} Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġ@ Module Ċ Ġ* ĠĠĠĠ Ġabstract Ġclass ĠFragment Module Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ@ Contribut es Android Injector Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġabstract Ġfun Ġcontribute My Fragment (): ĠMy Fragment Ċ Ġ* ĠĠĠĠ Ġ} Ċ Ġ* Ġ} Ċ Ġ* Ċ Ġ* Ġ// Ġ@ Keep Ġis Ġrequired Ġif Ġusing Ġpro guard / R 8 Ċ Ġ* Ġ@ Keep Ċ Ġ* Ġclass ĠMy Feature Injector Ġ: ĠFeature Module Injector () Ġ{ Ċ Ġ* ĠĠĠĠ Ġoverride Ġfun Ġinject ( application : ĠDynamic Feature Module Application ) Ġ{ Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠD agger My Feature Component . builder () Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. app Component ( application . app Component ()) Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. my Feature Activity Module ( My Feature Activity Module ()) Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inject ( this ) Ċ Ġ* ĠĠĠĠ Ġ} Ċ Ġ* Ġ} Ċ Ġ* Ċ Ġ* Ġ// ĠExtension Ġfunction Ġfor Ġexposing Ġapp Component () Ġfrom ĠApplication Ċ Ġ* Ġfun ĠApplication . app Component () Ġ= Ġ(( this Ġas ĠMy Application ). component ) Ġas ĠApp Component Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ abstract Ġclass ĠFeature Module Injector Ġ{ ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġdispatch ing Activity Injector : ĠDispatch ing Android Injector < Activity > ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġdispatch ing Broadcast Receiver Injector : ĠDispatch ing Android Injector < Broadcast Receiver > ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġdispatch ing Content Provider Injector : ĠDispatch ing Android Injector < Content Provider > ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġdispatch ing Fragment Injector : ĠDispatch ing Android Injector < Fragment > ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġdispatch ing Service Injector : ĠDispatch ing Android Injector < Service > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġ[ Activity ] Ġinjector . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Activity ] Ġinjector . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġactivity Injector (): ĠDispatch ing Android Injector < Activity > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdispatch ing Activity Injector ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġ[ Broadcast Receiver ] Ġinjector . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Broadcast Receiver ] Ġinjector . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġbroadcast Receiver Injector (): ĠDispatch ing Android Injector < Broadcast Receiver > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdispatch ing Broadcast Receiver Injector ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġ[ Content Provider ] Ġinjector . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Content Provider ] Ġinjector . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcontent Provider Injector (): ĠDispatch ing Android Injector < Content Provider > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdispatch ing Content Provider Injector ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġ[ Fragment ] Ġinjector . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Fragment ] Ġinjector . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġfragment Injector (): ĠDispatch ing Android Injector < Fragment > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdispatch ing Fragment Injector ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġ[ Service ] Ġinjector . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ Service ] Ġinjector . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġservice Injector (): ĠDispatch ing Android Injector < Service > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdispatch ing Service Injector ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInject Ġthis Ġmodule Ġwith Ġthis Ġinjector . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ### ĠExample ĊĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠ Ġ* ĠD agger My Feature Component . builder () ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġ. app Component ( application . app Component ()) ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġ. my Feature Activity Module ( My Feature Activity Module ()) ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġ. build () ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġ. inject ( this ) ĊĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġapplication Ġthe Ġapplication . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġabstract Ġfun Ġinject ( application : ĠDynamic Feature Module Application ) Ċ }