package Ġcom . ps im ao . rtc playground . domain . rtc Ċ Ċ import Ġandroid . location . Location Ċ import Ġcom . ps im ao . rtc playground . data . datasource . Rtc Connection DataSource Ċ import Ġcom . ps im ao . rtc playground . data . model . Data Channel Message Ċ import Ġcom . ps im ao . rtc playground . domain . UseCase Ċ import Ġkotlinx . coroutines . experimental . Deferred Ċ import Ġkotlinx . coroutines . experimental . android . UI Ċ import Ġkotlinx . coroutines . experimental . async Ċ import Ġkotlinx . coroutines . experimental . launch Ċ Ċ class ĠEmit Location On Data Channel UseCase ( private Ġval Ġr tc Connection DataSource : ĠR tc Connection DataSource ): ĠUse Case < Location , ĠUnit >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġexecute ( params : ĠLocation ?): ĠDeferred < Unit ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġr tc Connection DataSource . emit On Data Channel ( Data Channel Message . create Location Message ( it . latitude , Ġit . longitude )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġobserve ( params : ĠLocation ?, Ġnext : Ġ(( Unit ) Ġ-> ĠUnit )? ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlaunch ( UI ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute ( params ). await ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnext ?. invoke ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }