package Ġproject . dsc j ss . pl asm ad on or . Fragment Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . facebook .* Ċ import Ġcom . facebook . login . Login Manager Ċ import Ġcom . facebook . login . Login Result Ċ import Ġcom . google . android . material . button . Material Button Ċ import Ġcom . google . android . material . card . Material Card View Ċ import Ġcom . google . firebase . auth . Facebook Auth Provider Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . auth . Firebase User Ċ import Ġproject . dsc j ss . pl asm ad on or . Activity . MainActivity Ċ import Ġproject . dsc j ss . pl asm ad on or . R Ċ import Ġproject . dsc j ss . pl asm ad on or . interfaces . Fragment Change Interface Ċ Ċ class ĠSign Up Be g Fragment Ġ: ĠFragment (), ĠView . OnClickListener Ġ{ ĊĠĠĠ Ġlateinit Ġvar Ġbtn Email SignUp : ĠMaterial Button ĊĠĠĠ Ġlateinit Ġvar Ġtv SignIn : ĠTextView ĊĠĠĠ Ġlateinit Ġvar Ġgoogle SignUp : ĠMaterial Card View ĊĠĠĠ Ġlateinit Ġvar Ġfacebook SignUp : ĠMaterial Card View ĊĠĠĠ Ġlateinit Ġvar Ġfragment Change Interface : ĠFragment Change Interface ĊĠĠĠ Ġlateinit Ġvar Ġcallback Manager : ĠCallback Manager ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġauth : ĠFirebase Auth ĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġfragment Change Interface Ġ= Ġcontext Ġas ĠFragment Change Interface ĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġthe Ġfacebook Ġsdk ĊĠĠĠĠĠĠĠ ĠFacebook Sdk . sdk Initialize ( require Context ()) ĊĠĠĠĠĠĠĠ Ġcallback Manager Ġ= ĠCallback Manager . Factory . create () ĊĠĠĠĠĠĠĠ Ġ// ĠInitialize ĠFirebase ĠAuth ĊĠĠĠĠĠĠĠ Ġauth Ġ= ĠFirebase Auth . getInstance () ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ sign _ up _ beg , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbtn Email SignUp Ġ= Ġview . findViewById < Material Button >( R . id . btn Email SignUp ) ĊĠĠĠĠĠĠĠ Ġtv SignIn Ġ= Ġview . findViewById < TextView >( R . id . tv SignIn ) ĊĠĠĠĠĠĠĠ Ġgoogle SignUp Ġ= Ġview . findViewById < Material Card View >( R . id . google SignUp ) ĊĠĠĠĠĠĠĠ Ġfacebook SignUp Ġ= Ġview . findViewById < Material Card View >( R . id . facebook SignUp ) ĊĠĠĠĠĠĠĠ Ġbtn Email SignUp . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġtv SignIn . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġgoogle SignUp . setOnClickListener ( this ) ĊĠĠĠĠĠĠĠ Ġfacebook SignUp . setOnClickListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( v : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( v !!. id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . btn Email SignUp Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Change Interface . change Fragment ( SignUp Info Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . tv SignIn Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Change Interface . change Fragment ( SignIn Be g Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . google SignUp Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġ" SignUp Ġthrough Ġgoogle ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . facebook SignUp Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠToast . makeText ( require Context (), Ġ" SignUp Ġthrough Ġfacebook ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Manager . getInstance (). log In With Read Permissions ( activity , Ġmutable ListOf (" email ", Ġ" public _ profile ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogin Manager . getInstance (). register Callback ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠFacebook Callback < Login Result > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( login Result : ĠLogin Result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" sp ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin Result . accessToken . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Facebook AccessToken ( login Result . accessToken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancel () Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠFacebook Exception ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Facebook AccessToken ( token : ĠAccess Token ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcredential Ġ= ĠFacebook Auth Provider . getC redential ( token . token ) ĊĠĠĠĠĠĠĠ Ġauth . signIn With Credential ( credential ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Complete Listener ( require Activity ()) Ġ{ Ġtask Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSign Ġin Ġsuccess , Ġupdate ĠUI Ġwith Ġthe Ġsigned - in Ġuser 's Ġinformation ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġauth . currentUser ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate UI ( user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġsign Ġin Ġfails , Ġdisplay Ġa Ġmessage Ġto Ġthe Ġuser . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext , Ġ" Authentication Ġfailed .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate UI ( user : ĠFirebase User ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( user Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( context , ĠMainActivity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( require Context (), Ġ" SignUp Ġthrough Ġfacebook ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ ĠresultCode : ĠInt , ĊĠĠĠĠĠĠĠ Ġdata : ĠIntent ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġ// ĠPass Ġthe Ġactivity Ġresult Ġback Ġto Ġthe ĠFacebook ĠSDK ĊĠĠĠĠĠĠĠ Ġcallback Manager . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} Ċ } Ċ