package Ġcom . sh ul ga . android app . ui . auth Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . EditText Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġcom . sh ul ga . android app . R Ċ import Ġcom . sh ul ga . android app . services . Session Service Ċ import Ġcom . sh ul ga . android app . services . extensions . is Email Ċ import Ġcom . sh ul ga . android app . services . extensions . start Animation Ċ import Ġcom . sh ul ga . android app . services . extensions . stop Animation Ċ Ċ class ĠAuth Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġemail EditText : ĠEditText ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpassword EditText : ĠEditText ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsign Up Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġsign In Button : ĠButton ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġerror Text : ĠTextView ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠprogressBar : ĠProgress Bar ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġemail EditText . setText ("") ĊĠĠĠĠĠĠĠ Ġpassword EditText . setText ("") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! Session Service . isInitialized ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrestore Session () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ auth , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġinit View Objects ( view ) ĊĠĠĠĠĠĠĠ Ġsetup View Objects () ĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit View Objects ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġemail EditText Ġ= Ġview . findViewById ( R . id . fragment _ auth _ tf _ email ) ĊĠĠĠĠĠĠĠ Ġpassword EditText Ġ= Ġview . findViewById ( R . id . fragment _ auth _ tf _ password ) ĊĊĠĠĠĠĠĠĠ Ġsign In Button Ġ= Ġview . findViewById ( R . id . fragment _ auth _ button _ sign _ in ) ĊĠĠĠĠĠĠĠ Ġsign Up Button Ġ= Ġview . findViewById ( R . id . fragment _ auth _ button _ sign _ up ) ĊĊĠĠĠĠĠĠĠ Ġerror Text Ġ= Ġview . findViewById ( R . id . fragment _ auth _ text _ error ) ĊĊĠĠĠĠĠĠĠ ĠprogressBar Ġ= Ġview . findViewById ( R . id . fragment _ auth _ progress _ bar ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup View Objects () Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġerror Text . visibility Ġ= ĠView . GONE ĊĊĠĠĠĠĠĠĠ Ġsetup Button Listeners () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Button Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġsign In Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! validate Input ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġemail Ġ= Ġemail EditText . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġpassword EditText . text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . start Animation ( progress Bar ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSession Service . signIn Email ( email , Ġpassword ) Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . stop Animation ( progress Bar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . view ?. find Nav Controller ()?. navigate ( R . id . action _ auth Fragment _ to _ main Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsign Up Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! validate Input ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOnClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġemail Ġ= Ġemail EditText . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpassword Ġ= Ġpassword EditText . text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . start Animation ( progress Bar ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSession Service . sign Up Email ( email , Ġpassword ) Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . stop Animation ( progress Bar ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . view ?. find Nav Controller ()?. navigate ( R . id . action _ auth Fragment _ to _ main Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrestore Session () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . start Animation ( progress Bar ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrestored S ongs Auth Ġ= ĠSession Service . restore Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . stop Animation ( progress Bar ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( e Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . view ?. find Nav Controller ()?. navigate ( R . id . action _ auth Fragment _ to _ main Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( restore d S ongs Auth Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail EditText . setText ( restore d S ongs Auth . email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword EditText . setText ( restore d S ongs Auth . password ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Input (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġret Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ(! email EditText . text . toString (). is Email ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemail EditText . error Ġ= Ġrequire Context (). getString ( R . string . invalid _ email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( password EditText . text . toString (). length Ġ< Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpassword EditText . error Ġ= Ġrequire Context (). getString ( R . string . password _ length _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠ Ġ} Ċ }