package Ġcom . v on age . v app Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . nex mo . client . N ex mo Attachment Event Ċ import Ġcom . nex mo . client . N ex mo Client Ċ import Ġcom . nex mo . client . N ex mo Conversation Ċ import Ġcom . nex mo . client . N ex mo Deleted Event Ċ import Ġcom . nex mo . client . N ex mo Deliver ed Event Ċ import Ġcom . nex mo . client . N ex mo Event Ċ import Ġcom . nex mo . client . N ex mo Events Page Ċ import Ġcom . nex mo . client . N ex mo Member Event Ċ import Ġcom . nex mo . client . N ex mo Member State Ċ import Ġcom . nex mo . client . N ex mo Message EventListener Ċ import Ġcom . nex mo . client . N ex mo Page Order Ċ import Ġcom . nex mo . client . N ex mo Seen Event Ċ import Ġcom . nex mo . client . N ex mo Text Event Ċ import Ġcom . nex mo . client . N ex mo Typing Event Ċ import Ġcom . nex mo . client . request _ listener . N ex mo ApiError Ċ import Ġcom . nex mo . client . request _ listener . N ex mo RequestListener Ċ import Ġkotlinx . android . synt hetic . main . activity _ chat .* Ċ Ċ class ĠChat Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġclient : ĠN ex mo Client Ġ= ĠN ex mo Client . get () ĊĊĠĠĠ Ġprivate Ġvar Ġconversation : ĠN ex mo Conversation ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġmessage Listener Ġ= Ġobject Ġ: ĠN ex mo Message EventListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Typing Event ( typing Event : ĠN ex mo Typing Event ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Attachment Event ( attachment Event : ĠN ex mo Attachment Event ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Text Event ( text Event : ĠN ex mo Text Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Ġ= Ġget Conversation Line ( text Event ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Conversation Line ( line ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Seen Receipt ( seen Event : ĠN ex mo Seen Event ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Event Deleted ( deleted Event : ĠN ex mo Deleted Event ) Ġ{} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Deliver ed Receipt ( deliver ed Event : ĠN ex mo Deliver ed Event ) Ġ{} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ chat ) ĊĊĠĠĠĠĠĠĠ Ġget Conversation () ĊĊĠĠĠĠĠĠĠ ĠsendMessage Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġmessage EditText . text . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( message . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconversation ?. send Text ( message , Ġobject Ġ: ĠN ex mo RequestListener < Void > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( p 0 : ĠVoid ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( api Error : ĠN ex mo ApiError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessage EditText . setText ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Conversation () Ġ{ ĊĠĠĠĠĠĠĠ Ġclient . get Conversation ( Config . CONVER S ATION _ ID , Ġobject Ġ: ĠN ex mo RequestListener < N ex mo Conversation > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( conversation : ĠN ex mo Conversation ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Chat Activity . conversation Ġ= Ġconversation ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconversation ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Conversation Events ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . addMessage EventListener ( message Listener ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( api Error : ĠN ex mo ApiError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Chat Activity . conversation Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Conversation Events ( conversation : ĠN ex mo Conversation ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconversation . get Events ( 1 0 0 , ĠN ex mo Page Order . N ex mo MP age Order Asc , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠN ex mo RequestListener < N ex mo Events Page > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( nex mo Events Page : ĠN ex mo Events Page ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevents Ġ= Ġn ex mo Events Page ?. page Response ?. data ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Conversation Events ( events ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( api Error : ĠN ex mo ApiError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Conversation Events ( events : ĠMutable Collection < N ex mo Event > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġevents ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġline Ġ= Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠN ex mo Member Event Ġ-> Ġget Conversation Line ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠN ex mo Text Event Ġ-> Ġget Conversation Line ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Conversation Line ( line ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Conversation Line ( text Event : ĠN ex mo Text Event ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġtext Event . from Member . user . name ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ user Ġsaid : Ġ${ text Event . text }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Conversation Line ( member Event : ĠN ex mo Member Event ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= Ġmember Event . member . user . name ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( member Event . state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN ex mo Member State . JOIN ED Ġ-> Ġ"$ user Ġjoined " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN ex mo Member State . INV IT ED Ġ-> Ġ"$ user Ġinv ited " ĊĠĠĠĠĠĠĠĠĠĠĠ ĠN ex mo Member State . LEFT Ġ-> Ġ"$ user Ġleft " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ" Error : ĠUnknown Ġmember Ġevent Ġstate " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Conversation Line ( line : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġline ?. let Ġ{ Ġconversation Events TextView . append ( it Ġ+ ĠSystem . line Separator ()) Ġ} ĊĠĠĠ Ġ} Ċ }