package Ġorg . oss ia ust ria . lib . domain . services Ċ Ċ import Ġkotlinx . coroutines . flow . first Ċ import Ġkotlinx . coroutines . flow . map NotNull Ċ import Ġorg . oss ia ust ria . lib . domain . models . Send able Ċ import Ġorg . oss ia ust ria . lib . domain . repositories . finished Ċ import Ġjava . util .* Ċ Ċ interface ĠTimeline Service Ġ{ ĊĠĠĠ Ġsuspend Ġfun Ġfind With Receiver ( receiver Id : ĠUUID ): ĠList < Send able > Ċ } Ċ Ċ class ĠTimeline ServiceImpl ( ĊĠĠĠ Ġprivate Ġval Ġcall Service : ĠCall Service , ĊĠĠĠ Ġprivate Ġval Ġmessage Service : ĠMessage Service , Ċ ) Ġ: ĠTimeline Service Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġfind With Receiver ( receiver Id : ĠUUID ): ĠList < Send able > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmessages Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Service . getAll () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. finished () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit . value OrNull () Ġ}. first (). filter Ġ{ Ġit . receiver Id Ġ== Ġreceiver Id Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcalls Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall Service . getAll () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. finished () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit . value OrNull () Ġ}. first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . is Done () Ġ&& Ġ( it . receiver Id Ġ== Ġreceiver Id Ġ|| Ġit . sender Id Ġ== Ġreceiver Id ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( messages , Ġcalls ). flatten () ĊĠĠĠ Ġ} Ċ Ċ }