package Ġsite . p au lo . local chat . ui . room Ċ Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġkotlinx . android . synt hetic . main . item _ room _ message . view .* Ċ import Ġme . him an sh us oni . chat message view . ChatMessage View Ċ import Ġsite . p au lo . local chat . R Ċ import Ġsite . p au lo . local chat . data . manager . CurrentUser Manager Ċ import Ġsite . p au lo . local chat . data . model . firebase . ChatMessage Ċ import Ġsite . p au lo . local chat . ui . utils . ctx Ċ import Ġsite . p au lo . local chat . ui . utils . formatted Time Ċ import Ġsite . p au lo . local chat . ui . utils . load Url And Cache Offline Ċ import Ġjava . util . Date Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠRoom Adapter Ċ @ Inject Ċ constructor () Ġ: ĠRecyclerView . Adapter < Room Adapter . Room ViewHolder >() Ġ{ ĊĊĠĠĠ Ġvar Ġmessages Ġ= Ġmutable ListOf < ChatMessage >() ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar ĠcurrentUser Manager : ĠCurrent User Manager ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠRoom ViewHolder Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemView Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. inflate ( R . layout . item _ room _ message , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠRoom ViewHolder ( item View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠRoom ViewHolder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind Messages ( messages [ position ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmessages . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠRoom ViewHolder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbind Messages ( message : ĠChat Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . message UserName Room Tv . text Ġ= Ġmessage . owner ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message . message . startsWith (" https :// firebase storage . googleapis . com / ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . chat Room Pic Img . load Url And Cache Offline ( message . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . chat Room Pic Img . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . message Room Tv . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . message Room Tv . text Ġ= Ġmessage . message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . message Time Room Tv . text Ġ= ĠDate (). formatted Time ( item View . ctx , Ġmessage . timestamp ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( message . owner Ġ== ĠcurrentUser Manager . getUserId ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . message Bubble Room . set Arrow Position ( ChatMessage View . Arrow Position . RIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . message Bubble Room . set BackgroundColor Res ( R . color . color _ room _ my _ bubble _ background , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . color . color _ room _ my _ bubble _ pressed _ background ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem ViewType ( position : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġposition ĊĠĠĠ Ġ} Ċ Ċ }