package Ġedu . t uk . s atell ites ar ere al . ui . view models Ċ Ċ import Ġandroid . location . Location Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . rt b ish op . look 4 sat . domain . predict 4 kotlin . S atellite Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġedu . t uk . s atell ites ar ere al . model . S atellite Database Ċ import Ġedu . t uk . s atell ites ar ere al . repositories . Location Repository Ċ import Ġkotlinx . coroutines . Job Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠInfo Screen ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġval Ġs atellite Database : ĠS atellite Database , Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġlocation Repository : ĠLocation Repository ĊĊĠĠĠ Ġprivate Ġvar ĠgetS atell ites Job : ĠJob Ġ= ĠJob () ĊĊĠĠĠ Ġprivate Ġval Ġ_ selected T les : ĠMutable LiveData < List < S atellite >> Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġselected S atell ites : ĠLive Data < List < S atellite >> Ġ= Ġ_ selected T les ĊĊĠĠĠ Ġprivate Ġval Ġ_ last Location : ĠMutable LiveData < Location ?> Ġ= ĠMutable LiveData () ĊĠĠĠ Ġval Ġlast Location : ĠLive Data < Location ?> Ġ= Ġ_ last Location ĊĊĠĠĠ Ġfun Ġset Location Repository ( location Repository : ĠLocation Repository ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . location Repository Ġ= Ġlocation Repository ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġget Selected S atell ites () ĊĠĠĠĠĠĠĠ Ġlocation Repository . register Location Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ last Location . post Value ( Location ( it )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġlocation Repository . unregister () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Selected S atell ites () Ġ{ ĊĠĠĠĠĠĠĠ ĠgetS atell ites Job . cancel () ĊĠĠĠĠĠĠĠ ĠgetS atell ites Job Ġ= ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġs atellite Database ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. tle Entry Dao () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getSelected Entries () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect Ġ{ Ġt le Entries Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt le Entries ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . to TLE () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS atellite . create Sat ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġ_ selected T les . post Value ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ