package Ġcom . j az art . sy mph ony . profile Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . fragment . app . Fragment State Pager Adapter Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . j az art . sy mph ony . R Ċ import Ġcom . j az art . sy mph ony . di . Simple ViewModel Factory Ċ import Ġcom . j az art . sy mph ony . di . app Ċ import Ġcom . j az art . sy mph ony . posts . Post Page Ċ import Ġcom . j az art . sy mph ony . posts . Posts Fragment Ċ import Ġkotlinx . android . synt hetic . main . profile _ fragment .* Ċ import Ġkotlinx . android . synt hetic . main . profile _ header _ view .* Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠProfile Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġval Ġdata Ġ= Ġarguments ?. let Ġ{ ĠProfile Fragment Args . from Bundle ( it ). user Ġ} ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġfactory : ĠSimple ViewModel Factory ĊĠĠĠ Ġprivate Ġval Ġprofile ViewModel Ġby Ġview Models < Profile ViewModel > Ġ{ ĊĠĠĠĠĠĠĠ Ġfactory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinject () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . profile _ fragment , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġadapter Ġ= ĠProfile Adapter ( child FragmentManager ) ĊĠĠĠĠĠĠĠ Ġprofile Toolbar . inflate Menu ( R . menu . profile _ menu ) ĊĠĠĠĠĠĠĠ Ġprofile Toolbar . navigation Icon Ġ= Ġresources . get Drawable ( R . drawable . ic _ arrow _ back _ white _ 2 4 dp , Ġnull ) ĊĠĠĠĠĠĠĠ Ġprofile Toolbar . set Navigation Content Description ( R . string . back _ action ) ĊĠĠĠĠĠĠĠ Ġprofile Toolbar . set Navigation OnClickListener Ġ{ Ġfind Nav Controller (). pop Back Stack () Ġ} ĊĠĠĠĠĠĠĠ Ġprofile ViewPager . adapter Ġ= Ġadapter ĊĠĠĠĠĠĠĠ Ġprofile Tab Layout . setup With ViewPager ( profile ViewPager ) ĊĠĠĠĠĠĠĠ Ġload Profile Pic ( Firebase Auth . getInstance (). currentUser ?. photoUrl ) ĊĠĠĠĠĠĠĠ Ġbind Profile Info () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Profile Pic ( uri : ĠUri ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠG lide . with ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load ( uri ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( RequestOptions (). circle Crop (). placeholder ( resources . get Drawable ( R . drawable . ic _ account _ circle _ black _ 2 4 dp , Ġnull ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( profile Picture ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Profile Info () Ġ{ ĊĠĠĠĠĠĠĠ Ġprofile ViewModel . user LiveData . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġuser Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjoin Date . text Ġ= ĠgetString ( R . string . member _ since , ĠSimpleDateFormat (" MMM Ġy yyy ", ĠLocale . getDefault ()). format ( user . date Joined )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername . text Ġ= Ġuser . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlikes . text Ġ= ĠgetString ( R . string . likes _ count , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsong Count . text Ġ= ĠgetString ( R . string . song _ count , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Type . text Ġ= Ġresources . getString ( R . string . account _ type , Ġ" Regular ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjoin Date . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġusername . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsong Count . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlikes . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Type . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinject () Ġ{ ĊĠĠĠĠĠĠĠ Ġapp (). component . inject ( this ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠProfile Adapter ( fm : ĠFragment Manager ) Ġ: ĊĠĠĠĠĠĠĠ ĠFragment State Pager Adapter ( fm , ĠBE HAV IOR _ RE SU ME _ ONLY _ CURRENT _ FRAGMENT ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Page Title ( position : ĠInt ): ĠCharSequence ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ" S ongs " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ" Posts " ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ" Friends " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠFragment Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠUser S ongs Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠPosts Fragment . newInstance ( Post Page . PRIVATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> ĠUser Friends Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdestroy Item ( container : ĠViewGroup , Ġposition : ĠInt , Ġ` object `: ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . destroy Item ( container , Ġposition , Ġ` object `) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Count () Ġ= Ġ 3 Ċ } Ċ