package Ġcom . ch ic ag or ob oto . data Ċ Ċ import Ġcom . google . firebase . database .* Ċ import Ġcom . google . firebase . database . k tx . getValue Ċ import Ġkotlinx . coroutines . channels . await Close Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . channel Flow Ċ import Ġtim ber . log . Tim ber Ċ import Ġtim ber . log . error Ċ import Ġjava . util .* Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠFirebase Session Date Provider Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġdb Root : ĠDatabase Reference Ċ ) Ġ: ĠSession Date Provider Ġ{ ĊĊĠ Ġprivate Ġval Ġref : ĠDatabase Reference Ġ= Ġdb Root . child (" config "). child (" event _ dates ") ĊĊĠ Ġoverride Ġfun Ġsession Dates (): ĠFlow < List < String >> Ġ= Ġchannel Flow Ġ{ ĊĠĠĠ Ġval Ġlistener Ġ= Ġref . add Value EventListener ( object Ġ: ĠValue EventListener Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Data Change ( data : ĠData Snapshot ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġdates Ġ= Ġdata . getValue < List < String >>() Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠ Ġoffer ( dates ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Cancelled ( error : ĠDatabase Error ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . error ( error . to Exception ()) Ġ{ Ġ" Failed Ġto Ġget Ġevent Ġdates Ġfrom ĠFirebase ." Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) ĊĊĠĠĠ Ġawait Close Ġ{ Ġref . removeEventListener ( listener ) Ġ} ĊĠ Ġ} Ċ } Ċ