package Ġapp . re _ ed dit . ui . post Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġapp . re _ ed dit . Main App Ċ import Ġapp . re _ ed dit . R Ċ import Ġapp . re _ ed dit . domain . entity . Post Ċ import Ġapp . re _ ed dit . domain . entity . Post Full Page Ċ import Ġapp . re _ ed dit . presentation . Topic ViewModel Ċ import Ġapp . re _ ed dit . ui . common . Margin Item Decoration Ċ import Ġapp . re _ ed dit . ui . main . Post Listing Activity . Companion . URL Ċ import Ġapp . re _ ed dit . ui . state . Ui State Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . bump tech . glide . request . target . Target Ċ import Ġkotlinx . android . synt hetic . main . activity _ post .* ĊĊ Ċ class ĠPost Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠTopic ViewModel ĊĊĠĠĠ Ġprivate Ġval Ġpost Adapter Ġ= ĠPost Adapter () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ post ) ĊĊĠĠĠĠĠĠĠ ĠviewModel Ġ= Ġ( application Ġas ĠMain App ). app Component (). viewModel ĊĊĠĠĠĠĠĠĠ Ġintent . extras ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( URL )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . getFull Post ( it . getString ( URL ) !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Observer s () ĊĠĠĠĠĠĠĠ Ġsetup Post Recycler () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Observer s () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel . post Ui State . observe ( this , ĠObserver Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUi State . Loading Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUi State . Data < *> Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon New Data ( this . data Ġas ĠPost Full Page ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠUi State . Error Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide Loading () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Error ( this . error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġon New Data ( post Full Page : ĠPost Full Page ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Ui ( post Ġ= Ġpost Full Page . post ) ĊĠĠĠĠĠĠĠ Ġif Ġ( post Full Page . comments . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Adapter . list Ġ= Ġpost Full Page . comments ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomments _ recycler . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror _ text . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomments _ recycler . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Ui ( post : ĠPost ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlabel _ sub _ reddit . text Ġ= Ġpost . sub reddit Name Prefix ed ĊĠĠĠĠĠĠĠ Ġuser _ date . text Ġ= Ġpost . post Info ĊĠĠĠĠĠĠĠ Ġpost _ title . text Ġ= Ġpost . title ĊĠĠĠĠĠĠĠ Ġup _ count . text Ġ= Ġpost . ups ĊĠĠĠĠĠĠĠ Ġdown _ count . text Ġ= Ġpost . down s ĊĠĠĠĠĠĠĠ Ġcomments _ count . text Ġ= Ġpost . comments Count ĊĠĠĠĠĠĠĠ Ġif Ġ(! post . thumbnail . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost _ thumbnail . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost _ body . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( this ). load ( post . thumbnail ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRequest Options () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. override ( Target . SIZE _ ORIGIN AL )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( post _ thumbnail ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost _ thumbnail . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost _ body . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost _ body . text Ġ= Ġpost . body ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Post Recycler () Ġ{ ĊĠĠĠĠĠĠĠ Ġcomments _ recycler . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠLinearLayoutManager ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= Ġpost Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Item Decoration ( Margin Item Decoration ( resources . get Dimension ( R . dim en . recycler _ post _ margin ). toInt ())) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġprogress _ bar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġpost _ layout . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġcomments _ recycler . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhide Loading () Ġ{ ĊĠĠĠĠĠĠĠ Ġprogress _ bar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġpost _ layout . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġcomments _ recycler . visibility Ġ= ĠView . VISIBLE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Error ( msg : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġerror _ text . text Ġ= Ġmsg ĊĠĠĠĠĠĠĠ Ġerror _ text . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġcomments _ recycler . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġpost _ layout . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} Ċ Ċ }