/* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠAlex ey ĠS ht ank o Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġio . s ht ank o . pic as ag allery . ui . auth Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . GONE Ċ import Ġandroid . view . View . VISIBLE Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ProgressBar Ċ import Ġcom . google . android . gms . auth . api . Auth . GOOGLE _ SIGN _ IN _ API Ċ import Ġcom . google . android . gms . auth . api . Auth . Google SignIn Api Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Options Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Result Ċ import Ġcom . google . android . gms . common . Connection Result Ċ import Ġcom . google . android . gms . common . SignIn Button Ċ import Ġcom . google . android . gms . common . SignIn Button . SIZE _ STANDARD Ċ import Ġcom . google . android . gms . common . api . Google ApiClient Ċ import Ġdagger . android . support . D agger Fragment Ċ import Ġio . s ht ank o . pic as ag allery . R Ċ import Ġio . s ht ank o . pic as ag allery . R . string . unable _ connect _ google _ services Ċ // import Ġio . s ht ank o . pic as ag allery . core . log . File Log Ċ import Ġio . s ht ank o . pic as ag allery . extensions . close Ċ import Ġio . s ht ank o . pic as ag allery . extensions . get Safe Context Ċ import Ġio . s ht ank o . pic as ag allery . extensions . short Toast Ċ import Ġio . s ht ank o . pic as ag allery . ui . main . MainActivity Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠSign In Fragment Ġ@ Inject Ġconstructor () Ġ: ĠD agger Fragment (), ĊĠĠĠ ĠSign In Contract . View , ĊĠĠĠ ĠGoogle ApiClient . On Connection Failed Listener , ĊĠĠĠ ĠGoogle ApiClient . Connection Callbacks Ġ{ ĊĊĠ Ġ// Ġregion Ġinjection ĊĠ Ġ@ Inject Ġlateinit Ġvar Ġpresenter : ĠSign In Contract . Presenter ĊĠ Ġ@ Inject Ġlateinit Ġvar Ġgoogle SignIn Options : ĠGoogle SignIn Options ĊĠ Ġ// Ġend region ĊĊĠ Ġprivate Ġlateinit Ġvar Ġroot View : ĠView ĊĠ Ġprivate Ġlateinit Ġvar ĠprogressBar : ĠProgress Bar ĊĊĠ Ġprivate Ġval Ġgoogle ApiClient : ĠGoogle ApiClient ĊĠĠĠ Ġget () Ġ= ĠGoogle ApiClient . Builder ( get Safe Context () !! ) ĊĠĠĠĠĠĠĠ Ġ. add Api ( GOOGLE _ SIGN _ IN _ API , Ġgoogle SignIn Options ) ĊĠĠĠĠĠĠĠ Ġ. add Connection Callbacks ( this ) ĊĠĠĠĠĠĠĠ Ġ. add On Connection Failed Listener ( this ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġval ĠSIGN _ IN _ RESULT Ġ= Ġ 1 ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġpresenter . take View ( this ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġpresenter . drop View () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠ Ġ): ĠView ? Ġ{ ĊĠĠĠ Ġval Ġroot Ġ= Ġinflater . inflate ( R . layout . fragment _ sig inin , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġroot View Ġ= Ġroot ĊĠĠĠ Ġwith ( root ) Ġ{ ĊĠĠĠĠĠ Ġadd SignIn Button () ĊĠĠĠĠĠ ĠprogressBar Ġ= Ġroot View . findViewById < ProgressBar >( R . id . progress _ bar ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġgoogle ApiClient . connect () ĊĠĠĠ Ġreturn Ġroot ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Detach () Ġ{ ĊĠĠĠ Ġsuper . on Detach () ĊĠĠĠ Ġgoogle ApiClient . disconnect () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Activity Result ( ĊĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠ ĠresultCode : ĠInt , ĊĠĠĠ Ġdata : ĠIntent ? ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġif Ġ( request Code Ġ== ĠSIGN _ IN _ RESULT ) Ġ{ ĊĠĠĠĠĠ Ġval Ġresult Ġ= ĠGoogle SignIn Api . get SignIn Result From Intent ( data ) ĊĠĠĠĠĠ Ġhandle SignIn Result ( result ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Connection Failed ( p 0 : ĠConnection Result ) Ġ= ĊĠĠĠ Ġshort Toast ( getString ( unable _ connect _ google _ services )) ĊĊĠ Ġoverride Ġfun Ġon Connected ( p 0 : ĠBundle ?) Ġ= Ġenable Button ( true ) ĊĊĠ Ġoverride Ġfun Ġon Connection Sus pended ( p 0 : ĠInt ) Ġ= Ġenable Button ( false ) ĊĊĠ Ġoverride Ġfun Ġopen Next Screen () Ġ= Ġopen MainActivity () ĊĊĠ Ġoverride Ġfun Ġset Loading Indicator ( active : ĠBoolean ) Ġ{ ĊĠĠĠ ĠprogressBar . visibility Ġ= Ġif Ġ( active ) ĠVIS IBLE Ġelse ĠG ONE ĊĠ Ġ} ĊĊĠ Ġ// Ġregion Ġprivate Ġfunctions ĊĠ Ġprivate Ġfun Ġlogin () Ġ{ ĊĠĠĠ Ġval Ġsign In Intent Ġ= ĠGoogle SignIn Api . get SignIn Intent ( google ApiClient ) ĊĠĠĠ ĠstartActivity For Result ( signIn Intent , ĠSIGN _ IN _ RESULT ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġhandle SignIn Result ( result : ĠGoogle SignIn Result ) Ġ{ ĊĠĠĠ Ġif Ġ( context Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġ// File Log . e (" Context Ġis Ġnull Ġin Ġ${ java Class . simple Name }") ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġpresenter . signIn ( context !! , Ġresult ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġopen MainActivity () Ġ{ ĊĠĠĠ ĠstartActivity ( Intent ( activity , ĠMainActivity :: class . java )). also Ġ{ ĊĠĠĠĠĠ Ġactivity ?. close () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġadd SignIn Button () Ġ{ ĊĠĠĠ Ġwith ( root View . findViewById < SignIn Button >( R . id . sign _ in _ button )) Ġ{ ĊĠĠĠĠĠ Ġset Size ( SIZE _ STANDARD ) ĊĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġlogin () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġenable Button ( enable : ĠBoolean ) Ġ{ ĊĠĠĠ Ġwith ( root View . findViewById < SignIn Button >( R . id . sign _ in _ button )) Ġ{ ĊĠĠĠĠĠ Ġis Enabled Ġ= Ġenable ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġ// Ġend region Ċ } ĊĊĊ