package Ġcom . che ise _ proj . e _ commerce . ui . profile Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . recyclerview . widget . Divider Item Decoration Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . che ise _ proj . e _ commerce . Base Fragment Ċ import Ġcom . che ise _ proj . e _ commerce . R Ċ import Ġcom . che ise _ proj . e _ commerce . data . db . entity . Card Entity Ċ import Ġcom . che ise _ proj . e _ commerce . di . module . glide . G lide App Ċ import Ġcom . che ise _ proj . e _ commerce . model . Profile Section Ċ import Ġcom . che ise _ proj . e _ commerce . ui . profile . adapter . Profile Adapter Ċ import Ġcom . che ise _ proj . e _ commerce . ui . profile . adapter . Profile Adapter . Companion . ADDRESS _ VIEW Ċ import Ġcom . che ise _ proj . e _ commerce . ui . profile . adapter . Profile Adapter . Companion . ORD ERS _ VIEW Ċ import Ġcom . che ise _ proj . e _ commerce . ui . profile . adapter . Profile Adapter . Companion . PAYMENT _ VIEW Ċ import Ġcom . che ise _ proj . e _ commerce . utils . ItemClickListener Ċ import Ġcom . che ise _ proj . e _ commerce . utils . USER _ AV AT AR _ URL Ċ import Ġcom . che ise _ proj . e _ commerce . utils . USER _ EMAIL Ċ import Ġcom . che ise _ proj . e _ commerce . utils . USER _ NAME Ċ import Ġkotlinx . android . synt hetic . main . fragment _ profile .* Ċ import Ġkotlinx . android . synt hetic . main . profile _ header .* Ċ import Ġkotlinx . android . synt hetic . main . toolbar _ common .* Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ*/ Ċ class ĠProfile Fragment Ġ: ĠBase Fragment < Profile ViewModel >() Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadapter : ĠProfile Adapter ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ profile , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ToolBar (): ĠToolbar ? Ġ= Ġtoolbar ĊĊĠĠĠ Ġoverride Ġfun Ġget ViewModel (): ĠClass < Profile ViewModel > Ġ= ĠProfile ViewModel :: class . java ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġinit RecyclerView () ĊĠĠĠĠĠĠĠ Ġconfig ViewModel () ĊĠĠĠĠĠĠĠ Ġinit Profile Info () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Profile Info () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġtest Ġdata ĊĠĠĠĠĠĠĠ Ġtv _ header . text Ġ= ĠUSER _ NAME ĊĠĠĠĠĠĠĠ Ġtv _ sub _ header . text Ġ= ĠUSER _ EMAIL ĊĠĠĠĠĠĠĠ ĠG lide App . with ( require Context ()). load ( USER _ AV AT AR _ URL ). circle Crop (). into ( img _ item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit RecyclerView () Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter Ġ= ĠProfile Adapter () ĊĠĠĠĠĠĠĠ Ġadapter . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Item Click Callback ( object Ġ: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠItem ClickListener < Profile Adapter . Companion . Profile Option > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( data : ĠProfile Adapter . Companion . Profile Option ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Adapter . Companion . Profile Option . ORDER _ DETAILS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Order () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Adapter . Companion . Profile Option . ADDRESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Address () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProfile Adapter . Companion . Profile Option . PAYMENT _ METHOD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To Payment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġre cycler _ view . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Fixed Size () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Divider Item Decoration ( context , ĠRecyclerView . VERTICAL )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To Order () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠProfile Fragment Directions . action Profile Fragment To Orders Fragment () ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To Address () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠProfile Fragment Directions . action Profile Fragment To Address Fragment () ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To Payment () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaction Ġ= ĠProfile Fragment Directions . action Profile Fragment To Payment Card Fragment () ĊĠĠĠĠĠĠĠ Ġfind Nav Controller (). navigate ( action ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconfig ViewModel () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . get Profile Titles () ĊĠĠĠĠĠĠĠ ĠviewModel . get Shopping Address () ĊĠĠĠĠĠĠĠ ĠviewModel . get Orders () ĊĠĠĠĠĠĠĠ ĠviewModel . getDefault Payment () ĊĠĠĠĠĠĠĠ Ġsubscribe Observer () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe Observer () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . profile Titles . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġdata Ġ-> Ġload Titles ( data ) Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . shipping Address Count . observe ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Lifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠObserver Ġ{ Ġdata Ġ-> Ġload Address Count ( data ) Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . orders Count . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġdata Ġ-> Ġload Order Count ( data ) Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . payment Method . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġdata Ġ-> Ġload Payment ( data ) Ġ}) ĊĠĠĠĠĠĠĠ ĠviewModel . isLoading . observe ( view Lifecycle Owner , ĠObserver Ġ{ Ġstatus Ġ-> Ġshow Progress ( status ) Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Payment ( data : ĠCard Entity ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . add PaymentMethod ( data ) ĊĠĠĠĠĠĠĠ Ġadapter . notify Item Changed ( PAYMENT _ VIEW ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Order Count ( data : ĠInt ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . add Order Count ( data ) ĊĠĠĠĠĠĠĠ Ġadapter . notify Item Changed ( ORD ERS _ VIEW ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Address Count ( data : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . add Shipping Address Count ( data ) ĊĠĠĠĠĠĠĠ Ġadapter . notify Item Changed ( ADDRESS _ VIEW ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Progress ( status : ĠBoolean ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġstatus ?. let Ġ{ Ġloading Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Titles ( data : ĠList < Profile Section > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġadapter . submit List ( data ) ĊĠĠĠĠĠĠĠ Ġre cycler _ view . adapter Ġ= Ġadapter ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġre cycler _ view . adapter Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĠĠĠ Ġ} Ċ } Ċ