package Ġcom . far ma . p oc . features . sing up . data . task Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . far ma . p oc . core . base . Base Network Task Impl Ċ import Ġcom . far ma . p oc . core . config . network . Result Task Ċ import Ġcom . far ma . p oc . core . utils . dto . Response DTO Ċ import Ġcom . far ma . p oc . features . sing up . data . api . Sing Up Api Ċ import Ġcom . far ma . p oc . features . sing up . data . dao . Sing Up Credentials DTO Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġokhttp 3 . ResponseBody Ċ Ċ class ĠSing Up Task ( private Ġval Ġsing Up Api : ĠSing Up Api , Ġcontext : ĠContext ) Ġ: ĊĠĠĠ ĠBase Network Task Impl < Sing Up Credentials DTO , ĠResponse DTO , ĠResponse Body >( context ) Ġ{ ĊĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġcall ( ĊĠĠĠĠĠĠĠ Ġe : ĠSing Up Credentials DTO ?, ĊĠĠĠĠĠĠĠ Ġcallback : Ġ( Result Task . On Success < Response DTO > ?, ĠResult Task . On Failure < ResponseBody > ?, Ġon Should Loading : ĠBoolean ?) Ġ-> ĠUnit , ĊĠĠĠĠĠĠĠ Ġerror Net Work Not Available : Ġ() Ġ-> ĠUnit , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( verify If Has Network Available ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCor outine Scope ( Dispatch ers . IO ). launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . invoke ( null , Ġnull , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġe ?. let Ġ{ Ġsing Up Api . register Account ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result ?. is Successful Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . invoke ( Result Task . On Success ( data Ġ= Ġresult . body ()), Ġnull , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback . invoke ( null , ĠResult Task . On Failure ( data Ġ= Ġresult ?. error Body ()), Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Net Work Not Available . invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }