package Ġcom . tri stan w iley . chat se . stars Ċ Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . support . v 7 . widget . Toolbar Ċ import Ġandroid . view . MenuItem Ċ import Ġcom . squareup . okhttp . Request Ċ import Ġcom . tri stan w iley . chat se . R Ċ import Ġcom . tri stan w iley . chat se . chat . Chat Room Ċ import Ġcom . tri stan w iley . chat se . event . Chat Event Ċ import Ġcom . tri stan w iley . chat se . network . Client Ċ import Ġcom . tri stan w iley . chat se . network . Client Manager Ċ import Ġkotlinx . android . synt hetic . main . activity _ stars .* Ċ import Ġorg . jetbrains . ank o . do Async Ċ import Ġorg . js oup . J soup Ċ Ċ class ĠSt ars Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġevent List Ġ= Ġarray ListOf < Chat Event >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ stars ) ĊĠĠĠĠĠĠĠ Ġval Ġroom Ġ= Ġintent . get Parcelable Extra < Chat Room >(" room ") ĊĠĠĠĠĠĠĠ Ġval Ġroom Name Ġ= Ġintent . getString Extra (" room Name ") ĊĊĠĠĠĠĠĠĠ Ġ// Set Ġtoolbar Ġas ĠSupport ActionBar ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < Toolbar >( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġ// Color Ġthe Ġtoolbar Ġfor ĠStack Overflow Ġas Ġa Ġdefault ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. setBackground Drawable ( Color Drawable ( Context Compat . getColor ( application Context , ĠR . color . stackoverflow _ orange ))) ĊĠĠĠĠĠĠĠ Ġif Ġ( room . site Ġ== ĠClient . SITE _ STACK _ EX CHANGE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport ActionBar ?. setBackground Drawable ( Color Drawable ( Context Compat . getColor ( application Context , ĠR . color . stack exchange _ blue ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. title Ġ= Ġ" St ars Ġ- Ġ$ room Name " ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. set Display Home As Up Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġdo Async Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclient Ġ= ĠClient Manager . client ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Message Request Ġ= ĠRequest . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. url ( room . site Ġ+ Ġ"/ rooms / info /" Ġ+ Ġroom . num Ġ+ Ġ"/ android /? tab = stars ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġclient . new Call ( new Message Request ). execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠJ soup . parse ( response . body (). string ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessages Ġ= Ġdoc . getElementsBy Class (" mono logue ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmessages . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġevent Ġ= ĠChat Event () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠuserID Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . class Names (). toList ()[ 1 ]. remove Prefix (" user - "). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠuserID Ġ= Ġit . class Names (). toList ()[ 1 ]. remove Prefix (" user - "). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . userId Ġ= ĠuserID ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . getElementsBy Class (" username ")[ 0 ]. children (). isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . userName Ġ= Ġit . getElementsBy Class (" username ")[ 0 ]. text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . userName Ġ= Ġit . getElementsBy Class (" username ")[ 0 ]. child ( 0 ). text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . contents Ġ= Ġit . getElementsBy Class (" content ")[ 0 ]. html () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . message Star red Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtimes Ġ= Ġit . getElementsBy Class (" times ")[ 0 ]. text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( times . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . message St ars Ġ= Ġit . getElementsBy Class (" times ")[ 0 ]. text (). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . message St ars Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( J soup . parse ( event . contents ). getElementsBy Class (" one box "). isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . message One box Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . one box Type Ġ= Ġit . getElementsBy Class (" content ")[ 0 ]. child ( 0 ). class Names (). toList ()[ 1 ]. remove Prefix (" ob - ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . one box Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" image " Ġ-> Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . one box Content Ġ= Ġit . getElementsBy Class (" user - image ")[ 0 ]. attr (" src "). remove Prefix ("// ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġurl Ġ= Ġit . getElementsBy Class (" user - image ")[ 0 ]. attr (" src "). remove Prefix ("// ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! url . contains (" http ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġurl Ġ= Ġ" https :// $ url " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . one box Content Ġ= Ġurl ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" youtube " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . one box Content Ġ= Ġit . getElementsBy Class (" ob - youtube ")[ 0 ]. child ( 0 ). attr (" href ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . one box Extra Ġ= Ġit . getElementsBy Class (" ob - youtube - preview "). attr (" src ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . contents Ġ= Ġit . getElementsBy Class (" ob - youtube - title ")[ 0 ]. text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tweet " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcontents Ġ= Ġ"< p >" Ġ+ Ġit . getElementsBy Class (" ob - status - text ")[ 0 ]. html () Ġ+ Ġ"</ p >" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents Ġ+= Ġ"< p >" Ġ+ Ġit . getElementsBy Class (" ob - tweet - info ")[ 0 ]. html () Ġ+ Ġ"</ p >" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . one box Content Ġ= Ġcontents ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent . star Timestamp Ġ= Ġit . getElementsBy Class (" timestamp ")[ 0 ]. text () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevent List . add ( event ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Adapter Ġ= ĠSt ars Message Adapter ( application Context , Ġevent List , Ġroom ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstars RecyclerView . layout Manager Ġ= ĠLinearLayoutManager ( application Context , ĠLinearLayoutManager . VERTICAL , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstars RecyclerView . adapter Ġ= Ġmessage Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item ?. itemId Ġ== Ġandroid . R . id . home ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} Ċ }