package Ġapp . d apk . st . matrix . sync . internal . sync Ċ Ċ import Ġapp . d apk . st . core . extensions . Error Tracker Ċ import Ġapp . d apk . st . core . extensions . if OrNull Ċ import Ġapp . d apk . st . core . extensions . null And Track Ċ import Ġapp . d apk . st . matrix . common . EventId Ċ import Ġapp . d apk . st . matrix . common . Matrix Logger Ċ import Ġapp . d apk . st . matrix . common . Room Id Ċ import Ġapp . d apk . st . matrix . common . matrix Log Ċ import Ġapp . d apk . st . matrix . sync . Message Meta Ċ import Ġapp . d apk . st . matrix . sync . Room Event Ċ import Ġapp . d apk . st . matrix . sync . Room Members Service Ċ import Ġapp . d apk . st . matrix . sync . find Ċ import Ġapp . d apk . st . matrix . sync . internal . request . Api Encrypted Content Ċ import Ġapp . d apk . st . matrix . sync . internal . request . Api Timeline Event Ċ Ċ private Ġtype alias ĠLookup Ġ= Ġsuspend Ġ( EventId ) Ġ-> ĠLookup Result Ċ Ċ internal Ġclass ĠRoom Event Creator ( ĊĠĠĠ Ġprivate Ġval Ġroom Members Service : ĠRoom Members Service , ĊĠĠĠ Ġprivate Ġval Ġlogger : ĠMatrix Logger , ĊĠĠĠ Ġprivate Ġval Ġerror Tracker : ĠError Tracker , Ċ ) Ġ{ ĊĊĠĠĠ Ġsuspend Ġfun ĠApi Timeline Event . Encrypted . to Room Event ( roomId : ĠRoom Id ): ĠRoom Event ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( this . encrypted Content ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApi Encrypted Content . Me g O lm V 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoom Event . Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent Id Ġ= Ġthis . eventId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauthor Ġ= Ġroom Members Service . find ( roomId , Ġthis . sender Id ) !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġut c Timestamp Ġ= Ġthis . utc Timestamp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Ġ= ĠMessage Meta . From Server , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġ" Encrypted Ġmessage ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġencrypted Content Ġ= ĠRoom Event . Message . Me g O lm V 1 ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . encrypted Content . cipher Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . encrypted Content . deviceId , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . encrypted Content . sender Key , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . encrypted Content . sessionId ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠApi Encrypted Content . O lm V 1 Ġ-> Ġerror Tracker . null And Track ( IllegalStateException (" unexpected Ġencryption , Ġgot ĠO lm V 1 Ġfor Ġa Ġroom Ġevent ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApi Encrypted Content . Unknown Ġ-> Ġerror Tracker . null And Track ( IllegalStateException (" unknown Ġroom Ġevent Ġencryption ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun ĠApi Timeline Event . Timeline Text . to Room Event ( roomId : ĠRoom Id , Ġlookup : ĠLookup ): ĠRoom Event ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Edit () Ġ-> Ġhandle Edit ( roomId , Ġthis . content . relation !!. eventId !! , Ġlookup ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Reply () Ġ-> Ġhandle Reply ( roomId , Ġlookup ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthis . to Message ( roomId ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun ĠApi Timeline Event . Timeline Text . handle Edit ( roomId : ĠRoom Id , Ġedited EventId : ĠEvent Id , Ġlookup : ĠLookup ): ĠRoom Event ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlookup ( edited EventId ). fold ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Api Timeline Event Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif OrNull ( this . utc Timestamp Ġ> Ġit . utc Timestamp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . to Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroom Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġut c Timestamp Ġ= Ġthis . utc Timestamp , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Ġ= Ġthis . content . body ?. remove Prefix (" Ġ* Ġ") ?. trim () Ġ?: Ġ" red acted ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġedited Ġ= Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Room Event Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif OrNull ( this . utc Timestamp Ġ> Ġit . utc Timestamp ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRoom Event . Message Ġ-> Ġit . edited ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRoom Event . Reply Ġ-> Ġit . copy ( message Ġ= Ġit . message . edited ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Empty Ġ= Ġ{ Ġthis . to Message ( roomId , Ġedited Ġ= Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠRoom Event . Message . edited ( edit : ĠApi Timeline Event . Timeline Text ) Ġ= Ġthis . copy ( ĊĠĠĠĠĠĠĠ Ġcontent Ġ= Ġedit . content . body ?. remove Prefix (" Ġ* Ġ") ?. trim () Ġ?: Ġ" red acted ", ĊĠĠĠĠĠĠĠ Ġut c Timestamp Ġ= Ġedit . utc Timestamp , ĊĠĠĠĠĠĠĠ Ġedited Ġ= Ġtrue , ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun ĠApi Timeline Event . Timeline Text . handle Reply ( roomId : ĠRoom Id , Ġlookup : ĠLookup ): ĠRoom Event Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġreply To Ġ= Ġthis . content . relation !!. in Reply To !! ĊĊĠĠĠĠĠĠĠ Ġval Ġrelation Event Ġ= Ġlookup ( reply To . eventId ). fold ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Api Timeline Event Ġ= Ġ{ Ġit . to Message ( roomId ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Room Event Ġ= Ġ{ Ġit Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Empty Ġ= Ġ{ Ġnull Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġlogger . matrix Log (" found Ġrelation : Ġ$ relation Event ") ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( relation Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġthis . to Message ( roomId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRoom Event . Reply ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġthis . to Message ( roomId , Ġcontent Ġ= Ġthis . content . formatted Body ?. strip Tags () Ġ?: Ġ" red acted "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreply ing To Ġ= Ġwhen Ġ( relation Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRoom Event . Message Ġ-> Ġrelation Event ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRoom Event . Reply Ġ-> Ġrelation Event . message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun ĠApi Timeline Event . Timeline Text . to Message ( ĊĠĠĠĠĠĠĠ Ġroom Id : ĠRoom Id , ĊĠĠĠĠĠĠĠ Ġcontent : ĠString Ġ= Ġthis . content . body Ġ?: Ġ" red acted ", ĊĠĠĠĠĠĠĠ Ġedited : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġut c Timestamp : ĠLong Ġ= Ġthis . utc Timestamp , ĊĠĠĠ Ġ) Ġ= ĠRoom Event . Message ( ĊĠĠĠĠĠĠĠ Ġevent Id Ġ= Ġthis . id , ĊĠĠĠĠĠĠĠ Ġcontent Ġ= Ġcontent , ĊĠĠĠĠĠĠĠ Ġauthor Ġ= Ġroom Members Service . find ( roomId , Ġthis . sender Id ) !! , ĊĠĠĠĠĠĠĠ Ġut c Timestamp Ġ= Ġut c Timestamp , ĊĠĠĠĠĠĠĠ Ġmeta Ġ= ĠMessage Meta . From Server , ĊĠĠĠĠĠĠĠ Ġedited Ġ= Ġedited , ĊĠĠĠ Ġ) Ċ Ċ } Ċ Ċ private Ġfun ĠString . strip Tags () Ġ= Ġthis . substring ( this . indexOf ("</ mx - reply >") Ġ+ Ġ"</ mx - reply >". length ) ĊĠĠĠ Ġ. trim () ĊĠĠĠ Ġ. replace ("< em >", Ġ"") ĊĠĠĠ Ġ. replace ("</ em >", Ġ"") Ċ Ċ private Ġfun ĠApi Timeline Event . Timeline Text . is Edit () Ġ= Ġthis . content . relation ?. relation Type Ġ== Ġ" m . replace " Ġ&& Ġthis . content . relation . eventId Ġ!= Ġnull Ċ private Ġfun ĠApi Timeline Event . Timeline Text . is Reply () Ġ= Ġthis . content . relation ?. in Reply To Ġ!= Ġnull