package Ġcom . fal dez . sh ach i . ui . favorite Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . paging . Paging Data Adapter Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . fal dez . sh ach i . data . model . Post Ċ import Ġcom . fal dez . sh ach i . data . preference . Grid Mode Ċ import Ġcom . fal dez . sh ach i . data . preference . Quality Ċ import Ġcom . fal dez . sh ach i . databinding . Post Card Item Binding Ċ import Ġcom . fal dez . sh ach i . data . util . Mime Util Ċ import Ġcom . fal dez . sh ach i . data . util . bind Post Image Preview Ċ Ċ class ĠF avorite Adapter ( ĊĠĠĠ Ġprivate Ġval Ġgrid Mode : ĠGrid Mode , ĊĠĠĠ Ġprivate Ġval Ġquality : ĠQuality , ĊĠĠĠ Ġprivate Ġval Ġhide Question able : ĠBoolean , ĊĠĠĠ Ġprivate Ġval Ġhide Explicit : ĠBoolean , ĊĠĠĠ Ġprivate Ġval ĠonClick : Ġ( Int ) Ġ-> ĠUnit , Ċ ) Ġ: ĊĠĠĠ ĠP aging Data Adapter < Post , ĠB rowse Item ViewHolder >( POST _ COMP AR ATOR ) Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠB rowse Item ViewHolder ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠB rowse Item ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠB rowse Item ViewHolder ( Post Card Item Binding . inflate ( in flater , Ġparent , Ġfalse )) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Position (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . binding Adapter Position ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠB rowse Item ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpost Ġ= ĠgetItem ( position ) ĊĠĠĠĠĠĠĠ Ġval ĠimageView Ġ= Ġholder . binding . imageView ĊĊĠĠĠĠĠĠĠ Ġif Ġ( post Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . movie Type Icon . isVisible Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMime Util . get MimeType From Url ( post . file Url )?. startsWith (" video ") Ġ?: Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġholder . binding . root . setOnClickListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbind Post Image Preview ( holder . binding . root . context , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠimageView , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgrid Mode , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquality , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Question able , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhide Explicit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Re cyc led ( holder : ĠB rowse Item ViewHolder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Re cyc led ( holder ) ĊĠĠĠĠĠĠĠ ĠG lide . with ( holder . binding . root ). clear ( holder . binding . imageView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPOST _ COMP AR ATOR Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Post >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠPost , Ġnew Item : ĠPost ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item . post Id Ġ== Ġnew Item . post Id Ġ&& Ġold Item . server Id Ġ== Ġnew Item . server Id ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠPost , Ġnew Item : ĠPost ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Item Ġ== Ġnew Item ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠB rowse Item ViewHolder ( val Ġbinding : ĠPost Card Item Binding ) Ġ: ĊĠĠĠ ĠRecyclerView . ViewHolder ( binding . root ) Ċ