package Ġd adm . fr ba . ut n . edu . ar . que h acer es Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . net . Uri Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Task Stack Builder Ċ import Ġd adm . fr ba . ut n . edu . ar . que h acer es . activities . Group Activity Ċ import Ġd adm . fr ba . ut n . edu . ar . que h acer es . activities . Login Activity Ċ import Ġd adm . fr ba . ut n . edu . ar . que h acer es . activities . MainActivity Ċ import Ġd adm . fr ba . ut n . edu . ar . que h acer es . activities . Notifications Activity Ċ import Ġd adm . fr ba . ut n . edu . ar . que h acer es . services . Services Ċ import Ġio . reactivex . Observable Ċ Ċ class ĠParse Deep Link Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġval Ġservices Ġby Ġlazy Ġ{ ĠServices ( this ) Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ parse _ deep _ link ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress Lint (" Check Result ") ĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġval Ġdee plink : ĠString ? Ġ= Ġ( intent . data Ġ?: Ġintent . extras ?. get (" dee plink ")). toString () ĊĊĠĠĠĠĠĠĠ Ġroute User ( this , Ġdee plink ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. subscribe Ġ{ Ġtask Builder Ġ-> Ġtask Builder . start Activities () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Intent ( context : ĠContext , Ġdee plink : ĠString ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠParse Deep Link Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . data Ġ= ĠUri . parse ( dee plink ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġroute User ( context : ĠContext , Ġdee plink : ĠString ?): ĠObservable < Task Stack Builder > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservices Ġ= ĠServices ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstack Builder Ġ= ĠTask Stack Builder . create ( context ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! services . is LoggedIn ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack Builder . add Next Intent ( Login Activity . new Intent ( context , Ġdee plink )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠObservable . just ( stack Builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstack Builder . add Next Intent ( MainActivity . new Intent ( context )) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dee plink Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠObservable . just ( stack Builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġuri ĠI Ġwant Ġto Ġparse Ġis Ġque h acer es :// dee plink / groups / 1 / notifications ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠI Ġwant Ġto Ġoutput Ġa Ġpath Ġlike ĠMainActivity Ġ-> ĠGroup Activity Ġ( With Ġa Ġgroup ) Ġ-> ĠNotifications ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotifications Regex Ġ= ĠRegex (" que h acer es :// dee plink / groups /( \\ d +)/ notifications ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dee plink . matches ( notifications Regex )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( groupId ) Ġ= Ġnotifications Regex . find ( dee plink ) !!. de structured ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġservices . my Groups () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġgroups Ġ-> Ġgroups . find Ġ{ Ġit . id Ġ== ĠgroupId . toInt () Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġgroup Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack Builder . add Next Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGroup Activity . new Intent ( context , Ġgroup )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack Builder . add Next Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotifications Activity . new Intent ( context , Ġgroup . id )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. onError Return Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Stack Builder Ġ= ĠTask Stack Builder . create ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Stack Builder . add Next Intent ( MainActivity . new Intent ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Stack Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadd Group Regex Ġ= ĠRegex (" que h acer es :// dee plink / groups /( \\ d +)/ add ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dee plink . matches ( addGroup Regex )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( groupId ) Ġ= Ġadd Group Regex . find ( dee plink ) !!. de structured ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġservices . addTo Group ( groupId . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġgroup Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack Builder . add Next Intent ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGroup Activity . new Intent ( context , Ġgroup )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstack Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. onError Return Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Stack Builder Ġ= ĠTask Stack Builder . create ( context ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Stack Builder . add Next Intent ( MainActivity . new Intent ( context )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Stack Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠObservable . just ( stack Builder ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ