package Ġcom . foobar ust . deliver er . ui . section user Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . view Models Ċ import Ġandroidx . lifecycle . lifecycle Scope Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġandroidx . navigation . nav Graph ViewModels Ċ import Ġcom . foobar ust . android . utils . show Short Toast Ċ import Ġcom . foobar ust . deliver er . R Ċ import Ġcom . foobar ust . deliver er . databinding . Fragment Section User Detail Binding Ċ import Ġcom . foobar ust . deliver er . utils . Auto Cle ared Value Ċ import Ġcom . foobar ust . deliver er . utils . find Nav Controller Ċ import Ġcom . google . android . material . dialog . Material AlertDialog Builder Ċ import Ġdagger . h ilt . android . Android EntryPoint Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . flow . collect Latest Ċ import Ġkotlinx . coroutines . launch Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġke vin Ġon Ġ 4 / 2 / 2 1 Ċ Ġ*/ Ċ Ċ @ Android EntryPoint Ċ class ĠSection User Detail Fragment Ġ: ĠFragment (), ĊĠĠĠ ĠSection User Detail Adapter . Section User Detail Adapter Listener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġbinding : ĠFragment Section User Detail Binding Ġby ĠAuto Cle ared Value ( this ) ĊĠĠĠ Ġprivate Ġval Ġsection User ViewModel : ĠSection User ViewModel Ġby Ġnav Graph ViewModels ( R . id . navigation _ section _ user ) ĊĠĠĠ Ġprivate Ġval Ġsection User Detail ViewModel : ĠSection User Detail ViewModel Ġby Ġview Models () ĊĠĠĠ Ġprivate Ġval Ġnav Args : ĠSection User Detail Fragment Args Ġby Ġnav Args () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection User Detail ViewModel . on Fetch Order Detail ( nav Args . property ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠFragment Section User Detail Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsection User Detail Adapter Ġ= ĠSection User Detail Adapter ( this ) ĊĊĠĠĠĠĠĠĠ Ġwith ( binding . user Detail RecyclerView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġsection User Detail Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Has Fixed Size ( true ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection User Detail ViewModel . section User Detail List Models . collect Latest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsection User Detail Adapter . submit List ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠRetry ĊĠĠĠĠĠĠĠ Ġbinding . load Error Layout . retry Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection User Detail ViewModel . on Fetch Order Detail ( nav Args . property ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠSw ipe Ġrefresh ĊĠĠĠĠĠĠĠ Ġbinding . swipe Refresh Layout . setOn Refresh Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection User Detail ViewModel . on Fetch Order Detail ( nav Args . property ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠUi Ġstate ĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection User Detail ViewModel . section User Detail Ui State . collect Ġ{ Ġui State Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( binding ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġloading ProgressBar . isVisible Ġ= Ġui State Ġis ĠSection User Detail Ui State . Loading ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Error Layout . root . isVisible Ġ= Ġui State Ġis ĠSection User Detail Ui State . Error ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ui State Ġis ĠSection User Detail Ui State . Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Short Toast ( ui State . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠBack Ġpressed ĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection User ViewModel . back Pressed . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller ( R . id . section User Detail Fragment )?. navigate Up () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠToast Ġmessage ĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection User Detail ViewModel . toast Message . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Short Toast ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠFinish Ġswipe Ġrefresh ĊĠĠĠĠĠĠĠ Ġview Lifecycle Owner . lifecycle Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsection User Detail ViewModel . finish Swipe Refresh . collect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . swipe Refresh Layout . is Refresh ing Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Deliver Order Manual () Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial AlertDialog Builder ( require Context ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setTitle ( R . string . confirm _ order _ deliver ed _ dialog _ title ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. setMessage ( R . string . confirm _ order _ deliver ed _ dialog _ message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Positive Button ( android . R . string . ok ) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsection User Detail ViewModel . on Confirm Order Deliver ed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Negative Button ( android . R . string . cancel ) Ġ{ Ġdialog , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog . dismiss () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Deliver Order Scan () Ġ{ ĊĠĠĠĠĠĠĠ Ġsection User Detail ViewModel . order Detail . value ?. let Ġ{ Ġorder Detail Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller ( R . id . section User Detail Fragment )?. navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSection User Detail Fragment Directions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. action Section User Detail Fragment To Verify Delivery Activity ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠorderId Ġ= Ġorder Detail . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġverify Code Ġ= Ġorder Detail . verify Code ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Contact User ( userId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfind Nav Controller ( R . id . section User Detail Fragment )?. navigate ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSection User Detail Fragment Directions . action Section User Detail Fragment To UserInfo Fragment ( userId ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }