package Ġcom . draw i in . your f avor item ov ies . ui . profile . view Ċ Ċ import Ġandroid . app . AlertDialog Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . text . InputType Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġcom . draw i in . your f avor item ov ies . R Ċ import Ġcom . draw i in . your f avor item ov ies . databinding . Fragment Profile Binding Ċ import Ġcom . draw i in . your f avor item ov ies . domain . models . Profile Ċ import Ġcom . draw i in . your f avor item ov ies . ui . adapter . Profile Adapter Ċ import Ġcom . draw i in . your f avor item ov ies . ui . profile . view model . Profile ViewModel Ċ import Ġcom . firebase . ui . auth . Auth UI Ċ import Ġdagger . h ilt . android . Android EntryPoint ĊĊ Ċ @ Android EntryPoint Ċ class ĠProfile Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠProfile ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġval Ġadapter Ġ= ĠProfile Adapter (:: goTo Home , Ġ:: delete Profile ) ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠFragment Profile Binding ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Profile Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġsetup Ui () ĊĠĠĠĠĠĠĠ Ġsubscribe Ui () ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Ui () Ġ= Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtoolbar . setOn MenuItem ClickListener Ġ{ Ġon MenuItem Clicked ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġrv Profiles . layout Manager Ġ= ĠGrid LayoutManager ( require Context (), Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġrv Profiles . adapter Ġ= Ġthis @ Profile Fragment . adapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe Ui () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . profiles . observe ( view Lifecycle Owner ) Ġ{ Ġprofiles Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . submit List ( profiles ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon MenuItem Clicked ( menuItem : ĠMenuItem ) Ġ= Ġwhen Ġ( menuItem . itemId ) Ġ{ ĊĠĠĠĠĠĠĠ ĠR . id . action _ logout Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠR . id . action _ add Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Create Profile Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgo To Home ( profile : ĠProfile ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . save Current Profile Id ( profile . id ) ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ profile Fragment _ to _ home Fragment ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlogout () Ġ= Ġcontext ?. let Ġ{ ĊĠĠĠĠĠĠĠ ĠAuth UI . getInstance (). sign Out ( require Context ()). add On Complete Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( R . id . goTo Login ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Create Profile Dialog () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġname Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= ĠEditText ( require Context ()). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Type Ġ= ĠInput Type . TYPE _ CLASS _ TEXT ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAlertDialog . Builder ( context ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle (" Cri ar Ġperfil ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset View ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Positive Button (" Cri ar ") Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġinput . text . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . create Profile ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Negative Button (" Cancel ar ") Ġ{ Ġdialog , Ġ_ Ġ-> Ġdialog . cancel () Ġ} ĊĠĠĠĠĠĠĠ Ġ}. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Profile ( profile : ĠProfile ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . delete Profile ( profile ) ĊĠĠĠ Ġ} Ċ }