package Ġdev . si jan rij al . popular movies . screens . search . view model Ċ Ċ import Ġandroidx . lifecycle . ViewModel Ċ import Ġandroidx . lifecycle . viewModel Scope Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġdev . si jan rij al . popular movies . core . network . services . popular . Pop ular Movies Ċ import Ġdev . si jan rij al . popular movies . screens . search . model . Top R ated Movies Ċ import Ġdev . si jan rij al . popular movies . screens . search . model . Up coming Movies Ċ import Ġdev . si jan rij al . popular movies . screens . search . repository . Search Repository Ċ import Ġkotlinx . coroutines . flow .* Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠSearch ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġsearch Repository : ĠSearch Repository Ċ ) Ġ: ĠViewModel () Ġ{ ĊĊĠĠĠ Ġ// state Ġthat Ġholds Ġa Ġlist Ġof Ġpopular , Ġtop Ġr ated Ġmovies ĊĠĠĠ Ġval Ġsearch Movies State Ġ= Ġcombine ( ĊĠĠĠĠĠĠĠ Ġsearch Repository . get Top R ated Movies (), ĊĠĠĠĠĠĠĠ Ġsearch Repository . get Pop ular Movies (), ĊĠĠĠĠĠĠĠ Ġsearch Repository . get Up coming Movies () ĊĠĠĠ Ġ) Ġ{ Ġtop R ated Movies , Ġpopular Movies , Ġupcoming Movies Ġ-> ĊĠĠĠĠĠĠĠ ĠSearch UIState ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopular Movies Ġ= Ġpopular Movies , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtop R ated Movies Ġ= Ġtop R ated Movies , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupcoming Movies Ġ= Ġupcoming Movies ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}. state In ( ĊĠĠĠĠĠĠĠ Ġscope Ġ= ĠviewModel Scope , ĊĠĠĠĠĠĠĠ Ġstarted Ġ= ĠSh aring Started . While Sub scribed ( 5 0 0 0 ), ĊĠĠĠĠĠĠĠ Ġinitial Value Ġ= ĠSearch UIState () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ// state Ġflow Ġfor Ġsearch Ġkeywords Ġfrom Ġthe Ġuser ĊĠĠĠ Ġprivate Ġvar Ġsearch Movie Ġ= ĠMutable State Flow ("") ĊĠĠĠ Ġval Ġsearch Movie Result Ġ= Ġsearch Movie . as State Flow () ĊĠĠĠĠĠĠĠ Ġ. de bounce ( 7 0 0 ) ĊĠĠĠĠĠĠĠ Ġ. map Latest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . isEmpty () Ġ|| Ġit . length Ġ<= Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Repository . search Movie ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsearch Movie ( keywords : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch Movie . value Ġ= Ġkeywords ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠSearch UIState ( ĊĠĠĠ Ġval Ġpopular Movies : ĠList < Pop ular Movies > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġtop R ated Movies : ĠList < Top R ated Movies > Ġ= Ġempty List (), ĊĠĠĠ Ġval Ġupcoming Movies : ĠList < Up coming Movies > Ġ= Ġempty List () Ċ )