package Ġcom . extr aint e ger . s ymbolic . ui Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Activity . RESULT _ OK Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Button Ċ import Ġandroid . util . Typed Value Ċ import Ġandroid . view . View Ċ import Ġandroid . webkit . Cookie Manager Ċ import Ġandroid . webkit . Cookie Sync Manager Ċ import Ġcom . extr aint e ger . s ymbolic .* Ċ import Ġcom . extr aint e ger . s ymbolic . models . Symbolic Token Ċ import Ġandroid . widget . Toast Ċ import Ġcom . extr aint e ger . s ymbolic . utils . Connection State Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġali Ġon Ġ 0 4 / 1 2 / 1 7 . Ċ Ġ*/ Ċ class ĠS ymbolic Login Button Ġ: ĠButton Ġ{ ĊĠĠĠ Ġconstructor ( context : ĠContext ) Ġ: Ġsuper ( context ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet ) Ġ: Ġsuper ( context , Ġattrs ) ĊĠĠĠ Ġconstructor ( context : ĠContext , Ġattrs : ĠAttributeSet , Ġdef Style : ĠInt ): Ġsuper ( context , Ġattrs , Ġdef Style ) ĊĊĠĠĠ Ġprivate Ġvar Ġconfig : ĠS ymbolic Config ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Callback : ĠCallback < Symbolic Token >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Login ĠButton " ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Button () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Button () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Padding ( getSize In Dp ( 2 0 f ), Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Size In Dp ( 2 0 f ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġset OnClickListener ( Login ClickListener ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Size In Dp ( value : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġr Ġ= Ġresources ĊĠĠĠĠĠĠĠ Ġreturn ĠMath . round ( Typed Value . apply Dimension ( Typed Value . COMPLEX _ UNIT _ DIP , Ġvalue , Ġr . display Metrics )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠLogin ClickListener Ġ: ĠOn ClickListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgoto OAuth Activity () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgoto OAuth Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( config Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( config ?. activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( config ?. CLIENT _ ID Ġ!= Ġ"" Ġ&& Ġconfig ?. CLIENT _ SC RET Ġ!= Ġ"" Ġ&& Ġconfig ?. RE DIRECT _ URI Ġ!= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( config ?. CLIENT _ ID Ġ!= Ġnull Ġ&& Ġconfig ?. CLIENT _ SC RET Ġ!= Ġnull Ġ&& Ġconfig ?. RE DIRECT _ URI Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Connection State ( config ?. activity ). isConnected ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( config ?. activity , ĠS ymbolic Oauth Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Symbolic Constants . BASE _ URL _ FIELD , Ġconfig ?. BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Symbolic Constants . CLIENT _ ID _ FIELD , Ġconfig ?. CLIENT _ ID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Symbolic Constants . CLIENT _ SECRET _ FIELD , Ġconfig ?. CLIENT _ SC RET ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Symbolic Constants . RE DIRECT _ URI _ FIELD , Ġconfig ?. RE DIRECT _ URI ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Symbolic Constants . SCOPE _ FIELD , Ġget Scope ( config ?. SCOPES )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfig ?. activity ?. startActivity For Result ( intent , ĠS ymbolic Constants . LOGIN _ ACTIVITY _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( context , Ġ" Please Ġcheck Ġyour Ġinternet Ġconnection ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Not Ġconnected Ġto Ġinternet Ġ! ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Incorrect Ġconfig Ġ! ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Incorrect Ġconfig Ġ! ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Context / activity Ġcan 't Ġbe Ġblank Ġ! ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" Null Ġconfig Ġdetected Ġ! ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Scope ( scopes : ĠList < String >? ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġjoined Ġ= Ġscopes ?. join ToString ("+ ") ĊĠĠĠĠĠĠĠ Ġreturn Ġjoined ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfigure ( config : ĠS ymbolic Config ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . config Ġ= Ġconfig ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠS ymbolic Constants . LOGIN _ ACTIVITY _ REQUEST _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠRESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Callback ?. success ( Result ( Symbolic Token ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. getString Extra ( Symbolic Constants . ACCESS _ TOKEN _ FIELD ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. getString Extra ( Symbolic Constants . REFRESH _ TOKEN _ FIELD ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ?. getString Extra ( Symbolic Constants . TOKEN _ TYPE _ FIELD )), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( data ?. getInt Extra ( Symbolic Constants . GET _ TOKEN _ ERROR _ CODE _ FIELD , Ġ 0 ) Ġ== Ġ 4 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Callback ?. failure ( Symbolic Exception (" Unauthorized ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( data ?. getString Extra ( Symbolic Constants . GET _ TOKEN _ EXCEPTION _ FIELD ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Callback ?. failure ( Symbolic Exception ( data . getString Extra ( Symbolic Constants . GET _ TOKEN _ EXCEPTION _ FIELD ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( request Code Ġ== ĠS ymbolic Constants . LOAD _ PAGE _ REQUEST _ CODE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠRESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoto OAuth Activity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Callback ( callback : ĠCallback < Symbolic Token >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . m Callback Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġload Page ( context : ĠContext , Ġurl : ĠString , Ġredirect : ĠString ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠS ymbolic Extras Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Symbolic Constants . URL , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Symbolic Constants . RE DIRECT _ URI _ FIELD , Ġredirect ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġconfirm Email ( context : ĠContext , Ġurl : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠS ymbolic Extras Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Symbolic Constants . URL , Ġurl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( context Ġas ĠActivity ). startActivity For Result ( intent , ĠS ymbolic Constants . LOAD _ PAGE _ REQUEST _ CODE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġlog Out ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCookie Manager . getInstance (). removeAll Cookies ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCookie Sync Manager . create Instance ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcookie Manager Ġ= ĠCookie Manager . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcookie Manager . removeAll Cookie () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }