package Ġcom . example . az . presentation . user ĊĊ Ċ import Ġandroid . os . Build Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . example . az . databinding . Fragment User Home Binding Ċ import Ġcom . example . az . extensions .* Ċ import Ġcom . example . az . model . travel _ plan . Travel Plan Ċ import Ġcom . example . az . presentation . base . Base Fragment Ċ import Ġcom . example . az . presentation . user . travel _ plans . Travel Plan Adapter Ċ import Ġcom . example . az . utils . Resource Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . flow . collect Latest Ċ import Ġkotlinx . coroutines . launch Ċ Ċ @ Android EntryPoint Ċ class ĠUser Home Fragment Ġ: ĠBase Fragment < Fragment User Home Binding >( ĊĠĠĠ ĠFragment User Home Binding :: inflate Ċ ) Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtravel Plan Adapter : ĠTr avel Plan Adapter ĊĠĠĠ Ġprivate Ġval Ġuser ViewModel : ĠUser ViewModel Ġby Ġactivity ViewModels () ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O ) ĊĠĠĠ Ġoverride Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ ĠgetUser Travel Plans () ĊĠĠĠĠĠĠĠ Ġlisteners () ĊĠĠĠĠĠĠĠ Ġset UserInfo () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlisteners () Ġ{ ĊĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Logout . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbtn Back . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Home () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogo . get Rotation Animation () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset UserInfo () Ġ{ ĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauth Prefs Manager . preferences Flow . collect Latest Ġ{ Ġuser Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv Email . text Ġ= Ġuser . email ?. getName () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv National ity . text Ġ= Ġuser . data ?. national ity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtv V accine . text Ġ= Ġuser . data ?. v accine ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! user . token . isNull Or Blank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser ViewModel . get Travel Plan () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobserve Travel Plan () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġobserve Travel Plan () Ġ{ ĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser ViewModel . travel Plans . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Nothing Found . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Nothing Found . text Ġ= ĠgetString ( STRING S . error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . show Sn ackBar ( it . message !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠResource . Success Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . progress Bar . invisible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġit . data ?. travel Plans ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data !!. isNotEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Nothing Found . invisible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtravel Plan Adapter . submit List ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . rv Travel Plan . start Layout Animation () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} else { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Nothing Found . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . tv Nothing Found . text Ġ= ĠgetString ( STRING S . nothing _ found ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlogout () Ġ{ ĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . root . show Sn ackBar ( getString ( STRING S . logout )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġauth Prefs Manager . logout () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild FragmentManager . pop Back Stack () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Home () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O ) ĊĠĠĠ Ġprivate Ġfun ĠgetUser Travel Plans () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . rv Travel Plan . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtravel Plan Adapter Ġ= ĠTr avel Plan Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġtravel Plan Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLinearLayoutManager ( view ?. context Ġ, ĠLinearLayoutManager . VERTICAL Ġ, Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtravel Plan Adapter . click Travel Plan Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopen Travel Plan Details ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Home () Ġ= Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠ ĠUser Home Fragment Directions . action Navigation User Home To Navigation Home () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġopen Travel Plan Details ( travel Plan : ĠTr avel Plan ) Ġ= Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠ ĠUser Home Fragment Directions . action Navigation User Home To Travel Plan Fragment ( travel Plan ) ĊĠĠĠ Ġ) Ċ }