package Ġbr . org . ces ar . mad movies . movies . view model Ċ Ċ import Ġandroid . app . Application Ċ import Ġandroidx . lifecycle . Android ViewModel Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġbr . org . ces ar . mad movies . movies . data . Movie Repository Ċ import Ġbr . org . ces ar . mad movies . movies . data . remote . Remote Datasource Ċ import Ġbr . org . ces ar . mad movies . movies . domain . model . Movie Ċ import Ġbr . org . ces ar . mad movies . movies . domain . use case . Get Movie Detail Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġkotlinx . coroutines . launch Ċ Ċ class ĠMovie Details ViewModel ( application : ĠApplication ) Ġ: ĠAndroid ViewModel ( application ) Ġ{ ĊĊĠĠĠ Ġvar Ġmovie Id : ĠInt Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġ_ movie Flow : ĠMutable State Flow < Movie > Ġ= ĠMutable State Flow ( Movie ()) ĊĠĠĠ Ġvar Ġmovie Flow : ĠState Flow < Movie > Ġ= ĊĠĠĠĠĠĠĠ Ġ_ movie Flow ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Subscription Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ movie Flow . value . id Ġ!= Ġmovie Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Movie Detail ( movie Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. state In ( viewModel Scope , ĠSh aring Started . While Sub scribed (), Ġ_ movie Flow . value ) ĊĊĠĠĠ Ġprivate Ġval Ġget Movie Detail UseCase Ġ= ĠGet Movie Detail ( ĊĠĠĠĠĠĠĠ ĠMovie Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Remote Datasource ( application . application Context )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfun Ġget Movie Detail ( movie Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠviewModel Scope . launch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ movie Flow . emit ( get Movie Detail UseCase ( movie Id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ