package Ġcom . example . what son news . fragments Ċ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroidx . core . content . res . Resources Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . example . what son news . R Ċ import Ġcom . example . what son news . activities . MainActivity Ċ import Ġcom . example . what son news . adapters . Big Card Adapter Ċ import Ġcom . example . what son news . view models . Main ViewModel Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database . Database Reference Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Global Scope Ċ import Ġkotlinx . coroutines . delay Ċ import Ġkotlinx . coroutines . launch ĊĊ Ċ class ĠPersonal ized Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Main ViewModel : ĠMain ViewModel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm RecyclerView : ĠRecyclerView ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTAG Ġ= Ġ" Personal ized Fragment " ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= Ġinflater . inflate ( R . layout . fragment _ personal ized , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġm Main ViewModel Ġ= Ġ( activity Ġas ĠMainActivity ). m Main ViewModel ĊĊĠĠĠĠĠĠĠ Ġval Ġprogress Indicator Ġ= Ġview . findViewById < ProgressBar >( R . id . progress Indicator ) ĊĠĠĠĠĠĠĠ Ġprogress Indicator . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġm Main ViewModel . user Profile . observe ( view Lifecycle Owner , Ġ{ Ġuser Profile Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( TAG , Ġ" user Ġprofile Ġobserve Ġmethod Ġcalled Ġfrom ĠPER SON AL IZED Ġfragment ...") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( user Profile != null ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpreference List : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Profile . exclusive ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference List . add (" Exclusive ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Profile . health ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference List . add (" Health ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Profile . business ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference List . add (" Business ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Profile . ent ert ain ment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference List . add (" Enter tain ment ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Profile . sport s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference List . add (" S ports ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user Profile . technology ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference List . add (" Tech nology ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference List . shuffle () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( preference List . size == 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Add Ġsections Ġfrom ĠProfile Ġtab Ġto Ġget Ġstarted .", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . LENGTH _ IN DEFIN ITE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). setBackground Tint ( require Activity (). application Context . getColor ( R . color . sn ack _ bar _ bl u ish _ grey )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTextColor ( Resources Compat . getColor ( resources , ĠR . color . white , Ġnull )). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġm Adapter Ġ= ĠBig Card Adapter ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpreference List , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire Activity (). application Context . resources ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm RecyclerView Ġ= Ġview . findViewById ( R . id . personal ized RecyclerView ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm RecyclerView . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġm Adapter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Adapter . setOn My Card ClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String (" section Title ", Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ personal ized Fragment _ to _ each Section Fragment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbundle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprogress Indicator . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġview ĊĊĠĠĠ Ġ} ĊĊ Ċ }