package Ġcom . future . trade . ui . login Ċ Ċ import Ġandroid . content . DialogInterface Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġcom . alibaba . android . ar outer . facade . annotation . Route Ċ import Ġcom . alibaba . android . ar outer . launcher . AR outer Ċ import Ġcom . f sh . common . base . Base Activity Ċ import Ġcom . f sh . common . ext . viewModel Of Ċ import Ġcom . f sh . common . model . AR outer Path Ċ import Ġcom . future . trade . R Ċ import Ġcom . future . trade . bean . Broker Config Ċ import Ġcom . future . trade . bean . Trade Account Config Ċ import Ġcom . future . trade . model . Login ViewModel Ċ import Ġcom . future . trade . model . Broker Config ViewModel Ċ import Ġcom . future . trade . model . Trade Login Flow Event Ċ import Ġcom . future . trade . model . Trade Login Flow Type Ċ import Ġcom . future . trade . repository . trade api . Rsp Confirm Set tlement Event Ċ import Ġcom . future . trade . repository . trade api . Rsp Q ry Set tlement Event Ċ import Ġcom . future . trade . repository . trade api . Rsp User Login Event Ċ import Ġcom . future . trade . ui . transaction . Transaction Activity Ċ import Ġcom . future . trade . util . Verify Util Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġkotlinx . android . synt hetic . main . activity _ trade _ login .* Ċ import Ġjava . lang . Exception Ċ Ċ @ Route ( path Ġ= ĠA Router Path . Page . PAGE _ TRA DE _ LOGIN ) Ċ class ĠTrade Login Activity Ġ: ĠBase Activity (), ĠBroker Config Picker . On Broker ItemClickListener , Set tlement Info Dialog . Callback Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlogin ViewModel : ĠLogin ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbroker Config ViewModel : ĠBroker Config ViewModel ĊĠĠĠ Ġprivate Ġvar Ġselected Broker : ĠBroker Config ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbroker Dialog : ĠBroker Config Dialog ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbroker Config Picker : ĠBroker Config Picker ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġset tlement Info Dialog : ĠSet tlement Info Dialog ĊĠĠĠ Ġoverride Ġfun Ġlayout Res (): ĠInt Ġ= ĠR . layout . activity _ trade _ login ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit Data () ĊĠĠĠĠĠĠĠ Ġinit Views () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogin ViewModel Ġ= ĠviewModel Of < Login ViewModel >(). value ĊĠĠĠĠĠĠĠ Ġbroker Config ViewModel Ġ= ĠviewModel Of < Broker Config ViewModel >(). value ĊĠĠĠĠĠĠĠ Ġbroker Config ViewModel . all Broker LiveData . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Se leted Broker ( it [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbroker Config Picker . set Bro kers ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġlogin ViewModel . login LiveData . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Trade Login Flow Event ( it ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Trade Login Flow Event ( event : Trade Login Flow Event ){ ĊĠĠĠĠĠĠĠ Ġif (! event . flow Type . is Success ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( event . flow Type Ġ== ĠTrade Login Flow Type . Rsp User Login Fail ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfail Rsp Ġ= Ġ( event . event Ġas ĠR sp User Login Event ). rsp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( container , fail Rsp . rsp Info . error Msg , Snackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( container , event . flow Type . flow Name , Snackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen ( event . flow Type ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrade Login Flow Type . Front Connected Ġ-> {} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrade Login Flow Type . Auth en Success Ġ-> {} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrade Login Flow Type . Rsp User Login Success Ġ-> { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// çĻ»å½ķ æĪĲåĬŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrade Login Flow Type . Rsp Q ry Confirm Set tlement Data ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// å·²ç»ı ç¡®è®¤ è¿ĩ äºĨ ç»ĵ ç®Ĺ åįķ ï¼Į çĻ»å½ķ æĪĲåĬŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( container ," çĻ»å½ķ æĪĲåĬŁ ", Snackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Login Success () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrade Login Flow Type . Rsp Set tlement Info ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrade Event Ġ= Ġevent . event Ġas ĠR sp Q ry Set tlement Event ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç»ĵ ç®Ĺ åįķ åĵįåºĶ æķ°æį® ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset tlement Info Dialog . set Set tlement Info ( trade Event . rsp . rsp Field ?. content ? :" æ²¡æľī æķ°æį® ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset tlement Info Dialog . show ( support FragmentManager , TAG _ SETT LEMENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç¡®è®¤ ç»ĵ ç®Ĺ åįķ åĵįåºĶ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTrade Login Flow Type . Rsp Confirm Set tlement Info ->{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset tlement Info Dialog . dismiss () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrade Event Ġ= Ġevent . event Ġas ĠR sp Confirm Set tlement Event Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( container , trade Event . rsp . rsp Info Field . error Msg , Snackbar . LENGTH _ SHORT ). show () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ç¡®è®¤ æĪĲåĬŁ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( trade Event . rsp . rsp Info Field . error ID Ġ== 0 ){ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Login Success () Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Login Success () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġon Login Success (){ ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Views () Ġ{ ĊĠĠĠĠĠĠĠ Ġbroker Dialog Ġ= ĠBroker Config Dialog ( broker Config ViewModel ) ĊĠĠĠĠĠĠĠ Ġbroker Config Picker Ġ= ĠBroker Config Picker () ĊĠĠĠĠĠĠĠ Ġ// éĢīæĭ© å¼¹ çªĹ åħ³éĹŃ çļĦæĹ¶åĢĻ ï¼Į å°Ĩ drawable Right æĽ´æĸ° ĊĠĠĠĠĠĠĠ Ġbroker Config Picker . dismiss Listener Ġ= ĠDialog Interface . On Dismiss Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Broker Spinner Status ( false ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġiv _ add _ spinner . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbroker Dialog . show ( support FragmentManager , ĠTAG _ ADD ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbroker _ spinner . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbroker Config Picker . show ( support FragmentManager , ĠTAG _ P ICK ER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbroker Config Picker . setOn Broker ItemClickListener ( this @ Trade Login Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// éĢīæĭ© å¼¹ çªĹ æīĵå¼Ģ çļĦæĹ¶åĢĻ ï¼Į å°Ĩ drawable Right æĽ´æĸ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Broker Spinner Status ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset tlement Info Dialog Ġ= ĠSet tlement Info Dialog () ĊĠĠĠĠĠĠĠ Ġset tlement Info Dialog . call Back Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġlogin . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠVerify Util . instance ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. isNotNull ( selected Broker , Ġ" è¯· éĢīæĭ© ç»ı çºª åħ¬åı¸ æŁ ľ åı° ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is Trade Account ( username . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. is Password ( password . text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( it , Ġe . message !! , ĠSn ackbar . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin ViewModel . req User Login ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTrade Account Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġusername . text . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpassword . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġselected Broker !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Loading Dialog Message (" æŃ£åľ¨ çĻ» éĻĨ äº¤æĺĵ ( 1 / 4 )") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Cancel Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// åıĸæ¶Ī ä¹ĭåĲİ ï¼Į å°± æĬĬ è´¦åı· éĢĢåĩº çĻ»å½ķ ĊĠĠĠĠĠĠĠ Ġlogin ViewModel . req User Logout () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Ensure Click () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ç¡®è®¤ çļĦæĹ¶åĢĻ ï¼Į å°± æĺ¾ç¤º ç¡®è®¤ æıĲç¤º çªĹ ĊĠĠĠĠĠĠ Ġlogin ViewModel . req Confirm Set tlement Info () ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Item Click ( ĊĠĠĠĠĠĠĠ Ġpos : ĠInt , ĊĠĠĠĠĠĠĠ ĠitemView : ĠBroker Config Picker . Broker Item , ĊĠĠĠĠĠĠĠ Ġitem : ĠBroker Config ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Se leted Broker ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Broker Spinner Status ( is Showing : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdrawable Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . get Drawable ( if Ġ( is Showing ) ĠR . drawable . ic _ arrow _ up Ġelse ĠR . drawable . ic _ arrow _ down ) ĊĠĠĠĠĠĠĠ Ġbroker _ spinner . set Compound Draw ables With Intr insic Bounds ( null , Ġnull , Ġdrawable , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Se leted Broker ( broker : ĠBroker Config ) Ġ{ ĊĠĠĠĠĠĠĠ Ġselected Broker Ġ= Ġbroker ĊĠĠĠĠĠĠĠ Ġbroker _ spinner . text Ġ= Ġselected Broker !!. broker Name ĊĠĠĠ Ġ} Ċ Ċ // ĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġ// Nothing Ġto Ġdo , ä¸į åħģè®¸ è¿ĶåĽŀ ï¼Į åıªæľī çĻ»å½ķ æĪĲåĬŁ æīįèĥ½ è¿ĶåĽŀ Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG _ ADD Ġ= Ġ" broker Add " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG _ P ICK ER Ġ= Ġ" broker Picker " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG _ SETT LEMENT Ġ= Ġ" set tlement Info " ĊĠĠĠ Ġ} Ċ } Ċ