package Ġcom . cross bow ff s . sync shot . activity Ċ Ċ import Ġandroid . app . Progress Dialog Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . AsyncTask Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . app . AlertDialog Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġcom . cross bow ff s . sync shot . My App Ċ import Ġcom . cross bow ff s . sync shot . R Ċ import Ġcom . cross bow ff s . sync shot . model . UserData Ċ import Ġcom . google . common . util . concurrent . Future Callback Ċ import Ġcom . google . common . util . concurrent . F utures Ċ import Ġcom . microsoft . windowsazure . mobile services . Mobile ServiceClient Ċ import Ġcom . microsoft . windowsazure . mobile services . authentication . Mobile Service Authentication Provider Ċ import Ġcom . microsoft . windowsazure . mobile services . authentication . Mobile Service User Ċ import Ġkotlinx . android . synt hetic . main . activity _ login .* Ċ import Ġkotlinx . android . synt hetic . main . toolbar .* Ċ Ċ class ĠLogin Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġval ĠREQUEST _ SETUP _ USER Ġ= Ġ 3 ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġservice Client : ĠMobile ServiceClient ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ login ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġservice Client Ġ= Ġ( application Ġas ĠMy App ). service Client ĊĊĠĠĠĠĠĠĠ Ġlogin Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠU gly Ġhack Ġbecause Ġthe ĠAzure Ġlibrary Ġblind ly Ġcast s Ġthe Ġcontext Ġto Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠL uck ily Ġthat 's Ġonly Ġdone Ġhere , Ġso Ġwe Ġjust Ġsw izzle Ġthe Ġcontext Ġfield Ġfor Ġone Ġcall ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontext Field Ġ= Ġservice Client . java Class . getDeclared Field (" mContext ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Field . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Field . set ( service Client , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġservice Client . login ( Mobile Service Authentication Provider . Twitter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Field . set ( service Client , Ġapplication ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠF utures . add Callback ( token , Ġobject Ġ: ĠFuture Callback < Mobile Service User > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( p 0 : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( this @ Login Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle (" Login Ġfailed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( p 0 . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button (" A ww !", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( p 0 : ĠMobile Service User ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsetup New User If N eces ary ( p 0 !!. userId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠREQUEST _ SETUP _ USER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( result Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup New User If N eces ary ( userId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠProgress Dialog ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġobject Ġ: ĠAsync Task < Void , ĠVoid , ĠBoolean >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdo In Background ( var arg Ġp 0 : ĠVoid ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Table Ġ= Ġservice Client . getTable ( UserData :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Users Ġ= Ġuser Table . where (). field (" id "). eq ( userId ). execute (). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( match Users . size Ġ!= Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Post Execute ( result : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Result ( RESULT _ OK ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this @ Login Activity , ĠSetup User Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠREQUEST _ SETUP _ USER ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdialog . setMessage (" Loading Ġaccount Ġinfo ...") ĊĠĠĠĠĠĠĠ Ġdialog . setOn Cancel Listener Ġ{ Ġdi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . cancel ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĠĠĠĠĠĠĠ Ġtask . execute () ĊĠĠĠ Ġ} Ċ } Ċ