/* Ċ Ġ* ĠCopyright ĠÂ© Ġ 2 0 2 1 ĠR ong Cloud . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ Ċ package Ġcn . r ong cloud . vo ic ero om demo . mvp . presenter Ċ Ċ import Ġandroid . util . Log Ċ import Ġcn . r ong cloud . vo ic ero om . api . RC Voice Room Engine Ċ import Ġcn . r ong cloud . vo ic ero om . api . callback . RC Voice Room Callback Ċ import Ġcn . r ong cloud . vo ic ero om demo . common . Account Store Ċ import Ġcn . r ong cloud . vo ic ero om demo . common . Base Life Cycle Presenter Ċ import Ġcn . r ong cloud . vo ic ero om demo . common . isNotNull OrEmpty Ċ import Ġcn . r ong cloud . vo ic ero om demo . mvp . activity . iv iew . IV oice Room View Ċ import Ġcn . r ong cloud . vo ic ero om demo . mvp . model .* Ċ import Ġcn . r ong cloud . vo ic ero om demo . mvp . model . message .* Ċ import Ġcn . r ong cloud . vo ic ero om demo . net . Ret rofit Manager Ċ import Ġcn . r ong cloud . vo ic ero om demo . ui . u im odel . Ui Member Model Ċ import Ġcn . r ong cloud . vo ic ero om demo . ui . u im odel . Ui Room Model Ċ import Ġcn . r ong cloud . vo ic ero om demo . ui . u im odel . Ui Seat Model Ċ import Ġcn . r ong cloud . vo ic ero om demo . utils . Audio Effect Manager Ċ import Ġcn . r ong cloud . vo ic ero om demo . utils . Audio Manager Util Ċ import Ġcn . r ong cloud . vo ic ero om demo . utils . RC Chat Room Message Manager Ċ import Ġio . reactivex . rx java 3 . android . schedul ers . Android Schedulers Ċ import Ġio . r ong . im lib . IR ong Core Listener Ċ import Ġio . r ong . im lib . model . Message Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* Ġ@ author Ġg usd Ċ Ġ* Ġ@ Date Ġ 2 0 2 1 / 0 6 / 1 0 Ċ Ġ*/ Ċ private Ġconst Ġval ĠTAG Ġ= Ġ" Voice Room Presenter " Ċ Ċ const Ġval ĠSTATUS _ ON _ SE AT Ġ= Ġ 0 Ċ const Ġval ĠSTATUS _ NOT _ ON _ SE AT Ġ= Ġ 1 Ċ const Ġval ĠSTATUS _ WAIT _ FOR _ SE AT Ġ= Ġ 2 Ċ Ċ class ĠVoice Room Presenter ( val Ġview : ĠI Voice Room View , Ġval Ġroom Id : ĠString ) Ġ: ĊĠĠĠ ĠBase Life Cycle Presenter < IV oice Room View >( view ), ĠIR ong Core Listener . On Receive Message Listener Ġ{ ĊĊĊĠĠĠ Ġprivate Ġval Ġroom Model : ĠVoice Room Model Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġget Voice Room Model By Room Id ( roomId ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġcurrent Status Ġ= ĠSTATUS _ NOT _ ON _ SE AT ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġcurrent UserId : ĠString ĊĊĊĠĠĠ Ġprivate Ġvar Ġhas Init Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate () ĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ æĪ¿ éĹ´ ä¿¡æģ¯ åıĺåĮĸ ĊĠĠĠĠĠĠĠ Ġadd Disposable ( room Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ob Room Info Change () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġroom Info Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Init ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Init Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . init Role View ( room Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinit Room EventListener () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjoin Room () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġafter Init View () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent UserId Ġ= ĠAccount Store . getUserId () Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . refresh Room Info ( room Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error ( it . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . leave Room Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġafter Init View () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ åº§ ä½į åĪĹè¡¨ åıĺåĮĸ ĊĠĠĠĠĠĠĠ Ġadd Disposable ( room Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ob Seat List Change () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on Seat List Change ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . userId . isNotNull OrEmpty () Ġ&& Ġ( it . member ?. member Ġ== Ġnull )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmember Info Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . get Member Info By UserId Only Local ( it . userId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( member Info ?. member Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" ob Seat List Change : Ġmember Ġis Ġnull ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . refresh All Member InfoList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . member Ġ= Ġmember Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ åħ¨éĥ¨ åº§ ä½į ä¿¡æģ¯ åıĺåĮĸ ĊĠĠĠĠĠĠĠ Ġadd Disposable ( room Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ob Seat Info Change () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġinfo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( info . member ?. member Ġ== Ġnull ) Ġ&& Ġ! info . userId . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmember Info Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . get Member Info By UserId Only Local ( info . userId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( member Info ?. member Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . refresh All Member InfoList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinfo . member Ġ= Ġmember Info ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on Seat Info Change ( info . index , Ġinfo ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ åľ¨ çº¿ äºº æķ° åıĺåĮĸ ĊĠĠĠĠĠĠĠ Ġadd Disposable ( room Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ob Online User Count () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġcount Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . refresh Online Users Number ( count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ æĪ¿ éĹ´ äºĭä»¶ ĊĠĠĠĠĠĠĠ Ġadd Disposable ( room Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ob Room Event Change () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Room Event ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ æĪ¿ éĹ´ æĪĲåĳĺ åĪĹè¡¨ åıĺåĮĸ ĊĠĠĠĠĠĠĠ Ġadd Disposable ( room Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ob Member List Change () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĽłä¸º å¼Ģ éĶĢ è¾ĥ å¤§ ï¼Į éĺ² æŃ¢ è¿ĩ å¿« è°ĥçĶ¨ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. de bounce ( 1 0 , ĠTimeUnit . MILLISECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" ob Member List Change : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ Ġmember Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . get Seat Info By UserId ( member . userId )?. member Ġ= Ġmember ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on Member Info Change () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ æĪ¿ éĹ´ æĪĲåĳĺ ä¿¡æģ¯ åıĺåĮĸ ĊĠĠĠĠĠĠĠ Ġadd Disposable ( room Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ob Member Info Change () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" onCreate : Ġob Member Info Change ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . get Seat Info By UserId ( it . userId )?. member Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . userId Ġ== ĠAccount Store . getUserId ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ å½ĵåīį çĶ¨æĪ· æĺ¯åĲ¦ ä¸º ç®¡çĲĨåĳĺ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( room Model . current UI Room Info . room Bean ?. createUser ?. userId Ġ!= ĠAccount Store . getUserId ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . switch To Admin Role ( it . isAdmin , Ġroom Model . current UI Room Info ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ èĩªå·± åľ¨ åº§ ä½į ä¸ĬçļĦ åıĺåĮĸ ĊĠĠĠĠĠĠĠ Ġadd Disposable ( room Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ob Seat Info Change () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġin Seat Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . current UI Seat InfoList . forEach Ġ{ Ġmodel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( model . userId Ġ== ĠAccount Store . getUserId ()) Ġin Seat Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġin Seat ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Status Ġ== ĠSTATUS _ WAIT _ FOR _ SE AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. cancel Request Seat ( object Ġ: ĠR CV oice Room Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( code : ĠInt , Ġmessage : ĠString ?) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Status Ġ= ĠSTATUS _ ON _ SE AT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . change Status ( STATUS _ ON _ SE AT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Status Ġ!= ĠSTATUS _ WAIT _ FOR _ SE AT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Status Ġ= ĠSTATUS _ NOT _ ON _ SE AT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . change Status ( STATUS _ NOT _ ON _ SE AT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ æĪ¿ éĹ´ æ¶Īæģ¯ ĊĠĠĠĠĠĠĠ Ġadd Disposable ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRC Chat Room Message Manager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ob Message Receive By Room Id ( roomId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. observe On ( Android Schedulers . main Thread ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRC Chat room Location Message , Ġis ĠRC Chat room B arr age , Ġis ĠRC Chat room Enter , Ġis ĠRC Chat room Kick Out , Ġis ĠRC Chat room Gift All , Ġis ĠRC Chat room Gift , Ġis ĠRC Chat room Admin , Ġis ĠRC Chat room Se ats Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Chat Room Message ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠRC Chat room Gift All Ġ|| Ġit Ġis ĠRC Chat room Gift ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . refresh Gift () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠRC Chat room Enter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmember Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . get Member Info By UserId Only Local ( it . userId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( member ?. member Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . refresh All Member InfoList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRC Chat room Like Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show F ov ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ çĽĳåĲ¬ ä¸Ĭ éº ¦ éĤ Ģ è¯· ĊĠĠĠĠĠĠĠ Ġadd Disposable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ob On Pick Seat Received () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Pick Received ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ== ĠgetCurrent Room Info (). room Bean ?. createUser ?. userId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġadd Disposable ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. ob Un read Message Number Change () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Un read Message ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġadd Disposable ( room Model ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ob Request Seat List Change () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġit . size ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. distinct Until Changed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġnumber Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Un Read Request Number ( number ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġcurrent Status Ġ= ĠSTATUS _ NOT _ ON _ SE AT ĊĠĠĠĠĠĠĠ Ġview . change Status ( STATUS _ NOT _ ON _ SE AT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Room Event ( event Info : ĠPair < String , ĠArrayList < String >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( event Info . first ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEVENT _ ROOM _ CLOSE Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . showMessage (" æĪ¿ éĹ´ å·² åħ³éĹŃ ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleave Room () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Room Close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEVENT _ BACKGROUND _ CHANGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . refresh Room Info () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEVENT _ MANAGER _ LIST _ CHANGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . refresh Admin List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEVENT _ RE JECT _ MANAGE _ P ICK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" handle Room Event : ĠEVENT _ RE JECT _ MANAGE _ P ICK ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġæĭ Ĵ ç»Ŀ ä¹ĭåĲİ éĩį ç½® çĬ¶æĢģ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . get Member Info By UserId Only Local ( event Info . second . elementAt OrNull ( 0 )) ?. is Inv ited Info Seat Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . notice Member List Update () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEVENT _ AG REE _ MANAGE _ P ICK Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" handle Room Event : ĠEVENT _ AG REE _ MANAGE _ P ICK ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĲĮ æĦı ä¹ĭåĲİ éĩį ç½® çĬ¶æĢģ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . get Member Info By UserId Only Local ( event Info . second . elementAt OrNull ( 0 )) ?. is Inv ited Info Seat Ġ= Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . notice Member List Update () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEVENT _ K ICK ED _ OUT _ OF _ ROOM Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event Info . second [ 1 ] Ġ== ĠAccount Store . getUserId ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . showMessage (" ä½ł å·² è¢« è¸ ¢ åĩº æĪ¿ éĹ´ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleave Room () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġ 2 0 2 1 / 7 / 2 Ġ æĺ¾ç¤º è¢« è¸ ¢ æ¶Īæģ¯ Ġ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend System Message (" æĺ¾ç¤º åĪ« äºº è¢« è¸ ¢ æ¶Īæģ¯ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEVENT _ REQUEST _ SE AT _ REF USE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . showMessage (" æĤ¨çļĦ ä¸Ĭ éº ¦ è¯·æ±Ĥ è¢« æĭ Ĵ ç»Ŀ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Status Ġ= ĠSTATUS _ NOT _ ON _ SE AT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . change Status ( current Status ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEVENT _ REQUEST _ SE AT _ AG REE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenter Seat If Available () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Status Ġ= ĠSTATUS _ NOT _ ON _ SE AT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . change Status ( current Status ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEVENT _ K ICK _ OUT _ OF _ SE AT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . showMessage (" æĤ¨ å·² è¢« æĬ ± ä¸ĭ éº ¦ ä½į ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEVENT _ REQUEST _ SE AT _ CANCEL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Status Ġ= ĠSTATUS _ NOT _ ON _ SE AT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . change Status ( current Status ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Room EventListener () Ġ{ ĊĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance (). set Voice Room EventListener ( room Model ) ĊĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance (). addMessage Receive Listener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġroom Model . on Destroy () ĊĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance (). set Voice Room EventListener ( null ) ĊĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance (). remove Message Receive Listener ( this ) ĊĠĠĠĠĠĠĠ ĠAudio Manager Util . dispose () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetCurrent Room Info (): ĠUi Room Model Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġroom Model . current UI Room Info ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetCurrent Se ats Info (): ĠList < Ui Seat Model > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġroom Model . current UI Seat InfoList ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Member Info By UserId ( userId : ĠString , Ġblock : Ġ( Ui Member Model ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġroom Model . query UserInfo From Local And Server ( userId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġblock . invoke ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġjoin Room () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" join Room : Ġ${ roomId }") ĊĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance (). join Room ( roomId , Ġobject Ġ: ĠR CV oice Room Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( code : ĠInt , Ġmessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error ( code , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . on Join Room Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . get On Line Users Count () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . refresh All Member InfoList () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend System Message () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGlobal Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Effect Manager . init () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Manager Util . choice Audio Model () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend System Message () Ġ{ ĊĠĠĠĠĠĠĠ ĠRC Chat Room Message Manager . send Location Message ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroom Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" æ¬¢ è¿İ æĿ¥ åĪ° Ġ${ room Model . current UI Room Info . room Bean ?. room Name }" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠRC Chat Room Message Manager . send Location Message ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroom Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" æĦŁ è°¢ ä½¿çĶ¨ èŀ į äºĳ ĠRTC Ġ è¯Ń éŁ³ æĪ¿ ï¼Į è¯· éģ µ å®Ī çĽ¸åħ³ æ³ķ è§Ħ ï¼Į ä¸įè¦ģ ä¼ł æĴŃ ä½İ ä¿ Ĺ ãĢģ æļ´ åĬĽ çŃī ä¸į èī¯ ä¿¡æģ¯ ãĢĤ æ¬¢ è¿İ æĤ¨ æĬĬ ä½¿çĶ¨ è¿ĩç¨ĭ ä¸ŃçļĦ æĦŁ åıĹ åıį é¦ Ī ç»Ļ æĪĳä»¬ ãĢĤ " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠRC Chat Room Message Manager . send ChatMessage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroom Id , ĠRC Chat room Enter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . userId Ġ= ĠAccount Store . getUserId () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . userName Ġ= ĠAccount Store . getUser Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġfalse ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġleave Room () Ġ{ ĊĠĠĠĠĠĠĠ Ġroom Model . on Leave Room () ĊĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġroom Model . isIn Seat ( current UserId ) ĊĠĠĠĠĠĠĠ Ġif Ġ( index Ġ> Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance (). leave Seat ( object Ġ: ĠR CV oice Room Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( code : ĠInt , Ġmessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleave RT CR oom () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleave RT CR oom () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġleave RT CR oom () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġleave RT CR oom () Ġ{ ĊĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance (). leave Room ( object Ġ: ĠR CV oice Room Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( code : ĠInt , Ġmessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error ( code , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . leave Room Success () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . leave Room Success () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclose Room () Ġ{ ĊĠĠĠĠĠĠĠ Ġview . show Waiting Dialog () ĊĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance (). notify Voice Room ( EVENT _ ROOM _ CLOSE , Ġ"") ĊĠĠĠĠĠĠĠ ĠRet rofit Manager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. common Service ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. delete Room ( roomId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. delay ( 2 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe ({ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . hide Waiting Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result . code Ġ== Ġ 1 0 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleave Room () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error ( result . code , Ġresult . msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . hide Waiting Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error (- 1 , Ġt . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġroom Owner Enter Seat () Ġ{ ĊĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance (). enter Seat ( 0 , Ġobject Ġ: ĠR CV oice Room Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( code : ĠInt , Ġmessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" enter Seat :: onError : Ġ$ message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error ( code , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Success : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . enter Seat Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Manager Util . choice Audio Model () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġenter Seat ( seat Index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" enter Seat : Ġseat Index Ġ= Ġ$ seat Index ") ĊĠĠĠĠĠĠĠ Ġ// Ġå½ĵåīį åľ¨ åº§ ä½į ä¸Ĭ ĊĠĠĠĠĠĠĠ Ġif Ġ( room Model . user In Seat ( Account Store . getUserId () !! )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance (). switch Seat To ( seat Index , Ġobject Ġ: ĠR CV oice Room Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( code : ĠInt , Ġmessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" enter Seat :: onError : Ġ$ message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error ( code , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Success : Ġ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . enter Seat Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Manager Util . choice Audio Model () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Status Ġ== ĠSTATUS _ WAIT _ FOR _ SE AT Ġ&& Ġ! room Model . current UI Room Info . is Free Enter Seat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Re voke Seat Request () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ èĩªçĶ± ä¸Ĭ éº ¦ æ¨¡å¼ı ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( room Model . current UI Room Info . is Free Enter Seat ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġindex Ġ= Ġseat Index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ= Ġroom Model . get Available Index () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error (" å½ĵåīį éº ¦ ä½į å·² æ»¡ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance (). enter Seat ( index , Ġobject Ġ: ĠR CV oice Room Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( code : ĠInt , Ġmessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" enter Seat :: onError : Ġ$ message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error ( code , Ġmessage ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" enter Seat : on Success : Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . enter Seat Success () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Manager Util . choice Audio Model () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Model . request Seat Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Status Ġ= ĠSTATUS _ WAIT _ FOR _ SE AT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . change Status ( STATUS _ WAIT _ FOR _ SE AT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . showMessage (" å·² çĶ³è¯· è¿ŀ çº¿ ï¼Į çŃīå¾ħ æĪ¿ ä¸» æİ¥åıĹ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error (" è¯·æ±Ĥ æİĴ éº ¦ å¤±è´¥ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsend F ov Message () Ġ{ ĊĠĠĠĠĠĠĠ ĠRC Chat Room Message Manager . send ChatMessage ( roomId , ĠRC Chat room Like () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġcode , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error (" åıĳéĢģ å¤±è´¥ ï¼ļ ${ code ?. code }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠsendMessage ( message : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRC Chat Room Message Manager . send ChatMessage ( roomId , ĠRC Chat room B arr age () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserId Ġ= ĠAccount Store . getUserId () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserName Ġ= ĠAccount Store . getUser Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . send Text Message Success ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġ{ Ġcode , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error (" åıĳéĢģ å¤±è´¥ ï¼ļ ${ code ?. code }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Received ( message : ĠMessage ?, Ġleft : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" on Received : Ġ") ĊĠĠĠĠĠĠĠ Ġmessage ?. content ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRC Chat Room Message Manager . on Receive Message ( roomId , Ġit ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġref use Invite ( userId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. notify Voice Room ( EVENT _ RE JECT _ MANAGE _ P ICK , ĠAccount Store . getUserId ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġenter Seat If Available () Ġ{ ĊĠĠĠĠĠĠĠ ĠR CV oice Room Engine . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. notify Voice Room ( EVENT _ AG REE _ MANAGE _ P ICK , ĠAccount Store . getUserId ()) ĊĠĠĠĠĠĠĠ Ġval Ġavailable Index Ġ= Ġroom Model . get Available Index () ĊĠĠĠĠĠĠĠ Ġif Ġ( available Index Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR CV oice Room Engine ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enter Seat ( available Index , Ġobject Ġ: ĠR CV oice Room Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( code : ĠInt , Ġmessage : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error ( message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . showMessage (" ä¸Ĭ éº ¦ æĪĲåĬŁ ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAudio Manager Util . choice Audio Model () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . show Error (" å½ĵåīį æ²¡æľī ç©º ä½Ļ çļĦ éº ¦ ä½į ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġroom Model . notice Refresh Un read Message Count () ĊĠĠĠ Ġ} Ċ }