package Ġcom . example . music player . ui . playlist Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġcom . example . music player . data . model . Playlist Ċ import Ġcom . example . music player . data . model . Song Ċ import Ġcom . example . music player . data . repo . Playlist Repository Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠPlaylist VM ( val Ġcontext : ĠContext ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġplaylist Ġ= ĠMutable LiveData < List < Playlist >>() ĊĠĠĠ Ġprivate Ġval Ġsongs Ġ= ĠMutable LiveData < List < Song >>() ĊĠĠĠ Ġval Ġis Updated Ġ= ĠMutable LiveData < Boolean >() ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate () Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplay Ġ= ĠPlaylist Repository . getInstance ( context )?. get Play Lists () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplaylist . post Value ( play ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Playlist () Ġ= Ġplaylist ĊĊĠĠĠ Ġfun Ġrequest Update ( id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis Updated . post Value ( true ) ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠPlaylist Repository . getInstance ( context )?. getS ongs In Playlist ( id ) ĊĠĠĠĠĠĠĠ Ġsongs . post Value ( list ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetS ongs ( id : ĠLong ): ĠMutable LiveData < List < Song >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠPlaylist Repository . getInstance ( context )?. getS ongs In Playlist ( id ) ĊĠĠĠĠĠĠĠ Ġsongs . post Value ( list ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsongs ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġreorder ( id : ĠLong , Ġfrom Pos : ĠInt , Ġto Pos : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstatus Ġ= ĠPlaylist Repository . getInstance ( context )?. reorder Media ( id , Ġfrom Pos , Ġto Pos ) ĊĠĠĠĠĠĠĠ Ġprintln ( status ) ĊĠĠĠ Ġ} Ċ Ċ }