/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠSimon ĠK ales ch ke Ċ Ġ* Ċ Ġ* Ġ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 . github . che ap mon . bal ala ika . data . result Ċ Ċ /** ĠState Ġof Ġan Ġasynchronous Ġoperation Ġ*/ Ċ public Ġsealed Ġclass ĠLoad State < T , ĠE > Ġ{ ĊĠĠĠ Ġ/** ĠOperation Ġhas Ġbeen Ġstarted Ġ*/ ĊĠĠĠ Ġpublic Ġclass ĠInit < T , ĠE > Ġ: ĠLoad State < T , ĠE >() ĊĊĠĠĠ Ġ/** ĠOperation Ġis Ġin Ġprogress Ġ*/ ĊĠĠĠ Ġpublic Ġclass ĠLoading < T , ĠE > Ġ: ĠLoad State < T , ĠE >() ĊĊĠĠĠ Ġ/** ĠOperation Ġis Ġfinished Ġand Ġhas Ġeither Ġsucceeded Ġor Ġfailed Ġ*/ ĊĠĠĠ Ġpublic Ġdata Ġclass ĠFinished < T , ĠE >( ĊĠĠĠĠĠĠĠ Ġ/** ĠResult Ġof Ġoperation Ġ*/ ĊĠĠĠĠĠĠĠ Ġval Ġdata : ĠResult < T , ĠE > ĊĠĠĠ Ġ) Ġ: ĠLoad State < T , ĠE >() ĊĊĠĠĠ Ġ/** ĠRetrieve Ġresult Ġor Ġan Ġalternative Ġvalue Ġif Ġthe Ġoperation Ġfailed Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġor ( value : ĠT ): ĠT Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠFinished Ġ-> Ġthis . data . or ( value ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠTransform Ġresult Ġif Ġthe Ġoperation Ġsucceeded Ġ*/ ĊĠĠĠ Ġpublic Ġinline Ġfun Ġ< R > Ġmap ( block : Ġ( T ) Ġ-> ĠR ): ĠLoad State < R , ĠE > Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠInit Ġ-> ĠInit () ĊĠĠĠĠĠĠĠ Ġis ĠLoading Ġ-> ĠLoading () ĊĠĠĠĠĠĠĠ Ġis ĠFinished Ġ-> ĠFinished ( this . data . map ( block )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠTransform Ġresult Ġif Ġthe Ġoperation Ġfailed Ġ*/ ĊĠĠĠ Ġpublic Ġinline Ġfun Ġ< S > Ġmap Error ( block : Ġ( E ) Ġ-> ĠS ): ĠLoad State < T , ĠS > Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠInit Ġ-> ĠInit () ĊĠĠĠĠĠĠĠ Ġis ĠLoading Ġ-> ĠLoading () ĊĠĠĠĠĠĠĠ Ġis ĠFinished Ġ-> ĠFinished ( this . data . map Error ( block )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠRun Ġ[ block ] Ġif Ġthis Ġoperation Ġsucceeded Ġ*/ ĊĠĠĠ Ġpublic Ġinline Ġfun ĠonSuccess ( block : Ġ( T ) Ġ-> ĠUnit ): ĠLoad State < T , ĠE > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠFinished ) Ġthis . data . on Success ( block ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠRun Ġ[ block ] Ġif Ġthis Ġoperation Ġfailed Ġ*/ ĊĠĠĠ Ġpublic Ġinline Ġfun ĠonError ( block : Ġ( E ) Ġ-> ĠUnit ): ĠLoad State < T , ĠE > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġis ĠFinished ) Ġthis . data . onError ( block ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ } Ċ