/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 1 9 Ġ ĠH ari ĠSing h ĠK ul h ari Ċ Ġ* Ċ Ġ* Ġ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 . h ari . kotlin flow sand coroutines . utils . network Ċ Ċ /** Ċ Ġ* ĠA Ġgeneric Ġclass Ġthat Ġholds Ġa Ġvalue Ġwith Ġits Ġloading Ġstatus . Ċ Ġ* Ġ@ param Ġ< T > Ċ </ T > Ġ*/ Ċ data Ġclass ĠResource < Result Type >( ĊĠĠĠ Ġvar Ġstatus : ĠNetwork State , ĊĠĠĠ Ġvar Ġdata : ĠResult Type ? Ġ= Ġnull , ĊĠĠĠ Ġvar ĠerrorMessage : ĠString ? Ġ= Ġnull Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġ[ Resource ] Ġobject Ġwith Ġ` SUCCESS ` Ġstatus Ġand Ġ[ data ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< Result Type > Ġsuccess ( data : ĠResult Type ): ĠResource < Result Type > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . SUCCESS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġ[ Resource ] Ġobject Ġwith Ġ` LOADING ` Ġstatus Ġto Ġnotify ĊĠĠĠĠĠĠĠĠ Ġ* Ġthe ĠUI Ġto Ġshowing Ġloading . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< Result Type > Ġloading (): ĠResource < Result Type > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource ( Network State . LOADING ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġ[ Resource ] Ġobject Ġwith Ġ` ERROR ` Ġstatus Ġand Ġ[ message ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< Result Type > Ġerror ( message : ĠString ?): ĠResource < Result Type > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠResource ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNetwork State . ERROR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }