package Ġcom . sh uy u . github . kotlin . repository Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroid . content . Context Ċ import Ġcom . sh uy u . github . kotlin . common . config . AppConfig Ċ import Ġcom . sh uy u . github . kotlin . common . net .* Ċ import Ġcom . sh uy u . github . kotlin . common . utils . De bu ger Ċ import Ġcom . sh uy u . github . kotlin . common . utils . G SY Preference Ċ import Ġcom . sh uy u . github . kotlin . model . App Global Model Ċ import Ġcom . sh uy u . github . kotlin . model . bean . Event Ċ import Ġcom . sh uy u . github . kotlin . model . bean . Notification Ċ import Ġcom . sh uy u . github . kotlin . model . bean . User Ċ import Ġcom . sh uy u . github . kotlin . model . bean . UserInfo Request Model Ċ import Ġcom . sh uy u . github . kotlin . model . conversion . Event Conversion Ċ import Ġcom . sh uy u . github . kotlin . model . conversion . User Conversion Ċ import Ġcom . sh uy u . github . kotlin . model . ui . User UI Model Ċ import Ġcom . sh uy u . github . kotlin . repository . dao . User Dao Ċ import Ġcom . sh uy u . github . kotlin . service . Notification Service Ċ import Ġcom . sh uy u . github . kotlin . service . Repo Service Ċ import Ġcom . sh uy u . github . kotlin . service . UserService Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . functions . Bi Function Ċ import Ġio . reactivex . functions . Function Ċ import Ġokhttp 3 . ResponseBody Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠçĶ¨æĪ· çĽ¸åħ³ æķ°æį® èİ·åıĸ Ċ Ġ*/ Ċ class ĠUser Repository Ġ@ Inject Ġconstructor ( private Ġval Ġretrofit : ĠRet rofit , Ġprivate Ġval Ġapp Global Model : ĠApp Global Model , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġapplication : ĠApplication , Ġprivate Ġval Ġuser Dao : ĠUser Dao ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ çĻ»å½ķ çĶ¨æĪ· çļĦ ĠSharedPreferences Ġ å§Ķ æīĺ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar ĠuserInfo Storage : ĠString Ġby ĠG SY Preference ( AppConfig . USER _ INFO , Ġ"") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ çĶ¨æĪ· è¯¦ç»Ĩ ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Person Info Observable ( userName : ĠString ? Ġ= Ġnull ): ĠObservable < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Login User Ġ= ĠuserName Ġ== Ġnull ĊĠĠĠĠĠĠĠ Ġ// æł¹æį® æĺ¯åĲ¦ æľī çĶ¨æĪ·åĲį ï¼Į èİ·åıĸ ç¬¬ä¸ī æĸ¹ çĶ¨æĪ· æķ°æį® æĪĸèĢħ å½ĵåīį çĶ¨æĪ· æķ°æį® ĊĠĠĠĠĠĠĠ Ġval ĠuserService Ġ= Ġif Ġ( is Login User ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit . create ( UserService :: class . java ). get Person Info ( true ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit . create ( UserService :: class . java ). getUser ( true , ĠuserName !! ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġdo UserInfo Flat ( userService , Ġis Login User ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ çĶ¨æĪ· äº§çĶŁ çļĦ è¡Įä¸º äºĭä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetUser Event Observable ( userName : ĠString ?, Ġpage : ĠInt Ġ= Ġ 1 ): ĠObservable < Response < ArrayList < Event >>> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġretrofit . create ( UserService :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getUser Events ( true , ĠuserName Ġ?: Ġ"", Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dao . save User Event Dao ( it , ĠuserName !! , Ġpage Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ çĶ¨æĪ· ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Person Info ( result CallBack : ĠResult CallBack < User > ?, Ġresult Event CallBack : ĠResult CallBack < ArrayList < Any >>, ĠuserName : ĠString ? Ġ= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Observer Ġ= Ġuser Dao . getUser Info Dao ( userName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ?. login Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Cache Success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/// æł¹æį® çĶ¨æĪ· ç±»åŀĭ ï¼Į åĪ¤æĸŃ ä¸ĭ ä¸ĢæŃ¥ æĺ¯ èİ·åıĸ ç»Ħç»ĩ æĪĲåĳĺ è¿ĺæĺ¯ çĶ¨æĪ· äºĭä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . login Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . type Ġ== Ġ" Organization ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dao . get Org Members Dao ( it . login !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dao . getUser Event Dao ( it . login !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( ArrayList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Event CallBack . on Cache Success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmerge Service Ġ= Ġget Person Info Observable ( userName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/// æł¹æį® çĶ¨æĪ· ç±»åŀĭ ï¼Į åĪ¤æĸŃ ä¸ĭ ä¸ĢæŃ¥ æĺ¯ èİ·åıĸ ç»Ħç»ĩ æĪĲåĳĺ è¿ĺæĺ¯ çĶ¨æĪ· äºĭä»¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . type Ġ== Ġ" Organization ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Org Members ( it . login !! , Ġresult Event CallBack ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( Response . success ( ArrayList ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetUser Event Observable ( it . login ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġzip Service Ġ= ĠObservable . zip ( user Observer , Ġmerge Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBi Function < ArrayList < Any >, ĠResponse < ArrayList < Event >>, ĠResponse < ArrayList < Event >>> Ġ{ Ġ_, Ġremote Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremote ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġuser Event Request ( zip Service , Ġresult Event CallBack ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¿®æĶ¹ ä¸ªäºº ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġchange UserInfo ( context : ĠContext , Ġrequest Model : ĠUserInfo Request Model , Ġresult CallBack : ĠResult CallBack < User UI Model > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġretrofit . create ( UserService :: class . java ). save UserInfo ( request Model ) ĊĠĠĠĠĠĠĠ Ġval Ġresult Service Ġ= Ġdo UserInfo Flat ( service , Ġtrue ). flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlat Map Result 2 Response ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠRet rofit Factory . execute Result ( result Service , Ġobject Ġ: ĠResult Progress Observer < User >( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠUser ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Success ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Code Error ( code : ĠInt , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Failure () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠThrowable , Ġis Net Work Error : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Failure () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæ£Ģ æŁ¥ æĺ¯åĲ¦ åħ³æ³¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcheck Focus ( userName : ĠString ?, Ġresult CallBack : ĠResult CallBack < Boolean > ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠuserName ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġapp Global Model . user Observable . login ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ apply ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġretrofit . create ( UserService :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. check Following ( userName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġw atched Ġ= Ġif Ġ( it . code () Ġ== Ġ 4 0 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġit . is Successful ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( w atched ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFlat Map Result 2 Response ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit Factory . execute Result ( service , Ġobject Ġ: ĠResult Observer < Boolean >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Success ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠThrowable , Ġis Net Work Error : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Failure () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæī§è¡Į åħ³æ³¨ æĵįä½ľ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdo Focus ( context : ĠContext , ĠuserName : ĠString ?, Ġfocus : ĠBoolean , Ġresult CallBack : ĠResult CallBack < Boolean > ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠuserName ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this Ġ== Ġapp Global Model . user Observable . login ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ apply ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġif Ġ( focus ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit . create ( UserService :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. un follow User ( userName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit . create ( UserService :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. follow User ( userName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit Factory . execute Result ( service , Ġobject Ġ: ĠResult Progress Observer < ResponseBody >( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠResponse Body ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Success ( true ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠThrowable , Ġis Net Work Error : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ çĶ¨æĪ· äº§çĶŁ çļĦ äºĭä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetUser Event ( login : ĠString ?, Ġresult CallBack : ĠResult CallBack < ArrayList < Any >>, Ġpage : ĠInt Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġlogin Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġif Ġ( username . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġuser Event Ġ= ĠgetUser Event Observable ( login , Ġpage ) ĊĠĠĠĠĠĠĠ Ġuser Event Request ( user Event , Ġresult CallBack ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ çĶ¨æĪ· äº§çĶŁ çļĦ äºĭä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Org Members ( login : ĠString ?, Ġresult CallBack : ĠResult CallBack < ArrayList < Any >> ?, Ġpage : ĠInt Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġlogin Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġif Ġ( username . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġuser Event Ġ= Ġretrofit . create ( UserService :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Org Members ( true , Ġlogin Ġ?: Ġ"", Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dao . save Org Members Dao ( it , Ġlogin !! , Ġpage Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFlat Map Response 2 Response Result ( it , Ġobject Ġ: ĠFlat Conversion Interface < ArrayList < User >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Conversion ( t : ĠArrayList < User >? ): ĠArrayList < Any > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata List Ġ= ĠArrayList < Any >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( data Ġin Ġt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( User Conversion . user To User UI Model ( data )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠRet rofit Factory . execute Result ( user Event , Ġobject Ġ: ĠResult Tip Observer < ArrayList < Any >>( application ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Info ( first : ĠInt , Ġcurrent : ĠInt , Ġlast : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Page ( first , Ġcurrent , Ġlast ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠArrayList < Any > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Success ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Code Error ( code : ĠInt , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Failure () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠThrowable , Ġis Net Work Error : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Failure () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ çĶ¨æĪ· æİ¥æĶ¶ åĪ°çļĦ äºĭä»¶ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Received Event ( result CallBack : ĠResult CallBack < ArrayList < Any >> ?, Ġpage : ĠInt Ġ= Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlogin Ġ= Ġapp Global Model . user Observable . login ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= Ġlogin Ġ?: Ġ"" ĊĠĠĠĠĠĠĠ Ġif Ġ( username . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġreceived Event Ġ= Ġretrofit . create ( UserService :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get News Event ( true , Ġusername , Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dao . save Received Event Dao ( it , Ġpage Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġuser Observer Ġ= Ġuser Dao . get Received Event Dao () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Cache Success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġzip Service Ġ= ĠObservable . zip ( user Observer , Ġreceived Event , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBi Function < ArrayList < Any >, ĠResponse < ArrayList < Event >>, ĠResponse < ArrayList < Event >>> Ġ{ Ġ_, Ġremote Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremote ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġuser Event Request ( zip Service , Ġresult CallBack ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ çĶ¨æĪ· ç² ī ä¸ Ŀ åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetUser Follower ( userName : ĠString , Ġpage : ĠInt , Ġresult CallBack : ĠResult CallBack < ArrayList < Any >> ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdb Service Ġ= Ġuser Dao . getUser Follower Dao ( userName ) ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġretrofit . create ( UserService :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Follow ers ( true , ĠuserName , Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dao . save User Follower Dao ( userName , Ġit , Ġpage Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġuser List Request ( db Service , Ġservice , Ġresult CallBack , Ġpage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ çĶ¨æĪ· åħ³æ³¨ åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetUser Follow ed ( userName : ĠString , Ġpage : ĠInt , Ġresult CallBack : ĠResult CallBack < ArrayList < Any >> ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdb Service Ġ= Ġuser Dao . getUser Follow ed Dao ( userName ) ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġretrofit . create ( UserService :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Following ( true , ĠuserName , Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dao . save User Follow ed Dao ( userName , Ġit , Ġpage Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġuser List Request ( db Service , Ġservice , Ġresult CallBack , Ġpage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ ä»ĵåºĵ çļĦ star çĶ¨æĪ· åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Repository Star User ( userName : ĠString , Ġrepos Name : ĠString , Ġpage : ĠInt , Ġresult CallBack : ĠResult CallBack < ArrayList < Any >> ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdb Service Ġ= Ġuser Dao . getRepository Star User Dao ( userName , Ġrepos Name ) ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġretrofit . create ( Repo Service :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get St arg az ers ( true , ĠuserName , Ġrepos Name , Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dao . save Repository Star User Dao ( userName , Ġrepos Name , Ġit , Ġpage Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġuser List Request ( db Service , Ġservice , Ġresult CallBack , Ġpage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ ä»ĵåºĵ çļĦ watch çĶ¨æĪ· åĪĹè¡¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Repository Watch User ( userName : ĠString , Ġrepos Name : ĠString , Ġpage : ĠInt , Ġresult CallBack : ĠResult CallBack < ArrayList < Any >> ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġdb Service Ġ= Ġuser Dao . getRepository Watch User Dao ( userName , Ġrepos Name ) ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġretrofit . create ( Repo Service :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Watch ers ( true , ĠuserName , Ġrepos Name , Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dao . save Repository Watch User Dao ( userName , Ġrepos Name , Ġit , Ġpage Ġ== Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġuser List Request ( db Service , Ġservice , Ġresult CallBack , Ġpage ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Notify ( all : ĠBoolean ?, Ġparticip ating : ĠBoolean ?, Ġpage : ĠInt , Ġresult CallBack : ĠResult CallBack < ArrayList < Any >> ?) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( all Ġ== Ġnull Ġ|| Ġparticip ating Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit . create ( Notification Service :: class . java ). get Notification Un Read ( true , Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretrofit . create ( Notification Service :: class . java ). get Notification ( true , Ġall , Ġparticip ating , Ġpage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġnotify Service Ġ= Ġservice . flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlat Map Response 2 Response Result ( it , Ġobject Ġ: ĠFlat Conversion Interface < ArrayList < Notification >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Conversion ( t : ĠArrayList < Notification >? ): ĠArrayList < Any > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata List Ġ= ĠArrayList < Any >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata List . add ( Event Conversion . notification To Event UI Model ( application , Ġitem )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠRet rofit Factory . execute Result ( notify Service , Ġobject Ġ: ĠResult Tip Observer < ArrayList < Any >>( application ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Info ( first : ĠInt , Ġcurrent : ĠInt , Ġlast : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Info ( first , Ġcurrent , Ġlast ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Page ( first , Ġcurrent , Ġlast ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠArrayList < Any > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Success ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠThrowable , Ġis Net Work Error : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Failure () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Notification As Read ( id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġretrofit . create ( Notification Service :: class . java ). set Notification As Read ( id ) ĊĠĠĠĠĠĠĠ ĠRet rofit Factory . execute Result ( service , Ġobject Ġ: ĠResult Tip Observer < ResponseBody >( application ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠResponse Body ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠThrowable , Ġis Net Work Error : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset All Notification As Read ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġretrofit . create ( Notification Service :: class . java ). set All Notification As Read () ĊĠĠĠĠĠĠĠ ĠRet rofit Factory . execute Result ( service , Ġobject Ġ: ĠResult Progress Observer < ResponseBody >( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠResponse Body ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠThrowable , Ġis Net Work Error : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠçĶ¨æĪ· æķ°æį® è¯·æ±Ĥ ãĢģ ç»Ħ è£ħ ãĢģ ä¿ĿåŃĺ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdo UserInfo Flat ( service : ĠObservable < Response < User >>, Ġis Login User : ĠBoolean ): ĠObservable < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġservice . flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlat Map Response 2 Result ( it ) ĊĠĠĠĠĠĠĠ Ġ}. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/// èİ·åıĸ çĶ¨æĪ· star æķ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstar red Service Ġ= Ġretrofit . create ( Repo Service :: class . java ). get Star red Repos ( true , Ġit . login !! , Ġ 1 , Ġ" updated ", Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhon or Service Ġ= Ġretrofit . create ( Repo Service :: class . java ). getUser Repository 1 0 0 Status Dao ( true , Ġit . login !! , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstar Response Ġ= Ġstar red Service . blocking Single () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhon or Response Ġ= Ġhon or Service . blocking Single () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstar Page String Ġ= Ġstar Response . headers (). get (" page _ info ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( star Page String Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpage Info Ġ= ĠGson Utils . parser Json To Bean ( star Page String , ĠPage Info :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . star Repos Ġ= Ġif Ġ( page Info . last Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Info . last ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hon or Response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġhon or Response . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcount Ġ+= Ġit . watch ers Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . hon or Repos Ġ= Ġcount ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . just ( it ) ĊĠĠĠĠĠĠĠ Ġ}. do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/// å¦Ĥæŀľ æĺ¯ çĻ»å½ķ çĶ¨æĪ· ï¼Į ä¿ĿåŃĺ ä¸Ģ ä»½ æķ°æį® åĪ° ĠSharedPreferences ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Login User ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/// ä¿ĿåŃĺ çĶ¨æĪ· ä¿¡æģ¯ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserInfo Storage Ġ= ĠGson Utils . toJson String ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUser Conversion . clone Data From User ( application , Ġit , Ġapp Global Model . user Observable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser Dao . save UserInfo ( Response . success ( it ), Ġit . login !! ) ĊĠĠĠĠĠĠĠ Ġ}. onError Resume Next ( Function < Throwable , ĠObservable < User >> Ġ{ Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/// æĭ ¦ æĪª éĶĻè¯¯ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// userInfo Storage Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDe bu ger . printf Log (" userInfo ĠonError Resume Next Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObservable . error ( t ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæī§è¡Į ĠUser Ġ çĽ¸åħ³ çļĦ Ġobserver ï¼Į è¿ĶåĽŀ æķ°æį® ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġuser List Request ( db Observer : ĠObservable < ArrayList < Any >>, Ġobserver : ĠObservable < Response < ArrayList < User >> >, Ġresult CallBack : ĠResult CallBack < ArrayList < Any >> ?, Ġpage : ĠInt ) Ġ{ ĊĊĊĠĠĠĠĠĠĠ Ġval Ġdb Service Ġ= Ġdb Observer . do On Next Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Cache Success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġobserver . flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFlat Map Response 2 Response Result ( it , Ġobject Ġ: ĠFlat Conversion Interface < ArrayList < User >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Conversion ( t : ĠArrayList < User >? ): ĠArrayList < Any > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġarray ListOf < Any >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . forEach Ġ{ Ġdata Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= ĠUser Conversion . user To User UI Model ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . add ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġzip Service Ġ= ĠObservable . zip ( db Service , Ġservice , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBi Function < ArrayList < Any >, ĠResponse < ArrayList < Any >>, ĠResponse < ArrayList < Any >>> Ġ{ Ġ_, Ġremote Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremote ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠRet rofit Factory . execute Result ( zip Service , Ġobject Ġ: ĠResult Tip Observer < ArrayList < Any >>( application ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Info ( first : ĠInt , Ġcurrent : ĠInt , Ġlast : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Page Info ( first , Ġcurrent , Ġlast ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Page ( first , Ġcurrent , Ġlast ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠArrayList < Any > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Success ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠThrowable , Ġis Net Work Error : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Failure () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæī§è¡Į çĶ¨ äºĭä»¶ çĽ¸åħ³ è¯·æ±Ĥ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġuser Event Request ( observer : ĠObservable < Response < ArrayList < Event >> >, Ġresult CallBack : ĠResult CallBack < ArrayList < Any >> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġobserver ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFlat Map Response 2 Response Result ( it , Ġobject Ġ: ĠFlat Conversion Interface < ArrayList < Event >> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Conversion ( t : ĠArrayList < Event >? ): ĠArrayList < Any > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent UI List Ġ= ĠArrayList < Any >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( event Ġin Ġt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent UI List . add ( Event Conversion . event To Event UI Model ( event )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġevent UI List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠRet rofit Factory . execute Result ( service , Ġobject Ġ: ĠResult Tip Observer < ArrayList < Any >>( application ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Info ( first : ĠInt , Ġcurrent : ĠInt , Ġlast : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Page ( first , Ġcurrent , Ġlast ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠArrayList < Any > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Success ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Code Error ( code : ĠInt , Ġmessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Failure () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠThrowable , Ġis Net Work Error : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult CallBack ?. on Failure () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ }