package Ġcom . p unto gr is . re cap . feature _ search . presentation Ċ Ċ import Ġandroidx . lifecycle .* Ċ import Ġandroidx . paging . Paging Data Ċ import Ġandroidx . paging . cached In Ċ import Ġcom . p unto gr is . re cap . core . presentation . base . Base Rv ViewModel Ċ import Ġcom . p unto gr is . re cap . feature _ search . domain . repository . Search Repository Ċ import Ġdagger . h ilt . android . lifecycle . H ilt ViewModel Ċ import Ġjavax . inject . Inject Ċ Ċ @ H ilt ViewModel Ċ class ĠSearch ViewModel Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġsearch Repository : ĠSearch Repository Ċ ) Ġ: ĠBase Rv ViewModel () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġ_ query LiveData Ġ= ĠMutable LiveData ("") ĊĠĠĠ Ġval Ġquery LiveData : ĠLive Data < String > Ġ= Ġ_ query LiveData ĊĊĠĠĠ Ġval Ġre caps LiveData Ġ= ĠTransform ations . switch Map ( query LiveData ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Repository . search Re caps ( it ). as LiveData () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMutable LiveData ( Paging Data . empty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. cached In ( viewModel Scope ) ĊĊĠĠĠ Ġval Ġusers LiveData Ġ= ĠTransform ations . switch Map ( query LiveData ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( it . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Repository . search Users ( it ). as LiveData () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMutable LiveData ( Paging Data . empty ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}. cached In ( viewModel Scope ) ĊĊĠĠĠ Ġfun Ġupdate Query ( query : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ query LiveData . value Ġ= Ġquery ĊĠĠĠ Ġ} Ċ }