package Ġcom . lifecycle . demo . base . util Ċ Ċ import Ġcom . lifecycle . binding . util . toast Ċ import Ġcom . lifecycle . demo . inject . Info Entity Ċ import Ġcom . lifecycle . demo . inject . judge Api Throwable Ċ import Ġcom . lifecycle . demo . inject . success Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . run Blocking ĊĊ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ ProjectName : ĠĠĠ Ġkotlin Ċ Ġ* Ġ@ Package : ĠĠĠĠĠĠĠ Ġcom . lifecycle . demo . base . util Ċ Ġ* Ġ@ ClassName : ĠĠĠĠĠ ĠFlow Utils Ċ Ġ* Ġ@ Description : Ċ Ġ* Ġ@ Author : ĠĠĠĠĠĠĠĠ ĠA Ċ Ġ* Ġ@ Create Date : ĠĠĠĠĠ 2 0 2 0 / 4 / 2 Ġ 1 6 : 1 9 Ċ Ġ* Ġ@ Update User : ĠĠĠĠ ĠA Ċ Ġ* Ġ@ Update Date : ĠĠĠĠĠ 2 0 2 0 / 4 / 2 Ġ 1 6 : 1 9 Ċ Ġ* Ġ@ Update Remark : Ċ Ġ* Ġ@ Version : Ċ Ġ*/ ĊĊ Ċ type alias ĠHttp Block < T > Ġ= Ġsuspend Ġ() Ġ-> ĠInfo Entity < T > Ċ type alias ĠConvert Flow < T , ĠR > Ġ= Ġsuspend ĠFlow Collector < R >. ( T ) Ġ-> ĠR Ċ Ċ fun Ġ< T , ĠR > ĠHttp Block < T >. rest ful ( function : ĠConvert Flow < T , ĠR >): ĠFlow < R > Ġ{ ĊĠĠĠ Ġreturn Ġrun Blocking ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrun Catch ing Ġ{ Ġinvoke () Ġ}. getOrElse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠInfo Entity ( 2 , Ġit . message () Ġ?: Ġ"", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ Ġit . printStackTrace () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflow < R > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Ġ!= Ġsuccess ) Ġthrow Ġjudge Api Throwable ( this @ run ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull ) Ġemit ( function ( result )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ Ċ private Ġ Ġfun ĠThrowable . message (): ĠString ? Ġ{ ĊĠĠĠ Ġreturn Ġmessage ?: cause ?. message () Ċ } Ċ Ċ fun Ġ< T , ĠR > ĠHttp Block < T >. rest ful UI ( block : Ġsuspend ĠFlow Collector < R >. ( T ) Ġ-> ĠR ): ĠFlow < R > Ġ{ ĊĠĠĠ Ġreturn Ġrest ful ( block ) ĊĠĠĠĠĠĠĠ Ġ. flow On ( Dispatch ers . IO ) ĊĠĠĠĠĠĠĠ Ġ. catch Ġ{ Ġtoast ( it ) Ġ} Ċ } Ċ