package Ġcom . ers iver . fil mf lop . ui . detail Ċ Ċ import Ġandroidx . h ilt . lifecycle . ViewModel Inject Ċ import Ġandroidx . lifecycle .* Ċ import Ġcom . ers iver . fil mf lop . model . Movie Ċ import Ġcom . ers iver . fil mf lop . repository . Movie Repository Ċ import Ġcom . ers iver . fil mf lop . util . Single Event Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠDetail ViewModel Ġ@ ViewModel Inject Ġconstructor ( ĊĠĠĠ Ġval Ġrepository : ĠMovie Repository Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġval Ġmovie : ĠLive Data < Movie > Ġ= Ġrepository . movie ĊĊĠĠĠ Ġval Ġis F avour ite : ĠLive Data < Boolean > Ġ= Ġrepository . is F avour ite ĊĊĠĠĠ Ġprivate Ġval Ġ_ show Tr ailer Event Ġ= ĠMutable LiveData < Single Event < String >>() ĊĊĠĠĠ Ġval Ġshow Tr ailer Event : ĠLive Data < Single Event < String >> Ġ= Ġ_ show Tr ailer Event ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInit Ġselected Ġmovie Ġvia Ġrepository . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Movie ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . get Movie ( id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExec utes Ġonce Ġadd _ remove _ action ĠImage Button Ġis Ġclicked . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠT riggers Ġchanges Ġof Ġthe Ġ[ Movie . is F avour ite ] to Ġthe ĊĠĠĠĠ Ġ* Ġdatabase Ġvia Ġupdate () Ġand Ġsets Ġthe Ġappropriate Ġicon Ġof Ġthe ĊĠĠĠĠ Ġ* Ġadd _ remove _ action ĠImage Button Ġvia ĠBinding Adapter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Favorite () Ġ{ ĊĠĠĠĠĠĠĠ Ġmovie . value ?. let Ġ{ Ġselected Movie Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlast F avour ite Status Ġ= Ġselected Movie . is F avour ite ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Movie . is F avour ite Ġ= Ġ! last F avour ite Status ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected Movie . save Date Ġ= ĠSystem . currentTimeMillis () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate ( selected Movie ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExec utes Ġonce Ġtr ailer ĠButton Ġis Ġclicked . ĊĠĠĠĠ Ġ* ĠT riggers Ġnavigation Ġto Ġthe Ġmovie Ġtr ailer . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Tr ailer Clicked () Ġ{ ĊĠĠĠĠĠĠĠ Ġmovie . value ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ show Tr ailer Event . value Ġ= ĠSingle Event ( it . tr ailer Url ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHelper Ġmethod Ġto Ġupdate Ġthe Ġchanges ĊĠĠĠĠ Ġ* Ġto Ġthe ĠMovie Ġvia Ġrepository . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġupdate ( movie : ĠMovie ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrepository . update ( movie ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }