/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠAnd re - max Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . andre _ max . tik tok clone . presentation . ui . auth . sign _ up Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . activity . result . contract . Activity Result Contracts Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . andre _ max . tik tok clone .* Ċ import Ġcom . andre _ max . tik tok clone . R Ċ import Ġcom . andre _ max . tik tok clone . databinding . SignUp Page Binding Ċ import Ġcom . andre _ max . tik tok clone . models . sign _ up . Google Body Ċ import Ġcom . andre _ max . tik tok clone . utils . Bottom Nav View Utils Ċ import Ġcom . andre _ max . tik tok clone . utils . architecture . Base Fragment Ċ import Ġcom . google . firebase . auth .* Ċ import Ġcom . twitter . sdk . android . core .* Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠSign Up Fragment Ġ: ĠBase Fragment ( R . layout . sign _ up _ page ) Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġbinding : ĠSign Up Page Binding ĊĊĠĠĠ Ġoverride Ġval ĠviewModel Ġby Ġview Models < SignUp ViewModel >() ĊĊĠĠĠ Ġ// ĠActivity Result Launcher Ġfor ĠGoogle ĠSign ĠUp ĊĠĠĠ Ġprivate Ġval Ġlauncher Ġ= ĊĠĠĠĠĠĠĠ Ġregister For Activity Result ( Activity Result Contracts . Start Activity For Result ()) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . google Auth Repo . handle Google On Result ( result ?. data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ ĠBottom Nav View Utils . hide Bottom NavBar ( activity ) ĊĊĠĠĠĠĠĠĠ Ġbinding . sign Up Twitter Btn . callback Ġ= ĠviewModel . twitter Callback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp Layout () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠSign Up Page Binding . bind ( require View ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp Click Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . sign Up Cancel Btn . setOnClickListener Ġ{ Ġfind Nav Controller (). pop Back Stack () Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . use Log In Btn . setOnClickListener Ġ{ Ġfind Nav Controller (). navigate ( R . id . action _ sign Up Fragment _ to _ login Fragment ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġbinding . sign Up Use Phone Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . action _ sign Up Fragment _ to _ age Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . sign Up Facebook Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . facebook Auth Repo . do Facebook Login ( require Activity ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . sign Up Google Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . google Auth Repo . do Google Auth ( require Context (), Ġlauncher ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . sign Up Twitter Btn . set The ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Scope . launch Ġ{ ĠviewModel . twitter Auth Repo . do Twitter SignUp ( require Activity ()) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠsetUp LiveData () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . live Credential . observe ( view Lifecycle Owner ) Ġ{ Ġlive Credential Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( live Credential Ġ== Ġnull ) Ġreturn @ observe ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSince Ġthe Ġbody Ġis Ġused Ġin Ġproviding Ġa Ġname Ġand Ġa Ġprofile Ġpicture , Ġwe Ġshould Ġnot Ġbe Ġaf raid Ġif Ġthe Ġvalues Ġare Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsince Ġwe Ġare Ġperforming Ġa Ġnull Ġcheck Ġin ĠCreate UserName ViewModel ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgoogle Account Ġ= ĠviewModel . google Account ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgoogle Body Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGoogle Body ( google Account ?. displayName , Ġgoogle Account ?. photoUrl ?. toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSign Up Fragment Directions . action SignUp Fragment To Create Username Fragment ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlive Credential , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgoogle Body , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġbinding . sign Up Twitter Btn . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ ĠviewModel . facebook Auth Repo . handle Facebook On Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} Ċ }