package Ġme . a 0 1 eg . photos h aring Ċ Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . bump tech . glide . G lide Ċ import Ġcom . cho ota . dev . ctime ago . Time Ago Ċ import Ġcom . firebase . ui . firestore . Fire store Recycler Adapter Ċ import Ġcom . firebase . ui . firestore . Fire store Recycler Options Ċ import Ġcom . google . firebase . auth . Firebase Auth Ċ import Ġcom . google . firebase . database .* Ċ import Ġcom . google . firebase . storage . Firebase Storage Ċ import Ġkotlinx . android . synt hetic . main . story _ item . view .* Ċ import Ġme . a 0 1 eg . photos h aring . model . Story Ċ Ċ /** Ċ Ġ* ĠAdapter Ġto Ġrender Ġphoto Ġitems Ċ Ġ* Ċ Ġ* ĠCreated Ġon Ġ 2 2 / 1 1 / 2 0 1 7 . Ċ Ġ* ĠCopyright Ġby Ġ 0 1 eg . me Ċ Ġ*/ Ċ Ċ // : ĠView Ġ- Ġrender Ġdata Ġfrom Ġmodel Ġand Ġlisten Ġfor Ġuser Ġaction Ċ class ĠStory Holder ( item View : ĠView ) Ġ: ĠRecyclerView . ViewHolder ( item View ), ĠValue EventListener , ĠView . OnClickListener Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġlikes Ref : ĠDatabase Reference ? Ġ= Ġnull Ġ// Ġcollection ĊĠĠĠ Ġprivate Ġvar Ġlike Snapshot : ĠData Snapshot ? Ġ= Ġnull Ġ// Ġlatest Ġstate Ġof Ġlike ĊĊĠĠĠ Ġprivate Ġfun Ġlike Reference (): ĠDatabase Reference ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ= Ġlikes Ref ?. child ( Firebase Auth . getInstance (). uid !! ) ĊĊĠĠĠ Ġfun Ġbind ( model : ĠStory ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstory Id Ġ= Ġmodel ?. uid ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġmodel ?. image !! ĊĠĠĠĠĠĠĠ Ġval Ġref Ġ= ĠFirebase Storage . getInstance (). getReference ( path ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġshow Ġtime Ġstamp ĊĠĠĠĠĠĠĠ ĠitemView . timestamp ?. text Ġ= ĠTime Ago (). getTime Ago ( model . timestamp ) ĊĠĠĠĠĠĠĠ ĠitemView . like . setOnClickListener ( this ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġload Ġimage ĊĠĠĠĠĠĠĠ ĠG lide . with ( item View . context ). load ( ref ). into ( item View . image ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġlisten Ġto Ġlikes Ġchanges Ġin Ġreal - time ĊĠĠĠĠĠĠĠ Ġif Ġ( likes Ref Ġ== Ġnull Ġ|| Ġstory Id . equals ( likes Ref ?. ref ?. key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlikes Ref ?. removeEventListener ( this ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġlikes Ref Ġ= ĠFirebase Database . getInstance (). getReference (" likes /$ story Id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlikes Ref ?. add Value EventListener ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġrequest Ġlatest Ġlike Ġstate Ġfor Ġcurrent Ġuser ĊĠĠĠĠĠĠĠ Ġlike Snapshot ?. ref ?. removeEventListener ( this ) ĊĠĠĠĠĠĠĠ Ġlike Reference ()?. add Value EventListener ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠOn ClickListener ĊĊĠĠĠ Ġoverride Ġfun ĠonClick ( view : ĠView ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis Lik ed Ġ= Ġlike Snapshot ?. getValue ( Boolean :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Lik ed Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlike Reference ()?. remove Value () Ġ// Ġremove Ġvalue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlike Reference ()?. setValue ( true ) Ġ// Ġset Ġas ĠðŁĳį ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠValue EventListener ĊĊĠĠĠ Ġoverride Ġfun Ġon Data Change ( snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġcache Ġlatest Ġversion Ġof Ġlike Ġstatus ĊĠĠĠĠĠĠĠ Ġif Ġ( Firebase Auth . getInstance (). uid . equals ( snapshot . key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlike Snapshot Ġ= Ġsnapshot ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . like . isSelected Ġ= Ġlike Snapshot ?. getValue ( Boolean :: class . java ) Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġif Ġ( snapshot . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . item View . like . text Ġ= Ġsnapshot . children Count . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġthere Ġno Ġlikes Ġat Ġall , Ġjust Ġhide Ġthe Ġnumber ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . item View . like . text Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠitemView . like . isSelected Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cancelled ( snapshot : ĠDatabase Error ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . item View . like . text Ġ= Ġnull ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ // : ĠController Ġ- Ġconnect Ġview Ġwith Ġmodel Ċ class ĠStory Adapter ( options : ĠFire store Recycler Options < Story >) Ġ: ĠFire store Recycler Adapter < Story , ĠStory Holder >( options ) Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonCreate ViewHolder ( parent : ĠViewGroup , Ġview Type : ĠInt ): ĠStory Holder Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlayout Inflater Ġ= ĠLayoutInflater . from ( parent . context ) ĊĠĠĠĠĠĠĠ Ġreturn ĠStory Holder ( layout Inflater . inflate ( R . layout . story _ item , Ġparent , Ġfalse )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ViewHolder ( holder : ĠStory Holder , Ġposition : ĠInt , Ġmodel : ĠStory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġholder . bind ( model ) ĊĠĠĠ Ġ} Ċ } ĊĊ