package Ġcom . far ma . p oc . core . base Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Connectivity Manager Ċ import Ġandroid . net . Network Info Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġcom . far ma . p oc . core . config . network . Result Task Ċ Ċ interface ĠBase Network Task < E , T , R > Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġcall ( ĊĠĠĠĠĠĠĠ Ġe : ĠE ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġcallback : Ġ( Result Task . On Success < T > ?, ĠResult Task . On Failure < R > ?, Ġon Should Loading : Ġ( Boolean )? ) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ Ġerror Net Work Not Available : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġ) Ċ } Ċ Ċ abstract Ġclass ĠBase Network Task Impl < E , T , R > Ġ( private Ġval Ġcontext : ĠContext ): ĠBase Network Task < E , T , R > Ġ{ ĊĊĠĠĠ Ġvar Ġhas Network Available : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġhas Network Available Ġ= Ġverify If Has Network Available () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . M ) ĊĠĠĠ Ġfun Ġget Net Work Info (): ĠNetwork Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnectivity Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Context . CONNECT IVITY _ SERVICE ) Ġas ĠConnect ivity Manager ? ĊĠĠĠĠĠĠĠ Ġconnectivity Manager ?. let Ġ{ Ġconnectivity Manager Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinfo Network Ġ= Ġconnectivity Manager . active Network Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġinfo Network ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . M ) ĊĠĠĠ Ġfun Ġverify If Has Network Available (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġget Net Work Info ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġit . isConnected Ġ&& Ġit . is Available ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġrun Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }