package Ġorg . task . manager . presentation . audio visual Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġkotlinx . coroutines . Coroutine Scope Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . cancel Ċ import Ġkotlinx . coroutines . launch Ċ import Ġorg . task . manager . domain . model .* Ċ import Ġorg . task . manager . domain . model . state . Delete State Ċ import Ġorg . task . manager . domain . use case . audio visual .* Ċ import Ġorg . task . manager . domain . use case . calendar . Create Calendar Event Ċ import Ġorg . task . manager . domain . use case . shared . Get Gen res Ċ Ċ class ĠAudio visual ViewModel ( ĊĠĠĠ Ġprivate Ġval Ġget Audio visual s : ĠGet Audio visual s , ĊĠĠĠ Ġprivate Ġval Ġcreate Audio visual : ĠCreate Audio visual , ĊĠĠĠ Ġprivate Ġval Ġupdate Audio visual : ĠUpdate Audio visual , ĊĠĠĠ Ġprivate Ġval Ġdelete Audio visual : ĠDelete Audio visual , ĊĠĠĠ Ġprivate Ġval Ġget Titles : ĠGet Titles , ĊĠĠĠ Ġprivate Ġval Ġget Gen res : ĠGet Gen res , ĊĠĠĠ Ġprivate Ġval Ġget Platforms : ĠGet Platforms , ĊĠĠĠ Ġprivate Ġval Ġcreate Calendar Event : ĠCreate Calendar Event Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcoroutine Scope Ġ= ĠCor outine Scope ( Dispatch ers . IO ) ĊĊĠĠĠ Ġval Ġaudio visual s Ġ= ĠMutable LiveData < List < Audio visual >>() ĊĠĠĠ Ġval Ġaudio visual Ġ= ĠMutable LiveData < Audio visual ?> () ĊĠĠĠ Ġval Ġtitles Ġ= ĠMutable LiveData < List < Title >>() ĊĠĠĠ Ġval Ġgen res Ġ= ĠMutable LiveData < List < Genre >>() ĊĠĠĠ Ġval Ġplatforms Ġ= ĠMutable LiveData < List < Platform >>() ĊĠĠĠ Ġval Ġcalendar Events Ġ= ĠMutable LiveData < Intent >() ĊĠĠĠ Ġval Ġdelete State Ġ= ĠMutable LiveData ( Delete State . DELETE _ STARTED ) ĊĊĠĠĠ Ġfun Ġget Audio visual s () Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio visual s Result Ġ= Ġget Audio visual s . execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio visual s . post Value ( audio visual s Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Audio visual ( audio visual Dto : ĠAudio visual Dto ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġnew Audio visual Ġ= Ġaudio visual Dto . to Domain () ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio visual Create Result Ġ= Ġcreate Audio visual . execute ( new Audio visual ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio visual . post Value ( audio visual Create Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Audio visual ( audio visual Dto : ĠAudio visual Dto ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupdated Book Ġ= Ġaudio visual Dto . to Domain () ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaudio visual Update Result Ġ= Ġupdate Audio visual . execute ( updated Book ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio visual . post Value ( audio visual Update Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete Audio visual ( id : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelete Result Ġ= Ġdelete Audio visual . execute ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete State . post Value ( delete Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Titles ( type : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtitles Result Ġ= Ġget Titles . execute ( type ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitles . post Value ( titles Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Gen res () Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen res Result Ġ= Ġget Gen res . execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen res . post Value ( genres Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Platforms () Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġplatforms Result Ġ= Ġget Platforms . execute () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplatforms . post Value ( platforms Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Calendar Event ( begin Time : ĠLong , Ġtitle : ĠString , Ġdescription : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcalendar Event Ġ= ĠCalendar Event ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbegin Time , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcalendar Event Result Ġ= Ġcreate Calendar Event . execute ( calendar Event ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalendar Events . post Value ( calendar Event Result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġon Cle ared () Ġ{ ĊĠĠĠĠĠĠĠ Ġcoroutine Scope . cancel () ĊĠĠĠ Ġ} Ċ Ċ }