package Ġpt . ise l . vs dd ashboard application . view model Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mediator LiveData Ċ import Ġandroidx . lifecycle . Transform ations Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġkotlinx . coroutines . launch Ċ import Ġpt . ise l . vs dd ashboard application . model . Alarm Ċ import Ġpt . ise l . vs dd ashboard application . model . NS Gateway Ċ import Ġpt . ise l . vs dd ashboard application . model . V Port Ċ import Ġpt . ise l . vs dd ashboard application . model . VR S Ċ import Ġpt . ise l . vs dd ashboard application . repository . base . NS Gateway Repository Ċ import Ġpt . ise l . vs dd ashboard application . repository . base . V Port Repository Ċ import Ġpt . ise l . vs dd ashboard application . repository . base . V rs Repository Ċ import Ġpt . ise l . vs dd ashboard application . utils . Refresh State Ċ import Ġpt . ise l . vs dd ashboard application . view model . base . Base ViewModel Ċ import Ġpt . ise l . vs dd ashboard application . view model . parent . Alarm Parent ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠV Port ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠV Port Repository , ĊĠĠĠ Ġprivate Ġval Ġv rs Repository : ĠV rs Repository , ĊĠĠĠ Ġprivate Ġval Ġgateway Repository : ĠNS Gateway Repository Ċ ) Ġ: ĠBase ViewModel < V Port >(), ĠAlarm Parent ViewModel Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġport Id : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġv rs Id : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġv rs LiveData Ġ= ĠMed iator LiveData < VR S >() ĊĊĠĠĠ Ġprivate Ġval Ġal arms LiveData Ġ= ĠMed iator LiveData < List < Alarm > ?> () ĊĠĠĠ Ġprivate Ġval Ġalarm Refresh State LiveData Ġ= ĠMed iator LiveData < Refresh State >() ĊĠĠĠ Ġval Ġgate ways LiveData Ġ= ĠMed iator LiveData < NS Gateway ?> () ĊĊĠĠĠ Ġoverride Ġfun Ġget Al arms LiveData (): ĠLive Data < List < Alarm > ?> Ġ= Ġthis . al arms LiveData ĊĠĠĠ Ġoverride Ġfun Ġget Refresh State (): ĠLive Data < Refresh State > Ġ= Ġthis . alarm Refresh State LiveData ĊĊĠĠĠ Ġoverride Ġfun Ġupdate Al arms LiveData () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalarm Refresh State LiveData . post Value ( Refresh State . IN PROGRESS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . update Al arms ( port Id ?: live Data . value !!. i D ) Ġ{ Ġalarm Refresh State LiveData . post Value ( Refresh State . NONE ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġset LiveData () Ġ{ ĊĠĠĠĠĠĠĠ Ġv rs Id ?. let Ġ{ Ġv rs Id Ġ-> Ġlive Data . add Source ( v rs Repository . get ( v rs Id )) Ġ{ Ġv rs LiveData . value Ġ= Ġit Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġport Id ?. let Ġ{ Ġport Id Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlive Data . add Source ( repository . get ( port Id )) Ġ{ Ġport Ġ-> Ġlive Data . value Ġ= Ġport } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( live Data . value Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get ( port Id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġal arms LiveData . add Source ( Transform ations . switch Map ( live Data ) Ġ{ Ġrepository . get Al arms ( it . i D ) Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġal arms LiveData . value Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgate ways LiveData . add Source ( Transform ations . switch Map ( live Data ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . associated Gateway ID ?. let Ġ{ Ġgateway Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġld Ġ= Ġgateway Repository . get ( gateway ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( ld . value Ġ== Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ Ġgateway Repository . update N sg Info ( gateway ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġld ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) Ġ{ Ġgate ways LiveData . post Value ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġupdate LiveData () Ġ{ ĊĠĠĠĠĠĠĠ Ġport Id ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . refresh State LiveData . post Value ( Refresh State . IN PROGRESS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . update ( it ) Ġ{ Ġthis . refresh State LiveData . post Value ( Refresh State . NONE ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġinit ( port Id : ĠString ? Ġ= Ġnull , Ġv rs Id : ĠString ? Ġ= Ġnull ){ ĊĠĠĠĠĠĠĠ Ġthis . port Id Ġ= Ġport Id ĊĠĠĠĠĠĠĠ Ġthis . v rs Id Ġ= Ġv rs Id ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ Ġset LiveData () Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ