/* Ċ Ġ* ĠCopyright Ġ( c ) ĠHu awei ĠTechnologies ĠCo ., ĠLtd . Ġ 2 0 1 9 - 2 0 1 9 . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ package Ġcom . hu awei . el ibri . kotlin . view . fragment Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . TextUtils Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġcom . hu awei . ag connect . auth . AG Connect Auth Ċ import Ġcom . hu awei . ag connect . auth . AG Connect Auth Credential Ċ import Ġcom . hu awei . ag connect . auth . Hw Id Auth Provider Ċ import Ġcom . hu awei . ag connect . auth . SignIn Result Ċ import Ġcom . hu awei . ag connect . config . AG Connect Services Config Ċ import Ġcom . hu awei . el ibri . R Ċ import Ġcom . hu awei . el ibri . kotlin . Saved Preference Ċ import Ġcom . hu awei . el ibri . kotlin . utility . Constants Ċ import Ġcom . hu awei . el ibri . kotlin . utility . Util . is Online Ċ import Ġcom . hu awei . el ibri . kotlin . utility . Util . replace Fragment Ċ import Ġcom . hu awei . h mf . tasks . Task Ċ import Ġcom . hu awei . h ms . aa id . H ms InstanceId Ċ import Ġcom . hu awei . h ms . common . ApiException Ċ import Ġcom . hu awei . h ms . support . account . request . Account Auth Params Ċ import Ġcom . hu awei . h ms . support . account . service . Account Auth Service Ċ import Ġcom . hu awei . h ms . support . api . entity . auth . Scope Ċ import Ġcom . hu awei . h ms . support . hw id . Hu awei Id Auth Manager Ċ import Ġcom . hu awei . h ms . support . hw id . request . Hu awei Id Auth Params Ċ import Ġcom . hu awei . h ms . support . hw id . request . Hu awei Id Auth Params Helper Ċ import Ġcom . hu awei . h ms . support . hw id . result . Auth Hu awei Id Ċ import Ġcom . hu awei . h ms . support . hw id . service . Hu awei Id Auth Service Ċ import Ġorg . json . JSONException Ċ import Ġjava . util . concurrent . Linked BlockingQueue Ċ import Ġjava . util . concurrent . ThreadPoolExecutor Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠLogin ĠFunction ality Ċ Ġ* Ċ Ġ* Ġ@ author : Ġn WX 9 1 4 7 5 1 Ċ Ġ* Ġ@ since : Ġ 2 1 - 1 2 - 2 0 2 0 Ċ Ġ*/ Ċ class ĠLogin Fragment Ġ: ĠBase Fragment () Ġ{ ĊĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠLogin Fragment :: class . java . name ĊĠĠĠ Ġvar Ġscope List : ĠList < Scope > Ġ= ĠArrayList () ĊĊĠĠĠ Ġval Ġuser Ġ= ĠAG Connect Auth . getInstance (). currentUser ĊĠĠĠ Ġprivate Ġvar Ġm Auth Manager : ĠAccount Auth Service ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Auth Param : ĠAccount Auth Params ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġservice : ĠHu awei Id Auth Service ? Ġ= Ġnull ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview : ĠView Ġ= Ġinflater . inflate ( R . layout . fragment _ login , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġis Online ( activity !!. application Context ) ĊĠĠĠĠĠĠĠ Ġinitialize Ui ( view ) ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInitializes ĠUI ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġview _ frag Ġof Ġthe Ġlogin Ġfragment ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinitialize Ui ( view _ frag : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbtn Hu awei Ġ= Ġview _ frag . findViewById < Button >( R . id . btn Hu awei SignIn ) ĊĠĠĠĠĠĠĠ Ġtoken ĊĠĠĠĠĠĠĠ Ġbtn Hu awei . setOnClickListener Ġ{ Ġview : ĠView ? Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhu awei Id Auth Params Helper Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHu awei Id Auth Params Helper ( Hu awei Id Auth Params . DEFAULT _ AUTH _ REQUEST _ PARAM ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġscope List : ĠArrayList < Scope > Ġ= ĠArrayList () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope List . add ( Scope (" https :// www . hu awei . com / auth / account / base . profile ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope List . add ( Scope (" email ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhu awei Id Auth Params Helper . set Scope List ( scope List ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauth Params : ĠHu awei Id Auth Params Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhu awei Id Auth Params Helper . set AccessToken (). create Params () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice : ĠHu awei Id Auth Service Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHu awei Id Auth Manager . getService ( context , Ġauth Params ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( service ?. signIn Intent , Ġ 1 0 1 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġ Ġm Auth Param Ġ= ĠAccount Auth Params Helper ( Account Auth Params . DEFAULT _ AUTH _ REQUEST _ PARAM ). setId (). set Email () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId Token () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set AccessToken () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Params () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Auth Manager Ġ= ĠAccount Auth Manager . getService ( context , Ġm Auth Param , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( m Auth Manager ?. signIn Intent , Ġ* //* Constant . REQUEST _ SIGN _ IN _ LOGIN 1 0 1 * //* 1 0 1 ) */ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets ĠNotification Ġtoken ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġtoken : ĠUnit ĊĠĠĠĠĠĠĠ Ġprivate Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThreadPool Executor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinked BlockingQueue () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). execute Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠappId Ġ= ĠAG Connect Services Config . from Context ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getString (" client / app _ id ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġp us ht o ken Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠH ms InstanceId . getInstance ( activity ). getToken ( appId , Ġ" H CM ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! TextUtils . isEmpty ( pus ht o ken )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" get Ġtoken : Ġ********* **** ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠApiException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Get Ġtoken Ġfailed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ=== Ġ 1 0 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauth Hu awei Id Task : ĠTask < Auth Hu awei Id > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHu awei Id Auth Manager . parse Auth Result From Intent ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( auth Hu awei Id Task . is Successful ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhu awei Account : ĠAuth Hu awei Id Ġ= Ġauth Hu awei Id Task . getResult () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" email :" Ġ+ Ġhu awei Account . email Ġ+ Ġ" name Ġ: Ġ" Ġ+ Ġhu awei Account . displayName ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcredential : ĠAG Connect Auth Credential ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcredential Ġ= ĠH w Id Auth Provider . credential With Token ( hu awei Account . accessToken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAG Connect Auth . getInstance (). signIn ( credential ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ Ġsign In Result : ĠSign In Result ? Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data !!. extras Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsp Ġ= ĠSaved Preference . getInstance ( activity !!. application Context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp ?. name Ġ= Ġhu awei Account . get DisplayName () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsp ?. save Email Id ( hu awei Account . email ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" AG C Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle . putString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . TAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . PROFILE _ FRAGMENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace Fragment ( activity !! , ĠProfile Fragment (), Ġbundle ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Failure Listener Ġ{ Ġe : ĠException Ġ-> ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" signIn Ġfailed ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊĊ