package Ġcom . zone . chat ter z . adapter Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget .* Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Database Error Ċ import Ġcom . google . firebase . database . Firebase Database Ċ import Ġcom . google . firebase . database . Value EventListener Ċ import Ġcom . mik ha el lope z . circular image view . Circular ImageView Ċ import Ġcom . zone . chat ter z . home . Comment Activity Ċ import Ġcom . zone . chat ter z . home . MainActivity Ċ import Ġcom . zone . chat ter z . R Ċ import Ġcom . zone . chat ter z . connection . Connection Ċ import Ġcom . zone . chat ter z . connection . Firebase Methods Ċ import Ġcom . zone . chat ter z . connection . Request Callback Ċ import Ġcom . zone . chat ter z . home . Home Activity Ċ import Ġcom . zone . chat ter z . model . Comment Ċ import Ġcom . zone . chat ter z . model . Post Ċ import Ġcom . zone . chat ter z . model . User Ċ import Ġcom . zone . chat ter z . common . Tim ings Ċ import Ġcom . zone . chat ter z . infer faces . API Service Ċ import Ġcom . zone . chat ter z . notification .* Ċ import Ġretrofit 2 . Call Ċ import Ġjava . io . File Ċ import Ġjava . lang . StringBuilder Ċ Ċ class ĠHome Adapter ( ĊĠĠĠ ĠmContext : ĠContext , ĊĠĠĠ Ġpost List : ĠMutable List < Post > Ċ ) Ġ: ĊĠĠĠ ĠRecyclerView . Adapter < Home Adapter . View holder >(), ĠPopup Menu . On MenuItem ClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠmContext Ġ= ĠmContext ĊĠĠĠ Ġprivate Ġval Ġpost List Ġ= Ġpost List ĊĠĠĠ Ġprivate Ġvar Ġcurrent _ item : ĠInt Ġ= Ġ- 1 ĊĊĠĠĠ Ġclass ĠView holder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprofile Image _ post : ĠCircular ImageView Ġ= ĠitemView . findViewById ( R . id . profile Image _ post ) ĊĠĠĠĠĠĠĠ Ġval Ġprofile Name _ post : ĠTextView Ġ= ĠitemView . findViewById ( R . id . profile Name _ post ) ĊĠĠĠĠĠĠĠ Ġval Ġoptions _ post : ĠRelative Layout Ġ= ĠitemView . findViewById ( R . id . options _ post ) ĊĠĠĠĠĠĠĠ Ġval Ġimage _ post : ĠImageView Ġ= ĠitemView . findViewById ( R . id . image _ post ) ĊĠĠĠĠĠĠĠ Ġval Ġlike _ post : ĠImageView Ġ= ĠitemView . findViewById ( R . id . like _ post ) ĊĠĠĠĠĠĠĠ Ġval Ġtime _ post : ĠTextView Ġ= ĠitemView . findViewById ( R . id . time _ post ) ĊĠĠĠĠĠĠĠ Ġval Ġno _ of _ likes _ post : ĠTextView Ġ= ĠitemView . findViewById ( R . id . no _ of _ likes _ post ) ĊĠĠĠĠĠĠĠ Ġval Ġcomment _ post : ĠImageView Ġ= ĠitemView . findViewById ( R . id . comment _ post ) ĊĠĠĠĠĠĠĠ Ġval Ġno _ of _ comments _ post : ĠTextView Ġ= ĠitemView . findViewById ( R . id . no _ of _ comments _ post ) ĊĠĠĠĠĠĠĠ Ġval Ġdescription _ post : ĠTextView Ġ= ĠitemView . findViewById ( R . id . description _ post ) ĊĠĠĠĠĠĠĠ Ġval Ġprofile Image _ comment _ box _ post : ĠCircular ImageView Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . findViewById ( R . id . profile Image _ comment _ box _ post ) ĊĠĠĠĠĠĠĠ Ġval Ġcomment _ box _ post : ĠLinearLayout Ġ= ĠitemView . findViewById ( R . id . comment _ edit text _ post ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠView holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠLayoutInflater . from ( mContext ). inflate ( R . layout . post _ layout , Ġparent , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġreturn ĠView holder ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . post List . size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠView holder , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpost Ġ= Ġpost List . get ( position ) ĊĊĠĠĠĠĠĠĠ Ġload Owner Data Post ( holder , Ġpost . post Owner ) ĊĊĠĠĠĠĠĠĠ Ġ// setting Ġimage ĊĠĠĠĠĠĠĠ ĠG lide . with ( mContext ). load ( post . post Image ). into ( holder . image _ post ) ĊĊĠĠĠĠĠĠĠ Ġ// setting Ġdescription Ġon Ġpost ĊĠĠĠĠĠĠĠ Ġholder . description _ post . text Ġ= Ġpost . post Description ĊĊĠĠĠĠĠĠĠ Ġ// set t ting Ġtime Ġpost Ġuploaded ĊĠĠĠĠĠĠĠ Ġholder . time _ post . text Ġ= ĠTim ings . time Upload Post ( post . post Time ) ĊĊĠĠĠĠĠĠĠ Ġlikes Count ( post . post Id , Ġholder ) ĊĊĠĠĠĠĠĠĠ Ġcomments Count ( post . post Id , Ġholder ) ĊĊĠĠĠĠĠĠĠ Ġholder . like _ post . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlike On Post ( post . post Id , Ġholder ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Methods . single Value Event ( Connection . user Ref + File . separator + Connection . user , object Ġ: ĠRequest Callback (){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Changed ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġdata Snapshot . getValue ( User :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠStringBuilder ( user . displayName +" Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . append (" lik ed Ġon Ġyour Ġpost ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Notification ( builder . toString (), user . id , post . post Image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhash Map Ġ= Ġhash Map Of < String , Any >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Map . put (" message ", builder . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Map . put (" image ", post . post Image ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhash Map . put (" sender ", Connection . user ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Database . getInstance (). getReference ( Connection . notification ). child ( post . post Owner ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. push (). setValue ( hash Map ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . comment _ post . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( mContext , ĠComment Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" post Id ", Ġpost . post Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmContext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . comment _ box _ post . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( mContext Ġas ĠHome Activity . Navigation Controls ). remove Navigation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( mContext Ġas ĠHome Activity . Navigation Controls ). open Comment Edit ext ( post . post Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHome Activity . comment Item Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . is _ changed Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . comment _ view holder _ changed Ġ= Ġholder ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġholder . options _ post . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . current _ item Ġ= Ġposition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpopup Menu Ġ= ĠPopup Menu ( mContext , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Menu . setOn MenuItem ClickListener ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Menu . inflate ( R . menu . options _ menu _ post ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopup Menu . show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠFirebase Methods . single Value Event ( Connection . likes Ref Ġ+ ĠFile . separator Ġ+ Ġpost . post Id Ġ+ ĠFile . separator Ġ+ ĠConnection . user , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠRequest Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Changed ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data Snapshot . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . like _ post . setImage Resource ( R . drawable . ic _ filled _ like _ star _ post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcomments Count ( post Id : ĠString , Ġholder : ĠView holder ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcomments Count : ĠLong Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ ĠFirebase Methods . add Value Event Different Child ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConnection . comments Ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠRequest Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Changed ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomments Count Ġ+= Ġdata Snapshot . children Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( data Ġin Ġdata Snapshot . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomment Ġ= Ġdata . getValue ( Comment :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomment ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcomments Count Ġ+= Ġcomment . reply Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . no _ of _ comments _ post . text Ġ= Ġcomments Count . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlikes Count ( ĊĠĠĠĠĠĠĠ Ġpost Id : ĠString , ĊĠĠĠĠĠĠĠ Ġholder : ĠView holder ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Methods . single Value Event Different Child ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConnection . likes Ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠRequest Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Changed ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġdata Snapshot . children Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġzero : ĠLong Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Ġ== Ġzero ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . no _ of _ likes _ post . text Ġ= Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . no _ of _ likes _ post . text Ġ= Ġcount . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlike On Post ( ĊĠĠĠĠĠĠĠ Ġpost Id : ĠString , ĊĠĠĠĠĠĠĠ Ġholder : ĠView holder ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Reference Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase Database . getInstance (). getReference ( Connection . likes Ref ). child ( post Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. child ( Connection . user ) ĊĊĠĠĠĠĠĠĠ Ġdatabase Reference . addListener For Single Value Event ( object Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( p 0 : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġholder . no _ of _ likes _ post . text ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcnt : ĠInt Ġ= ĠInteger . parseInt ( str . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p 0 . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcnt -- ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Reference . remove Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . like _ post . setImage Resource ( R . drawable . ic _ outline _ star ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcnt ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Reference . setValue ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . like _ post . setImage Resource ( R . drawable . ic _ filled _ like _ star _ post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . no _ of _ likes _ post . text Ġ= Ġcnt . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( p 0 : ĠDatabase Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġload Owner Data Post ( holder : ĠView holder , Ġpost Owner : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Methods . single Value Event Different Child ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConnection . user Ref , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Owner , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠRequest Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Changed ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġdata Snapshot . getValue ( User :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuser ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// setting Ġprofile Ġimage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user . imageUrl . equals (" null ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( user . gender . equals (" Male ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . profile Image _ post . setImage Resource ( R . drawable . ic _ male _ gender _ profile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . profile Image _ comment _ box _ post . setImage Resource ( R . drawable . ic _ male _ gender _ profile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . profile Image _ post . setImage Resource ( R . drawable . ic _ female _ gender _ profile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . profile Image _ comment _ box _ post . setImage Resource ( R . drawable . ic _ female _ gender _ profile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( mContext ). load ( it . imageUrl ). into ( holder . profile Image _ post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG lide . with ( mContext ). load ( it . imageUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. into ( holder . profile Image _ comment _ box _ post ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// setting Ġprofile Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġholder . profile Name _ post . text Ġ= Ġit . username ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MenuItem Click ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item ?. itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . delete _ options _ post Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Ġ= Ġpost List [ current _ item ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Id Ġ= Ġpost . post Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Post ( post Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . save _ options _ post Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpost Ġ= Ġpost List [ current _ item ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpost ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsave Post Archive ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsave Post Archive ( post : ĠPost ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhash Map Ġ= Ġhash Map Of < String , ĠAny >() ĊĠĠĠĠĠĠĠ Ġhash Map . put (" post Owner ", Ġpost . post Owner ) ĊĠĠĠĠĠĠĠ Ġhash Map . put (" post Description ", Ġpost . post Description ) ĊĠĠĠĠĠĠĠ Ġhash Map . put (" post Time ", Ġpost . post Time ) ĊĠĠĠĠĠĠĠ Ġhash Map . put (" post Image ", Ġpost . post Image ) ĊĠĠĠĠĠĠĠ Ġhash Map . put (" post Id ", Ġpost . post Id ) ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Reference Ġ= ĠFirebase Database . getInstance (). getReference ( Connection . archive Post ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. child ( Connection . user ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. push (). setValue ( hash Map ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add On Success Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( mContext , Ġ" Saved ", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Notification ( mes : ĠString , Ġrec ie ver : ĠString , imageUrl : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġapi Service Ġ= ĠClient . getClient ()?. create ( API Service :: class . java ) !! ĊĠĠĠĠĠĠĠ Ġval Ġdatabase Reference Ġ= ĠFirebase Database . getInstance (). getReference (" Tokens ") ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġdatabase Reference . orderBy Key (). equalTo ( rec ie ver ) ĊĠĠĠĠĠĠĠ Ġquery . add Value EventListener ( object Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( p 0 : ĠDatabase Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( p 0 : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( data Ġin Ġp 0 . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= Ġdata . getValue ( Token :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( token Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠData ( Connection . user , imageUrl , mes , ĠNotification Type . chat , rec ie ver ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsender Ġ= ĠSender ( data , Ġtoken . token ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapi Service . send Notification ( sender ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. enqueue ( object Ġ: Ġretrofit 2 . Callback < Response > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Response >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall : ĠCall < Response >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : Ġretrofit 2 . Response < Response > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . code () Ġ== Ġ 2 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . body ()?. su cess Ġ!= Ġ 1 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdelete Post ( post Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFirebase Methods . single Value Event ( Connection . post Ref Ġ+ ĠFile . separator Ġ+ Ġpost Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠRequest Callback () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Changed ( data Snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Snapshot . ref . remove Value () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ