package Ġcom . k ou . seek make . data . firebase Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġcom . google . android . gms . tasks . Task Ċ import Ġcom . google . firebase . database . Data Snapshot Ċ import Ġcom . google . firebase . database . Database Error Ċ import Ġcom . google . firebase . database . Value EventListener Ċ import Ġcom . k ou . seek make . common . task Ċ import Ġcom . k ou . seek make . common . to Unit Ċ import Ġcom . k ou . seek make . data . common . map Ċ import Ġcom . k ou . seek make . data . firebase . common . Firebase LiveData Ċ import Ġcom . k ou . seek make . data . firebase . common . database Ċ import Ġcom . k ou . seek make . models . Firebase . Story Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . TimeUnit ĊĊ Ċ class ĠFirebase Story Repository Ġ: ĠStory Repository Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate Story ( uid : ĠString , Ġstory : ĠStory ): ĠTask < Unit > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase . child (" story - user "). child ( uid ). push (). setValue ( story ). to Unit () ĊĊĠĠĠ Ġoverride Ġfun Ġget St ories ( uid : ĠString ): ĠLive Data < List < Story >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase LiveData ( database . child (" story - user "). child ( uid )). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . children . map Ġ{ Ġit . as Story () !! Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget St ories Link ( uid : ĠString ): ĠLive Data < List < String >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠFirebase LiveData ( database . child (" stories "). child ( uid )). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . children . map Ġ{ Ġit . getValue ( String :: class . java ) !! Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdelete Story ( uid : ĠString ): ĠTask < Unit > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġref Story User Ġ= Ġdatabase . child (" story - user "). child ( uid ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcutoff : ĠLong Ġ= ĠDate (). time Ġ- ĠTimeUnit . MILLISECONDS . convert ( 1 , ĠTimeUnit . DAYS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġref Story User . orderBy Child (" timestamp "). end At ( cutoff . toDouble ()). addListener For Single Value Event ( object Ġ: ĠValue EventListener Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( snapshot : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġsnapshot . children ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġitem . ref . remove Value () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( database Error : ĠDatabase Error ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġdatabase Error . to Exception () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠData Snapshot . as Story (): ĠStory ? Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠgetValue ( Story :: class . java )?. copy ( id Ġ= Ġkey !! ) Ċ } ĊĊĊĊ