package Ġcom . ast rol uc is . features . login Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . content . Intent Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . databinding . On Re bind Callback Ċ import Ġandroid . databinding . ViewData Binding Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . transition . Transition Manager Ċ import Ġandroid . view . ViewGroup Ċ import Ġcom . ast rol uc is . R Ċ import Ġcom . ast rol uc is . core . Base Activity Ċ import Ġcom . ast rol uc is . databinding . Activity Login Binding Ċ import Ġcom . ast rol uc is . features . home . Home Activity Ċ import Ġcom . ast rol uc is . utils . dialogs . AlertDialog Ċ import Ġcom . ast rol uc is . utils . routing . App Router Ċ import Ġcom . facebook . AccessToken Ċ import Ġcom . facebook . Callback Manager Ċ import Ġcom . facebook . Facebook Callback Ċ import Ġcom . facebook . Facebook Exception Ċ import Ġcom . facebook . login . Login Result Ċ import Ġorg . k oin . android . architecture . ext . viewModel Ċ import Ġorg . k oin . android . ext . android . inject Ċ import Ġjava . util .* ĊĊ Ċ class ĠLogin Activity Ġ: ĠBase Activity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFB _ EMAIL _ PERMISSION : ĠString Ġ= Ġ" email " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠFB _ PUBLIC _ PROFILE _ PERMISSION : ĠString Ġ= Ġ" public _ profile " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠActivity Login Binding ĊĠĠĠ Ġlateinit Ġvar Ġcallback Manager : ĠCallback Manager ĊĊĊĠĠĠ Ġval ĠviewModel : ĠLogin ViewModel Ġby ĠviewModel () ĊĠĠĠ Ġval Ġapp Router : ĠApp Router Ġby Ġinject () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ login ) ĊĊĠĠĠĠĠĠĠ Ġbinding . viewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġbinding . execute Pending Bindings () ĊĊĊĠĠĠĠĠĠĠ Ġbinding . add On Re bind Callback ( object Ġ: ĠOn Re bind Callback < ViewData Binding >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Pre Bind ( binding : ĠView Data Binding ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTransition Manager . begin Delayed Transition ( binding !!. root Ġas ĠViewGroup ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Pre Bind ( binding ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . messages LiveData . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow AlertDialog ( it . dialog Id , ĠAlertDialog . Data ( viewModel :: class ), Ġit . title Res Id , Ġit . message Res Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . actions LiveData . observe ( this , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin ViewModel . Action . GO _ TO _ HOME Ġ-> Ġapp Router . goTo ( Home Activity :: class , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġcallback Manager Ġ= ĠCallback Manager . Factory . create () ĊĊĠĠĠĠĠĠĠ Ġbinding . fb Login Button . set Read Permissions ( Arrays . asList ( FB _ EMAIL _ PERMISSION , ĠFB _ PUBLIC _ PROFILE _ PERMISSION )) ĊĊĠĠĠĠĠĠĠ Ġbinding . fb Login Button . register Callback ( callback Manager , Ġobject Ġ: ĠFacebook Callback < Login Result > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( login Result : ĠLogin Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . fb Login ( login Result . accessToken . token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancel () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠApp Ġcode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( exception : ĠFacebook Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠApp Ġcode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ ĠviewModel . fb Login ( AccessToken . getCurrent AccessToken ()?. token ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcallback Manager . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} Ċ } Ċ