package Ġcom . example . sn pl c . adapters Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Image Button Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . view . isVisible Ċ import Ġandroidx . recyclerview . widget . Async List Differ Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . Request Manager Ċ import Ġcom . example . sn pl c . R Ċ import Ġcom . example . sn pl c . data . entities . Comment Ċ import Ġcom . example . sn pl c . data . entities . User Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġkotlinx . android . synt hetic . main . item _ comment . view .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠComment Adapter Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġg lide : ĠRequest Manager Ċ ) Ġ: ĠRecyclerView . Adapter < Comment Adapter . Comment ViewHolder >() Ġ{ ĊĊĠĠĠ Ġclass ĠComment ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtv Comment Username : ĠTextView Ġ= ĠitemView . tv Comment Username ĊĠĠĠĠĠĠĠ Ġval Ġtv Comment : ĠTextView Ġ= ĠitemView . tv Comment ĊĠĠĠĠĠĠĠ Ġval Ġib Delete Comment : ĠImage Button Ġ= ĠitemView . ib Delete Comment ĊĠĠĠĠĠĠĠ Ġval Ġiv Comment UserProfile Picture : ĠImageView Ġ= ĠitemView . iv Comment UserProfile Picture ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdiff Callback Ġ= Ġobject Ġ: ĠDiff Util . Item Callback < Comment >() Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠComment , Ġnew Item : ĠComment ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . hashCode () Ġ== Ġnew Item . hashCode () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠComment , Ġnew Item : ĠComment ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Item . comment Id Ġ== Ġnew Item . comment Id ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdiffer Ġ= ĠAsync List Differ ( this , Ġdiff Callback ) ĊĊĠĠĠ Ġvar Ġcomments : ĠList < Comment > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdiffer . current List ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ= Ġdiffer . submit List ( value ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠComment ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠComment ViewHolder ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLayoutInflater . from ( parent . context ). inflate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . layout . item _ comment , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparent , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcomments . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠComment ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġcomments [ position ] ĊĠĠĠĠĠĠĠ Ġholder . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġg lide . load ( comment . profile Picture Url ). into ( iv Comment UserProfile Picture ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** Ġshow Ġonly Ġif Ġlogged Ġin Ġuser Ġmade Ġthat Ġcomment Ġ**/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġib Delete Comment . isVisible Ġ= Ġcomment . uid Ġ== ĠFirebase Auth . getInstance (). uid !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Comment . text Ġ= Ġcomment . comment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Comment Username . text Ġ= Ġcomment . username ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtv Comment Username . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon User ClickListener ?. let Ġ{ Ġclick Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick ( comment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġib Delete Comment . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete Comment ClickListener ?. let Ġ{ Ġclick Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclick ( comment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġon User ClickListener : Ġ(( Comment ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar ĠonDelete Comment ClickListener : Ġ(( Comment ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġset On User ClickListener ( listener : Ġ( Comment ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġon User ClickListener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset On Delete Comment ClickListener ( listener : Ġ( Comment ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ ĠonDelete Comment ClickListener Ġ= Ġlistener ĊĠĠĠ Ġ} Ċ Ċ }