package Ġcom . che ise _ proj . data . repository Ċ Ċ import Ġcom . che ise _ proj . data . model . Message Data Ċ import Ġcom . che ise _ proj . data . model . Message Data . Companion . message Mapper Ċ import Ġcom . che ise _ proj . data . source . local . Message Local Source Ċ import Ġcom . che ise _ proj . data . source . remote . Message Remote Source Ċ import Ġcom . che ise _ proj . domain . entities . message . Message Entity Ċ import Ġcom . che ise _ proj . domain . repository . Message Repository Ċ import Ġio . reactivex . Observable Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠMessage Repository Impl Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġmessage Remote Source : ĠMessage Remote Source , ĊĠĠĠ Ġprivate Ġval Ġmessage Local Source : ĠMessage Local Source Ċ ) Ġ: ĠMessage Repository Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġget Messages (): ĠObservable < List < Message Entity >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocal Ġ= Ġmessage Local Source . get Messages () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġt : ĠList < Message Data > Ġ-> Ġmessage Mapper (). data List To Entity ( t ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmessage Remote Source . fetch Messages (). map Ġ{ Ġt : ĠList < Message Data > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Local Source . save Messages ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġmessage Mapper (). data List To Entity ( t ) ĊĠĠĠĠĠĠĠ Ġ}. merge With ( local ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Sent Messages (): ĠObservable < List < Message Entity >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocal Ġ= Ġmessage Local Source . get Sent Messages () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġt : ĠList < Message Data > Ġ-> Ġmessage Mapper (). data List To Entity ( t ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmessage Remote Source . fetch Sent Messages (). map Ġ{ Ġt : ĠList < Message Data > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Local Source . save Sent Messages ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġmessage Mapper (). data List To Entity ( t ) ĊĠĠĠĠĠĠĠ Ġ}. merge With ( local ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Sent Messages ( receiver Email : ĠString ): ĠObservable < List < Message Entity >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocal Ġ= Ġmessage Local Source . get Sent Messages ( receiver Email ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġt : ĠList < Message Data > Ġ-> Ġmessage Mapper (). data List To Entity ( t ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmessage Remote Source . fetch Sent Messages (). map Ġ{ Ġt : ĠList < Message Data > Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Local Source . save Sent Messages ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ map Ġmessage Mapper (). data List To Entity ( t ) ĊĠĠĠĠĠĠĠ Ġ}. merge With ( local ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Message ( ĊĠĠĠĠĠĠĠ Ġpost Id : ĠString , ĊĠĠĠĠĠĠĠ Ġcontent : ĠString , ĊĠĠĠĠĠĠĠ Ġreceiver Email : ĠString ĊĠĠĠ Ġ): ĠObservable < Boolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmessage Remote Source . create Message ( post Id , Ġcontent , Ġreceiver Email ) ĊĠĠĠ Ġ} Ċ }