/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠPeter ĠKen ji ĠY aman aka Ċ Ġ* Ċ Ġ* Ġ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 . py am soft . f ridge . ui . test ĊĊ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroidx . annotation . Check Result Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġco il . Component Registry Ċ import Ġco il . Image Loader Ċ import Ġco il . decode . DataSource Ċ import Ġco il . disk . Disk Cache Ċ import Ġco il . memory . Memory Cache Ċ import Ġco il . request . Default RequestOptions Ċ import Ġco il . request . Disposable Ċ import Ġco il . request . Error Result Ċ import Ġco il . request . Image Request Ċ import Ġco il . request . Image Result Ċ import Ġco il . request . Success Result Ċ import Ġkotlinx . coroutines . Deferred Ċ import Ġkotlinx . coroutines . Main Scope Ċ import Ġkotlinx . coroutines . async ĊĊ Ċ /** ĠOnly Ġuse Ġfor Ġtests / pre views Ġ*/ Ċ private Ġclass ĠTest Image Loader ( context : ĠContext ) Ġ: ĠImage Loader Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcontext Ġ= Ġcontext . application Context ĊĠĠĠ Ġprivate Ġval Ġloading Drawable Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĠColor Drawable ( Color . BLACK ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġsuccess Drawable Ġby Ġlazy ( Lazy Thread Safety Mode . NONE ) Ġ{ ĠColor Drawable ( Color . GREEN ) Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdis posable Ġ= ĊĠĠĠĠĠĠĠ Ġobject Ġ: ĠDis posable Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġis Disposed : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġjob : ĠDeferred < Image Result > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMain Scope (). async < Image Result > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠError Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= ĠImage Request . Builder ( context ). build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrowable Ġ= ĠRuntimeException (" Test "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġcomponents : ĠComponent Registry Ġ= ĠComponent Registry () ĊĊĠĠĠ Ġoverride Ġval Ġdefaults : ĠDefault RequestOptions Ġ= ĠDefault RequestOptions () ĊĊĠĠĠ Ġoverride Ġval Ġdisk Cache : ĠDisk Cache ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġval Ġmemory Cache : ĠMemory Cache ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġenqueue ( request : ĠImage Request ): ĠDis posable Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget ?. onStart ( placeholder Ġ= Ġloading Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget ?. on Success ( result Ġ= Ġsuccess Drawable ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdis posable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġexecute ( request : ĠImage Request ): ĠImage Result Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSuccess Result ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable Ġ= Ġsuccess Drawable , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Ġ= Ġrequest , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource Ġ= ĠDataSource . MEMORY , ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠnewBuilder (): ĠImage Loader . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠImage Loader . Builder ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshutdown () Ġ{} Ċ } Ċ Ċ /** ĠOnly Ġuse Ġfor Ġtests / pre views Ġ*/ Ċ @ Composable Ċ @ Check Result Ċ fun Ġcreate New Test Image Loader (): ĠImage Loader Ġ{ ĊĠĠĠ Ġval Ġcontext Ġ= ĠLocal Context . current ĊĠĠĠ Ġreturn ĠTest Image Loader ( context ) Ċ } Ċ