package Ġcom . example . ar ist ot le . MainActivity Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġcom . example . ar ist ot le . Models . User Ċ import Ġcom . example . ar ist ot le . R Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . reflect . Type Token Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add contact .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ add contact . view .* Ċ import Ġjava . io .* Ċ import Ġjava . lang . reflect . Type ĊĊ Ċ class ĠAdd Contact Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpath To User File Ġ: ĠString ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġpath To User File Ġ= Ġthis . context ?. files Dir ?. path Ġ+ Ġ"/ Users . json " ĊĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ add contact , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġsave New Contact Button . setOnClickListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew User Ġ= ĠUser ("", Ġ"", Ġ"", Ġtext Input Edit Email . text . toString (), Ġtext Input Edit FirstName . text . toString (), Ġtext Input Edit LastName . text . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsave Users ( new User ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġact Ġ= Ġactivity Ġas ĠMainActivity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġact . fragment Switch er ( act . contacts Fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Users ( new User : ĠUser ){ ĊĠĠĠĠĠĠĠ Ġval Ġuser List Ġ= Ġload Users () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( user List . contains ( new User )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// TODO : ĠUser Ġalready Ġexists Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint (" Already Ġexists ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser List . add ( new User ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwriter : ĠWriter Ġ= ĠFile Writer ( path To User File ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGson (). toJson ( user List , Ġwriter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Users () Ġ: ĠMutable List < User > Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġjson Users Ġ= Ġmutable ListOf < User >() ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreader : ĠReader Ġ= ĠFileReader ( path To User File ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠRE VIEW _ TYPE Ġ: ĠType Ġ= Ġobject Ġ: ĠType Token < List < User ?> ?> () Ġ{} . type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Users Ġ= ĠGson (). fromJson ( reader , ĠRE VIEW _ TYPE ) Ġ// Ġcontains Ġthe Ġwhole Ġreviews Ġlist ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreader . close () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e Ġ: ĠFileNotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwriter : ĠWriter Ġ= ĠFile Writer ( path To User File ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGson (). toJson ( json Users , Ġwriter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwriter . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġjson Users ĊĠĠĠ Ġ} ĊĊĊ Ċ } Ċ