package Ġcom . rog ert alk . ro ger . ui . screens Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Bundle Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . rog ert alk . ro ger . R Ċ import Ġcom . rog ert alk . ro ger . event . failure . Create Stream Fail Event Ċ import Ġcom . rog ert alk . ro ger . event . success . Create Stream Success Event Ċ import Ġcom . rog ert alk . ro ger . helper . Progress Dialog Helper Ċ import Ġcom . rog ert alk . ro ger . manager . Stream Manager Ċ import Ġcom . rog ert alk . ro ger . models . data . Profile From URI Ċ import Ġcom . rog ert alk . ro ger . network . request . Create Stream Request Ċ import Ġcom . rog ert alk . ro ger . network . request . Join Group Request V 1 Ċ import Ġcom . rog ert alk . ro ger . network . request . Join Group Request V 2 Ċ import Ġcom . rog ert alk . ro ger . repo . Contacts Repo Ċ import Ġcom . rog ert alk . ro ger . repo . Session Repo Ċ import Ġcom . rog ert alk . ro ger . repo . Stream Cache Repo Ċ import Ġcom . rog ert alk . ro ger . ui . dialog . Common Dialog Ċ import Ġcom . rog ert alk . ro ger . ui . screens . base . Event Activity Ċ import Ġcom . rog ert alk . ro ger . ui . screens . talk . Talk Activity Utils Ċ import Ġcom . rog ert alk . ro ger . utils . extensions . string Resource Ċ import Ġcom . rog ert alk . ro ger . utils . log .* Ċ import Ġorg . green robot . event bus . Subscribe Ċ import Ġorg . green robot . event bus . Thread Mode . MAIN Ċ import Ġorg . jetbrains . ank o . toast Ċ import Ġjava . util .* Ċ import Ġkotlin . Lazy Thread Safety Mode . NONE Ċ Ċ /** Ċ Ġ* ĠThis Ġscreen Ġhandles ĠURI Ġof Ġtype Ġ__ rog ert alk :// __ Ċ Ġ*/ Ċ class ĠURL Handler Activity Ġ: ĠEvent Activity () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠEX TRA _ HANDLE Ġ= Ġ" extra _ handle " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRe - use Ġthis Ġscreen Ġand Ġthe Ġlogic Ġinside Ġit Ġfor Ġadding Ġnew Ġusers Ġfrom Ġhandle Ġ( username ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġstart Conversation Internal ( context : ĠContext , Ġuser Handle : ĠString ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstart Intent Ġ= ĠIntent ( context , ĠURL Handler Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Intent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Intent . flags Ġ= ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TOP ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Intent . putExtra ( EXTRA _ HANDLE , Ġuser Handle ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġstart Intent ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġprogress Dialog Helper : ĠProgress Dialog Helper Ġby Ġlazy ( NONE ) Ġ{ ĠProgress Dialog Helper ( this ) Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠOVER RIDE ĠMETHO DS ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġlog MethodCall () ĊĊĠĠĠĠĠĠĠ Ġ// Ġis Ġthe Ġcurrent Ġuser Ġlogged Ġin ? ĊĠĠĠĠĠĠĠ Ġif Ġ(! Session Repo . logged In ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Landing Activity . start ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . url _ handler _ screen ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( intent . has Extra ( EXTRA _ HANDLE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle User From Handle ( intent . getString Extra ( EXTRA _ HANDLE ) Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġintent . data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle URI ( data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠPUBLIC ĠMETHO DS ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠPRIVATE ĠMETHO DS ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġprivate Ġfun Ġhandle URI ( data : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Debug Ġ{ Ġ" Data : Ġ$ data ." Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( data . authority ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" v 2 " Ġ-> Ġparse Uri V 2 ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" v 3 " Ġ-> Ġparse Uri V 3 ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog Error Ġ{ Ġ" Un re cogn ised ĠURI Ġversion " Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStill , Ġtry Ġto Ġuse Ġv 3 Ġsince Ġit 's Ġthe Ġlatest ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparse Uri V 3 ( data ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Uri V 2 ( data : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Info Ġ{ Ġ" Parsing Ġas ĠV 2 ĠURI Ġformat For Display " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinvite Token Ġ= Ġdata . getQuery Parameters (" invite _ token ") ĊĠĠĠĠĠĠĠ Ġif Ġ( is Param Valid ( invite Token )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Invite Token ( invite Token . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠuserId Ġ= Ġdata . getQuery Parameters (" id ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Param Valid ( userId )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Could Ġnot Ġhandle Ġuser Ġid .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhandle User Selected ( userId [ 0 ]. to Long ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġparse Uri V 3 ( data : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Info Ġ{ Ġ" Parsing Ġas ĠV 3 ĠURI Ġformat For Display " Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġinvite Token Ġ= Ġdata . getQuery Parameters (" invite _ token ") ĊĠĠĠĠĠĠĠ Ġif Ġ( is Param Valid ( invite Token )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Invite Token ( invite Token . first ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġprofile Raw Ġ= Ġdata . getQuery Parameters (" profile ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is Param Valid ( profile Raw )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoast (" Could Ġnot Ġobtain Ġraw Ġprofile ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle V 3 Profile ( data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle Invite Token ( invite Token : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Debug Ġ{ Ġ" Invite Token : Ġ$ invite Token " Ġ} ĊĠĠĠĠĠĠĠ ĠJoin Group Request V 2 ( invite Token ). enqueue Request () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle V 3 Profile ( data : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprofile Raw Ġ= Ġdata . getQuery Parameters (" profile ") ĊĠĠĠĠĠĠĠ Ġlog Debug Ġ{ Ġ" Profile : Ġ$ profile Raw " Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprofile Ġ= ĠGson (). fromJson ( profile Raw . first (), ĠProfile From URI :: class . java ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTry Ġto Ġjoin Ġan Ġopen Ġgroup ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( profile . chunk Token Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJoin Group Request V 1 ( profile . chunk Token , Ġprofile . id . toString ()). enqueue Request () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġuser Ġas Ġwell ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle User Selected ( profile . id ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġcatch ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Error Ġ{ Ġ" Error Ġconverting Ġprofile " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Param Valid ( param : ĠMutable List < String >? ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( param Ġ== Ġnull Ġ|| Ġparam . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle User From Handle ( handle : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġcreate Ġnew Ġstream Ġwith Ġthis Ġuser ĊĠĠĠĠĠĠĠ Ġprogress Dialog Helper . show Waiting () ĊĠĠĠĠĠĠĠ Ġval Ġcontact List Ġ= ĠArrayList < String >( 1 ) ĊĠĠĠĠĠĠĠ Ġcontact List . add ( handle ) ĊĠĠĠĠĠĠĠ ĠCreate Stream Request ( contact List , Ġnull , Ġ"", Ġnull , Ġtrue ). enqueue Request () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle User Selected ( userId : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpossible Stream Ġ= ĠContact s Repo . stream With User ( userId ) ĊĠĠĠĠĠĠĠ Ġif Ġ( possible Stream Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog Debug Ġ{ Ġ" Stream Ġwith Ġuser Ġalready Ġexists " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġalready Ġhave Ġthis Ġuser Ġin Ġstreams ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠPre - select Ġthis Ġstream ĊĠĠĠĠĠĠĠĠĠĠĠ ĠStream Manager . selected Stream Id Ġ= Ġpossible Stream . id ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Talk Activity Utils . getStart Talk Screen ( this )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġnew Ġstream Ġwith Ġthis Ġuser ĊĠĠĠĠĠĠĠ Ġlog Debug Ġ{ Ġ" This Ġis Ġa Ġnew Ġuser " Ġ} ĊĠĠĠĠĠĠĠ Ġprogress Dialog Helper . show Waiting () ĊĠĠĠĠĠĠĠ ĠCreate Stream Request ( null , ĠuserId , Ġ"", Ġnull , Ġtrue ). enqueue Request () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠEVENT ĠMETHO DS ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠMAIN ) ĊĠĠĠ Ġfun ĠonCreate Stream Fail ( event : ĠCreate Stream Fail Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠFailed Ġto Ġget Ġstream , Ġpresent Ġfailure Ġmessage ĊĠĠĠĠĠĠĠ Ġlog Event ( event ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog Helper . dismiss () ĊĠĠĠĠĠĠĠ ĠCommon Dialog . simple Message With Button ( this , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . error _ generic _ title . string Resource (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . check _ internet _ connection _ message . string Resource (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . R . string . ok . string Resource (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġfinish () Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWe Ġissued Ġcreate Ġa Ġnew Ġstream Ġwith Ġsuccess , Ġthat Ġmeans Ġwe Ġhave Ġeverything Ġand Ġour Ġjob Ġhere Ġis ĊĠĠĠĠ Ġ* Ġdone . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Subscribe ( thread Mode Ġ= ĠMAIN ) ĊĠĠĠ Ġfun ĠonCreate Stream Success ( event : ĠCreate Stream Success Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog Event ( event ) ĊĠĠĠĠĠĠĠ Ġprogress Dialog Helper . dismiss () ĊĊĠĠĠĠĠĠĠ Ġval Ġstream Ġ= Ġevent . stream ĊĊĠĠĠĠĠĠĠ Ġ// ĠAdd Ġto Ġstreams ĊĠĠĠĠĠĠĠ ĠStream Cache Repo . update Stream In Streams ( stream ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠPre - select Ġthis Ġstream ĊĠĠĠĠĠĠĠ ĠStream Manager . selected Stream Id Ġ= Ġstream . id ĊĠĠĠĠĠĠĠ ĠstartActivity ( Talk Activity Utils . getStart Talk Screen ( this )) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} Ċ Ċ }