package Ġio . github . amal han aja . reactive connectivity Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . dis pos ables . Disposable Ċ import Ġandroid . support . annotation . Requires Permission Ċ import Ġio . github . amal han aja . reactive connectivity . library . factory . Connectivity Observer Factory Ċ import Ġio . reactivex . android . schedul ers . Android Schedulers Ċ import Ġio . reactivex . schedul ers . Schedulers ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠA lf ian ĠAk mal ĠHan ant io Ġon Ġ 1 2 / 0 1 / 1 8 . Ċ Ġ* ĠEmail Ġ: Ġam al han aja @ gmail . com Ċ Ġ* ĠGithub : Ġhttps :// github . com / amal han aja / Ċ Ġ*/ Ċ class ĠReactive Connectivity ĊĠĠĠ Ġ( private Ġval Ġcontext : ĠContext , ĊĠĠĠĠ Ġprivate Ġval ĠonChange : Ġ( Connectivity Type ) Ġ-> ĠUnit , ĊĠĠĠĠ Ġprivate Ġval ĠonError : Ġ(( e : ĠThrowable ) Ġ Ġ-> ĠUnit )? Ġ= Ġnull ){ ĊĠĠĠ Ġprivate Ġvar Ġdis posable : ĠDis posable ? Ġ= Ġnull ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Requires Permission ( Manifest . permission . ACCESS _ NETWORK _ STATE ) ĊĠĠĠĠĠĠĠ Ġfun Ġbuild Observer ( context : ĠContext ): ĠObservable < Connectivity Type > Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M Ġ-> ĠConnect ivity Observer Factory . create Mar sm allow Observer ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBuild . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP Ġ-> ĠConnect ivity Observer Factory . create L ol lip op Observer ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠConnect ivity Observer Factory . create Pre L ol lip op Observer ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Requires Permission ( Manifest . permission . ACCESS _ NETWORK _ STATE ) ĊĠĠĠ Ġfun Ġsubscribe (){ ĊĠĠĠĠĠĠĠ Ġdis posable Ġ= ĠComp anion . build Observer ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct Until Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe On ( Schedulers . computation ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ ĠonChange . invoke ( it ) Ġ} ){ ĠonError ?. invoke ( it ) Ġ?: Ġit . printStackTrace () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdispose (){ ĊĠĠĠĠĠĠĠ Ġdis posable ?. dispose () ĊĠĠĠ Ġ} Ċ }