/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠM iko ÅĤ aj ĠLes zc zy ÅĦ ski Ġ& ĠApp mat t us ĠLimited Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠB ab ylon ĠPart ners ĠLimited Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠFile Ġmodified Ġby ĠM iko ÅĤ aj ĠLes zc zy ÅĦ ski Ġ& ĠApp mat t us ĠLimited Ċ Ġ* ĠSee : Ġhttps :// github . com / orbit - m vi / orbit - m vi / compare / c 5 b 8 b 3 f 2 b 8 3 b 5 9 7 2 ba 2 ad 9 8 f 7 3 f 7 5 0 8 6 a 8 9 6 5 3 d 3 ... main Ċ Ġ*/ Ċ Ċ package Ġcom . one gravity . bloc . posts Ċ Ċ import Ġandroid . graphics . drawable . Drawable Ċ import Ġandroid . graphics . drawable . Layer Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . view . View Compat Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . navigation . fragment . find Nav Controller Ċ import Ġandroidx . navigation . fragment . nav Args Ċ import Ġandroidx . navigation . ui . Navigation UI . setup ActionBar With Nav Controller Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . bump tech . glide . request . RequestOptions Ċ import Ġcom . bump tech . glide . request . target . Custom Target Ċ import Ġcom . bump tech . glide . request . transition . Transition Ċ import Ġcom . github . m ichael bull . result . map Both Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . one gravity . bloc . R Ċ import Ġcom . one gravity . bloc . databinding . Post Details Fragment Binding Ċ import Ġcom . one gravity . bloc . get OrCreate Ċ import Ġcom . one gravity . bloc . sample . posts . bloc . Post State Ċ import Ġcom . one gravity . bloc . sample . posts . bloc . Post Ċ import Ġcom . one gravity . bloc . sample . posts . bloc . Post Bloc Ċ import Ġcom . one gravity . bloc . subscribe Ċ import Ġcom . one gravity . bloc . sample . posts . domain . repositories . Post Ġas ĠPost Data Ċ import Ġcom . one gravity . bloc . utils . view Binding Ċ import Ġcom . x wr ay . group ie . Group Adapter Ċ import Ġcom . x wr ay . group ie . Group ie ViewHolder Ċ Ċ class ĠPost Fragment Ġ: ĠFragment ( R . layout . post _ details _ fragment ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġargs : ĠPost Fragment Args Ġby Ġnav Args () ĊĠĠĠ Ġprivate Ġval Ġpost Ġby Ġlazy Ġ{ Ġargs . post Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġb loc : ĠPost Bloc Ġby Ġget OrCreate (" post ") Ġ{ ĊĠĠĠĠĠĠĠ ĠPost . bloc ( it ). apply Ġ{ Ġsend ( Post . Action . Load ( post . id )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġinitial ised : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġval Ġadapter Ġ= ĠGroup Adapter < Group ie ViewHolder >() ĊĊĠĠĠ Ġprivate Ġval Ġbinding Ġby Ġview Binding < Post Details Fragment Binding >() ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Compat Activity Ġ= Ġactivity Ġas ĠAppCompatActivity ĊĠĠĠĠĠĠĠ Ġapp Compat Activity . set Support ActionBar ( binding . toolbar ) ĊĠĠĠĠĠĠĠ Ġsetup ActionBar With Nav Controller ( app Compat Activity , Ġfind Nav Controller ()) ĊĊĠĠĠĠĠĠĠ Ġbinding . post Comments List . layout Manager Ġ= ĠLinearLayoutManager ( activity ) ĊĠĠĠĠĠĠĠ ĠView Compat . set Nested Scrolling Enabled ( binding . post Comments List , Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġbinding . post Comments List . addItem Decoration ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSe parator Decoration ( require Activity (), ĠR . dim en . separator _ margin _ start , ĠR . dim en . separator _ margin _ end ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġbinding . post Comments List . adapter Ġ= Ġadapter ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġb loc . side Effects ĊĠĠĠĠĠĠĠ Ġb loc . subscribe < Post State , ĠPost . Action , ĠUnit >( this , Ġ:: render ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrender ( state : ĠPost State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvisibility Ġ= Ġwhen Ġ( state . loading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbinding . in determinate Bar . visibility Ġ= Ġvisibility ĊĊĠĠĠĠĠĠĠ Ġstate . post ?. map Both ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġpost Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! initial ised ) Ġinitialize ( post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . post Title . text Ġ= Ġpost . title ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . post Body . text Ġ= Ġpost . body ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomments Ġ= Ġpost . comments . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbinding . post Comment Count . text Ġ= Ġcontext ?. resources ?. get Quantity String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . plurals . comments , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomments , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadapter . update ( post . comments . map (:: Post Comment Item )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( binding . root , Ġ" Error : Ġ${ error . message }", ĠSn ackbar . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinitialize ( post : ĠPost Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinitial ised Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġbinding . toolbar . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġpost . username ĊĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( require Context ()). load ( post . avatar Url ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( RequestOptions . override Of ( resources . get Dimension Pixel Size ( R . dim en . toolbar _ logo _ size ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply ( RequestOptions . circle Crop Transform ()). into ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠCustom Target < Drawable >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Cle ared ( placeholder : ĠDrawable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder ?. let (:: set Logo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Resource Ready ( resource : ĠDrawable , Ġtransition : ĠTransition < in ĠDrawable > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogo Ġ= ĠLayer Drawable ( array Of ( resource )). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Layer Inset ( 0 , Ġ 0 , Ġ 0 , Ġresources . get Dimension Pixel Size ( R . dim en . toolbar _ logo _ padding _ end ), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Logo ( logo ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ