/* Ċ Ġ* ĠCopyright ĠWe i L ian Y ang Ċ Ġ* Ċ Ġ* Ġ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 . w illiam . toolkit . ext Ċ Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . w illiam . toolkit . base . Base ViewModel Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlinx . coroutines . with Context Ċ Ċ /** Ċ Ġ* Ġ è°ĥçĶ¨ æĲ º ç¨ĭ Ċ Ġ* Ġ@ param Ġblock Ġæī§è¡Į èĢĹ æĹ¶ ä»»åĬ¡ Ċ Ġ* Ġ@ param Ġsuccess Ġ æĪĲåĬŁ åĽŀè°ĥ ï¼Ī åľ¨ ä¸» çº¿ç¨ĭ ï¼ī Ċ Ġ* Ġ@ param Ġerror Ġ å¤±è´¥ åĽŀè°ĥ ï¼Ī åľ¨ ä¸» çº¿ç¨ĭ ï¼ī Ċ Ġ*/ Ċ fun Ġ< T > ĠBase ViewModel . launch ( ĊĠĠĠ Ġblock : Ġsuspend Ġ() Ġ-> ĠT , ĊĠĠĠ Ġsuccess : Ġ( T ) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġerror : Ġ( Throwable ) Ġ-> ĠUnit Ġ= Ġ{} Ċ ) Ġ{ ĊĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġkotlin . run Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith Context ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess ( it ) ĊĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* Ġ è°ĥçĶ¨ æĲ º ç¨ĭ Ċ Ġ* Ġ@ param Ġblock Ġæī§è¡Į ç½ĳç»ľ è¯·æ±Ĥ ä»»åĬ¡ Ċ Ġ* Ġ@ param Ġsuccess Ġ æĪĲåĬŁ åĽŀè°ĥ ï¼Ī åľ¨ ä¸» çº¿ç¨ĭ ï¼ī Ċ Ġ* Ġ@ param Ġerror Ġ å¤±è´¥ åĽŀè°ĥ ï¼Ī åľ¨ ä¸» çº¿ç¨ĭ ï¼ī Ċ Ġ*/ Ċ fun Ġ< T > ĠBase ViewModel . request ( ĊĠĠĠ Ġblock : Ġsuspend Ġ() Ġ-> ĠT , ĊĠĠĠ Ġsuccess : Ġ( T ) Ġ-> ĠUnit Ġ= Ġ{}, ĊĠĠĠ Ġerror : Ġ( Throwable ) Ġ-> ĠUnit Ġ= Ġ{} Ċ ) Ġ{ ĊĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠ Ġkotlin . run Catch ing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠ Ġ}. on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess ( it ) ĊĠĠĠĠĠĠĠ Ġ}. on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }