package Ġpl . jak ub ok ras a . b iker out es . features . ui _ features . my routes . presentation Ċ Ċ import Ġandroid . net . Uri Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . had il q . live event . Live Event Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . Experimental Cor outines Api Ċ import Ġorg . os md roid . util . Geo Point Ċ import Ġorg . os md roid . views . overlay . Polyline Ċ import Ġpl . jak ub ok ras a . b iker out es . core . base . presentation . Base ViewModel Ċ import Ġpl . jak ub ok ras a . b iker out es . core . util . enums . Sharing Type Ċ import Ġpl . jak ub ok ras a . b iker out es . features . filter . domain . Get Geo coding Item UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . filter . domain . model . Filter Data Ċ import Ġpl . jak ub ok ras a . b iker out es . features . filter . presentation . model . Geo coding Item Display able Ċ import Ġpl . jak ub ok ras a . b iker out es . features . photos . domain . Add Photo Data Ċ import Ġpl . jak ub ok ras a . b iker out es . features . photos . domain . Add Photo UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . photos . domain . Get Photos UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . photos . domain . Remove Photo UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . photos . presentation . model . Photo Info Display able Ċ import Ġpl . jak ub ok ras a . b iker out es . features . points . domain . Get Points From Remote UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . points . presentation . model . Point Display able Ċ import Ġpl . jak ub ok ras a . b iker out es . features . reviews . domain . Add Review UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . reviews . domain . Get Reviews UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . reviews . domain . Remove Review UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . reviews . domain . Update Review UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . reviews . presentation . model . Review Display able Ċ import Ġpl . jak ub ok ras a . b iker out es . features . routes . domain . Remove Route UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . routes . domain . Update Route UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . routes . presentation . model . Route Display able Ċ import Ġpl . jak ub ok ras a . b iker out es . features . segments . domain . Add Segment UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . segments . domain . Get Segments UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . segments . domain . Remove Segment UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . segments . presentation . Get Segment Begin Data Ċ import Ġpl . jak ub ok ras a . b iker out es . features . segments . presentation . Get Segment Point Helper Ċ import Ġpl . jak ub ok ras a . b iker out es . features . segments . presentation . model . Segment Display able Ċ import Ġpl . jak ub ok ras a . b iker out es . features . ui _ features . my routes . domain . Get My Routes UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . ui _ features . my routes . domain . Get My Routes With Filter UseCase Ċ import Ġpl . jak ub ok ras a . b iker out es . features . ui _ features . my routes . navigation . My Routes Navigator Ċ import Ġpl . jak ub ok ras a . b iker out es . features . ui _ features . route details . presentation . Export Route Data Ċ import Ġpl . jak ub ok ras a . b iker out es . features . ui _ features . route details . presentation . Export Route Helper Ċ Ċ class ĠMy Routes ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġget My Routes UseCase : ĠGet My Routes UseCase , ĊĠĠĠ Ġprivate Ġval Ġget My Routes With Filter UseCase : ĠGet My Routes With Filter UseCase , ĊĠĠĠ Ġprivate Ġval Ġget Points From Remote UseCase : ĠGet Points From Remote UseCase , ĊĠĠĠ Ġprivate Ġval Ġremove Route UseCase : ĠRemove Route UseCase , ĊĠĠĠ Ġprivate Ġval Ġupdate Route UseCase : ĠUpdate Route UseCase , ĊĠĠĠ Ġprivate Ġval Ġget Geo coding Item UseCase : ĠGet Geo coding Item UseCase , ĊĠĠĠ Ġprivate Ġval Ġadd Segment UseCase : ĠAdd Segment UseCase , ĊĠĠĠ Ġprivate Ġval Ġremove Segment UseCase : ĠRemove Segment UseCase , ĊĠĠĠ Ġprivate Ġval Ġget Segments UseCase : ĠGet Segments UseCase , ĊĠĠĠ Ġprivate Ġval Ġadd Photo UseCase : ĠAdd Photo UseCase , ĊĠĠĠ Ġprivate Ġval Ġget Photos UseCase : ĠGet Photos UseCase , ĊĠĠĠ Ġprivate Ġval Ġremove Photo UseCase : ĠRemove Photo UseCase , ĊĠĠĠ Ġprivate Ġval Ġget Reviews UseCase : ĠGet Reviews UseCase , ĊĠĠĠ Ġprivate Ġval Ġadd Review UseCase : ĠAdd Review UseCase , ĊĠĠĠ Ġprivate Ġval Ġupdate Review UseCase : ĠUpdate Review UseCase , ĊĠĠĠ Ġprivate Ġval Ġremove Review UseCase : ĠRemove Review UseCase , ĊĊĠĠĠ Ġprivate Ġval Ġexport Route Helper : ĠExport Route Helper , ĊĠĠĠ Ġprivate Ġval Ġget Segment Point Helper : ĠGet Segment Point Helper , ĊĊĠĠĠ Ġprivate Ġval Ġmy Routes Navigator : ĠMy Routes Navigator , Ċ ): ĠBase ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ my Routes Ġby Ġlazy Ġ{ ĠMutable LiveData < List < Route Display able >>() Ġ} ĊĠĠĠ Ġprivate Ġval Ġ_ is Filter Ġby Ġlazy Ġ{ ĠMutable LiveData < Boolean >() Ġ} ĊĠĠĠ Ġprivate Ġval Ġ_ geo coding Item Ġby Ġlazy Ġ{ ĠLive Event < Geo coding Item Display able >() Ġ} Ċ ĉ private Ġval Ġ_ photos Ġby Ġlazy Ġ{ ĠMutable LiveData < List < Photo Info Display able >>() Ġ} ĊĠĠĠ Ġprivate Ġval Ġ_ photo Remove Pos Ġby Ġlazy Ġ{ ĠLive Event < Int >() Ġ} Ċ ĉ private Ġval Ġ_ segment Point Index Ġby Ġlazy Ġ{ ĠLive Event < Int >() Ġ} ĊĠĠĠ Ġprivate Ġval Ġ_ is Segment Added Ġby Ġlazy Ġ{ ĠLive Event < Boolean >() Ġ} ĊĠĠĠ Ġprivate Ġval Ġ_ segments Ġby Ġlazy Ġ{ ĠLive Event < List < Segment Display able >>() Ġ} ĊĠĠĠ Ġprivate Ġval Ġ_ exported Route Uri Ġby Ġlazy Ġ{ ĠLive Event < Uri >() Ġ} ĊĠĠĠ Ġprivate Ġval Ġ_ reviews Ġby Ġlazy Ġ{ ĠMutable LiveData < List < Review Display able >>() Ġ} ĊĠĠĠ Ġoverride Ġval ĠLOG _ TAG : ĠString Ġ= ĠMy Routes ViewModel :: class . simple Name ?: Ġ" unknown " ĊĊĠĠĠ Ġval Ġmy Routes : ĠLive Data < List < Route Display able >> Ġby Ġlazy Ġ{ Ġ_ my Routes Ġ} ĊĠĠĠ Ġval Ġphotos : ĠLive Data < List < Photo Info Display able >> Ġby Ġlazy Ġ{ Ġ_ photos Ġ} ĊĠĠĠ Ġval Ġphoto Remove Pos : ĠLive Data < Int > Ġby Ġlazy Ġ{ Ġ_ photo Remove Pos Ġ} ĊĠĠĠ Ġval Ġis Filter : ĠLive Data < Boolean > Ġby Ġlazy Ġ{ Ġ_ is Filter Ġ} ĊĠĠĠ Ġval Ġgeo coding Item : ĠLive Data < Geo coding Item Display able > Ġby Ġlazy Ġ{ Ġ_ geo coding Item Ġ} ĊĠĠĠ Ġval Ġsegment Point Index : ĠLive Data < Int > Ġby Ġlazy Ġ{ Ġ_ segment Point Index Ġ} ĊĠĠĠ Ġval Ġis Segment Added : ĠLive Data < Boolean > Ġby Ġlazy Ġ{ Ġ_ is Segment Added Ġ} ĊĠĠĠ Ġval Ġsegments : ĠLive Data < List < Segment Display able >> Ġby Ġlazy Ġ{ Ġ_ segments Ġ} ĊĠĠĠ Ġval Ġexported Route Uri : ĠLive Data < Uri > Ġby Ġlazy Ġ{ Ġ_ exported Route Uri Ġ} ĊĠĠĠ Ġval Ġreviews : ĠLive Data < List < Review Display able >> Ġby Ġlazy Ġ{ Ġ_ reviews Ġ} ĊĊĊĠĠĠ Ġfun Ġremove Route And Nav Back ( route : ĠRoute Display able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġremove Route UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġroute . to Route (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Routes Navigator . go Back () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" remove Route And Nav Back ", Ġ" Route Ġremoved ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġhandle Failure (" remove Route And Nav Back ", Ġ" Route Ġnot Ġremoved ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Route ( route : ĠRoute Display able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġupdate Route UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġroute . to Route (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" update Route ", Ġ" Route Ġupdated ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġhandle Failure (" update Route ", Ġ" Route Ġnot Ġupdated ") Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġfun Ġget My Routes With Filter ( filter Data : ĠFilter Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġget My Routes With Filter UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġfilter Data , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ my Routes . value Ġ= Ġit . map Ġ{ Ġroute Ġ-> Ġ ĠRoute Display able ( route ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ is Filter . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" get My Routes With Filter ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Failure (" get My Routes With Filter ", Ġ" co ul dn 't Ġfilter Ġroutes ", Ġerr Log Ġ= Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget My Routes () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġget My Routes UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= ĠUnit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ my Routes . value Ġ= Ġit . map Ġ{ Ġroute Ġ-> Ġ ĠRoute Display able ( route ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ is Filter . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" get My Routes ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Failure (" get My Routes ", Ġ" co ul dn 't Ġget Ġroutes ", Ġerr Log Ġ= Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Points From Remote And Open Route Details F rg ( route : ĠRoute Display able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġget Points From Remote UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġroute . route Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" get Points From Remote ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Routes Navigator . open Route Details Fragment ( route , Ġit . map Ġ{ Ġpoint Ġ-> ĠPoint Display able ( point ) Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Photos ( route . route Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġhandle Failure (" get Points From Remote ", Ġ" co ul dn 't Ġdisplay Ġthe Ġroute ", Ġerr Log Ġ= Ġit . message ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Geo coding Item ( query : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Geo coding Item UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġquery , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" get Geo coding Item ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ geo coding Item . value Ġ= ĠGeo coding Item Display able ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġhandle Failure (" get Geo coding Item ", Ġ" co ul dn 't Ġfilter Ġby Ġthis Ġlocation ", Ġerr Log Ġ= Ġit . message ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ fun Ġadd Photo ( route Id : ĠString , Ġlocal Path : ĠString , Ġsharing Type : ĠSh aring Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġadd Photo UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= ĠAdd Photo Data ( route Id , Ġlocal Path , Ġsharing Type ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Photos ( route Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" add Photo ", Ġ" photo Ġadded ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġhandle Failure (" add Photo ", Ġ" co ul dn 't Ġadd Ġthe Ġphoto ", Ġerr Log Ġ= Ġit . message ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Photos ( route Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġget Photos UseCase ( params Ġ= Ġroute Id , Ġscope Ġ= ĠviewModel Scope ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ photos . value Ġ= Ġlist . map Ġ{ ĠPhoto Info Display able ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" get Photos ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġhandle Failure (" get Photos ", Ġ" co ul dn 't Ġdownload Ġphotos ", Ġerr Log Ġ= Ġit . message ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Photo ( photo : ĠPhoto Info Display able , Ġphoto Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġremove Photo UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġphoto . to Photo Info (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ photo Remove Pos . value Ġ= Ġphoto Position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" remove Photo ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġhandle Failure (" remove Photo ", Ġ" could 't Ġremove Ġphoto ", Ġerr Log Ġ= Ġit . message ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ ĉ fun Ġget Segment Point ( geo Point : ĠGeo Point , Ġpoints : ĠList < Point Display able >, Ġzoom Level : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Segment Point Helper ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= ĠGet Segment Begin Data ( geo Point , Ġpoints . map Ġ{ Ġit . to Point No CreatedAt () Ġ}, Ġzoom Level ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ segment Point Index . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" get Segment Point ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġhandle Failure (" get Segment Point ", Ġerr Log Ġ= Ġit . message ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ ĉ fun Ġadd Segment ( segment Display able : ĠSegment Display able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġadd Segment UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġsegment Display able . to Segment (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ is Segment Added . value Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" add Segment ", Ġ" segment Ġadded ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ is Segment Added . value Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Failure (" add Segment ", Ġ" co ul dn 't Ġadd Ġthe Ġsegment ", Ġerr Log Ġ= Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Segment ( segment Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġremove Segment UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġsegment Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" remove Segment ", Ġ" segment Ġremoved ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Failure (" remove Segment ", Ġ" co ul dn 't Ġremove Ġthe Ġsegment ", Ġerr Log Ġ= Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Segments ( route Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġget Segments UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġroute Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ segments . value Ġ= Ġlist . map Ġ{ ĠSegment Display able ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" get Segments ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Failure (" get Segments ", Ġ" co ul dn 't Ġget Ġsegments ", Ġerr Log Ġ= Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Experimental Cor outines Api ĊĠĠĠ Ġfun Ġexport Route ( route : ĠRoute Display able , Ġpoly line : ĠPoly line , Ġzoom : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġexport Route Helper ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= ĠExport Route Data ( route . to Route (), Ġpoly line , Ġzoom ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdispatcher Ġ= ĠDispatch ers . Main ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ exported Route Uri . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" export Route ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Failure (" export Route ", Ġ" co ul dn 't Ġexport Ġroute ", Ġerr Log Ġ= Ġit . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Reviews ( route Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġget Reviews UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġroute Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ reviews . value Ġ= Ġlist . map Ġ{ ĠReview Display able ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" get Reviews ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġhandle Failure (" get Reviews ", Ġ" co ul dn 't Ġget Ġreviews ", Ġerr Log Ġ= Ġit . message ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Review ( review : ĠReview Display able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġadd Review UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġreview . to Review (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Reviews ( review . route Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" add Review ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġhandle Failure (" add Review ", Ġ" co ul dn 't Ġadd Ġthe Ġreview ", Ġerr Log Ġ= Ġit . message ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Review ( review : ĠReview Display able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġupdate Review UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġreview . to Review (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" update Review ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġhandle Failure (" update Review ", Ġ" co ul dn 't Ġupdate Ġthe Ġreview ", Ġerr Log Ġ= Ġit . message ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Review ( review Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Pending State () ĊĠĠĠĠĠĠĠ Ġremove Review UseCase ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparams Ġ= Ġreview Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Idle State () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Success Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Success (" remove Review ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult . on Failure Ġ{ Ġhandle Failure (" remove Review ", Ġ" co ul dn 't Ġremove Ġthe Ġreview ", Ġerr Log Ġ= Ġit . message ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġnavigate Back () Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Routes Navigator . go Back () ĊĠĠĠ Ġ} Ċ }