package Ġcom . iz ik ode . iz ilib . ro gu in . endpoint Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġcom . facebook .* Ċ import Ġcom . facebook . login . Login Manager Ċ import Ġcom . facebook . login . Login Result Ċ import Ġcom . facebook . login . widget . Login Button Ċ import Ġcom . iz ik ode . iz ilib . ro gu in . helper . R og u in Activity Ċ import Ġcom . iz ik ode . iz ilib . ro gu in . R og u in Endpoint Ċ import Ġcom . iz ik ode . iz ilib . ro gu in . helper . R og u in Exception Ċ import Ġcom . iz ik ode . iz ilib . ro gu in . model . R og u in Profile Ċ import Ġcom . iz ik ode . iz ilib . ro gu in . model . R og u in Token Ċ import Ġandroid . os . Bundle Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ import Ġcom . facebook . Graph Request Ċ import Ġcom . iz ik ode . iz ilib . ro gu in . helper . User Not Signed In Exception ĊĊ Ċ class ĠFacebook Endpoint ( ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġro gu in Activity : ĠR og u in Activity Ċ Ċ ) Ġ: ĠR og u in Endpoint Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġfacebook Login Button Ġ= ĠLogin Button ( ro gu in Activity ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġset Read Permissions ( array ListOf (" public _ profile ", Ġ" email ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġis Signed In : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠaccessToken Ġ= ĠAccess Token . getCurrent AccessToken () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠaccessToken Ġ!= Ġnull Ġ&& Ġ! accessToken . is Expired ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrequest SignIn ( response : Ġ( success : ĠBoolean , Ġtoken : ĠR og u in Token ?, Ġerror : ĠR og u in Exception ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠCallback Manager . Factory . create (). let Ġ{ Ġcallback Manager Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfacebook Login Button . register Callback ( callback Manager , Ġobject Ġ: ĠFacebook Callback < Login Result > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( result : ĠLogin Result ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfacebook Login Button . remove Callbacks Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġro gu in Activity . unregister Callback Manager ( callback Manager ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . invoke ( true , Ġresult . to Token (), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . invoke ( false , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancel () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfacebook Login Button . remove Callbacks Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġro gu in Activity . unregister Callback Manager ( callback Manager ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . invoke ( false , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠFacebook Exception ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfacebook Login Button . remove Callbacks Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġro gu in Activity . unregister Callback Manager ( callback Manager ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . invoke ( false , Ġnull , ĠR og u in Exception ( error )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġro gu in Activity . register Callback Manager ( callback Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfacebook Login Button . perform Click () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠLogin Result . to Token () Ġ= ĠR og u in Token ( ĊĠĠĠĠĠĠĠ Ġendpoint Ġ= Ġthis @ Facebook Endpoint :: class , ĊĠĠĠĠĠĠĠ Ġauthenticated Token Ġ= Ġthis . accessToken . token , ĊĠĠĠĠĠĠĠ ĠuserId Ġ= Ġthis . accessToken . userId ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġrequest Sign Out ( response : Ġ( success : ĠBoolean ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠGraph Request ( AccessToken . getCurrent AccessToken (), Ġ"/ me / permissions /", Ġnull , ĠHttpMethod . DELETE , ĠGraph Request . Callback Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . error Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Manager . getInstance (). log Out () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . invoke ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . invoke ( false ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}). execute Async () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrequest Profile ( response : Ġ( success : ĠBoolean , Ġprofile : ĠR og u in Profile ?, Ġerror : ĠR og u in Exception ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠAccess Token . getCurrent AccessToken () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( token Ġ== Ġnull Ġ|| Ġtoken . is Expired ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . invoke ( false , Ġnull , ĠUser Not Signed In Exception ()) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGraph Request . new Me Request ( token ) Ġ{ ĠjsonObject , Ġgraph Response Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . invoke ( true , ĠjsonObject . to Profile (), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse . invoke ( false , Ġnull , ĠR og u in Exception ( e )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparameters Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" fields ", Ġ" email , Ġname , Ġpicture ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. execute Async () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠJSONObject . to Profile () Ġ= ĠR og u in Profile ( ĊĠĠĠĠĠĠĠ Ġemail Ġ= Ġthis . getString (" email "), ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġthis . getString (" name "), ĊĠĠĠĠĠĠĠ Ġphoto Ġ= Ġthis . getJSONObject (" picture ") ?. getJSONObject (" data ") ?. getString (" url ") ?. let Ġ{ ĠUri . parse ( it ) Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġinitialize ( application Context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĠReserved Ġfor Ġupcoming Ġfunctionality Ġ*/ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }