package Ġcom . ry an rv ld o . mov iec atalog ue . ui . view model Ċ Ċ import Ġandroidx . h ilt . Ass isted Ċ import Ġandroidx . h ilt . lifecycle . ViewModel Inject Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . ry an rv ld o . mov iec atalog ue . data . Repository Ċ import Ġcom . ry an rv ld o . mov iec atalog ue . data . model . Tv Show Ċ import Ġcom . ry an rv ld o . mov iec atalog ue . data . vo . Resource Ċ import Ġkotlinx . coroutines . Dispatch ers Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠT v Show Details ViewModel Ġ@ ViewModel Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġrepository : ĠRepository , ĊĠĠĠ Ġ@ Ass isted Ġprivate Ġval Ġsaved State Handle : ĠSaved State Handle Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġtv Show Id Ġ= Ġsaved State Handle [ TV _ SHOW _ ID _ KEY ] Ġ?: Ġ 0 ĊĊĠĠĠ Ġval Ġtv Show : ĠLive Data < Resource < Tv Show >> Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . get Tv Show Details ( tv Show Id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠĠĠ Ġprivate Ġval Ġ_ is F avorites Ġ= ĠMutable LiveData < Boolean >() ĊĠĠĠ Ġval Ġis F avorites : ĠLive Data < Boolean > Ġ= Ġlive Data Ġ{ ĊĠĠĠĠĠĠĠ Ġemit ( repository . is Favorite Movie ( tv Show Id )) ĊĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġprivate Ġfun Ġcheck Movie Favorite () Ġ{ Ċ // ĠĠĠĠĠĠĠ ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ_ is F avorites . post Value ( repository . is Favorite Tv Show ( tv Show Id )) Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Favorite Tv Show ( tv Show : ĠT v Show ) Ġ= ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . add Favorite Tv Show ( tv Show ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Favorite Tv Show ( tv Show : ĠT v Show ) Ġ= ĠviewModel Scope . launch ( Dispatch ers . IO ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrepository . remove Favorite Tv Show ( tv Show ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Tv Details VM " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTV _ SHOW _ ID _ KEY Ġ= Ġ" TV _ SHOW _ ID " ĊĠĠĠ Ġ} Ċ }