package Ġcz . print east wood . flutter _ credential _ picker ĊĊ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Activity . RESULT _ OK Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Sender . Send Intent Exception Ċ import Ġandroid . tele phony . Subscription Manager Ċ import Ġandroid . tele phony . Tele phony Manager Ċ import Ġandroidx . annotation . NonNull Ċ import Ġandroidx . core . app . Activity Compat . start Intent Sender For Result Ċ import Ġandroidx . core . content . Context Compat . getSystem Service Ċ import Ġcom . google . android . gms . auth . api . credentials .* Ċ import Ġcom . google . android . gms . common . Connection Result Ċ import Ġcom . google . android . gms . common . Google Api Availability Ċ import Ġio . flutter . plugin . common . MethodCall Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġio . flutter . plugin . common . Plugin Registry Ċ import Ġjavax . annotation . meta . When ĊĊ Ċ class ĠFlutter Credential Picker Delegate ( private Ġvar Ġactivity : ĠActivity ) Ġ: ĠPlugin Registry . Activity Result Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġpending Result : ĠMethod Channel . Result ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Credentials Client : ĠCredentials Client Ġ= ĠCredentials . getClient ( this . activity ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Credentials Client . disable Auto SignIn () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġis Google Play Services Available (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= ĠGoogle Api Availability . getInstance (). is Google Play Services Available ( activity ) ĊĠĠĠĠĠĠĠ Ġreturn Ġstatus Ġ== ĠConnection Result . SUCCESS ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpick PhoneNumber (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠMethod Channel . Result ){ ĊĠĠĠĠĠĠĠ Ġpending Result Ġ= Ġresult ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Google Play Services Available ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish WithError ( ERROR _ MISSING _ GOOGLE _ SERVICE , Ġ" missing Ġgoogle Ġservice ", ĠMissing Google Services ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġhint Request Ġ= ĠHint Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Hint Picker Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCredential Picker Config . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Show Cancel Button ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Token Requested ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set PhoneNumber Identifier Supported ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (); ĊĠĠĠĠĠĠĠ Ġpick ( hint Request ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpick Email (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠMethod Channel . Result ){ ĊĠĠĠĠĠĠĠ Ġpending Result Ġ= Ġresult ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Google Play Services Available ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish WithError ( ERROR _ MISSING _ GOOGLE _ SERVICE , Ġ" missing Ġgoogle Ġservice ", ĠMissing Google Services ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġhint Request Ġ= ĠHint Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Hint Picker Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCredential Picker Config . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Show Cancel Button ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set EmailAddress Identifier Supported ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Token Requested ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (); ĊĠĠĠĠĠĠĠ Ġpick ( hint Request ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpick Google Account (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠMethod Channel . Result ){ ĊĠĠĠĠĠĠĠ Ġvar Ġitems Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġval Ġaccount Types Ġ= Ġcall . argument < List < String >> (" account _ types ") ĊĠĠĠĠĠĠĠ Ġfor ( Ġitem Ġin Ġaccount Types Ġ?: Ġempty List ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( item ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" GOOGLE " -> ĠIdentity Providers . GOOGLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" FACE BOOK " -> ĠIdentity Providers . FACE BOOK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" MIC ROS OFT " -> ĠIdentity Providers . MIC ROS OFT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" TW IT TER " -> ĠIdentity Providers . TW IT TER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" LINK ED IN " -> ĠIdentity Providers . LINK ED IN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" PAY PAL " -> ĠIdentity Providers . PAY PAL ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" YA HO O " -> ĠIdentity Providers . YA HO O ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse -> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. let Ġ{ Ġitems . add ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( items . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems . add ( Identity Providers . GOOGLE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpending Result Ġ= Ġresult ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Google Play Services Available ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish WithError ( ERROR _ MISSING _ GOOGLE _ SERVICE , Ġ" missing Ġgoogle Ġservice ", ĠMissing Google Services ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġhint Request Ġ= ĠHint Request . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Hint Picker Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCredential Picker Config . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Show Cancel Button ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Token Requested ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Account Types (* items . to Typed Array ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (); ĊĠĠĠĠĠĠĠ Ġpick ( hint Request ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpick ( request : ĠHint Request ){ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= Ġm Credentials Client . get Hint Picker Intent ( request ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Intent Sender For Result ( activity , Ġintent . intent Sender , ĠFL UT TER _ CRED ENTIAL S _ RESULT , Ġnull , Ġ 0 , Ġ 0 , Ġ 0 , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSend Intent Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish WithError ( ERROR _ C ANT _ OPEN , Ġ" Can 't Ġopen Ġintent ", ĠC ant Open Exception ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== ĠFL UT TER _ CRED ENTIAL S _ RESULT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( result Code Ġ== ĠRESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcredential : ĠCredential ? Ġ= Ġdata ?. get Parcelable Extra ( Credential . EXTRA _ KEY ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcredential ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish With Success ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?: Ġfinish WithError ( ERROR _ C ANT _ P ICK , Ġ" empty Ġdata ", ĠAccounts NotFoundException ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish WithError ( ERROR _ NOT _ FOUND , Ġ" empty Ġdata ", ĠAccounts NotFoundException ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġfinish With Success ( credential : ĠCredential ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġmap Of < String , ĠAny >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id " Ġto Ġ( credential . id Ġ?: Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name " Ġto Ġ( credential . name Ġ?: Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" profile Picture Uri " Ġto Ġ( credential . profile Picture Uri ?. toString () Ġ?: Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" password " Ġto Ġ( credential . password Ġ?: Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" account Type " Ġto Ġ( credential . account Type Ġ?: Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" given Name " Ġto Ġ( credential . given Name Ġ?: Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" family Name " Ġto Ġ( credential . family Name Ġ?: Ġ""), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tokens " Ġto Ġcredential . id Tokens . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Map Of < String , ĠAny ? >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" id Token " Ġto Ġit . id Token , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" account Type " Ġto Ġit . account Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toList () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġpending Result ?. success ( response ) ĊĠĠĠĠĠĠĠ Ġclear MethodCall And Result () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfinish WithError ( errorCode : ĠString , ĠerrorMessage : ĠString , Ġthrowable : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpending Result ?. error ( errorCode , ĠerrorMessage , Ġthrowable ) ĊĠĠĠĠĠĠĠ Ġclear MethodCall And Result () ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġclear MethodCall And Result () Ġ{ ĊĠĠĠĠĠĠĠ Ġpending Result Ġ= Ġnull ĊĠĠĠ Ġ} Ċ }