package Ġdev . lun ar coffee . bl azel ight . site . routes . im Ċ Ċ import Ġdev . lun ar coffee . bl azel ight . model . api . im datal ist . get IM DataList Ċ import Ġdev . lun ar coffee . bl azel ight . model . api . users . getUser Ċ import Ġdev . lun ar coffee . bl azel ight . shared . language . s Ċ import Ġdev . lun ar coffee . bl azel ight . site . std . breadcrumbs . breadcrumbs Ċ import Ġdev . lun ar coffee . bl azel ight . site . std . sessions . User Session Ċ import Ġdev . lun ar coffee . bl azel ight . site . templates . Header Bar Template Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . html . respond Html Template Ċ import Ġio . ktor . http . HttpStatusCode Ċ import Ġio . ktor . response . respond Ċ import Ġio . ktor . routing . Route Ċ import Ġio . ktor . routing . get Ċ import Ġio . ktor . sessions . get Ċ import Ġio . ktor . sessions . sessions Ċ import Ġkotlinx . html .* Ċ Ċ fun ĠRoute . im Id () Ġ= Ġget ("/ im /{ data Id }") Ġ{ ĊĠĠĠ Ġval Ġuser Ġ= Ġcall . sessions . get < User Session >() !!. getUser () !! ĊĠĠĠ Ġval Ġdata Id Ġ= Ġcall . parameters [" data Id "] ?. to Long OrNull () ĊĠĠĠĠĠĠĠ Ġ?: Ġreturn @ get Ġcall . respond ( HttpStatusCode . NotFound ) ĊĠĠĠ Ġval Ġdata List Ġ= Ġuser . im DataList Id . get IM DataList () !! ĊĊĠĠĠ Ġ// ĠVerify Ġthe ĠIM Ġdata Ġis Ġthe Ġaccessor 's . ĊĠĠĠ Ġval Ġdata Ġ= Ġdata List . getBy Data Id ( data Id ) Ġ?: Ġreturn @ get Ġcall . respond ( HttpStatusCode . NotFound ) ĊĊĠĠĠ Ġval Ġrecipient Ġ= Ġdata . recipient Id . getUser () !! ĊĠĠĠ Ġcall . respond Html Template ( Header Bar Template ("${ s . im } Ġ- Ġ${ recipient . username }", Ġcall , Ġs )) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbreadcrumb s Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcr umb ("/ im ", Ġs . im Cap ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Cr umb ( call , Ġrecipient . username ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbr () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġh 3 ( classes Ġ= Ġ" title ") Ġ{ Ġb Ġ{ Ġ+ recipient . username Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhr () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdiv ( classes Ġ= Ġ" im - box ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġp ( classes Ġ= Ġ" im - loading ") Ġ{ Ġ+" Fetching Ġmessage Ġhistory ..." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġul ( classes Ġ= Ġ" im - list ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhr () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġform ( classes Ġ= Ġ" f - inline Ġim - input ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput ( type Ġ= ĠInput Type . text , Ġname Ġ= Ġ" username ", Ġclasses Ġ= Ġ" fi - text Ġfi - top Ġfi - im ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Complete Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauto Focus Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplaceholder Ġ= Ġs . type Something ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput ( type Ġ= ĠInput Type . submit , Ġclasses Ġ= Ġ" fi - hidden ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscript ( src Ġ= Ġ"/ js / im . js ") Ġ{} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ