package Ġcom . fuzz . ked ux Ċ Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . catch Ċ import Ġkotlinx . coroutines . flow . filter Ċ import Ġkotlinx . coroutines . flow . flatMap Concat Ċ import Ġkotlinx . coroutines . flow . map Ċ Ċ /** Ċ Ġ* ĠData Ġrepresentation Ġof Ġa Ġloading Ġstate . ĠUseful Ġfor Ġnetwork Ġrequests . Ċ Ġ* Ċ Ġ* ĠDo Ġnot Ġconstruct Ġthis Ġobject Ġdirectly . ĠUse Ġone Ġof Ġthe Ġhelper Ġmethods Ġ[ Loading Model . success ], Ċ Ġ* Ġ[ Loading Model . error ], Ġ[ Loading Model . empty ], Ġor Ġ[ loading ] Ċ Ġ*/ Ċ data Ġclass ĠLoading Model < T > Ċ internal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval ĠisLoading : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġis Error : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġis Success : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġval Ġoptional Success : ĠT ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġval Ġoptional Error : ĠThrowable ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġobject Ġis Ġconsidered Ġempty Ġif Ġit Ġhas Ġno Ġsuccess , Ġerror , Ġor Ġis Ġnot Ġloading . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠisEmpty Ġ= Ġ! is Success Ġ&& Ġ! isError Ġ&& Ġ! isLoading ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġnon - null Ġ[ T ], Ġusing Ġforce Ġun wrapping . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsuccess : ĠT ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġoptional Success !! ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġnon - null Ġ[ Throwable ], Ġusing Ġforce Ġun wrapping . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġerror : ĠThrowable ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġoptional Error !! ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġa Ġnew Ġ[ Loading Model ] Ġinstance Ġthat Ġis Ġset Ġto Ġtrigger Ġloading . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġw ip es Ġout Ġany Ġerrors Ġand Ġkeeps Ġthe Ġprevious Ġ[ optional Success ]. ĠIf Ġyou Ġwish Ġto Ġclear Ġit , ĊĠĠĠĠ Ġ* Ġcall Ġloading ( null ). ĠThis Ġis Ġuseful Ġwhen Ġusing Ġa Ġpull Ġto Ġrefresh Ġcallback , Ġor Ġre loading Ġnewer ĊĠĠĠĠ Ġ* Ġinformation Ġin Ġthe ĠUI . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġloading ( success : ĠT ? Ġ= Ġoptional Success ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoading Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Success Ġ= Ġthis . is Success , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Success Ġ= Ġsuccess ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConstructs Ġa Ġnew Ġ[ Loading Model ] Ġwith Ġa Ġsuccess Ġvalue . ĠMay Ġpass Ġnull Ġhere . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġsuccess ( success : ĠT ?) Ġ= ĠLoading Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Success Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Success Ġ= Ġsuccess ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConstructs Ġa Ġnew Ġ[ Loading Model ] Ġwith Ġan Ġerror Ġvalue . ĠMay Ġpass Ġnull Ġhere . ĠAlso , ĊĠĠĠĠĠĠĠĠ Ġ* Ġcan Ġsupply Ġan Ġ[ optional Success ] Ġif Ġyou Ġwish Ġto Ġpreserve Ġthe Ġlast Ġsuccessful Ġdata , Ġor Ġprovide ĊĠĠĠĠĠĠĠĠ Ġ* Ġfallback Ġdata Ġin Ġthe Ġcase Ġsomething Ġuses Ġthis Ġobject Ġto Ġdisplay Ġits Ġsuccess Ġcriteria . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġerror ( error : ĠThrowable ?, Ġoptional Success : ĠT ? Ġ= Ġnull ) Ġ= ĠLoading Model < T >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Success Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Error Ġ= Ġerror , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptional Success Ġ= Ġoptional Success ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠConstructs Ġa Ġnew , Ġdefault Ġempty Ġversion Ġof Ġthe Ġmodel Ġwith Ġno Ġsuccess Ġor Ġerror Ġinformation . ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġis Ġuseful Ġfor Ġdefault Ġredux Ġstate , Ġor Ġto Ġsign ify Ġdata Ġhas Ġnot Ġtried Ġto Ġload Ġyet . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠEmpty Ġalso Ġrepresents Ġthe Ġstate Ġwhen Ġdata Ġgets Ġcleared . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġempty () Ġ= ĠLoading Model < T >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠisLoading Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Success Ġ= Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Error Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠThe Ġset Ġof Ġloading Ġaction Ġtypes Ġthat Ġ[ K ed ux Loader ] Ġgenerate . Ċ Ġ*/ Ċ sealed Ġclass ĠLoading Action Types Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRepresents Ġthe Ġaction Ġtype Ġfor Ġwhen Ġa Ġ[ K ed ux Loader ] Ġrequests Ġdata , Ġto Ġtrigger Ġa Ġ[ Loading Model . loading ] ĊĠĠĠĠ Ġ* Ġstate . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġ- ĠThe Ġunique ĠID Ġof Ġthe Ġ[ K ed ux Loader ] Ġaction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠRequest ( val Ġname : ĠString ) Ġ: ĠLoading Action Types () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġsuccessful Ġresponse Ġtype . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġ- ĠThe Ġunique ĠID Ġof Ġthe Ġ[ K ed ux Loader ] Ġaction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠSuccess ( val Ġname : ĠString ) Ġ: ĠLoading Action Types () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġerror Ġoccurred . ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġ- ĠThe Ġunique ĠID Ġof Ġthe Ġ[ K ed ux Loader ] Ġaction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠError ( val Ġname : ĠString ) Ġ: ĠLoading Action Types () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRepresents Ġthe Ġaction Ġtype Ġfor Ġwhen Ġa Ġ[ K ed ux Loader ] Ġrequests Ġto Ġclear Ġdata . ĊĠĠĠĠ Ġ* ĠT riggers Ġa Ġ[ Loading Model . empty ]. ĊĠĠĠĠ Ġ* Ġ@ param Ġname Ġ- ĠThe Ġunique ĠID Ġof Ġthe Ġ[ K ed ux Loader ] Ġaction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠClear ( val Ġname : ĠString ) Ġ: ĠLoading Action Types () Ċ } Ċ Ċ /** Ċ Ġ* ĠRepresents Ġan Ġaction Ġtype Ġthat Ġuses Ġthe Ġ[ Loading Action Types ] Ġwith Ġa Ġspecified Ġpayload . ĠThe Ġdata Ċ Ġ* Ġin Ġredux Ġis Ġbacked Ġby Ġa Ġ[ Loading Model ]. Ċ Ġ*/ Ċ data Ġclass ĠLoading Action < AT Ġ: ĠLoading Action Types , ĠP Ġ: ĠAny ? >( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġtype : ĠAT , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġpayload : ĠP ) Ġ: ĠAction < AT , ĠP > Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġnew Ġaction Ġgenerator Ġthat Ġallows Ġthe Ġspecified Ġ[ A ] Ġpayload Ġargument Ġtype . Ċ Ġ*/ Ċ internal Ġfun Ġ< T Ġ: ĠLoading Action Types , ĠA Ġ: ĠAny ?> Ġcreate Loading Action ( type : ĠT ): ĠAction Creator < T , ĠA , ĠA > Ġ= Ġobject Ġ: ĠAction Creator < T , ĠA , ĠA >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate ( arguments : ĠA ): ĠAction < T , ĠA > Ġ= ĠLoading Action ( type , Ġpayload Ġ= Ġarguments ) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġa Ġnew Ġaction Ġgenerator Ġthat Ġallows Ġthe Ġspecified Ġ[ A ] Ġpayload Ġargument Ġtype Ġthat Ġgenerates Ċ Ġ* Ġthe Ġpayload Ġwith Ġthe Ġspecified Ġ[ payload Creator ]. Ċ Ġ*/ Ċ internal Ġfun Ġ< T Ġ: ĠLoading Action Types , ĠA Ġ: ĠAny ?, ĠP Ġ: ĠAny ?> Ġcreate Loading Action ( ĊĠĠĠĠĠĠĠ Ġtype : ĠT , ĊĠĠĠĠĠĠĠ Ġpayload Creator : Ġ( arguments : ĠA ) Ġ-> ĠP ): ĠAction Creator < T , ĠA , ĠP > Ġ= Ġobject Ġ: ĠAction Creator < T , ĠA , ĠP >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate ( arguments : ĠA ): ĠAction < T , ĠP > Ġ= ĠLoading Action ( type , Ġpayload Ġ= Ġpayload Creator ( arguments )) Ċ } Ċ Ċ /** Ċ Ġ* ĠCreates Ġan Ġobject Ġthat Ġcontains Ġan Ġ[ Effect Fn ], Ġ[ Reducer ], Ġand Ġset Ġof Ġactions Ġthat Ġrepresent Ġloading Ċ Ġ* Ġstate Ġin Ġa Ġstructured Ġway . Ċ Ġ* Ċ Ġ* ĠUsage : Ċ Ġ* Ġ``` kotlin Ċ Ġ* Ġval Ġuser Loading State Ġ= ĠK ed ux Loader < Int , ĠUser >(" user ") Ġ{ Ġid Ġ-> ĠuserService . getUser ( id ) Ġ} Ċ Ġ* Ċ Ġ* Ġstore . dispatch ( user Loading State . request ( 5 )) Ċ Ġ* Ċ Ġ* Ġval Ġuser Loading State Selector Ġ= Ġcreate Selector Ġ{ Ġstate : ĠState Ġ-> Ġstate . user Ġ} Ċ Ġ* Ċ Ġ* Ġ// Ġconvenience Ġextensions Ġon Ġselectors Ċ Ġ* Ġstore . select ( user Loading State Selector ) Ċ Ġ* Ġ Ġ. success () Ċ Ġ* Ġ Ġ. subscribe Ġ{ Ġsuccess Ġ-> Ċ Ġ* ĠĠ Ġ// Ġonly Ġreturns Ġif Ġthere 's Ġa Ġsuccess Ġvalue Ċ Ġ* Ġ Ġ} Ċ Ġ* Ġ Ġ. addTo ( dis posable ) Ċ Ġ* Ġ``` Ċ Ġ*/ Ċ class ĠK ed ux Loader < T Request Ġ: ĠAny , ĠT Success Ġ: ĠAny >( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrequest er : Ġ( args : ĠT Request ) Ġ-> ĠFlow < T Success >) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequest Ġaction Ġcreator . ĠUse Ġit Ġto Ġdispatch Ġon Ġthe Ġstore . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUsage : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġrequest ( T Request ) Ġreturns ĠAction < Loading Action Types . Request , ĠT Request > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġstore . dispatch ( loader . request ( request Payload )) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġrequest Ġ= Ġcreate Loading Action < Loading Action Types . Request , ĠT Request >( Loading Action Types . Request ( name )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequest Ġsuccess Ġcreator . ĠUse Ġit Ġto Ġdispatch Ġon Ġthe Ġstore . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUsage : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġsuccess ( T Success ) Ġreturns ĠAction < Loading Action Types . Success , ĠT Success > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġstore . dispatch ( loader . success ( success Payload )) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġsuccess Ġ= Ġcreate Loading Action < Loading Action Types . Success , ĠT Success >( Loading Action Types . Success ( name )) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRequest Ġerror Ġcreator . ĠUse Ġit Ġto Ġdispatch Ġon Ġthe Ġstore . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUsage : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġerror ( Throwable ) Ġreturns ĠAction < Loading Action Types . Error , ĠThrowable > ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġstore . dispatch ( loader . error ( e )) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġerror Ġ= Ġcreate Loading Action < Loading Action Types . Error , ĠThrowable >( Loading Action Types . Error ( name )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClear Ġaction . ĠUse Ġit Ġto Ġdispatch Ġon Ġthe Ġstore . ĠOnly Ġone Ġis Ġnecessary Ġas Ġit Ġtakes Ġno Ġarguments ĊĠĠĠĠ Ġ* Ġon Ġclearing Ġdata . ĠClear ing Ġis Ġa Ġcomplete Ġw ipe Ġof Ġthe Ġ[ K ed ux Loader ] Ġdata . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUsage : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġstore . dispatch ( loader . clear ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġclear Ġ= ĠLoading Action ( Loading Action Types . Clear ( name ), ĠUnit ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġgenerated Ġreducer Ġthat Ġdoes Ġall Ġof Ġthe Ġwork Ġfor Ġyou . ĠPlace Ġthis Ġreducer Ġas Ġpart Ġof Ġa Ġ[ Fr act ured State ] ĊĠĠĠĠ Ġ* Ġor Ġas Ġpart Ġof Ġanother Ġreducer Ġto Ġautomate Ġdata Ġhandling . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠUsage : ĊĠĠĠĠ Ġ* Ġ``` kotlin ĊĠĠĠĠ Ġ* Ġval Ġreducer Ġ= Ġany Reducer Ġ{ Ġstate : ĠState , Ġaction : ĠAny Ġ-> ĊĠĠĠĠ Ġ* ĠĠ Ġwhen ( action ) Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġ// Ġcatch Ġall ĠLoading Ġaction Ġtypes Ġhere Ġand Ġmodify Ġstate . ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġis ĠLoading Action < *, Ġ*> Ġ-> Ġ{ ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠ Ġstate . copy ( ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġproduct Ġ= Ġloader . reducer . reduce ( state . product , Ġaction ), ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġother Loading Ġ= Ġother Loader . reducer . reduce ( state . other Loading , Ġaction ), ĊĠĠĠĠ Ġ* ĠĠĠĠĠĠ Ġ) ĊĠĠĠĠ Ġ* ĠĠĠĠ Ġ} ĊĠĠĠĠ Ġ* ĠĠ Ġ} ĊĠĠĠĠ Ġ* Ġ} ĊĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġval Ġreducer Ġ= Ġaction Type Reducer Ġ{ Ġs : ĠLoading Model < T Success >, Ġaction : ĠAction < Loading Action Types , Ġ*> Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoading Action Types . Request ( name ) Ġ-> Ġs . loading () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoading Action Types . Success ( name ) Ġ-> ĠLoading Model . success ( action . payload Ġas ĠT Success ?) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoading Action Types . Clear ( name ) Ġ-> ĠLoading Model . empty () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLoading Action Types . Error ( name ) Ġ-> ĠLoading Model . error ( action . payload Ġas ĠThrowable ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . optional Success ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġs ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠApply Ġthis Ġgenerated Ġeffect Ġinto Ġthe Ġapplication Ġ[ Effects ] Ġclass . ĠThis Ġwill Ġcoordinate Ġrequest , ĊĠĠĠĠ Ġ* Ġsuccess , Ġand Ġerrors Ġusing Ġthe Ġ[ requester ] Ġsupplied Ġin Ġthe Ġloader . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġval Ġeffect Ġ= Ġcreate ActionType Effect < Loading Action Types , ĠT Request , ĠLoading Action Types , ĠAny > Ġ{ Ġaction Ġ-> ĊĠĠĠĠĠĠĠ Ġaction . filter Ġ{ Ġit . type Ġ== ĠLoading Action Types . Request ( name ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Concat Ġ{ Ġrequest Ġ-> Ġrequest er ( request . payload ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġsuccess ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. catch Ġ{ Ġcause Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcause . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ K ed ux Loader . error ( cause ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġas ĠFlow < Action < Loading Action Types , ĠAny >> ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠCompose Ġselector Ġthat Ġonly Ġemits Ġa Ġcomputation Ġif Ġthere 's Ġa Ġ[ Loading Model . success ] Ġstate . Ċ Ġ*/ Ċ fun Ġ< S Ġ: ĠAny , ĠT > ĠSelector < S , ĠLoading Model < T >> . success () Ġ= Ġcompose ({ Ġfilter Ġ{ Ġit . optional Success Ġ!= Ġnull Ġ} Ġ}) Ġ{ Ġstate Ġ-> Ġstate . success Ġ} Ċ Ċ /** Ċ Ġ* ĠCompose Ġselector Ġthat Ġreturns Ġthe Ġ[ Loading Model . optional Success ] Ġstate . Ċ Ġ*/ Ċ fun Ġ< S Ġ: ĠAny , ĠT > ĠSelector < S , ĠLoading Model < T >> . optional Success () Ġ= Ġcompose Ġ{ Ġstate Ġ-> Ġstate . optional Success Ġ} Ċ Ċ /** Ċ Ġ* ĠCompose Ġselector Ġthat Ġonly Ġemits Ġa Ġcomputation Ġif Ġth eres Ġa Ġ[ Loading Model . error ] Ġstate . Ċ Ġ*/ Ċ fun Ġ< S Ġ: ĠAny , ĠT > ĠSelector < S , ĠLoading Model < T >> . error () Ġ= Ġcompose ({ Ġfilter Ġ{ Ġit . optional Error Ġ!= Ġnull Ġ} Ġ}) Ġ{ Ġstate Ġ-> Ġstate . error Ġ} Ċ Ċ /** Ċ Ġ* ĠCompose Ġselector Ġthat Ġreturns Ġthe Ġ[ Loading Model . optional Error ] Ġstate . Ċ Ġ*/ Ċ fun Ġ< S Ġ: ĠAny , ĠT > ĠSelector < S , ĠLoading Model < T >> . optional Error () Ġ= Ġcompose Ġ{ Ġstate Ġ-> Ġstate . optional Error Ġ} Ċ Ċ /** Ċ Ġ* ĠCompose Ġselector Ġthat Ġreturns Ġthe Ġ[ Loading Model . isLoading ] Ġvalue . Ċ Ġ*/ Ċ fun Ġ< S Ġ: ĠAny , ĠT > ĠSelector < S , ĠLoading Model < T >> . loading () Ġ= Ġcompose Ġ{ Ġstate Ġ-> Ġstate . isLoading Ġ} Ċ