package Ġcom . pr 0 gram m . app . services Ċ Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . core . app . Remote Input Ċ import Ġcom . pr 0 gram m . app . Instant Ċ import Ġcom . pr 0 gram m . app . Logger Ċ import Ġcom . pr 0 gram m . app . api . pr 0 gram m . Message Ċ import Ġcom . pr 0 gram m . app . util . catch All Ċ import Ġcom . pr 0 gram m . app . util . di . Lazy Injector Aware Ċ import Ġcom . pr 0 gram m . app . util . di . Property Injector Ċ import Ġcom . pr 0 gram m . app . util . di . instance Ċ import Ġcom . pr 0 gram m . app . util . do In Background Ċ Ċ /** Ċ Ġ* ĠReply Ġdirectly Ġto Ġa Ġuser Ċ Ġ*/ Ċ class ĠMessage Reply Receiver Ġ: ĠBroadcast Receiver (), ĠLazy Injector Aware Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogger (" Message Reply Receiver ") ĊĊĠĠĠ Ġoverride Ġval Ġinjector : ĠProperty Injector Ġ= ĠProperty Injector () ĊĊĠĠĠ Ġprivate Ġval Ġin box Service : ĠIn box Service Ġby Ġinstance () ĊĠĠĠ Ġprivate Ġval Ġvote Service : ĠV ote Service Ġby Ġinstance () ĊĠĠĠ Ġprivate Ġval Ġnotification Service : ĠNotification Service Ġby Ġinstance () ĊĊĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinjector . inject ( context ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġnormal Ġreceiver Ġinfo ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Id Ġ= Ġintent . getInt Extra (" receiver Id ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġreceiver Name Ġ= Ġintent . getString Extra (" receiver Name ") ĊĊĠĠĠĠĠĠĠ Ġ// Ġreceiver Ġinfos Ġfor Ġcomments ĊĠĠĠĠĠĠĠ Ġval ĠitemId Ġ= Ġintent . getLong Extra (" itemId ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġcomment Id Ġ= Ġintent . getLong Extra (" comment Id ", Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= ĠgetMessage Text ( intent ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġvalidate Ġparameters ĊĠĠĠĠĠĠĠ Ġif Ġ( text . isEmpty () Ġ|| Ġreceiver Name . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . error Ġ{ Ġ" No Ġreceiver Ġid Ġor Ġmessage ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġtimestamp Ġthe Ġoriginal Ġmessage Ġwas Ġsent ĊĠĠĠĠĠĠĠ Ġval Ġmessage Created Ġ= ĠInstant ( intent . getLong Extra (" message Created ", Ġ- 1 )) ĊĊĠĠĠĠĠĠĠ Ġ// Ġdecide Ġif Ġwe Ġare Ġsending Ġa Ġmessage Ġor Ġa Ġcomment ĊĠĠĠĠĠĠĠ Ġval Ġis Message Ġ= ĠitemId Ġ== Ġ 0 L Ġ|| Ġcomment Id Ġ== Ġ 0 L ĊĊĠĠĠĠĠĠĠ Ġ// Ġnotification Ġid Ġto Ġre - use Ġfor Ġconfirmation ĊĠĠĠĠĠĠĠ Ġval Ġnotification Id Ġ= Ġintent . getInt Extra (" notification Id ", Ġ 0 ) ĊĊĠĠĠĠĠĠĠ Ġdo In Background Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcatch All Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Response To Message ( receiver Id , Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Response As Comment ( itemId , Ġcomment Id , Ġtext ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Service . show Send Successful Notification ( receiver Name , Ġis Message , Ġnotification Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin box Service . mark As Read ( receiver Name , Ġmessage Created ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin box Service . mark As Read (" item :$ itemId ", Ġmessage Created ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġsend Response As Comment ( itemId : ĠLong , Ġcomment Id : ĠLong , Ġtext : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvote Service . post Comment ( itemId , Ġcomment Id , Ġtext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġsend Response To Message ( receiver Id : ĠInt , Ġtext : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġin box Service . send ( receiver Id . to Long (), Ġtext ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetMessage Text ( intent : ĠIntent ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRemote Input . get Results From Intent ( intent )?. get CharSequence (" msg ") ?. toString () Ġ?: Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġmake Intent ( context : ĠContext , Ġnotification Id : ĠInt , Ġmessage : ĠMessage ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠMessage Reply Receiver :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse (" reply ://${ message . type }/${ message . id }/${ notification Id }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" notification Id ", Ġnotification Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message . is Comment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" itemId ", Ġmessage . itemId ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" comment Id ", Ġmessage . comment Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" receiver Id ", Ġmessage . sender Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" receiver Name ", Ġmessage . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra (" message Created ", Ġmessage . creation Time . millis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ